コード例 #1
0
  @Test
  public void submitCallableToMembers_withExecutionCallback() {
    IExecutorService service = client.getExecutorService(randomString());

    final CountDownLatch responseLatch = new CountDownLatch(CLUSTER_SIZE);
    final CountDownLatch completeLatch = new CountDownLatch(1);
    final String msg = randomString();
    Callable callable = new AppendCallable(msg);
    MemberSelector selector = new SelectAllMembers();

    service.submitToMembers(
        callable,
        selector,
        new MultiExecutionCallback() {
          public void onResponse(Member member, Object value) {
            if (value.equals(msg + AppendCallable.APPENDAGE)) {
              responseLatch.countDown();
            }
          }

          public void onComplete(Map<Member, Object> values) {
            completeLatch.countDown();
          }
        });

    assertOpenEventually("responseLatch", responseLatch);
    assertOpenEventually("completeLatch", completeLatch);
  }
コード例 #2
0
  @Test
  public void submitRunnableToMembers_withExecutionCallback() {
    IExecutorService service = client.getExecutorService(randomString());

    final CountDownLatch responseLatch = new CountDownLatch(CLUSTER_SIZE);
    final CountDownLatch completeLatch = new CountDownLatch(1);
    String mapName = randomString();
    Runnable runnable = new MapPutRunnable(mapName);
    MemberSelector selector = new SelectAllMembers();

    service.submitToMembers(
        runnable,
        selector,
        new MultiExecutionCallback() {
          public void onResponse(Member member, Object value) {
            responseLatch.countDown();
          }

          public void onComplete(Map<Member, Object> values) {
            completeLatch.countDown();
          }
        });
    IMap map = client.getMap(mapName);

    assertOpenEventually("responseLatch", responseLatch);
    assertOpenEventually("completeLatch", completeLatch);
    assertEquals(CLUSTER_SIZE, map.size());
  }
コード例 #3
0
  @Test
  public void submitCallableToMember_withMultiExecutionCallback() throws Exception {
    IExecutorService service = client.getExecutorService(randomString());

    final CountDownLatch responseLatch = new CountDownLatch(CLUSTER_SIZE);
    final CountDownLatch completeLatch = new CountDownLatch(CLUSTER_SIZE);
    final String msg = randomString();
    Callable<String> callable = new AppendCallable(msg);
    Collection<Member> collection = server.getCluster().getMembers();

    service.submitToMembers(
        callable,
        collection,
        new MultiExecutionCallback() {
          public void onResponse(Member member, Object value) {
            if (value.equals(msg + AppendCallable.APPENDAGE)) {
              responseLatch.countDown();
            }
          }

          public void onComplete(Map<Member, Object> values) {
            for (Member member : values.keySet()) {
              Object value = values.get(member);
              if (value.equals(msg + AppendCallable.APPENDAGE)) {
                completeLatch.countDown();
              }
            }
          }
        });

    assertOpenEventually("responseLatch", responseLatch);
    assertOpenEventually("completeLatch", completeLatch);
  }
コード例 #4
0
  /**
   * Submits a task to multiple members of the Hazelcast task cluster.
   *
   * @param task The task
   * @param where A {@link MemberSelector}, an {@link Iterable} of {@link Member}, a string
   *     (comma-separated member tags), or null for all members
   * @return A map of members to futures for the task
   */
  @SuppressWarnings("unchecked")
  private <T> Map<Member, Future<T>> multiTask(SerializableApplicationTask<T> task, Object where) {
    IExecutorService executor = getHazelcastExecutorService();

    if (where instanceof String)
      return executor.submitToMembers(
          task, new TaggedMembers(HAZELCAST_MEMBER_TAGS_ATTRIBUTE, (String) where));
    else if (where instanceof MemberSelector)
      return executor.submitToMembers(task, (MemberSelector) where);
    else if (where instanceof Collection)
      return executor.submitToMembers(task, (Collection<Member>) where);
    else if (where instanceof Iterable) {
      ArrayList<Member> members = new ArrayList<Member>();
      for (Member member : (Iterable<Member>) where) members.add(member);
      return executor.submitToMembers(task, members);
    } else return executor.submitToAllMembers(task);
  }
コード例 #5
0
  @Test
  public void testSubmitCallableToMembers_withMemberSelector() throws Exception {
    IExecutorService service = client.getExecutorService(randomString());

    Callable<String> getUuidCallable = new GetMemberUuidTask();
    MemberSelector selectAll = new SelectAllMembers();

    Map<Member, Future<String>> map = service.submitToMembers(getUuidCallable, selectAll);
    for (Member member : map.keySet()) {
      Future<String> result = map.get(member);
      String uuid = result.get();

      assertEquals(member.getUuid(), uuid);
    }
  }
コード例 #6
0
  @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());
  }