package org.opendaylight.controller.cluster.datastore.entityownership;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import akka.actor.Props;
import com.google.common.base.Function;
import com.google.common.base.Optional;
+import com.google.common.collect.Sets;
import com.google.common.util.concurrent.Uninterruptibles;
+import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
DatastoreContext datastoreContext = DatastoreContext.newBuilder().dataStoreType(dataStoreType).
shardInitializationTimeout(10, TimeUnit.SECONDS).build();
- Configuration configuration = new ConfigurationImpl(new ModuleShardConfigProvider() {
+ ModuleShardConfigProvider configProvider = new ModuleShardConfigProvider() {
@Override
public Map<String, ModuleConfig> retrieveModuleConfigs(Configuration configuration) {
return Collections.emptyMap();
}
- });
+ };
+ Configuration configuration = new ConfigurationImpl(configProvider) {
+ @Override
+ public Collection<String> getUniqueMemberNamesForAllShards() {
+ return Sets.newHashSet("member-1");
+ }
+ };
DatastoreContextFactory mockContextFactory = Mockito.mock(DatastoreContextFactory.class);
Mockito.doReturn(datastoreContext).when(mockContextFactory).getBaseDatastoreContext();
Mockito.doReturn(datastoreContext).when(mockContextFactory).getShardDatastoreContext(Mockito.anyString());
- dataStore = new DistributedDataStore(getSystem(), new MockClusterWrapper(), configuration, mockContextFactory);
+ dataStore = new DistributedDataStore(getSystem(), new MockClusterWrapper(), configuration, mockContextFactory, null);
dataStore.onGlobalContextUpdated(SchemaContextHelper.entityOwners());
}
@Test
public void testEntityOwnershipShardCreated() throws Exception {
- DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore);
+ DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore,
+ EntityOwnerSelectionStrategyConfig.newBuilder().build());
service.start();
Future<ActorRef> future = dataStore.getActorContext().findLocalShardAsync(
@Test
public void testRegisterCandidate() throws Exception {
final TestShardBuilder shardBuilder = new TestShardBuilder();
- DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore) {
+ DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore,
+ EntityOwnerSelectionStrategyConfig.newBuilder().build()) {
@Override
protected EntityOwnershipShard.Builder newShardBuilder() {
return shardBuilder;
@Test
public void testCloseCandidateRegistration() throws Exception {
final TestShardBuilder shardBuilder = new TestShardBuilder();
- DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore) {
+ DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore,
+ EntityOwnerSelectionStrategyConfig.newBuilder().build()) {
@Override
protected EntityOwnershipShard.Builder newShardBuilder() {
return shardBuilder;
@Test
public void testListenerRegistration() {
final TestShardBuilder shardBuilder = new TestShardBuilder();
- DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore) {
+ DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore,
+ EntityOwnerSelectionStrategyConfig.newBuilder().build()) {
@Override
protected EntityOwnershipShard.Builder newShardBuilder() {
return shardBuilder;
@Test
public void testGetOwnershipState() throws Exception {
final TestShardBuilder shardBuilder = new TestShardBuilder();
- DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore) {
+ DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore,
+ EntityOwnerSelectionStrategyConfig.newBuilder().build()) {
@Override
protected EntityOwnershipShard.Builder newShardBuilder() {
return shardBuilder;
service.close();
}
+ @Test
+ public void testIsCandidateRegistered() throws CandidateAlreadyRegisteredException {
+ final TestShardBuilder shardBuilder = new TestShardBuilder();
+ DistributedEntityOwnershipService service = new DistributedEntityOwnershipService(dataStore,
+ EntityOwnerSelectionStrategyConfig.newBuilder().build()) {
+ @Override
+ protected EntityOwnershipShard.Builder newShardBuilder() {
+ return shardBuilder;
+ }
+ };
+
+ service.start();
+
+ final Entity test = new Entity("test-type", "test");
+
+ assertFalse(service.isCandidateRegistered(test));
+
+ service.registerCandidate(test);
+
+ assertTrue(service.isCandidateRegistered(test));
+
+ service.close();
+ }
+
private static void verifyGetOwnershipState(DistributedEntityOwnershipService service, Entity entity,
boolean isOwner, boolean hasOwner) {
Optional<EntityOwnershipState> state = service.getOwnershipState(entity);