Skip to content

Commit 90a4362

Browse files
author
Alex Walker
authored
Fix broken Connection and Concept BDD scenarios (#227)
## What is the goal of this PR? Doing a fresh pass over our BDD scenarios exposed a number of assorted issues, which we have now fixed. ## What are the changes implemented in this PR? - If session fails to close, throw a `GraknClientException` - Clean databases before running BDD, clean `sessionsParallel` after - Fix queries not throwing when they should in BDD, by correctly awaiting them - Make BDD steps always refer to overridden roles by their scoped label
1 parent 0ae0142 commit 90a4362

File tree

7 files changed

+34
-19
lines changed

7 files changed

+34
-19
lines changed

.grabl/automation.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,9 @@ build:
7575
bazel run @graknlabs_dependencies//distribution/artifact:create-netrc
7676
bazel test //test/behaviour/connection/... --test_output=streamed --jobs=1
7777
bazel test //test/behaviour/concept/... --test_output=streamed
78-
bazel test //test/behaviour/graql/language/define/... --test_output=streamed
7978
# TODO: delete --jobs=1 if we fix the issue with excess memory usage
8079
# TODO: use --config=rbe once Grakn Core runs in RBE
81-
# TODO: revert above tests to //test/behaviour/...
80+
# TODO: add Graql Language tests as they are implemented
8281
deploy-maven-snapshot:
8382
image: graknlabs-ubuntu-20.04
8483
dependencies: [build, build-dependency, test-behaviour]

dependencies/graknlabs/repositories.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def graknlabs_behaviour():
5858
git_repository(
5959
name = "graknlabs_behaviour",
6060
remote = "https://github.com/graknlabs/behaviour",
61-
commit = "b4cd87a715af84bb8ebcbc29ec10348780611165", # sync-marker: do not remove this comment, this is used for sync-dependencies by @graknlabs_behaviour
61+
commit = "2279d3a284d53fdd989885c06f3c50f00f930a63", # sync-marker: do not remove this comment, this is used for sync-dependencies by @graknlabs_behaviour
6262
)
6363

6464
def graknlabs_grabl_tracing():

test/behaviour/concept/thing/ThingSteps.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,6 @@ public static void put(String variable, Thing thing) {
5050
things.put(variable, thing);
5151
}
5252

53-
public static void remove(String variable) {
54-
things.remove(variable);
55-
}
56-
5753
@Then("entity/attribute/relation {var} is null: {bool}")
5854
public void thing_is_null(String var, boolean isNull) {
5955
if (isNull) assertNull(get(var));

test/behaviour/concept/type/thingtype/ThingTypeSteps.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -322,13 +322,10 @@ public void thing_type_set_plays_role_throws_exception(RootLabel rootLabel, Stri
322322
assertThrows(() -> get_thing_type(rootLabel, typeLabel).asRemote(tx()).setPlays(roleType));
323323
}
324324

325-
@When("{root_label}\\( ?{type_label} ?) set plays role: {scoped_label} as {type_label}")
326-
public void thing_type_set_plays_role_as(RootLabel rootLabel, String typeLabel, Parameters.ScopedLabel roleLabel, String overriddenLabel) {
325+
@When("{root_label}\\( ?{type_label} ?) set plays role: {scoped_label} as {scoped_label}")
326+
public void thing_type_set_plays_role_as(RootLabel rootLabel, String typeLabel, Parameters.ScopedLabel roleLabel, Parameters.ScopedLabel overriddenLabel) {
327327
RoleType roleType = tx().concepts().getRelationType(roleLabel.scope()).asRemote(tx()).getRelates(roleLabel.role());
328-
Stream<RelationType> relationType = tx().concepts().getRelationType(roleLabel.scope()).asRemote(tx()).getSupertypes()
329-
.filter(Type::isRelationType).map(Type::asRelationType);
330-
RoleType overriddenType = relationType
331-
.flatMap(sup -> sup.asRemote(tx()).getRelates()).filter(r -> r.getLabel().equals(overriddenLabel)).findAny().get();
328+
RoleType overriddenType = tx().concepts().getRelationType(overriddenLabel.scope()).asRemote(tx()).getRelates(overriddenLabel.role());
332329
get_thing_type(rootLabel, typeLabel).asRemote(tx()).setPlays(roleType, overriddenType);
333330
}
334331

test/behaviour/connection/ConnectionSteps.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@
3535
import java.util.concurrent.CompletableFuture;
3636
import java.util.concurrent.ExecutorService;
3737
import java.util.concurrent.Executors;
38+
import java.util.stream.Stream;
3839

40+
import static java.util.Objects.isNull;
41+
import static org.junit.Assert.assertEquals;
3942
import static org.junit.Assert.assertFalse;
4043
import static org.junit.Assert.assertNotNull;
4144
import static org.junit.Assert.assertNull;
@@ -74,14 +77,23 @@ public synchronized void before() {
7477
String address = GraknSingleton.getGraknRunner().address();
7578
assertNotNull(address);
7679
client = new GraknClient(address);
80+
client.databases().all().forEach(database -> client.databases().delete(database));
7781
System.out.println("ConnectionSteps.before");
7882
}
7983

8084
@After
8185
public synchronized void after() {
8286
sessions.parallelStream().forEach(Session::close);
8387
sessions.clear();
88+
89+
Stream<CompletableFuture<Void>> closures = sessionsParallel
90+
.stream().map(futureSession -> futureSession.thenApplyAsync(session -> {
91+
session.close();
92+
return null;
93+
}));
94+
CompletableFuture.allOf(closures.toArray(CompletableFuture[]::new)).join();
8495
sessionsParallel.clear();
96+
8597
sessionsToTransactions.clear();
8698
sessionsToTransactionsParallel.clear();
8799
sessionsParallelToTransactionsParallel.clear();

test/behaviour/connection/database/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ grakn_java_test(
5858
"//test/behaviour/config:parameters",
5959
"//test/behaviour/connection/transaction:steps",
6060
"//test/behaviour/connection/session:steps",
61+
"//test/behaviour/graql:steps",
6162
],
6263
data = [
6364
"@graknlabs_behaviour//connection:database.feature",

test/behaviour/graql/GraqlSteps.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,22 +75,27 @@ public void graql_define_throws(String defineQueryStatements) {
7575
assertThrows(() -> graql_define(defineQueryStatements).get());
7676
}
7777

78+
@Given("graql define; throws exception containing {string}")
79+
public void graql_define_throws_exception(String exception, String defineQueryStatements) {
80+
assertThrowsWithMessage(() -> graql_define(defineQueryStatements).get(), exception);
81+
}
82+
7883
@Given("graql undefine")
7984
public QueryFuture<Void> graql_undefine(String undefineQueryStatements) {
8085
final GraqlUndefine graqlQuery = Graql.parseQuery(String.join("\n", undefineQueryStatements));
8186
return tx().query().undefine(graqlQuery);
8287
}
8388

84-
@Given("graql define; throws exception containing {string}")
85-
public void graql_define_throws_exception(String exception, String defineQueryStatements) {
86-
assertThrowsWithMessage(() -> graql_define(defineQueryStatements), exception);
87-
}
88-
8989
@Given("graql undefine; throws exception")
9090
public void graql_undefine_throws(String undefineQueryStatements) {
9191
assertThrows(() -> graql_undefine(undefineQueryStatements).get());
9292
}
9393

94+
@Given("graql undefine; throws exception containing {string}")
95+
public void graql_undefine_throws_exception(String exception, String undefineQueryStatements) {
96+
assertThrowsWithMessage(() -> graql_undefine(undefineQueryStatements).get(), exception);
97+
}
98+
9499
@Given("graql insert")
95100
public Stream<ConceptMap> graql_insert(String insertQueryStatements) {
96101
final GraqlInsert graqlQuery = Graql.parseQuery(String.join("\n", insertQueryStatements));
@@ -104,7 +109,7 @@ public void graql_insert_throws(String insertQueryStatements) {
104109

105110
@Given("graql insert; throws exception containing {string}")
106111
public void graql_insert_throws_exception(String exception, String insertQueryStatements) {
107-
assertThrowsWithMessage(() -> graql_insert(insertQueryStatements), exception);
112+
assertThrowsWithMessage(() -> graql_insert(insertQueryStatements).iterator().next(), exception);
108113
}
109114

110115
@Given("graql delete")
@@ -118,6 +123,11 @@ public void graql_delete_throws(String deleteQueryStatements) {
118123
assertThrows(() -> graql_delete(deleteQueryStatements).get());
119124
}
120125

126+
@Given("graql delete; throws exception containing {string}")
127+
public void graql_delete_throws_exception(String exception, String deleteQueryStatements) {
128+
assertThrowsWithMessage(() -> graql_delete(deleteQueryStatements).get(), exception);
129+
}
130+
121131
@When("get answers of graql insert")
122132
public void get_answers_of_graql_insert(String graqlQueryStatements) {
123133
final GraqlInsert graqlQuery = Graql.parseQuery(String.join("\n", graqlQueryStatements));

0 commit comments

Comments
 (0)