package org.infinispan.partitionhandling;
import java.util.Collections;
import java.util.Optional;
import org.infinispan.partitionhandling.impl.PreferConsistencyStrategy;
import org.infinispan.topology.ClusterCacheStatus;
import org.infinispan.topology.ClusterTopologyManager;
import org.infinispan.topology.ClusterTopologyManagerImpl;
import org.infinispan.topology.PersistentUUIDManager;
import org.infinispan.topology.PersistentUUIDManagerImpl;
import org.infinispan.topology.RebalancingStatus;
import org.infinispan.util.logging.events.EventLogManager;
import org.infinispan.util.logging.events.impl.EventLogManagerImpl;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@Test(groups = "unit", testName = "partitionhandling.PreferConsistencyStrategyTest")
public class PreferConsistencyStrategyTest {
private PreferConsistencyStrategy preferConsistencyStrategy;
private ClusterCacheStatus status;
@BeforeMethod
public void beforeMethod() {
EventLogManager eventLogManager = new EventLogManagerImpl();
PersistentUUIDManager persistentUUIDManager = new PersistentUUIDManagerImpl();
ClusterTopologyManager topologyManager = new ClusterTopologyManagerImpl();
preferConsistencyStrategy = new PreferConsistencyStrategy(eventLogManager, persistentUUIDManager);
status = new ClusterCacheStatus("does-not-matter", preferConsistencyStrategy, topologyManager, null, Optional.empty(), persistentUUIDManager);
}
public void testAvoidingNullPointerExceptionWhenUpdatingPartitionWithNullTopology() {
//when
preferConsistencyStrategy.onPartitionMerge(status, Collections.emptyList());
//then
Assert.assertNull(status.getCurrentTopology());
Assert.assertNull(status.getStableTopology());
Assert.assertEquals(AvailabilityMode.AVAILABLE, status.getAvailabilityMode());
Assert.assertEquals(RebalancingStatus.COMPLETE, status.getRebalancingStatus());
}
}