/** * Deploys a collection of dotnet services asynchronously. * * @param reader Binary reader. * @param services Services. * @return Future of the operation. */ private IgniteFuture<Void> dotnetDeployAllAsync(BinaryRawReaderEx reader, IgniteServices services) { Collection<ServiceConfiguration> cfgs = dotnetConfigurations(reader); return services.deployAllAsync(cfgs); }
/** * @throws Exception If failed. */ @Test public void testClashingNames() throws Exception { Ignite client = grid(CLIENT_NODE_NAME); CountDownLatch latch = new CountDownLatch(NUM_SERVICES); List<ServiceConfiguration> cfgs = getConfigs(client.cluster().forServers().predicate(), NUM_SERVICES); subscribeExeLatch(cfgs, latch); List<ServiceConfiguration> fstBatch = cfgs.subList(0, NUM_SERVICES / 2); List<ServiceConfiguration> sndBatch = cfgs.subList(NUM_SERVICES / 4, NUM_SERVICES); IgniteFuture<Void> fstFut = client.services().deployAllAsync(fstBatch); IgniteFuture<Void> sndFut = client.services().deployAllAsync(sndBatch); fstFut.get(); sndFut.get(); assertTrue("Waiting for services deployment timed out.", latch.await(30, TimeUnit.SECONDS)); assertDeployedServices(client, cfgs); }
/** * @throws Exception If failed. */ @Test public void testClashingNamesFail() throws Exception { Ignite client = grid(CLIENT_NODE_NAME); List<ServiceConfiguration> cfgs = getConfigs(client.cluster().forServers().predicate(), NUM_SERVICES); int numDepSvcs = NUM_SERVICES - 1; CountDownLatch latch = new CountDownLatch(numDepSvcs); List<ServiceConfiguration> fstBatch = cfgs.subList(0, NUM_SERVICES / 2); List<ServiceConfiguration> sndBatch = cfgs.subList(NUM_SERVICES / 4, NUM_SERVICES); subscribeExeLatch(cfgs, latch); IgniteFuture<Void> fut = client.services().deployAllAsync(fstBatch); ServiceConfiguration failingCfg = cfgs.get(NUM_SERVICES - 1); failingCfg.setName(null); assertFailingDeploy(client, false, sndBatch, failingCfg); fut.get(); assertTrue("Waiting for services deployment timed out.", latch.await(30, TimeUnit.SECONDS)); assertDeployedServices(client, cfgs.subList(0, numDepSvcs)); }
/** * @throws Exception If failed. */ @Test public void testDeployAllTopologyChange() throws Exception { Ignite client = grid(CLIENT_NODE_NAME); final AtomicBoolean finished = new AtomicBoolean(); IgniteInternalFuture<Object> topChangeFut = runTopChanger(finished); try { int numServices = 50; int batchSize = 5; CountDownLatch latch = new CountDownLatch(numServices); IgnitePredicate<ClusterNode> depPred = new TestPredicate(getTestIgniteInstanceName()); List<ServiceConfiguration> cfgs = getConfigs(depPred, numServices); subscribeExeLatch(cfgs, latch); int from = 0; while (from < numServices) { int to = Math.min(numServices, from + batchSize); client.services().deployAllAsync(cfgs.subList(from, to)).get(5000); from = to; } assertTrue(latch.await(120, TimeUnit.SECONDS)); assertDeployedServices(client, cfgs); } finally { finished.set(true); } topChangeFut.get(); }
client.services().deployAllAsync(cfgsBatch).get(5000);
/** * @param client Client. * @param async If {@code true}, then async version of deploy method will be used. * @param cfgs Service configurations. * @param failingCfg Configuration of the failing service. * @throws Exception If failed. */ private void assertFailingDeploy(Ignite client, boolean async, List<ServiceConfiguration> cfgs, ServiceConfiguration failingCfg) throws Exception { IgniteFuture<Void> fut = null; if (async) fut = client.services().deployAllAsync(cfgs); try { if (async) fut.get(); else client.services().deployAll(cfgs); fail("Should never reach here."); } catch (ServiceDeploymentException e) { info("Expected exception: " + e.getMessage()); Collection<ServiceConfiguration> expFails = Collections.singleton(failingCfg); Collection<ServiceConfiguration> actFails = e.getFailedConfigurations(); // Some cfgs may be lazy. Construct ServiceConfiguration from them for comparison. Collection<ServiceConfiguration> actFailsCp = new ArrayList<>(actFails.size()); for (ServiceConfiguration cfg : actFails) actFailsCp.add(copyService(cfg)); assertEqualsCollections(expFails, actFailsCp); } }
/** * @throws Exception If failed. */ @Test public void testDeployAllAsync() throws Exception { Ignite client = grid(CLIENT_NODE_NAME); CountDownLatch latch = new CountDownLatch(NUM_SERVICES); List<ServiceConfiguration> cfgs = getConfigs(client.cluster().forServers().predicate(), NUM_SERVICES); subscribeExeLatch(cfgs, latch); IgniteFuture<Void> fut = client.services().deployAllAsync(cfgs); fut.get(); assertTrue("Waiting for services deployment timed out.", latch.await(30, TimeUnit.SECONDS)); assertDeployedServices(client, cfgs); }
/** * Deploys a collection of dotnet services asynchronously. * * @param reader Binary reader. * @param services Services. * @return Future of the operation. */ private IgniteFuture<Void> dotnetDeployAllAsync(BinaryRawReaderEx reader, IgniteServices services) { Collection<ServiceConfiguration> cfgs = dotnetConfigurations(reader); return services.deployAllAsync(cfgs); }