+ shardBuilder.expectShardMessage(RegisterCandidateLocal.class);
+
+ service.registerCandidate(entity);
+
+ verifyRegisterCandidateLocal(shardBuilder, entity);
+
+ service.close();
+ }
+
+ @Test
+ public void testListenerRegistration() {
+ final TestShardBuilder shardBuilder = new TestShardBuilder();
+ DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore,
+ EntityOwnerSelectionStrategyConfig.newBuilder().build()) {
+ @Override
+ protected EntityOwnershipShard.Builder newShardBuilder() {
+ return shardBuilder;
+ }
+ };
+
+ service.start();
+
+ shardBuilder.expectShardMessage(RegisterListenerLocal.class);
+
+ YangInstanceIdentifier entityId = YangInstanceIdentifier.of(QNAME);
+ Entity entity = new Entity(ENTITY_TYPE, entityId);
+ EntityOwnershipListener listener = mock(EntityOwnershipListener.class);
+
+ EntityOwnershipListenerRegistration reg = service.registerListener(entity.getType(), listener);
+
+ assertNotNull("EntityOwnershipListenerRegistration null", reg);
+ assertEquals("getEntityType", entity.getType(), reg.getEntityType());
+ assertEquals("getInstance", listener, reg.getInstance());
+
+ RegisterListenerLocal regListener = shardBuilder.waitForShardMessage();
+ assertSame("getListener", listener, regListener.getListener());
+ assertEquals("getEntityType", entity.getType(), regListener.getEntityType());
+
+ shardBuilder.expectShardMessage(UnregisterListenerLocal.class);
+
+ reg.close();
+
+ UnregisterListenerLocal unregListener = shardBuilder.waitForShardMessage();
+ assertEquals("getEntityType", entity.getType(), unregListener.getEntityType());
+ assertSame("getListener", listener, unregListener.getListener());
+
+ service.close();
+ }
+
+ @Test
+ public void testGetOwnershipState() throws Exception {
+ final TestShardBuilder shardBuilder = new TestShardBuilder();
+ DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore,
+ EntityOwnerSelectionStrategyConfig.newBuilder().build()) {
+ @Override
+ protected EntityOwnershipShard.Builder newShardBuilder() {
+ return shardBuilder;
+ }
+ };
+
+ service.start();
+
+ ShardDataTree shardDataTree = new ShardDataTree(SchemaContextHelper.entityOwners(), TreeType.OPERATIONAL);
+ shardBuilder.setDataTree(shardDataTree.getDataTree());