You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2020/07/03 10:48:22 UTC
[james-project] 02/07: JAMES-3138 Cassandra testing instrumentation
should allow injecting empty results
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 <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org