Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -377,18 +377,6 @@
<version>${testcontainers.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.tarantool</groupId>
<artifactId>testcontainers-java-tarantool</artifactId>
<version>v1.5.0</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
Expand Down
8 changes: 4 additions & 4 deletions tarantool-balancer/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,6 @@
<artifactId>tarantool-pooling</artifactId>
</dependency>
<!-- Test -->
<dependency>
<groupId>io.tarantool</groupId>
<artifactId>testcontainers-java-tarantool</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
Expand All @@ -46,6 +42,10 @@
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
</dependency>
<dependency>
<groupId>io.tarantool</groupId>
<artifactId>testcontainers</artifactId>
</dependency>
<!-- End test -->
</dependencies>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,16 @@
import io.netty.util.Timer;
import org.msgpack.value.ArrayValue;
import org.msgpack.value.ValueFactory;
import org.testcontainers.containers.tarantool.TarantoolContainer;

import io.tarantool.core.ManagedResource;
import io.tarantool.core.connection.ConnectionFactory;
import io.tarantool.pool.HeartbeatOpts;

public abstract class BaseTest {

protected static TarantoolContainer<?> container;

protected static final Bootstrap bootstrap =
new Bootstrap()
.group(new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory()))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,18 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.testcontainers.containers.utils.TarantoolContainerClientHelper.createTarantoolContainer;
import static org.testcontainers.containers.utils.TarantoolContainerClientHelper.executeCommandDecoded;
import io.micrometer.core.instrument.MeterRegistry;
import io.netty.util.HashedWheelTimer;
import io.netty.util.Timer;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.TarantoolContainer;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.containers.tarantool.TarantoolContainer;

import static io.tarantool.core.protocol.requests.IProtoConstant.IPROTO_DATA;
import io.tarantool.balancer.TarantoolBalancer;
Expand All @@ -41,34 +41,33 @@
import io.tarantool.pool.InstanceConnectionGroup;

@Timeout(value = 15)
@Testcontainers
public class DistributingRoundRobinBalancerTest extends BaseTest {

private static final Logger log =
LoggerFactory.getLogger(DistributingRoundRobinBalancerTest.class);

@Container
private final TarantoolContainer tt1 =
new TarantoolContainer()
.withEnv(ENV_MAP)
.withExposedPort(3305)
.withLogConsumer(new Slf4jLogConsumer(log));

@Container
private final TarantoolContainer tt2 =
new TarantoolContainer()
.withEnv(ENV_MAP)
.withExposedPort(3305)
.withLogConsumer(new Slf4jLogConsumer(log));
private static TarantoolContainer<?> tt1;
private static TarantoolContainer<?> tt2;

@BeforeEach
public void setUp() {
tt1 = createTarantoolContainer().withEnv(ENV_MAP).withExposedPorts(3301, 3305);
tt2 = createTarantoolContainer().withEnv(ENV_MAP).withExposedPorts(3301, 3305);

tt1.start();
tt2.start();
do {
count1 = ThreadLocalRandom.current().nextInt(MIN_CONNECTION_COUNT, MAX_CONNECTION_COUNT + 1);
count2 = ThreadLocalRandom.current().nextInt(MIN_CONNECTION_COUNT, MAX_CONNECTION_COUNT + 1);
} while (count1 == count2);
}

@AfterEach
void tearDown() {
tt1.stop();
tt2.stop();
}

private static IProtoClientPool createClientPool(
boolean gracefulShutdown, HeartbeatOpts heartbeatOpts, MeterRegistry metricsRegistry) {
ManagedResource<Timer> timerResource =
Expand All @@ -78,25 +77,28 @@ private static IProtoClientPool createClientPool(
factory, timerResource, gracefulShutdown, heartbeatOpts, null, metricsRegistry);
}

private int getSessionCounter(TarantoolContainer tt) throws Exception {
List<?> result = tt.executeCommandDecoded("return get_session_counter()");
private int getSessionCounter(TarantoolContainer<?> tt) throws Exception {
List<?> result = executeCommandDecoded(tt, "return get_session_counter()");
return (Integer) result.get(0);
}

private int getCallCounter(TarantoolContainer tt) throws Exception {
List<?> result = tt.executeCommandDecoded("return get_call_counter()");
private int getCallCounter(TarantoolContainer<?> tt) throws Exception {
List<?> result = executeCommandDecoded(tt, "return get_call_counter()");
return (Integer) result.get(0);
}

private void execLua(TarantoolContainer container, String command) {
private void execLua(TarantoolContainer<?> container, String command) {
try {
container.executeCommandDecoded(command);
executeCommandDecoded(container, command);
} catch (Exception e) {
}
}

private void wakeUpAllConnects(
TarantoolBalancer rrBalancer, int nodeVisits, TarantoolContainer tt1, TarantoolContainer tt2)
TarantoolBalancer rrBalancer,
int nodeVisits,
TarantoolContainer<?> tt1,
TarantoolContainer<?> tt2)
throws Exception {
walkAndJoin(rrBalancer, nodeVisits * 2);
assertEquals(count1, getSessionCounter(tt1));
Expand Down Expand Up @@ -130,13 +132,13 @@ public void testDistributingRoundRobin() throws Exception {
Arrays.asList(
InstanceConnectionGroup.builder()
.withHost(tt1.getHost())
.withPort(tt1.getPort())
.withPort(tt1.getFirstMappedPort())
.withSize(count1)
.withTag("node-a-00")
.build(),
InstanceConnectionGroup.builder()
.withHost(tt2.getHost())
.withPort(tt2.getPort())
.withPort(tt2.getFirstMappedPort())
.withSize(count2)
.withTag("node-b-00")
.build()));
Expand All @@ -160,7 +162,7 @@ public void testDistributingRoundRobinWithUnavailableNodeA() throws Exception {
.build(),
InstanceConnectionGroup.builder()
.withHost(tt2.getHost())
.withPort(tt2.getPort())
.withPort(tt2.getFirstMappedPort())
.withSize(count2)
.withTag("node-b-01")
.build()));
Expand Down Expand Up @@ -217,7 +219,7 @@ public void testDistributingRoundRobinWithUnavailableNodeANoUnlock() throws Exce
.build(),
InstanceConnectionGroup.builder()
.withHost(tt2.getHost())
.withPort(tt2.getPort())
.withPort(tt2.getFirstMappedPort())
.withSize(count2)
.withTag("node-b-02")
.build()));
Expand Down Expand Up @@ -323,12 +325,12 @@ public void testDistributingRoundRobinStartWithStuckNodeA() throws Exception {
Arrays.asList(
InstanceConnectionGroup.builder()
.withHost(tt1.getHost())
.withPort(tt1.getPort())
.withPort(tt1.getFirstMappedPort())
.withTag("node-a-01")
.build(),
InstanceConnectionGroup.builder()
.withHost(tt2.getHost())
.withPort(tt2.getPort())
.withPort(tt2.getFirstMappedPort())
.withTag("node-b-01")
.build()));
pool.setConnectTimeout(3_000);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@
import java.util.concurrent.ThreadLocalRandom;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.testcontainers.containers.utils.TarantoolContainerClientHelper.createTarantoolContainer;
import static org.testcontainers.containers.utils.TarantoolContainerClientHelper.executeCommandDecoded;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
import org.msgpack.value.ValueFactory;
import org.testcontainers.containers.TarantoolContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.containers.tarantool.TarantoolContainer;

import io.tarantool.balancer.TarantoolBalancer;
import io.tarantool.balancer.TarantoolRoundRobinBalancer;
Expand All @@ -26,28 +27,36 @@
import io.tarantool.pool.InstanceConnectionGroup;

@Timeout(value = 5)
@Testcontainers
public class RoundRobinBalancerTest extends BaseTest {

@Container
private static final TarantoolContainer tt1 = new TarantoolContainer().withEnv(ENV_MAP);

@Container
private static final TarantoolContainer tt2 = new TarantoolContainer().withEnv(ENV_MAP);
private static TarantoolContainer<?> tt1;
private static TarantoolContainer<?> tt2;

@BeforeAll
public static void setUp() {
tt1 = createTarantoolContainer();
tt2 = createTarantoolContainer();

tt1.start();
tt2.start();

count1 = ThreadLocalRandom.current().nextInt(MIN_CONNECTION_COUNT, MAX_CONNECTION_COUNT + 1);
count2 = ThreadLocalRandom.current().nextInt(MIN_CONNECTION_COUNT, MAX_CONNECTION_COUNT + 1);
}

private int getSessionCounter(TarantoolContainer tt) throws Exception {
List<?> result = tt.executeCommandDecoded("return get_session_counter()");
@AfterAll
static void tearDown() {
tt1.stop();
tt2.stop();
}

private int getSessionCounter(TarantoolContainer<?> tt) throws Exception {
List<?> result = executeCommandDecoded(tt, "return get_session_counter()");
return (Integer) result.get(0);
}

private int getCallCounter(TarantoolContainer tt) throws Exception {
List<?> result = tt.executeCommandDecoded("return get_call_counter()");
private int getCallCounter(TarantoolContainer<?> tt) throws Exception {
List<?> result = executeCommandDecoded(tt, "return get_call_counter()");
return (Integer) result.get(0);
}

Expand All @@ -58,13 +67,13 @@ public void testRoundRobin() throws Exception {
Arrays.asList(
InstanceConnectionGroup.builder()
.withHost(tt1.getHost())
.withPort(tt1.getPort())
.withPort(tt1.getFirstMappedPort())
.withSize(count1)
.withTag("node-a")
.build(),
InstanceConnectionGroup.builder()
.withHost(tt2.getHost())
.withPort(tt2.getPort())
.withPort(tt2.getFirstMappedPort())
.withSize(count2)
.withTag("node-b")
.build()));
Expand Down
Loading
Loading