Skip to content

Commit 9732ef7

Browse files
authored
Use a shared engine for all the tests (#26)
* Use a shared engine for tests * Debugging * Remove the debug statement * Updated the github action versions
1 parent 11c5ccb commit 9732ef7

File tree

10 files changed

+74
-50
lines changed

10 files changed

+74
-50
lines changed

.github/workflows/maven-build.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ jobs:
1515
fail-fast: false
1616

1717
steps:
18-
- uses: actions/checkout@v2
18+
- uses: actions/checkout@v3
1919
- name: Set up JDK
20-
uses: actions/setup-java@v2
20+
uses: actions/setup-java@v3
2121
with:
2222
java-version: ${{ matrix.java-version }}
2323
distribution: 'adopt'

rai-sdk/src/test/java/com/relationalai/DatabaseTest.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@
2626
import org.junit.jupiter.api.Test;
2727
import org.junit.jupiter.api.TestInstance;
2828
import org.junit.jupiter.api.TestInstance.Lifecycle;
29+
import org.junit.jupiter.api.extension.ExtendWith;
2930

3031
// Test the database management APIs.
3132
@TestInstance(Lifecycle.PER_CLASS)
33+
@ExtendWith({TestExtension.class})
3234
public class DatabaseTest extends UnitTest {
3335
Database find(Database[] databases, String name) {
3436
return find(databases, item -> item.name.equals(name));
@@ -38,8 +40,6 @@ Database find(Database[] databases, String name) {
3840
void testDatabase() throws HttpError, InterruptedException, IOException {
3941
var client = createClient();
4042

41-
ensureEngine(client);
42-
4343
try {
4444
client.deleteDatabase(databaseName);
4545
} catch (HttpError e) {
@@ -199,12 +199,5 @@ void testDatabase() throws HttpError, InterruptedException, IOException {
199199

200200
var deleteRsp = client.deleteDatabase(databaseName);
201201
assertEquals(databaseName, deleteRsp.name);
202-
203-
try {
204-
// deleteEngineWait terminates its polling loop with a 404
205-
client.deleteEngineWait(engineName);
206-
} catch (HttpError e) {
207-
assertEquals(e.statusCode, 404);
208-
}
209202
}
210203
}

rai-sdk/src/test/java/com/relationalai/EngineTest.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@
2424
import org.junit.jupiter.api.Test;
2525
import org.junit.jupiter.api.TestInstance;
2626
import org.junit.jupiter.api.TestInstance.Lifecycle;
27+
import org.junit.jupiter.api.extension.ExtendWith;
2728

2829
// Test the engine management APIs.
2930
@TestInstance(Lifecycle.PER_CLASS)
31+
@ExtendWith({TestExtension.class})
3032
public class EngineTest extends UnitTest {
3133
Engine find(Engine[] engines, String name) {
3234
return find(engines, item -> item.name.equals(name));
@@ -35,16 +37,6 @@ Engine find(Engine[] engines, String name) {
3537
@Test void testEngine() throws HttpError, InterruptedException, IOException {
3638
var client = createClient();
3739

38-
try {
39-
client.deleteEngineWait(engineName);
40-
} catch (HttpError e) {
41-
assertEquals(e.statusCode, 404);
42-
}
43-
44-
var createRsp = client.createEngineWait(engineName);
45-
assertEquals(createRsp.name, engineName);
46-
assertEquals(createRsp.state, "PROVISIONED");
47-
4840
var engine = client.getEngine(engineName);
4941
assertEquals(engine.name, engineName);
5042
assertEquals(engine.state, "PROVISIONED");
@@ -62,7 +54,6 @@ Engine find(Engine[] engines, String name) {
6254
assertNull(engine);
6355

6456
HttpError error = null;
65-
6657
try {
6758
// deleteEngineWait terminates its polling loop with a 404
6859
client.deleteEngineWait(engineName);

rai-sdk/src/test/java/com/relationalai/ExecuteAsyncTest.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.junit.jupiter.api.AfterAll;
2020
import org.junit.jupiter.api.Test;
2121
import org.junit.jupiter.api.TestInstance;
22+
import org.junit.jupiter.api.extension.ExtendWith;
2223
import relationalai.protocol.Message;
2324

2425
import java.io.IOException;
@@ -32,6 +33,7 @@
3233
import static org.junit.jupiter.api.Assertions.*;
3334

3435
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
36+
@ExtendWith({TestExtension.class})
3537
public class ExecuteAsyncTest extends UnitTest {
3638
@Test
3739
void testExecuteAsync() throws HttpError, InterruptedException, IOException, URISyntaxException {
@@ -70,11 +72,5 @@ void tearDown() throws IOException, HttpError, InterruptedException {
7072
var client = createClient();
7173
var deleteRsp = client.deleteDatabase(databaseName);
7274
assertEquals(databaseName, deleteRsp.name);
73-
try {
74-
// deleteEngineWait terminates its polling loop with a 404
75-
client.deleteEngineWait(engineName);
76-
} catch (HttpError e) {
77-
assertEquals(e.statusCode, 404);
78-
}
7975
}
8076
}

rai-sdk/src/test/java/com/relationalai/ExecuteTest.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@
2424
import org.junit.jupiter.api.Test;
2525
import org.junit.jupiter.api.TestInstance;
2626
import org.junit.jupiter.api.TestInstance.Lifecycle;
27+
import org.junit.jupiter.api.extension.ExtendWith;
2728

2829
// Test transaction execution.
2930
@TestInstance(Lifecycle.PER_CLASS)
31+
@ExtendWith({TestExtension.class})
3032
public class ExecuteTest extends UnitTest {
3133
@Test void testExecuteV1() throws HttpError, InterruptedException, IOException {
3234
var client = createClient();
@@ -57,11 +59,5 @@ public class ExecuteTest extends UnitTest {
5759
var client = createClient();
5860
var deleteRsp = client.deleteDatabase(databaseName);
5961
assertEquals(databaseName, deleteRsp.name);
60-
try {
61-
// deleteEngineWait terminates its polling loop with a 404
62-
client.deleteEngineWait(engineName);
63-
} catch (HttpError e) {
64-
assertEquals(e.statusCode, 404);
65-
}
6662
}
6763
}

rai-sdk/src/test/java/com/relationalai/LoadCsvTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@
2626
import org.junit.jupiter.api.Test;
2727
import org.junit.jupiter.api.TestInstance;
2828
import org.junit.jupiter.api.TestInstance.Lifecycle;
29+
import org.junit.jupiter.api.extension.ExtendWith;
2930

3031
// Test loading CSV data.
3132
@TestInstance(Lifecycle.PER_CLASS)
33+
@ExtendWith({TestExtension.class})
3234
public class LoadCsvTest extends UnitTest {
3335
static final String sample = "" +
3436
"cocktail,quantity,price,date\n" +

rai-sdk/src/test/java/com/relationalai/LoadJsonTest.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@
2525
import org.junit.jupiter.api.Test;
2626
import org.junit.jupiter.api.TestInstance;
2727
import org.junit.jupiter.api.TestInstance.Lifecycle;
28+
import org.junit.jupiter.api.extension.ExtendWith;
2829

2930
// Test loading JSON data.
3031
@TestInstance(Lifecycle.PER_CLASS)
32+
@ExtendWith({TestExtension.class})
3133
public class LoadJsonTest extends UnitTest {
3234
static final String sample = "{" +
3335
"\"name\":\"Amira\",\n" +
@@ -75,11 +77,5 @@ void tearDown() throws IOException, HttpError, InterruptedException {
7577
var client = createClient();
7678
var deleteRsp = client.deleteDatabase(databaseName);
7779
assertEquals(databaseName, deleteRsp.name);
78-
try {
79-
// deleteEngineWait terminates its polling loop with a 404
80-
client.deleteEngineWait(engineName);
81-
} catch (HttpError e) {
82-
assertEquals(e.statusCode, 404);
83-
}
8480
}
8581
}

rai-sdk/src/test/java/com/relationalai/ModelsTest.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@
2626
import org.junit.jupiter.api.Test;
2727
import org.junit.jupiter.api.TestInstance;
2828
import org.junit.jupiter.api.TestInstance.Lifecycle;
29+
import org.junit.jupiter.api.extension.ExtendWith;
2930

3031
// Test model APIs.
3132
@TestInstance(Lifecycle.PER_CLASS)
33+
@ExtendWith({TestExtension.class})
3234
public class ModelsTest extends UnitTest {
3335
static final String testModel = "def R = \"hello\", \"world\"";
3436

@@ -80,11 +82,5 @@ void tearDown() throws IOException, HttpError, InterruptedException {
8082
var client = createClient();
8183
var deleteRsp = client.deleteDatabase(databaseName);
8284
assertEquals(databaseName, deleteRsp.name);
83-
try {
84-
// deleteEngineWait terminates its polling loop with a 404
85-
client.deleteEngineWait(engineName);
86-
} catch (HttpError e) {
87-
assertEquals(e.statusCode, 404);
88-
}
8985
}
9086
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
* Copyright 2022 RelationalAI, Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License"): you may
5+
* not use this file except in compliance with the License. You may obtain
6+
* a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13+
* License for the specific language governing permissions and limitations
14+
* under the License.
15+
*/
16+
17+
package com.relationalai;
18+
19+
import org.junit.jupiter.api.extension.BeforeAllCallback;
20+
import org.junit.jupiter.api.extension.ExtensionContext;
21+
22+
import java.io.IOException;
23+
24+
import static org.junit.jupiter.api.Assertions.assertTrue;
25+
import static org.junit.jupiter.api.extension.ExtensionContext.Namespace.GLOBAL;
26+
import static org.junit.jupiter.api.Assertions.assertEquals;
27+
28+
public class TestExtension implements BeforeAllCallback, ExtensionContext.Store.CloseableResource {
29+
private static boolean started = false;
30+
31+
@Override
32+
public void beforeAll(ExtensionContext context) throws Exception {
33+
if (!started) {
34+
started = true;
35+
Client client = UnitTest.createClient();
36+
Engine engine = client.createEngineWait(UnitTest.engineName);
37+
assertEquals(engine.name, UnitTest.engineName);
38+
assertEquals(engine.state, "PROVISIONED");
39+
context.getRoot().getStore(GLOBAL).put("com.relationalai.test", this);
40+
}
41+
}
42+
43+
@Override
44+
public void close() throws IOException, InterruptedException {
45+
Client client = UnitTest.createClient();
46+
HttpError error = null;
47+
try {
48+
client.deleteEngineWait(UnitTest.engineName);
49+
} catch (HttpError e) {
50+
error = e;
51+
}
52+
assertTrue(error != null && error.statusCode == 404);
53+
}
54+
}

rai-sdk/src/test/java/com/relationalai/UnitTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public abstract class UnitTest {
2828
static String databaseName = String.format("java-sdk-test-%s", uuid);
2929
static String engineName = String.format("java-sdk-test-%s", uuid);
3030

31-
Config getConfig() throws IOException {
31+
static Config getConfig() throws IOException {
3232
var filename = String.format("%s/.rai/config", System.getenv("HOME"));
3333
if ((new File(filename)).exists()) {
3434
return Config.loadConfig(filename);
@@ -44,7 +44,7 @@ Config getConfig() throws IOException {
4444
return Config.loadConfig(stream);
4545
}
4646
// Returns a new client object constructed from default config settings.
47-
Client createClient() throws IOException {
47+
static Client createClient() throws IOException {
4848
var cfg = getConfig();
4949
var customHeaders = (Map<String, String>) Json.deserialize(getenv("CUSTOM_HEADERS", "{}"), Map.class);
5050

@@ -101,11 +101,11 @@ static Relation findRelation(Relation[] relations, String colName) {
101101
return null;
102102
}
103103

104-
String getenv(String name, String defaultValue) {
104+
static String getenv(String name, String defaultValue) {
105105
return System.getenv(name) == null ? defaultValue : System.getenv(name);
106106
}
107107

108-
String getenv(String name) {
108+
static String getenv(String name) {
109109
return getenv(name, null);
110110
}
111111
}

0 commit comments

Comments
 (0)