Skip to content

Commit

Permalink
ci: refactor ci test cluster bootstrap
Browse files Browse the repository at this point in the history
Signed-off-by: iGxnon <[email protected]>
  • Loading branch information
iGxnon committed Mar 11, 2024
1 parent bf8b48d commit 88caacf
Show file tree
Hide file tree
Showing 7 changed files with 114 additions and 129 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
uses: gradle/actions/setup-gradle@v3

- name: Start the cluster
run: ./scripts/quick_start.sh
run: docker compose -f ci/docker-compose.yml up -d

- name: Run test
run: ./gradlew test
Expand Down
71 changes: 71 additions & 0 deletions ci/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
version: '3.9'

networks:
xline_network:
driver: bridge
ipam:
driver: default
config:
- subnet: "172.18.0.0/16"

services:
node1:
image: ghcr.io/xline-kv/xline:latest
networks:
xline_network:
ipv4_address: 172.18.0.2
volumes:
- .:/mnt
ports:
- "2379:2379"
environment:
RUST_LOG: curp=debug,xline=debug
command: >
xline
--name node1
--members node1=http://172.18.0.2:2379,node2=http://172.18.0.3:2379,node3=http://172.18.0.4:2379
--storage-engine rocksdb
--data-dir /usr/local/xline/data-dir
--auth-public-key /mnt/public.pem
--auth-private-key /mnt/private.pem
--is-leader
node2:
image: ghcr.io/xline-kv/xline:latest
networks:
xline_network:
ipv4_address: 172.18.0.3
volumes:
- .:/mnt
ports:
- "2380:2379"
environment:
RUST_LOG: curp=debug,xline=debug
command: >
xline
--name node2
--members node1=http://172.18.0.2:2379,node2=http://172.18.0.3:2379,node3=http://172.18.0.4:2379
--storage-engine rocksdb
--data-dir /usr/local/xline/data-dir
--auth-public-key /mnt/public.pem
--auth-private-key /mnt/private.pem
node3:
image: ghcr.io/xline-kv/xline:latest
networks:
xline_network:
ipv4_address: 172.18.0.4
volumes:
- .:/mnt
ports:
- "2381:2379"
environment:
RUST_LOG: curp=debug,xline=debug
command: >
xline
--name node3
--members node1=http://172.18.0.2:2379,node2=http://172.18.0.3:2379,node3=http://172.18.0.4:2379
--storage-engine rocksdb
--data-dir /usr/local/xline/data-dir
--auth-public-key /mnt/public.pem
--auth-private-key /mnt/private.pem
28 changes: 28 additions & 0 deletions ci/private.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCnAxxSXJYWZCKr
6f6j0HRUwkhX/0+GXjEclWoLA5+KZAuWMSu8bz6X+IScv4vNwORlGSWOnrz+8mb2
I0F6teVZWfWFqsnyWk7IxM+h9yTg7aY/8685YfWTL7fpWq1/3Fniz4QbsYFuzB1V
gaZ5fD2CSYIKzSD+qVSlXF25JDFHV7b2OdHrX0UKZOTWY/VE//STt+PJKdX9R3pl
kGwAzJIkkcAZy0vhvqT3ASTgXchNeN8wGYYb3YirkqIsQB5Xcs1R1W+yz+IrVa6/
0WMcyE6qtJPZ0lviyT0nHV/pZjXuD4B0aja/1fk/HmXDPMjpK1BuCBTStM/KlcrA
oAxo+YDhAgMBAAECggEAIyJhY+Y8YMuCC753JkklH+ubQn/gX/kSxduc6mJBvuBb
G6aOd97DQT8zzrHxHEDXC3ml0AIO6mdeR6uVC9aWQBzPrOYIA+cBqfTVZVJTvMnh
7pQ6KY01F1izjPDZjQtzEWbseNL30rI3/ZP/zJDZc745EEKlDU3cE8mBogA+Ka6w
GLozT9qQf8knBrtzxH6SvrZpfaRlP95is82b4IuPhqYdG7dVYFTALE1MyVrCbS4Y
KytjNLgwp1bIQtWrzMebBGoiU+DvDcRY8zvOfFupDwpYCt3p1aU5wyYYdr74esV7
jjqHj89Ua65JHJ3XnMAaMc4dHM2FsGqMsOv/DDKInQKBgQDawckQEekx0QuP3eJP
GWdZ87oc+FVjDe3bYhAnCf/yXRJoqcs5vr1m1yCXFfsjbQFYHWXR9AUtNn5HCwOZ
zoT1Mv96fXBVGQORgzvlUWS43uKpfIPDVv2I6ZcKSIQAGOgcWYvmBDhYqPHgmx3o
VSrNGWtLdyw3rD1J6O+1RwtbiwKBgQDDchmY59EXBiTvlyT3Qjl0vZFMHa+TElbh
ikNtYltbUHtamOXZzpdk/KA7X2dYi0QpVfbbpfP/ly5lYvgZwl8h90Obopru+ACM
ndlKBfNQYArmWY6bJ2CwF7j1aTCCHZuVuX6/pzFVStRcssn15uoVaIyKd/MhJzLF
S3ertQkSwwKBgAniMYRhWsjeaghQ/RWXzzyYL3N5oNn92h5MWvB4mjDIFbnW2hC8
1m/cDmPlIVijZyklAuGuhcFaMfBhxgLf+s/dQv+0xSuDGs8rP7yHpeZYY6NGtelQ
d9oEu8dCKXybo3kMbq6wyB7xWyRLvdkuZ+WmXVumgb/uL0K0nIfzMscrAoGAeA1e
K845YSslBQaSbk7/e/X1iguyDWT2eRO01zvTYgPNwZipl2CPHjkPM2km0fy5oaps
N/94IUd7+EsSmsAKL5LytGbtRFyR+c376rw8+OIFz/iy4BsQCRqJQjWa1lHZf96x
PIg2hW2xhD9OTv3IS94sdeG4NmUdipMQryhEqoECgYEAkvXOg66IAVTrO6qgoyl5
42oufa/QE+qOAYoQEpmx3SZx6tMkycfAQqUHYcXhW1HNjyGbbg/sl13yddnPQqig
+ObtQNSIqGZWCc/HIqM//pPI3MHPhWARMOmAbk0I1mT0QKhuFfSugV2xb1Dj/Rvf
0VdB8txY+5Wz6zP1F2g46gM=
-----END PRIVATE KEY-----
9 changes: 9 additions & 0 deletions ci/public.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApwMcUlyWFmQiq+n+o9B0
VMJIV/9Phl4xHJVqCwOfimQLljErvG8+l/iEnL+LzcDkZRkljp68/vJm9iNBerXl
WVn1harJ8lpOyMTPofck4O2mP/OvOWH1ky+36Vqtf9xZ4s+EG7GBbswdVYGmeXw9
gkmCCs0g/qlUpVxduSQxR1e29jnR619FCmTk1mP1RP/0k7fjySnV/Ud6ZZBsAMyS
JJHAGctL4b6k9wEk4F3ITXjfMBmGG92Iq5KiLEAeV3LNUdVvss/iK1Wuv9FjHMhO
qrST2dJb4sk9Jx1f6WY17g+AdGo2v9X5Px5lwzzI6StQbggU0rTPypXKwKAMaPmA
4QIDAQAB
-----END PUBLIC KEY-----
58 changes: 3 additions & 55 deletions jxline-core/src/test/java/KVTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,11 @@ public class KVTest {
private static final ByteSequence SAMPLE_VALUE_2 = bytesOf("sample_value2");
private static final ByteSequence SAMPLE_KEY_3 = bytesOf("sample_key3");

private static final String INIT_ENDPOINT = "http://127.0.0.1:2379";

@BeforeAll
static void onConnect() {
kvClient = Client.builder().endpoints("http://172.20.0.5:2379").build().getKVClient();
kvClient = Client.builder().endpoints(INIT_ENDPOINT).build().getKVClient();
}

public static ByteSequence bytesOf(final String string) {
Expand Down Expand Up @@ -103,30 +105,6 @@ public void testGetWithRev() throws Exception {
.isEqualTo(SAMPLE_VALUE.toString(StandardCharsets.UTF_8));
}

@Test
public void testGetSortedPrefix() throws Exception {
String prefix = randomString();
int numPrefix = 3;
putKeysWithPrefix(prefix, numPrefix);

GetOption option =
GetOption.builder()
.withSortField(GetOption.SortTarget.KEY)
.withSortOrder(GetOption.SortOrder.DESCEND)
.isPrefix(true)
.build();
CompletableFuture<GetResponse> getFeature = kvClient.get(bytesOf(prefix), option);
GetResponse response = getFeature.get();

assertThat(response.getKvs()).hasSize(numPrefix);
for (int i = 0; i < numPrefix; i++) {
assertThat(response.getKvs().get(i).getKey().toString(StandardCharsets.UTF_8))
.isEqualTo(prefix + (numPrefix - i - 1));
assertThat(response.getKvs().get(i).getValue().toString(StandardCharsets.UTF_8))
.isEqualTo(String.valueOf(numPrefix - i - 1));
}
}

@Test
public void testDelete() throws Exception {
// Put content so that we actually have something to delete
Expand All @@ -143,34 +121,4 @@ public void testDelete() throws Exception {
DeleteResponse delResp = deleteFuture.get();
assertThat(delResp.getDeleted()).isEqualTo(resp.getKvs().size());
}

@Test
public void testGetAndDeleteWithPrefix() throws Exception {
String prefix = randomString();
ByteSequence key = bytesOf(prefix);
int numPrefixes = 10;

putKeysWithPrefix(prefix, numPrefixes);

// verify get withPrefix.
CompletableFuture<GetResponse> getFuture =
kvClient.get(key, GetOption.builder().isPrefix(true).build());
GetResponse getResp = getFuture.get();
assertThat(getResp.getCount()).isEqualTo(numPrefixes);

// verify del withPrefix.
DeleteOption deleteOpt = DeleteOption.builder().isPrefix(true).build();
CompletableFuture<DeleteResponse> delFuture = kvClient.delete(key, deleteOpt);
DeleteResponse delResp = delFuture.get();
assertThat(delResp.getDeleted()).isEqualTo(numPrefixes);
}

private static void putKeysWithPrefix(String prefix, int numPrefixes)
throws ExecutionException, InterruptedException {
for (int i = 0; i < numPrefixes; i++) {
ByteSequence key = bytesOf(prefix + i);
ByteSequence value = bytesOf("" + i);
kvClient.put(key, value).get();
}
}
}
4 changes: 2 additions & 2 deletions jxline-core/src/test/java/ProtocolTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@

@Timeout(value = 20)
public class ProtocolTest {
static ProtocolClient client;
private static ProtocolClient client;

static String INIT_ENDPOINT = "http://172.20.0.5:2379";
private static final String INIT_ENDPOINT = "http://127.0.0.1:2379";

@BeforeAll
static void onConnect() {
Expand Down
71 changes: 0 additions & 71 deletions scripts/quick_start.sh

This file was deleted.

0 comments on commit 88caacf

Please sign in to comment.