Package org.kiji.schema.layout.impl.ZooKeeperMonitor

Examples of org.kiji.schema.layout.impl.ZooKeeperMonitor.UsersTracker


                .newBuilder(String.format("kiji://%s/kiji_instance/table_name", getZKAddress()))
                .build();

        final BlockingQueue<Multimap<String, String>> queue = Queues.newSynchronousQueue();

        final UsersTracker tracker = monitor.newTableUsersTracker(
            tableURI,
            new UsersUpdateHandler() {
              @Override
              public void update(Multimap<String, String> users) {
                LOG.info("Users map updated to: {}", users);
                try {
                  queue.put(users);
                } catch (InterruptedException ie) {
                  throw new RuntimeInterruptedException(ie);
                }
              }
            });
        tracker.open();
        final ZooKeeperMonitor.TableUserRegistration userRegistration1 =
            monitor.newTableUserRegistration("user-id-1", tableURI);
        final ZooKeeperMonitor.TableUserRegistration userRegistration2 =
            monitor.newTableUserRegistration("user-id-2", tableURI);
        try {
          Assert.assertTrue(queue.poll(1, TimeUnit.SECONDS).isEmpty());

          userRegistration1.updateRegisteredLayout("layout-id-1");
          Assert.assertEquals(
              ImmutableSetMultimap.of("user-id-1", "layout-id-1"),
              queue.poll(1, TimeUnit.SECONDS));

          userRegistration1.updateRegisteredLayout("layout-id-2");
          Assert.assertEquals(
              ImmutableSetMultimap.<String, String>of(), // unregistration event
              queue.poll(1, TimeUnit.SECONDS));
          Assert.assertEquals(
              ImmutableSetMultimap.of("user-id-1", "layout-id-2"), // re-registration event
              queue.poll(1, TimeUnit.SECONDS));

          userRegistration2.updateRegisteredLayout("layout-id-1");
          Assert.assertEquals(
              ImmutableSetMultimap.of(
                  "user-id-1", "layout-id-2",
                  "user-id-2", "layout-id-1"),
              queue.poll(1, TimeUnit.SECONDS));

          userRegistration1.close();
          Assert.assertEquals(
              ImmutableSetMultimap.of("user-id-2", "layout-id-1"),
              queue.poll(1, TimeUnit.SECONDS));

        } finally {
          tracker.close();
          userRegistration2.close();
        }
      } finally {
        monitor.close();
      }
View Full Code Here


    String layout2 = "layout2";

    KijiURI tableURI = getTableURI();
    final BlockingQueue<Multimap<String, String>> usersQueue = Queues.newSynchronousQueue();

    UsersTracker tracker =
        mMonitor.newTableUsersTracker(tableURI, new QueueingUsersUpdateHandler(usersQueue));

    try {
      tracker.open();

      Assert.assertEquals(
          ImmutableMultimap.<String, String>of(), usersQueue.poll(1, TimeUnit.SECONDS));

      TableUserRegistration registration = mMonitor.newTableUserRegistration(user, tableURI);
      try {

        Assert.assertNull("Unexpected users update.", usersQueue.poll());

        registration.updateRegisteredLayout(layout1);

        Assert.assertEquals(
            ImmutableSetMultimap.of(user, layout1), usersQueue.take());

        registration.updateRegisteredLayout(layout2);

        // First action is to unregister
        Assert.assertEquals(
            ImmutableSetMultimap.<String, String>of(), usersQueue.take());
        // and then re-register with updated layout
        Assert.assertEquals(
            ImmutableSetMultimap.of(user, layout2), usersQueue.take());

        registration.close();

        Assert.assertEquals(
            ImmutableSetMultimap.<String, String>of(), usersQueue.take());
      } finally {
        registration.close();
      }
    } finally {
      tracker.close();
    }
  }
View Full Code Here

TOP

Related Classes of org.kiji.schema.layout.impl.ZooKeeperMonitor.UsersTracker

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.