use of org.apache.bookkeeper.util.OrderedSafeExecutor in project pulsar by yahoo.
the class MockedBookKeeperTestCase method setUp.
@BeforeMethod
public void setUp(Method method) throws Exception {
LOG.info(">>>>>> starting {}", method);
try {
// start bookkeeper service
startBookKeeper();
} catch (Exception e) {
LOG.error("Error setting up", e);
throw e;
}
executor = new OrderedSafeExecutor(2, "test");
cachedExecutor = Executors.newCachedThreadPool();
ManagedLedgerFactoryConfig conf = new ManagedLedgerFactoryConfig();
conf.setUseProtobufBinaryFormatInZK(protobufFormat == ZNodeProtobufFormat.Binary);
factory = new ManagedLedgerFactoryImpl(bkc, zkc, conf);
}
use of org.apache.bookkeeper.util.OrderedSafeExecutor in project pulsar by yahoo.
the class OwnershipCacheTest method setup.
@BeforeMethod
public void setup() throws Exception {
final int port = 8080;
selfBrokerUrl = "tcp://localhost:" + port;
pulsar = mock(PulsarService.class);
config = mock(ServiceConfiguration.class);
executor = new OrderedSafeExecutor(1, "test");
zkCache = new LocalZooKeeperCache(MockZooKeeper.newInstance(), executor);
localCache = new LocalZooKeeperCacheService(zkCache, null);
bundleFactory = new NamespaceBundleFactory(pulsar, Hashing.crc32());
nsService = mock(NamespaceService.class);
brokerService = mock(BrokerService.class);
doReturn(CompletableFuture.completedFuture(1)).when(brokerService).unloadServiceUnit(anyObject());
doReturn(zkCache).when(pulsar).getLocalZkCache();
doReturn(localCache).when(pulsar).getLocalZkCacheService();
doReturn(config).when(pulsar).getConfiguration();
doReturn(nsService).when(pulsar).getNamespaceService();
doReturn(port).when(config).getBrokerServicePort();
doReturn(brokerService).when(pulsar).getBrokerService();
doReturn(webAddress(config)).when(pulsar).getWebServiceAddress();
doReturn(selfBrokerUrl).when(pulsar).getBrokerServiceUrl();
}
use of org.apache.bookkeeper.util.OrderedSafeExecutor in project pulsar by yahoo.
the class ZookeeperCacheTest method testGlobalZooKeeperCache.
@Test
void testGlobalZooKeeperCache() throws Exception {
OrderedSafeExecutor executor = new OrderedSafeExecutor(1, "test");
ScheduledExecutorService scheduledExecutor = new ScheduledThreadPoolExecutor(1);
MockZooKeeper zkc = MockZooKeeper.newInstance();
ZooKeeperClientFactory zkClientfactory = new ZooKeeperClientFactory() {
@Override
public CompletableFuture<ZooKeeper> create(String serverList, SessionType sessionType, int zkSessionTimeoutMillis) {
return CompletableFuture.completedFuture(zkc);
}
};
GlobalZooKeeperCache zkCacheService = new GlobalZooKeeperCache(zkClientfactory, -1, "", executor, scheduledExecutor);
zkCacheService.start();
zkClient = (MockZooKeeper) zkCacheService.getZooKeeper();
ZooKeeperDataCache<String> zkCache = new ZooKeeperDataCache<String>(zkCacheService) {
@Override
public String deserialize(String key, byte[] content) throws Exception {
return new String(content);
}
};
// Create callback counter
AtomicInteger notificationCount = new AtomicInteger(0);
ZooKeeperCacheListener<String> counter = (path, data, stat) -> {
notificationCount.incrementAndGet();
};
// Register counter twice and unregister once, so callback should be counted correctly
zkCache.registerListener(counter);
zkCache.registerListener(counter);
zkCache.unregisterListener(counter);
String value = "test";
zkClient.create("/my_test", value.getBytes(), null, null);
assertEquals(zkCache.get("/my_test").get(), value);
String newValue = "test2";
// case 1: update and create znode directly and verify that the cache is retrieving the correct data
assertEquals(notificationCount.get(), 0);
zkClient.setData("/my_test", newValue.getBytes(), -1);
zkClient.create("/my_test2", value.getBytes(), null, null);
// Wait for the watch to be triggered
while (notificationCount.get() < 1) {
Thread.sleep(1);
}
// retrieve the data from the cache and verify it is the updated/new data
assertEquals(zkCache.get("/my_test").get(), newValue);
assertEquals(zkCache.get("/my_test2").get(), value);
// The callback method should be called just only once
assertEquals(notificationCount.get(), 1);
// case 2: force the ZooKeeper session to be expired and verify that the data is still accessible
zkCacheService.process(new WatchedEvent(Event.EventType.None, KeeperState.Expired, null));
assertEquals(zkCache.get("/my_test").get(), newValue);
assertEquals(zkCache.get("/my_test2").get(), value);
// case 3: update the znode directly while the client session is marked as expired. Verify that the new updates
// is not seen in the cache
zkClient.create("/other", newValue.getBytes(), null, null);
zkClient.failNow(Code.SESSIONEXPIRED);
assertEquals(zkCache.get("/my_test").get(), newValue);
assertEquals(zkCache.get("/my_test2").get(), value);
try {
zkCache.get("/other");
fail("shuld have thrown exception");
} catch (Exception e) {
// Ok
}
// case 4: directly delete the znode while the session is not re-connected yet. Verify that the deletion is not
// seen by the cache
zkClient.failAfter(-1, Code.OK);
zkClient.delete("/my_test2", -1);
zkCacheService.process(new WatchedEvent(Event.EventType.None, KeeperState.SyncConnected, null));
assertEquals(zkCache.get("/other").get(), newValue);
// Make sure that the value is now directly from ZK and deleted
assertFalse(zkCache.get("/my_test2").isPresent());
// case 5: trigger a ZooKeeper disconnected event and make sure the cache content is not changed.
zkCacheService.process(new WatchedEvent(Event.EventType.None, KeeperState.Disconnected, null));
zkClient.create("/other2", newValue.getBytes(), null, null);
// case 6: trigger a ZooKeeper SyncConnected event and make sure that the cache content is invalidated s.t. we
// can see the updated content now
zkCacheService.process(new WatchedEvent(Event.EventType.None, KeeperState.SyncConnected, null));
// make sure that we get it
assertEquals(zkCache.get("/other2").get(), newValue);
zkCacheService.close();
executor.shutdown();
// Update shouldn't happen after the last check
assertEquals(notificationCount.get(), 1);
}
use of org.apache.bookkeeper.util.OrderedSafeExecutor in project pulsar by yahoo.
the class ZookeeperCacheTest method testChildrenCache.
@Test
void testChildrenCache() throws Exception {
OrderedSafeExecutor executor = new OrderedSafeExecutor(1, "test");
zkClient.create("/test", new byte[0], null, null);
ZooKeeperCache zkCacheService = new LocalZooKeeperCache(zkClient, executor);
ZooKeeperChildrenCache cache = new ZooKeeperChildrenCache(zkCacheService, "/test");
// Create callback counter
AtomicInteger notificationCount = new AtomicInteger(0);
ZooKeeperCacheListener<Set<String>> counter = (path, data, stat) -> {
notificationCount.incrementAndGet();
};
// Register counter twice and unregister once, so callback should be counted correctly
cache.registerListener(counter);
cache.registerListener(counter);
cache.unregisterListener(counter);
assertEquals(notificationCount.get(), 0);
assertEquals(cache.get(), Sets.newTreeSet());
zkClient.create("/test/z1", new byte[0], null, null);
zkClient.create("/test/z2", new byte[0], null, null);
// Wait for cache to be updated in background
while (notificationCount.get() < 2) {
Thread.sleep(1);
}
assertEquals(cache.get(), new TreeSet<String>(Lists.newArrayList("z1", "z2")));
assertEquals(cache.get("/test"), new TreeSet<String>(Lists.newArrayList("z1", "z2")));
assertEquals(notificationCount.get(), 2);
zkClient.delete("/test/z2", -1);
while (notificationCount.get() < 3) {
Thread.sleep(1);
}
assertEquals(cache.get(), new TreeSet<String>(Lists.newArrayList("z1")));
assertEquals(cache.get(), new TreeSet<String>(Lists.newArrayList("z1")));
zkCacheService.process(new WatchedEvent(Event.EventType.None, KeeperState.Expired, null));
zkClient.failNow(Code.SESSIONEXPIRED);
try {
cache.get();
fail("shuld have thrown exception");
} catch (Exception e) {
// Ok
}
assertEquals(notificationCount.get(), 3);
}
use of org.apache.bookkeeper.util.OrderedSafeExecutor in project pulsar by yahoo.
the class ResourceQuotaCacheTest method setup.
@BeforeMethod
public void setup() throws Exception {
pulsar = mock(PulsarService.class);
OrderedSafeExecutor executor = new OrderedSafeExecutor(1, "test");
zkCache = new LocalZooKeeperCache(MockZooKeeper.newInstance(), executor);
localCache = new LocalZooKeeperCacheService(zkCache, null);
bundleFactory = new NamespaceBundleFactory(pulsar, Hashing.crc32());
doReturn(zkCache).when(pulsar).getLocalZkCache();
doReturn(localCache).when(pulsar).getLocalZkCacheService();
}
Aggregations