Search in sources :

Example 1 with Repeat

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)));
}
Also used : Member(com.hazelcast.cluster.Member) MemberVersion(com.hazelcast.version.MemberVersion) ParallelJVMTest(com.hazelcast.test.annotation.ParallelJVMTest) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test) Repeat(com.hazelcast.test.annotation.Repeat)

Example 2 with Repeat

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());
}
Also used : Statement(org.junit.runners.model.Statement) Repeat(com.hazelcast.test.annotation.Repeat)

Example 3 with Repeat

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);
}
Also used : HazelcastInstance(com.hazelcast.core.HazelcastInstance) ServerConnectionManager(com.hazelcast.internal.server.ServerConnectionManager) TextProtocolClient(com.hazelcast.internal.nio.ascii.TextProtocolClient) InetAddress(java.net.InetAddress) NightlyTest(com.hazelcast.test.annotation.NightlyTest) Test(org.junit.Test) Repeat(com.hazelcast.test.annotation.Repeat)

Example 4 with Repeat

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);
}
Also used : RingbufferContainer(com.hazelcast.ringbuffer.impl.RingbufferContainer) HazelcastInstance(com.hazelcast.core.HazelcastInstance) JetService(com.hazelcast.jet.JetService) Config(com.hazelcast.config.Config) RingbufferService(com.hazelcast.ringbuffer.impl.RingbufferService) ObjectNamespace(com.hazelcast.internal.services.ObjectNamespace) NightlyTest(com.hazelcast.test.annotation.NightlyTest) Test(org.junit.Test) Repeat(com.hazelcast.test.annotation.Repeat)

Aggregations

Repeat (com.hazelcast.test.annotation.Repeat)4 Test (org.junit.Test)3 HazelcastInstance (com.hazelcast.core.HazelcastInstance)2 NightlyTest (com.hazelcast.test.annotation.NightlyTest)2 Member (com.hazelcast.cluster.Member)1 Config (com.hazelcast.config.Config)1 TextProtocolClient (com.hazelcast.internal.nio.ascii.TextProtocolClient)1 ServerConnectionManager (com.hazelcast.internal.server.ServerConnectionManager)1 ObjectNamespace (com.hazelcast.internal.services.ObjectNamespace)1 JetService (com.hazelcast.jet.JetService)1 RingbufferContainer (com.hazelcast.ringbuffer.impl.RingbufferContainer)1 RingbufferService (com.hazelcast.ringbuffer.impl.RingbufferService)1 ParallelJVMTest (com.hazelcast.test.annotation.ParallelJVMTest)1 QuickTest (com.hazelcast.test.annotation.QuickTest)1 MemberVersion (com.hazelcast.version.MemberVersion)1 InetAddress (java.net.InetAddress)1 Statement (org.junit.runners.model.Statement)1