This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 74896fd4e3d4c0392aa1cb13869070ec0397bf25 Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Wed Jul 1 16:55:32 2020 +0700 JAMES-3138 Cassandra testing instrumentation should allow injecting empty results --- .../java/org/apache/james/backends/cassandra/Scenario.java | 11 +++++++++++ .../apache/james/backends/cassandra/TestingSessionTest.java | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/Scenario.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/Scenario.java index f5ddbf7..74c4aa8 100644 --- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/Scenario.java +++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/Scenario.java @@ -54,6 +54,10 @@ public class Scenario { Behavior EXECUTE_NORMALLY = Session::executeAsync; + // Hack. We rely on version key unicity (because UUID) to create an empty ResultSet + Behavior RETURN_EMPTY = (session, statement) -> session.executeAsync( + "SELECT value FROM schemaVersion WHERE key=49128560-bb80-11ea-bad6-e3b96c9cd431;"); + static Behavior awaitOn(Barrier barrier, Behavior behavior) { return (session, statement) -> { barrier.call(); @@ -163,6 +167,13 @@ public class Scenario { validity); } + static RequiresValidity returnEmpty() { + return validity -> statementPredicate -> new ExecutionHook( + statementPredicate, + Behavior.RETURN_EMPTY, + validity); + } + static RequiresValidity executeNormally() { return validity -> statementPredicate -> new ExecutionHook( statementPredicate, diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSessionTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSessionTest.java index 6f9987b..e6cd607 100644 --- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSessionTest.java +++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSessionTest.java @@ -23,6 +23,7 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.select; import static org.apache.james.backends.cassandra.Scenario.Builder.awaitOn; import static org.apache.james.backends.cassandra.Scenario.Builder.executeNormally; import static org.apache.james.backends.cassandra.Scenario.Builder.fail; +import static org.apache.james.backends.cassandra.Scenario.Builder.returnEmpty; import static org.apache.james.backends.cassandra.versions.table.CassandraSchemaVersionTable.TABLE_NAME; import static org.apache.james.backends.cassandra.versions.table.CassandraSchemaVersionTable.VALUE; import static org.assertj.core.api.Assertions.assertThat; @@ -76,6 +77,17 @@ class TestingSessionTest { } @Test + void daoOperationShouldNotBeInstrumentedWhenReturnEmpty(CassandraCluster cassandra) { + cassandra.getConf() + .registerScenario(returnEmpty() + .times(1) + .whenQueryStartsWith("SELECT value FROM schemaVersion;")); + + assertThat(dao.getCurrentSchemaVersion().block()) + .isEmpty(); + } + + @Test void recordStatementsShouldKeepTraceOfExecutedStatement(CassandraCluster cassandra) { StatementRecorder statementRecorder = new StatementRecorder(); cassandra.getConf().recordStatements(statementRecorder); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org