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 fd9e2de68282884c3d2f19d19bd0c12cfd32e9d0 Author: Benoit Tellier <[email protected]> AuthorDate: Thu May 7 16:09:06 2020 +0700 JAMES-3140 Enable easily printing executed Cassandra statements This is helping a lot writing instrumented tests for Cassandra, and allow easy retrieval of the statements to interact with. I chose System output for it to be visible easily by default in the test console, without modifying logging configuration. --- .../james/backends/cassandra/TestingSession.java | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSession.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSession.java index c8a7a54..f591286 100644 --- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSession.java +++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/TestingSession.java @@ -21,6 +21,7 @@ package org.apache.james.backends.cassandra; import java.util.Map; +import com.datastax.driver.core.BoundStatement; import com.datastax.driver.core.CloseFuture; import com.datastax.driver.core.Cluster; import com.datastax.driver.core.PreparedStatement; @@ -28,16 +29,23 @@ import com.datastax.driver.core.RegularStatement; import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.ResultSetFuture; import com.datastax.driver.core.Session; +import com.datastax.driver.core.SimpleStatement; import com.datastax.driver.core.Statement; import com.google.common.util.concurrent.ListenableFuture; public class TestingSession implements Session { private final Session delegate; private volatile Scenario scenario; + private volatile boolean printStatements; public TestingSession(Session delegate) { this.delegate = delegate; this.scenario = Scenario.NOTHING; + this.printStatements = false; + } + + public void printStatements() { + printStatements = true; } public void registerScenario(Scenario scenario) { @@ -65,46 +73,74 @@ public class TestingSession implements Session { @Override public ResultSet execute(String query) { + printStatement(query); return delegate.execute(query); } @Override public ResultSet execute(String query, Object... values) { + printStatement(query); return delegate.execute(query, values); } @Override public ResultSet execute(String query, Map<String, Object> values) { + printStatement(query); return delegate.execute(query, values); } @Override public ResultSet execute(Statement statement) { + printStatement(statement); return delegate.execute(statement); } @Override public ResultSetFuture executeAsync(String query) { + printStatement(query); return delegate.executeAsync(query); } @Override public ResultSetFuture executeAsync(String query, Object... values) { + printStatement(query); return delegate.executeAsync(query, values); } @Override public ResultSetFuture executeAsync(String query, Map<String, Object> values) { + printStatement(query); return delegate.executeAsync(query, values); } @Override public ResultSetFuture executeAsync(Statement statement) { + printStatement(statement); return scenario .getCorrespondingBehavior(statement) .execute(delegate, statement); } + private void printStatement(String query) { + if (printStatements) { + System.out.println("Executing: " + query); + } + } + + private void printStatement(Statement statement) { + if (printStatements) { + if (statement instanceof BoundStatement) { + BoundStatement boundStatement = (BoundStatement) statement; + System.out.println("Executing: " + boundStatement.preparedStatement().getQueryString()); + } else if (statement instanceof SimpleStatement) { + SimpleStatement simpleStatement = (SimpleStatement) statement; + System.out.println("Executing: " + simpleStatement.getQueryString()); + } else { + System.out.println("Executing: " + statement); + } + } + } + @Override public PreparedStatement prepare(String query) { return delegate.prepare(query); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
