From 4cae179cbbcef6730fdf426b525ea8c4adc73011 Mon Sep 17 00:00:00 2001 From: Piotr Findeisen Date: Fri, 5 Mar 2021 22:33:43 +0100 Subject: [PATCH] Switch Cassandra 'Latest' test to BaseConnectorSmokeTest --- .../plugin/cassandra/CassandraMetadata.java | 4 ++-- .../BaseCassandraDistributedQueries.java | 2 +- .../TestCassandraIntegrationSmokeTest.java | 2 +- ...estCassandraLatestConnectorSmokeTest.java} | 24 +++++++++++++++++-- .../trino/testing/BaseConnectorSmokeTest.java | 8 ++++++- 5 files changed, 33 insertions(+), 7 deletions(-) rename plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/{TestCassandraDistributedQueriesLatest.java => TestCassandraLatestConnectorSmokeTest.java} (62%) diff --git a/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraMetadata.java b/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraMetadata.java index 90f6a0b3442d..f303a6d11a93 100644 --- a/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraMetadata.java +++ b/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraMetadata.java @@ -381,7 +381,7 @@ public ColumnHandle getDeleteRowIdColumnHandle(ConnectorSession session, Connect @Override public ConnectorTableHandle beginDelete(ConnectorSession session, ConnectorTableHandle tableHandle) { - throw new TrinoException(NOT_SUPPORTED, "This connector only supports delete with primary key or partition key"); + throw new TrinoException(NOT_SUPPORTED, "Delete without primary key or partition key is not supported"); } @Override @@ -396,7 +396,7 @@ public OptionalLong executeDelete(ConnectorSession session, ConnectorTableHandle CassandraTableHandle handle = (CassandraTableHandle) deleteHandle; Optional> partitions = handle.getPartitions(); if (partitions.isEmpty()) { - throw new TrinoException(NOT_SUPPORTED, "Deleting without partition key is unsupported"); + throw new TrinoException(NOT_SUPPORTED, "Deleting without partition key is not supported"); } if (partitions.get().isEmpty()) { // there are no records of a given partition key diff --git a/plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/BaseCassandraDistributedQueries.java b/plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/BaseCassandraDistributedQueries.java index 0d60225f3e38..98813fd09c13 100644 --- a/plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/BaseCassandraDistributedQueries.java +++ b/plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/BaseCassandraDistributedQueries.java @@ -86,7 +86,7 @@ public void testDropColumn() public void testDelete() { assertThatThrownBy(super::testDelete) - .hasStackTraceContaining("This connector only supports delete with primary key or partition key"); + .hasStackTraceContaining("Delete without primary key or partition key is not supported"); } @Override diff --git a/plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/TestCassandraIntegrationSmokeTest.java b/plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/TestCassandraIntegrationSmokeTest.java index 4dda60fbeeb5..d0e9e87a85c9 100644 --- a/plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/TestCassandraIntegrationSmokeTest.java +++ b/plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/TestCassandraIntegrationSmokeTest.java @@ -73,7 +73,7 @@ import static org.testng.Assert.assertEquals; public class TestCassandraIntegrationSmokeTest - // TODO extend BaseConnectorTest + // TODO extend BaseConnectorTest and merge with TestCassandraDistributedQueries extends AbstractTestIntegrationSmokeTest { private static final String KEYSPACE = "smoke_test"; diff --git a/plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/TestCassandraDistributedQueriesLatest.java b/plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/TestCassandraLatestConnectorSmokeTest.java similarity index 62% rename from plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/TestCassandraDistributedQueriesLatest.java rename to plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/TestCassandraLatestConnectorSmokeTest.java index bf0af82064df..9cde7360b28a 100644 --- a/plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/TestCassandraDistributedQueriesLatest.java +++ b/plugin/trino-cassandra/src/test/java/io/trino/plugin/cassandra/TestCassandraLatestConnectorSmokeTest.java @@ -14,12 +14,14 @@ package io.trino.plugin.cassandra; import com.google.common.collect.ImmutableMap; +import io.trino.testing.BaseConnectorSmokeTest; import io.trino.testing.QueryRunner; +import io.trino.testing.TestingConnectorBehavior; import static io.trino.plugin.cassandra.CassandraQueryRunner.createCassandraQueryRunner; -public class TestCassandraDistributedQueriesLatest - extends BaseCassandraDistributedQueries +public class TestCassandraLatestConnectorSmokeTest + extends BaseConnectorSmokeTest { @Override protected QueryRunner createQueryRunner() @@ -28,4 +30,22 @@ protected QueryRunner createQueryRunner() CassandraServer server = closeAfterClass(new CassandraServer("3.11.9")); return createCassandraQueryRunner(server, ImmutableMap.of(), REQUIRED_TPCH_TABLES); } + + @Override + protected boolean hasBehavior(TestingConnectorBehavior connectorBehavior) + { + switch (connectorBehavior) { + case SUPPORTS_CREATE_SCHEMA: + return false; + + case SUPPORTS_DELETE: + return true; + + case SUPPORTS_ROW_LEVEL_DELETE: + return false; + + default: + return super.hasBehavior(connectorBehavior); + } + } } diff --git a/testing/trino-testing/src/main/java/io/trino/testing/BaseConnectorSmokeTest.java b/testing/trino-testing/src/main/java/io/trino/testing/BaseConnectorSmokeTest.java index d9f26a9a23d2..a70434b18c60 100644 --- a/testing/trino-testing/src/main/java/io/trino/testing/BaseConnectorSmokeTest.java +++ b/testing/trino-testing/src/main/java/io/trino/testing/BaseConnectorSmokeTest.java @@ -23,6 +23,7 @@ import static io.trino.testing.TestingConnectorBehavior.SUPPORTS_CREATE_SCHEMA; import static io.trino.testing.TestingConnectorBehavior.SUPPORTS_CREATE_TABLE; import static io.trino.testing.TestingConnectorBehavior.SUPPORTS_CREATE_TABLE_WITH_DATA; +import static io.trino.testing.TestingConnectorBehavior.SUPPORTS_DELETE; import static io.trino.testing.TestingConnectorBehavior.SUPPORTS_INSERT; import static io.trino.testing.TestingConnectorBehavior.SUPPORTS_ROW_LEVEL_DELETE; import static io.trino.testing.sql.TestTable.randomTableSuffix; @@ -154,11 +155,16 @@ public void testInsert() @Test public void testDelete() { - if (!hasBehavior(SUPPORTS_ROW_LEVEL_DELETE)) { + if (!hasBehavior(SUPPORTS_DELETE)) { assertQueryFails("DELETE FROM region", "This connector does not support deletes"); return; } + if (!hasBehavior(SUPPORTS_ROW_LEVEL_DELETE)) { + assertQueryFails("DELETE FROM region WHERE regionkey = 2", ".*[Dd]elet(e|ing).*(not |un)supported.*"); + return; + } + String tableName = "test_delete_" + randomTableSuffix(); assertUpdate("CREATE TABLE " + tableName + " AS SELECT * FROM region", 5);