Package org.apache.calcite.test
Class CalciteAssert
- java.lang.Object
-
- org.apache.calcite.test.CalciteAssert
-
public class CalciteAssert extends java.lang.Object
Fluid DSL for testing Calcite connections and queries.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
CalciteAssert.AddSchemaPostProcessor
AddsSchema
and sets it as default.static class
CalciteAssert.AddSchemaSpecPostProcessor
AddsCalciteAssert.SchemaSpec
(set of schemes) to a connection.static class
CalciteAssert.AssertMetaData
Fluent interface for building a metadata query to be tested.static class
CalciteAssert.AssertQuery
Fluent interface for building a query to be tested.static class
CalciteAssert.AssertThat
Result of callingthat()
.static class
CalciteAssert.Config
Connection configuration.static class
CalciteAssert.ConnectionFactory
Abstract implementation of connection factory whosewith
methods throw.static interface
CalciteAssert.ConnectionPostProcessor
Connection post processorstatic class
CalciteAssert.DatabaseInstance
Information necessary to create a JDBC connection.static class
CalciteAssert.DefaultSchemaPostProcessor
Sets a default schema name.private static class
CalciteAssert.MapConnectionFactory
Connection factory that uses a given map of (name, value) pairs and optionally an initial schema.private static class
CalciteAssert.NopAssertQuery
Implementation ofCalciteAssert.AssertQuery
that does nothing.private static class
CalciteAssert.PoolingConnectionFactory
Connection factory that uses the same instance of connections.static interface
CalciteAssert.PreparedStatementConsumer
We want a consumer which can throw SqlException(package private) static class
CalciteAssert.PropBuilder
Builds aProperties
containing connection property settings.(package private) static class
CalciteAssert.ResultSetFormatter
Converts aResultSet
to string.static class
CalciteAssert.SchemaSpec
Specification for common test schemas.
-
Field Summary
Fields Modifier and Type Field Description static CalciteAssert.DatabaseInstance
DB
Which database to use for tests that require a JDBC data source.private static CalciteAssert.AssertThat
DISABLED
Implementation ofCalciteAssert.AssertThat
that does nothing.static CalciteAssert.ConnectionFactory
EMPTY_CONNECTION_FACTORY
static boolean
ENABLE_SLOW
Whether to enable slow tests.private static java.text.DateFormat
UTC_DATE_FORMAT
private static java.text.DateFormat
UTC_TIME_FORMAT
private static java.text.DateFormat
UTC_TIMESTAMP_FORMAT
-
Constructor Summary
Constructors Modifier Constructor Description private
CalciteAssert()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static org.apache.calcite.schema.SchemaPlus
addSchema(org.apache.calcite.schema.SchemaPlus rootSchema, CalciteAssert.SchemaSpec schema)
private static org.apache.calcite.schema.SchemaPlus
addSchemaIfNotExists(org.apache.calcite.schema.SchemaPlus rootSchema, CalciteAssert.SchemaSpec schemaSpec)
static void
assertArrayEqual(java.lang.String message, java.lang.Object[] expected, java.lang.Object[] actual)
Asserts that two objects are equal.(package private) static void
assertPrepare(java.sql.Connection connection, java.lang.String sql, boolean materializationsEnabled, java.util.function.Function<org.apache.calcite.rel.RelNode,java.lang.Void> convertChecker, java.util.function.Function<org.apache.calcite.rel.RelNode,java.lang.Void> substitutionChecker)
private static void
assertPrepare(java.sql.Connection connection, java.lang.String sql, int limit, boolean materializationsEnabled, java.util.List<org.apache.calcite.util.Pair<org.apache.calcite.runtime.Hook,java.util.function.Consumer>> hooks, java.util.function.Consumer<java.sql.ResultSet> resultChecker, java.util.function.Consumer<java.lang.Integer> updateChecker, java.util.function.Consumer<java.lang.Throwable> exceptionChecker, CalciteAssert.PreparedStatementConsumer consumer)
(package private) static void
assertQuery(java.sql.Connection connection, java.lang.String sql, int limit, boolean materializationsEnabled, java.util.List<org.apache.calcite.util.Pair<org.apache.calcite.runtime.Hook,java.util.function.Consumer>> hooks, java.util.function.Consumer<java.sql.ResultSet> resultChecker, java.util.function.Consumer<java.lang.Integer> updateChecker, java.util.function.Consumer<java.lang.Throwable> exceptionChecker)
(package private) static java.lang.Object
call(java.lang.Object o, java.lang.String methodName, java.lang.Object... args)
Calls a non-static method via reflection.(package private) static java.util.function.Consumer<java.lang.Throwable>
checkException(java.lang.String expected)
static java.util.function.Consumer<java.sql.ResultSet>
checkMaskedResultContains(java.lang.String expected)
(package private) static java.util.function.Function<org.apache.calcite.rel.RelNode,java.lang.Void>
checkRel(java.lang.String expected, java.util.concurrent.atomic.AtomicInteger counter)
(package private) static java.util.function.Consumer<java.sql.ResultSet>
checkResult(boolean sort, boolean head, java.lang.String... lines)
(package private) static java.util.function.Consumer<java.sql.ResultSet>
checkResult(java.lang.String expected)
(package private) static java.util.function.Consumer<java.sql.ResultSet>
checkResult(java.lang.String expected, CalciteAssert.ResultSetFormatter resultSetFormatter)
static java.util.function.Consumer<java.sql.ResultSet>
checkResultContains(java.lang.String... expected)
static java.util.function.Consumer<java.sql.ResultSet>
checkResultContains(java.lang.String expected, int count)
static java.util.function.Consumer<java.sql.ResultSet>
checkResultCount(org.hamcrest.Matcher<java.lang.Integer> expected)
static java.util.function.Consumer<java.sql.ResultSet>
checkResultType(java.lang.String expected)
(package private) static java.util.function.Consumer<java.sql.ResultSet>
checkResultUnordered(java.lang.String... lines)
(package private) static java.util.function.Consumer<java.sql.ResultSet>
checkResultValue(java.lang.String expected)
static java.util.function.Consumer<java.lang.Integer>
checkUpdateCount(int expected)
(package private) static java.util.function.Consumer<java.lang.Throwable>
checkValidationException(java.lang.String expected)
(package private) static java.util.function.Consumer<java.sql.ResultSet>
consistentResult(boolean ordered)
Checks that the result of the second and subsequent executions is the same as the first.(package private) static int
countRows(java.sql.ResultSet resultSet)
static CalciteAssert.AssertThat
hr()
Short-hand forCalciteAssert.that().with(Config.REGULAR)
.(package private) static java.lang.reflect.Method
method(java.lang.Object o, java.lang.String methodName, java.lang.Object[] args)
Finds a non-static method based on its target, name and arguments.static CalciteAssert.AssertThat
model(java.lang.String model)
Short-hand forCalciteAssert.that().with(Config.EMPTY).withModel(model)
.(package private) static java.lang.String
newlineList(java.util.Collection collection)
(package private) static CalciteAssert.PropBuilder
propBuilder()
Returns aCalciteAssert.PropBuilder
.private static java.lang.String
str(java.lang.Object[] objects)
static CalciteAssert.AssertThat
that()
Creates an instance ofCalciteAssert
with the empty configuration.static CalciteAssert.AssertThat
that(CalciteAssert.Config config)
Creates an instance ofCalciteAssert
with a given configuration.(package private) static java.util.List<java.lang.String>
toList(java.sql.ResultSet resultSet)
(package private) static com.google.common.collect.ImmutableMultiset<java.lang.String>
toSet(java.sql.ResultSet resultSet)
(package private) static java.lang.String
toString(java.sql.ResultSet resultSet)
Converts aResultSet
to a string.(package private) static java.util.Collection<java.lang.String>
toStringList(java.sql.ResultSet resultSet, java.util.Collection<java.lang.String> list)
private static java.lang.String
typeString(java.sql.ResultSetMetaData metaData)
-
-
-
Field Detail
-
DB
public static final CalciteAssert.DatabaseInstance DB
Which database to use for tests that require a JDBC data source. By default the test suite runs against the embedded hsqldb database.We recommend that casual users use hsqldb, and frequent Calcite developers use MySQL. The test suite runs faster against the MySQL database (mainly because of the 0.1s versus 6s startup time). You have to populate MySQL manually with the foodmart data set, otherwise there will be test failures. To run against MySQL, specify '-Dcalcite.test.db=mysql' on the java command line.
-
ENABLE_SLOW
public static final boolean ENABLE_SLOW
Whether to enable slow tests. Default is false.
-
UTC_DATE_FORMAT
private static final java.text.DateFormat UTC_DATE_FORMAT
-
UTC_TIME_FORMAT
private static final java.text.DateFormat UTC_TIME_FORMAT
-
UTC_TIMESTAMP_FORMAT
private static final java.text.DateFormat UTC_TIMESTAMP_FORMAT
-
EMPTY_CONNECTION_FACTORY
public static final CalciteAssert.ConnectionFactory EMPTY_CONNECTION_FACTORY
-
DISABLED
private static final CalciteAssert.AssertThat DISABLED
Implementation ofCalciteAssert.AssertThat
that does nothing.
-
-
Method Detail
-
that
public static CalciteAssert.AssertThat that()
Creates an instance ofCalciteAssert
with the empty configuration.
-
that
public static CalciteAssert.AssertThat that(CalciteAssert.Config config)
Creates an instance ofCalciteAssert
with a given configuration.
-
model
public static CalciteAssert.AssertThat model(java.lang.String model)
Short-hand forCalciteAssert.that().with(Config.EMPTY).withModel(model)
.
-
hr
public static CalciteAssert.AssertThat hr()
Short-hand forCalciteAssert.that().with(Config.REGULAR)
.
-
checkRel
static java.util.function.Function<org.apache.calcite.rel.RelNode,java.lang.Void> checkRel(java.lang.String expected, java.util.concurrent.atomic.AtomicInteger counter)
-
checkException
static java.util.function.Consumer<java.lang.Throwable> checkException(java.lang.String expected)
-
checkValidationException
static java.util.function.Consumer<java.lang.Throwable> checkValidationException(java.lang.String expected)
-
checkResult
static java.util.function.Consumer<java.sql.ResultSet> checkResult(java.lang.String expected)
-
checkResult
static java.util.function.Consumer<java.sql.ResultSet> checkResult(java.lang.String expected, CalciteAssert.ResultSetFormatter resultSetFormatter)
-
checkResultValue
static java.util.function.Consumer<java.sql.ResultSet> checkResultValue(java.lang.String expected)
-
checkResultCount
public static java.util.function.Consumer<java.sql.ResultSet> checkResultCount(org.hamcrest.Matcher<java.lang.Integer> expected)
-
checkUpdateCount
public static java.util.function.Consumer<java.lang.Integer> checkUpdateCount(int expected)
-
consistentResult
static java.util.function.Consumer<java.sql.ResultSet> consistentResult(boolean ordered)
Checks that the result of the second and subsequent executions is the same as the first.- Parameters:
ordered
- Whether order should be the same both times
-
newlineList
static java.lang.String newlineList(java.util.Collection collection)
-
checkResultUnordered
static java.util.function.Consumer<java.sql.ResultSet> checkResultUnordered(java.lang.String... lines)
- See Also:
Matchers.returnsUnordered(String...)
-
checkResult
static java.util.function.Consumer<java.sql.ResultSet> checkResult(boolean sort, boolean head, java.lang.String... lines)
- See Also:
Matchers.returnsUnordered(String...)
-
checkResultContains
public static java.util.function.Consumer<java.sql.ResultSet> checkResultContains(java.lang.String... expected)
-
checkResultContains
public static java.util.function.Consumer<java.sql.ResultSet> checkResultContains(java.lang.String expected, int count)
-
checkMaskedResultContains
public static java.util.function.Consumer<java.sql.ResultSet> checkMaskedResultContains(java.lang.String expected)
-
checkResultType
public static java.util.function.Consumer<java.sql.ResultSet> checkResultType(java.lang.String expected)
-
typeString
private static java.lang.String typeString(java.sql.ResultSetMetaData metaData) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
assertQuery
static void assertQuery(java.sql.Connection connection, java.lang.String sql, int limit, boolean materializationsEnabled, java.util.List<org.apache.calcite.util.Pair<org.apache.calcite.runtime.Hook,java.util.function.Consumer>> hooks, java.util.function.Consumer<java.sql.ResultSet> resultChecker, java.util.function.Consumer<java.lang.Integer> updateChecker, java.util.function.Consumer<java.lang.Throwable> exceptionChecker) throws java.lang.Exception
- Throws:
java.lang.Exception
-
assertPrepare
private static void assertPrepare(java.sql.Connection connection, java.lang.String sql, int limit, boolean materializationsEnabled, java.util.List<org.apache.calcite.util.Pair<org.apache.calcite.runtime.Hook,java.util.function.Consumer>> hooks, java.util.function.Consumer<java.sql.ResultSet> resultChecker, java.util.function.Consumer<java.lang.Integer> updateChecker, java.util.function.Consumer<java.lang.Throwable> exceptionChecker, CalciteAssert.PreparedStatementConsumer consumer)
-
assertPrepare
static void assertPrepare(java.sql.Connection connection, java.lang.String sql, boolean materializationsEnabled, java.util.function.Function<org.apache.calcite.rel.RelNode,java.lang.Void> convertChecker, java.util.function.Function<org.apache.calcite.rel.RelNode,java.lang.Void> substitutionChecker) throws java.lang.Exception
- Throws:
java.lang.Exception
-
toString
static java.lang.String toString(java.sql.ResultSet resultSet) throws java.sql.SQLException
Converts aResultSet
to a string.- Throws:
java.sql.SQLException
-
countRows
static int countRows(java.sql.ResultSet resultSet) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
toStringList
static java.util.Collection<java.lang.String> toStringList(java.sql.ResultSet resultSet, java.util.Collection<java.lang.String> list) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
toList
static java.util.List<java.lang.String> toList(java.sql.ResultSet resultSet) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
toSet
static com.google.common.collect.ImmutableMultiset<java.lang.String> toSet(java.sql.ResultSet resultSet) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
call
static java.lang.Object call(java.lang.Object o, java.lang.String methodName, java.lang.Object... args) throws java.lang.NoSuchMethodException, java.lang.reflect.InvocationTargetException, java.lang.IllegalAccessException
Calls a non-static method via reflection. Useful for testing methods that don't exist in certain versions of the JDK.- Throws:
java.lang.NoSuchMethodException
java.lang.reflect.InvocationTargetException
java.lang.IllegalAccessException
-
method
static java.lang.reflect.Method method(java.lang.Object o, java.lang.String methodName, java.lang.Object[] args)
Finds a non-static method based on its target, name and arguments. Throws if not found.
-
addSchema
public static org.apache.calcite.schema.SchemaPlus addSchema(org.apache.calcite.schema.SchemaPlus rootSchema, CalciteAssert.SchemaSpec schema)
-
addSchemaIfNotExists
private static org.apache.calcite.schema.SchemaPlus addSchemaIfNotExists(org.apache.calcite.schema.SchemaPlus rootSchema, CalciteAssert.SchemaSpec schemaSpec)
-
assertArrayEqual
public static void assertArrayEqual(java.lang.String message, java.lang.Object[] expected, java.lang.Object[] actual)
Asserts that two objects are equal. If they are not, anAssertionError
is thrown with the given message. Ifexpected
andactual
arenull
, they are considered equal.This method produces more user-friendly error messages than
Assert.assertArrayEquals(String, Object[], Object[])
- Parameters:
message
- the identifying message for theAssertionError
(null
okay)expected
- expected valueactual
- actual value
-
str
private static java.lang.String str(java.lang.Object[] objects)
-
propBuilder
static CalciteAssert.PropBuilder propBuilder()
Returns aCalciteAssert.PropBuilder
.
-
-