package org.infinispan.container.versioning; import static org.testng.AssertJUnit.assertEquals; import java.util.Arrays; import java.util.List; import org.infinispan.remoting.transport.Address; import org.testng.annotations.Test; /** * Test numeric version generator logic */ @Test(groups = "functional", testName = "container.versioning.NumericVersionGeneratorTest") public class NumericVersionGeneratorTest { public void testGenerateVersion() { NumericVersionGenerator vg = new NumericVersionGenerator().clustered(true); vg.resetCounter(); TestAddress addr1 = new TestAddress(1); TestAddress addr2 = new TestAddress(2); TestAddress addr3 = new TestAddress(1); List<Address> members = Arrays.asList((Address)addr1, addr2, addr3); vg.calculateRank(addr2, members, 1); assertEquals(new NumericVersion(0x1000200000001L), vg.generateNew()); assertEquals(new NumericVersion(0x1000200000002L), vg.generateNew()); assertEquals(new NumericVersion(0x1000200000003L), vg.generateNew()); } class TestAddress implements Address { int addressNum; TestAddress(int addressNum) { this.addressNum = addressNum; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; if (!super.equals(o)) return false; TestAddress that = (TestAddress) o; if (addressNum != that.addressNum) return false; return true; } @Override public int hashCode() { int result = super.hashCode(); result = 31 * result + addressNum; return result; } @Override public int compareTo(Address o) { TestAddress oa = (TestAddress) o; return addressNum - oa.addressNum; } } }