use of com.hazelcast.test.annotation.Repeat in project hazelcast by hazelcast.
the class QueryUtilsTest method test_findLightJobCoordinator.
@Test
// the test calls methods that return random value - let's try multiple times so that it doesn't pass by chance
@Repeat(5)
public void test_findLightJobCoordinator() {
MemberVersion v1 = MemberVersion.of(0, 1, 0);
MemberVersion v2 = MemberVersion.of(0, 2, 0);
MemberVersion v3 = MemberVersion.of(0, 3, 0);
Member mv1 = mock(Member.class);
when(mv1.getVersion()).thenReturn(v1);
Member mv1_1 = mock(Member.class);
when(mv1_1.getVersion()).thenReturn(v1);
Member mv1_lite = mock(Member.class);
when(mv1_lite.getVersion()).thenReturn(v1);
when(mv1_lite.isLiteMember()).thenReturn(true);
Member mv2 = mock(Member.class);
when(mv2.getVersion()).thenReturn(v2);
Member mv2_1 = mock(Member.class);
when(mv2_1.getVersion()).thenReturn(v2);
Member mv2_lite = mock(Member.class);
when(mv2_lite.getVersion()).thenReturn(v2);
when(mv2_lite.isLiteMember()).thenReturn(true);
Member mv3 = mock(Member.class);
when(mv3.getVersion()).thenReturn(v3);
// failing cases
assertNull(QueryUtils.memberOfLargerSameVersionGroup(emptyList(), null));
assertNull(QueryUtils.memberOfLargerSameVersionGroup(singletonList(mv1_lite), null));
assertNull(QueryUtils.memberOfLargerSameVersionGroup(singletonList(mv1_lite), mv1_lite));
assertThatThrownBy(() -> QueryUtils.memberOfLargerSameVersionGroup(asList(mv1, mv2, mv3), null)).isInstanceOf(RuntimeException.class).hasMessage("More than 2 distinct member versions found: 0.1, 0.2, 0.3");
// one member in the cluster
assertSame(mv1, QueryUtils.memberOfLargerSameVersionGroup(singletonList(mv1), mv1));
// two members with same ver - must choose the local one
assertSame(mv1, QueryUtils.memberOfLargerSameVersionGroup(asList(mv1, mv1_1), mv1));
assertSame(mv1, QueryUtils.memberOfLargerSameVersionGroup(asList(mv1_1, mv1), mv1));
// lite and non-lite same ver, must choose non-lite
assertSame(mv1, QueryUtils.memberOfLargerSameVersionGroup(asList(mv1, mv1_lite), mv1));
assertSame(mv1, QueryUtils.memberOfLargerSameVersionGroup(asList(mv1, mv1_lite), mv1_lite));
// two versions, same count - must choose newer even if not local
assertSame(mv2, QueryUtils.memberOfLargerSameVersionGroup(asList(mv1, mv2), mv1));
assertSame(mv2, QueryUtils.memberOfLargerSameVersionGroup(asList(mv1, mv2), mv2));
// older version has bigger group - must use local
assertSame(mv1, QueryUtils.memberOfLargerSameVersionGroup(asList(mv1, mv1_1, mv2), mv1));
// older group bigger, but all lite - choose newer
assertSame(mv2, QueryUtils.memberOfLargerSameVersionGroup(asList(mv1_lite, mv1_lite, mv2), null));
// test cases with random result
assertTrueEventuallyFast(() -> assertSame(mv1, QueryUtils.memberOfLargerSameVersionGroup(asList(mv1, mv1_1), null)));
assertTrueEventuallyFast(() -> assertSame(mv1_1, QueryUtils.memberOfLargerSameVersionGroup(asList(mv1, mv1_1), null)));
assertTrueEventuallyFast(() -> assertSame(mv1, QueryUtils.memberOfLargerSameVersionGroup(asList(mv1, mv1_1), mv2)));
assertTrueEventuallyFast(() -> assertSame(mv1_1, QueryUtils.memberOfLargerSameVersionGroup(asList(mv1, mv1_1), mv2)));
// older version group larger - must choose one of the older
assertTrueEventuallyFast(() -> assertSame(mv1, QueryUtils.memberOfLargerSameVersionGroup(asList(mv1, mv1_1, mv2), mv2)));
assertTrueEventuallyFast(() -> assertSame(mv1_1, QueryUtils.memberOfLargerSameVersionGroup(asList(mv1, mv1_1, mv2), mv2)));
}
use of com.hazelcast.test.annotation.Repeat in project hazelcast by hazelcast.
the class AbstractHazelcastClassRunner method methodBlock.
@Override
protected Statement methodBlock(FrameworkMethod method) {
Statement statement = super.methodBlock(method);
Repeat repeatable = getRepeatable(method);
if (repeatable == null || repeatable.value() < 2) {
return statement;
}
return new TestRepeater(statement, method.getMethod(), repeatable.value());
}
use of com.hazelcast.test.annotation.Repeat in project hazelcast by hazelcast.
the class SingleProtocolHandlerRegressionTest method testWrongProtocolRegressionTest.
/**
* Regression test for #19756
*/
@Test
@Repeat(50)
public void testWrongProtocolRegressionTest() {
HazelcastInstance instance = Hazelcast.newHazelcastInstance(createMemberEndpointConfig());
ServerConnectionManager connectionManager = ((HazelcastInstanceProxy) instance).getOriginal().node.getServer().getConnectionManager(CLIENT);
// Get address of the client endpoint
InetAddress address = instance.getCluster().getLocalMember().getSocketAddress(CLIENT).getAddress();
int port = instance.getCluster().getLocalMember().getSocketAddress(CLIENT).getPort();
textProtocolClient = new TextProtocolClient(address, port);
textProtocolClient.connect();
assertTrueEventually(() -> assertTrue(textProtocolClient.isConnected()), ASSERT_TRUE_TIMEOUT_SECS);
assertTrueEventually(() -> assertEquals(connectionManager.getConnections().size(), 1), ASSERT_TRUE_TIMEOUT_SECS);
// Send wrong protocol data to client endpoint
textProtocolClient.sendData("AAACP2CP2");
// Assert that connection must be closed on the member side
assertTrueEventually(() -> assertTrue("Connection must be closed on the member side", connectionManager.getConnections().isEmpty()), ASSERT_TRUE_TIMEOUT_SECS);
}
use of com.hazelcast.test.annotation.Repeat in project hazelcast by hazelcast.
the class ObservableRingbufferContainerLeakTest method testLeakingRingbufferContainerWhenUsingObservableIterator.
/**
* Regression test for #19580
*/
@Test
@Repeat(100)
public void testLeakingRingbufferContainerWhenUsingObservableIterator() {
Config config = smallInstanceConfig();
config.setProperty("hazelcast.partition.count", "1");
config.getJetConfig().setEnabled(true);
HazelcastInstance hz = createHazelcastInstance(config);
JetService jet = hz.getJet();
Ringbuffer<Object> ringbuffer = hz.getRingbuffer("__jet.observables.my-observable");
Observable<Object> obs = jet.getObservable("my-observable");
ringbuffer.add(42);
ringbuffer.addAsync(DoneItem.DONE_ITEM, OverflowPolicy.OVERWRITE);
Iterator<Object> it = obs.iterator();
it.hasNext();
it.next();
it.hasNext();
obs.destroy();
RingbufferService ringbufferService = Accessors.getService(hz, RingbufferService.SERVICE_NAME);
Map<ObjectNamespace, RingbufferContainer> containers = ringbufferService.getContainers().values().iterator().next();
assertThat(containers).hasSize(0);
}
Aggregations