public void run() { if (webServerUrl == null) { logger.log(Level.WARNING, "Web server url is null!"); return; } try { Random rand = new Random(); Address address = ((MemberImpl) factory.node.getClusterImpl().getLocalMember()).getAddress(); GroupConfig groupConfig = factory.getConfig().getGroupConfig(); while (running.get()) { try { URL url = new URL( webServerUrl + "getTask.do?member=" + address.getHost() + ":" + address.getPort() + "&cluster=" + groupConfig.getName()); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestProperty("Connection", "keep-alive"); InputStream inputStream = connection.getInputStream(); DataInputStream input = new DataInputStream(inputStream); int taskId = input.readInt(); if (taskId > 0) { int requestType = input.readInt(); ConsoleRequest request = consoleRequests[requestType]; request.readData(input); sendResponse(taskId, request); } } catch (Exception e) { logger.log(Level.FINEST, e.getMessage(), e); } Thread.sleep(700 + rand.nextInt(300)); } } catch (Throwable throwable) { logger.log(Level.FINEST, "Problem on management center while polling task.", throwable); } }
@Test public void testSubmitToMembersRunnable() throws InterruptedException { final int k = simpleTestNodeCount; TestHazelcastInstanceFactory factory = createHazelcastInstanceFactory(k); final HazelcastInstance[] instances = factory.newInstances(new Config()); final AtomicInteger count = new AtomicInteger(0); final CountDownLatch latch = new CountDownLatch(k); final MultiExecutionCallback callback = new MultiExecutionCallback() { public void onResponse(Member member, Object value) { count.incrementAndGet(); } public void onComplete(Map<Member, Object> values) { latch.countDown(); } }; int sum = 0; final Set<Member> membersSet = instances[0].getCluster().getMembers(); final Member[] members = membersSet.toArray(new Member[membersSet.size()]); final Random random = new Random(); for (int i = 0; i < k; i++) { final IExecutorService service = instances[i].getExecutorService("testSubmitToMembersRunnable"); final String script = "hazelcast.getAtomicLong('testSubmitToMembersRunnable').incrementAndGet();"; final int n = random.nextInt(k) + 1; sum += n; Member[] m = new Member[n]; System.arraycopy(members, 0, m, 0, n); service.submitToMembers(new ScriptRunnable(script, null), Arrays.asList(m), callback); } assertTrue(latch.await(30, TimeUnit.SECONDS)); final IAtomicLong result = instances[0].getAtomicLong("testSubmitToMembersRunnable"); assertEquals(sum, result.get()); assertEquals(sum, count.get()); }