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 rc...@apache.org on 2020/02/28 03:12:34 UTC

[james-project] 04/06: JAMES-3059 Instrument regular statements for testing purposes

This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 33c0507a05fcc77af16cae77ec01d60f591b9ebe
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Feb 27 15:00:40 2020 +0700

    JAMES-3059 Instrument regular statements for testing purposes
---
 .../org/apache/james/backends/cassandra/Scenario.java   | 12 +++++++++---
 .../james/backends/cassandra/TestingSessionTest.java    | 17 +++++++++++++++++
 2 files changed, 26 insertions(+), 3 deletions(-)

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 4bc8746..efbf6a8 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
@@ -26,6 +26,7 @@ import java.util.stream.Stream;
 import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
 
 import com.datastax.driver.core.BoundStatement;
+import com.datastax.driver.core.RegularStatement;
 import com.datastax.driver.core.ResultSetFuture;
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.Statement;
@@ -54,10 +55,10 @@ public class Scenario {
 
     @FunctionalInterface
     interface StatementPredicate {
-        class BoundStatementStartingWith implements StatementPredicate {
+        class StatementStartingWith implements StatementPredicate {
             private final String queryStringPrefix;
 
-            BoundStatementStartingWith(String queryStringPrefix) {
+            StatementStartingWith(String queryStringPrefix) {
                 this.queryStringPrefix = queryStringPrefix;
             }
 
@@ -69,6 +70,11 @@ public class Scenario {
                         .getQueryString()
                         .startsWith(queryStringPrefix);
                 }
+                if (statement instanceof RegularStatement) {
+                    RegularStatement regularStatement = (RegularStatement) statement;
+                    return regularStatement.getQueryString()
+                        .startsWith(queryStringPrefix);
+                }
                 return false;
             }
         }
@@ -122,7 +128,7 @@ public class Scenario {
             }
 
             default ExecutionHook whenQueryStartsWith(String queryStringPrefix) {
-                return statementPredicate(new StatementPredicate.BoundStatementStartingWith(queryStringPrefix));
+                return statementPredicate(new StatementPredicate.StatementStartingWith(queryStringPrefix));
             }
         }
 
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 941c16b..bb08907 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
@@ -19,15 +19,19 @@
 
 package org.apache.james.backends.cassandra;
 
+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.combine;
+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;
 import static org.assertj.core.api.Assertions.assertThatCode;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import org.apache.james.backends.cassandra.Scenario.Barrier;
+import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionDAO;
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
 import org.apache.james.backends.cassandra.versions.SchemaVersion;
@@ -90,6 +94,19 @@ class TestingSessionTest {
     }
 
     @Test
+    void regularStatementsShouldBeInstrumented(CassandraCluster cassandra) {
+        cassandra.getConf()
+            .registerScenario(fail()
+                .times(1)
+                .whenQueryStartsWith("SELECT value FROM schemaVersion;"));
+
+        assertThatThrownBy(() -> new CassandraAsyncExecutor(cassandra.getConf())
+                .execute(select(VALUE).from(TABLE_NAME))
+                .block())
+            .isInstanceOf(RuntimeException.class);
+    }
+
+    @Test
     void forAllQueriesShouldMatchAllStatements(CassandraCluster cassandra) {
         cassandra.getConf()
             .registerScenario(fail()


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org