diff --git a/core/trino-server-rpm/pom.xml b/core/trino-server-rpm/pom.xml index 9b45ced3a455..3eebbadd3f10 100644 --- a/core/trino-server-rpm/pom.xml +++ b/core/trino-server-rpm/pom.xml @@ -25,6 +25,12 @@ test + + io.airlift + junit-extensions + test + + io.airlift units @@ -50,14 +56,20 @@ - org.testcontainers - testcontainers + org.assertj + assertj-core test - org.testng - testng + org.junit.jupiter + junit-jupiter-api + test + + + + org.testcontainers + testcontainers test diff --git a/core/trino-server-rpm/src/test/java/io/trino/server/rpm/ServerIT.java b/core/trino-server-rpm/src/test/java/io/trino/server/rpm/ServerIT.java index 66f6a11b6708..37b6dbb0b1f2 100644 --- a/core/trino-server-rpm/src/test/java/io/trino/server/rpm/ServerIT.java +++ b/core/trino-server-rpm/src/test/java/io/trino/server/rpm/ServerIT.java @@ -15,11 +15,11 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; import org.testcontainers.containers.BindMode; import org.testcontainers.containers.Container.ExecResult; import org.testcontainers.containers.GenericContainer; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; import java.io.File; import java.sql.Connection; @@ -36,17 +36,31 @@ import static java.util.Arrays.asList; import static java.util.Objects.requireNonNull; import static java.util.concurrent.TimeUnit.MINUTES; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testcontainers.containers.wait.strategy.Wait.forLogMessage; -import static org.testng.Assert.assertEquals; -@Test(singleThreaded = true) +@Execution(SAME_THREAD) public class ServerIT { private static final String BASE_IMAGE_PREFIX = "eclipse-temurin:"; private static final String BASE_IMAGE_SUFFIX = "-jre-ubi9-minimal"; - @Test(dataProvider = "rpmJavaTestDataProvider") - public void testInstall(String rpmHostPath, String javaVersion) + private final String rpmHostPath; + + public ServerIT() + { + rpmHostPath = requireNonNull(System.getProperty("rpm"), "rpm is null"); + } + + @Test + public void testInstall() + { + testInstall("17"); + testInstall("21"); + } + + private void testInstall(String javaVersion) { String rpm = "/" + new File(rpmHostPath).getName(); String command = "" + @@ -80,17 +94,24 @@ public void testInstall(String rpmHostPath, String javaVersion) .waitingFor(forLogMessage(".*SERVER STARTED.*", 1).withStartupTimeout(Duration.ofMinutes(5))) .start(); QueryRunner queryRunner = new QueryRunner(container.getHost(), container.getMappedPort(8080)); - assertEquals(queryRunner.execute("SHOW CATALOGS"), ImmutableSet.of(asList("system"), asList("hive"), asList("jmx"))); - assertEquals(queryRunner.execute("SELECT node_id FROM system.runtime.nodes"), ImmutableSet.of(asList("test-node-id-injected-via-env"))); + assertThat(queryRunner.execute("SHOW CATALOGS")).isEqualTo(ImmutableSet.of(asList("system"), asList("hive"), asList("jmx"))); + assertThat(queryRunner.execute("SELECT node_id FROM system.runtime.nodes")).isEqualTo(ImmutableSet.of(asList("test-node-id-injected-via-env"))); // TODO remove usage of assertEventually once https://github.com/trinodb/trino/issues/2214 is fixed assertEventually( new io.airlift.units.Duration(1, MINUTES), - () -> assertEquals(queryRunner.execute("SELECT specversion FROM jmx.current.\"java.lang:type=runtime\""), ImmutableSet.of(asList(javaVersion)))); + () -> assertThat(queryRunner.execute("SELECT specversion FROM jmx.current.\"java.lang:type=runtime\"")).isEqualTo(ImmutableSet.of(asList(javaVersion)))); } } - @Test(dataProvider = "rpmJavaTestDataProvider") - public void testUninstall(String rpmHostPath, String javaVersion) + @Test + public void testUninstall() + throws Exception + { + testUninstall("17"); + testUninstall("21"); + } + + private void testUninstall(String javaVersion) throws Exception { String rpm = "/" + new File(rpmHostPath).getName(); @@ -113,7 +134,7 @@ public void testUninstall(String rpmHostPath, String javaVersion) container.execInContainer("sh", "-xeuc", uninstallTrino); ExecResult actual = container.execInContainer("rpm", "-q", "trino-server-rpm"); - assertEquals(actual.getStdout(), "package trino-server-rpm is not installed\n"); + assertThat(actual.getStdout()).isEqualTo("package trino-server-rpm is not installed\n"); assertPathDeleted(container, "/var/lib/trino"); assertPathDeleted(container, "/usr/lib/trino"); @@ -122,15 +143,6 @@ public void testUninstall(String rpmHostPath, String javaVersion) } } - @DataProvider - public static Object[][] rpmJavaTestDataProvider() - { - String rpmHostPath = requireNonNull(System.getProperty("rpm"), "rpm is null"); - return new Object[][]{ - {rpmHostPath, "17"}, - {rpmHostPath, "21"}}; - } - private static void assertPathDeleted(GenericContainer container, String path) throws Exception { @@ -138,8 +150,8 @@ private static void assertPathDeleted(GenericContainer container, String path "sh", "-xeuc", format("test -d %s && echo -n 'path exists' || echo -n 'path deleted'", path)); - assertEquals(actualResult.getStdout(), "path deleted"); - assertEquals(actualResult.getExitCode(), 0); + assertThat(actualResult.getStdout()).isEqualTo("path deleted"); + assertThat(actualResult.getExitCode()).isEqualTo(0); } private static class QueryRunner diff --git a/lib/trino-ignite-patched/pom.xml b/lib/trino-ignite-patched/pom.xml index ca10ab8a9824..b771bc87d66d 100644 --- a/lib/trino-ignite-patched/pom.xml +++ b/lib/trino-ignite-patched/pom.xml @@ -35,8 +35,14 @@ - org.testng - testng + io.airlift + junit-extensions + test + + + + org.junit.jupiter + junit-jupiter-api test diff --git a/lib/trino-ignite-patched/src/test/java/org/apache/ignite/TestDummy.java b/lib/trino-ignite-patched/src/test/java/org/apache/ignite/TestDummy.java index eabaf8f7d7a4..9d34e5d0b188 100644 --- a/lib/trino-ignite-patched/src/test/java/org/apache/ignite/TestDummy.java +++ b/lib/trino-ignite-patched/src/test/java/org/apache/ignite/TestDummy.java @@ -13,7 +13,7 @@ */ package org.apache.ignite; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; public class TestDummy { diff --git a/lib/trino-matching/pom.xml b/lib/trino-matching/pom.xml index 0453adeea674..81837b731c34 100644 --- a/lib/trino-matching/pom.xml +++ b/lib/trino-matching/pom.xml @@ -22,10 +22,50 @@ guava + + io.airlift + junit-extensions + test + + + + org.junit.jupiter + junit-jupiter-api + test + + + + org.junit.jupiter + junit-jupiter-engine + test + + org.testng testng test + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + org.apache.maven.surefire + surefire-junit-platform + ${dep.plugin.surefire.version} + + + org.apache.maven.surefire + surefire-testng + ${dep.plugin.surefire.version} + + + + + diff --git a/lib/trino-matching/src/test/java/io/trino/matching/TestMatcher.java b/lib/trino-matching/src/test/java/io/trino/matching/TestMatcher.java index 9033c249a160..09ec670cee4c 100644 --- a/lib/trino-matching/src/test/java/io/trino/matching/TestMatcher.java +++ b/lib/trino-matching/src/test/java/io/trino/matching/TestMatcher.java @@ -18,7 +18,7 @@ import io.trino.matching.example.rel.ProjectNode; import io.trino.matching.example.rel.RelNode; import io.trino.matching.example.rel.ScanNode; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.List; import java.util.NoSuchElementException; diff --git a/lib/trino-memory-context/pom.xml b/lib/trino-memory-context/pom.xml index 8feea57c536d..3836404039da 100644 --- a/lib/trino-memory-context/pom.xml +++ b/lib/trino-memory-context/pom.xml @@ -28,6 +28,12 @@ guava + + io.airlift + junit-extensions + test + + io.airlift testing @@ -46,10 +52,44 @@ test + + org.junit.jupiter + junit-jupiter-api + test + + + + org.junit.jupiter + junit-jupiter-engine + test + + org.testng testng test + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + org.apache.maven.surefire + surefire-junit-platform + ${dep.plugin.surefire.version} + + + org.apache.maven.surefire + surefire-testng + ${dep.plugin.surefire.version} + + + + + diff --git a/lib/trino-memory-context/src/test/java/io/trino/memory/context/TestMemoryContexts.java b/lib/trino-memory-context/src/test/java/io/trino/memory/context/TestMemoryContexts.java index df54ce687e1e..df080eecbe5e 100644 --- a/lib/trino-memory-context/src/test/java/io/trino/memory/context/TestMemoryContexts.java +++ b/lib/trino-memory-context/src/test/java/io/trino/memory/context/TestMemoryContexts.java @@ -16,12 +16,13 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; import io.airlift.units.DataSize; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.google.common.util.concurrent.Futures.immediateVoidFuture; import static io.airlift.units.DataSize.Unit.MEGABYTE; import static io.trino.memory.context.AggregatedMemoryContext.newRootAggregatedMemoryContext; import static io.trino.memory.context.AggregatedMemoryContext.newSimpleAggregatedMemoryContext; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotEquals; @@ -146,22 +147,30 @@ public void testGuaranteedMemoryDoesntBlock() assertEquals(reservationHandler.getReservation(), maxMemory); } - @Test(expectedExceptions = IllegalStateException.class, expectedExceptionsMessageRegExp = "SimpleLocalMemoryContext is already closed") + @Test public void testClosedLocalMemoryContext() { - AggregatedMemoryContext aggregateContext = newSimpleAggregatedMemoryContext(); - LocalMemoryContext localContext = aggregateContext.newLocalMemoryContext("test"); - localContext.close(); - localContext.setBytes(100); + assertThatThrownBy(() -> { + AggregatedMemoryContext aggregateContext = newSimpleAggregatedMemoryContext(); + LocalMemoryContext localContext = aggregateContext.newLocalMemoryContext("test"); + localContext.close(); + localContext.setBytes(100); + }) + .isInstanceOf(IllegalStateException.class) + .hasMessage("SimpleLocalMemoryContext is already closed"); } - @Test(expectedExceptions = IllegalStateException.class, expectedExceptionsMessageRegExp = "SimpleAggregatedMemoryContext is already closed") + @Test public void testClosedAggregateMemoryContext() { - AggregatedMemoryContext aggregateContext = newSimpleAggregatedMemoryContext(); - LocalMemoryContext localContext = aggregateContext.newLocalMemoryContext("test"); - aggregateContext.close(); - localContext.setBytes(100); + assertThatThrownBy(() -> { + AggregatedMemoryContext aggregateContext = newSimpleAggregatedMemoryContext(); + LocalMemoryContext localContext = aggregateContext.newLocalMemoryContext("test"); + aggregateContext.close(); + localContext.setBytes(100); + }) + .isInstanceOf(IllegalStateException.class) + .hasMessage("SimpleAggregatedMemoryContext is already closed"); } private static class TestMemoryReservationHandler diff --git a/lib/trino-orc/pom.xml b/lib/trino-orc/pom.xml index ee95acf44d69..7e8b5c3bbb51 100644 --- a/lib/trino-orc/pom.xml +++ b/lib/trino-orc/pom.xml @@ -120,6 +120,12 @@ runtime + + io.airlift + junit-extensions + test + + io.airlift testing @@ -156,6 +162,18 @@ test + + org.junit.jupiter + junit-jupiter-api + test + + + + org.junit.jupiter + junit-jupiter-engine + test + + org.openjdk.jmh jmh-core @@ -187,6 +205,19 @@ **/TestFullOrcReader.java + + + + org.apache.maven.surefire + surefire-junit-platform + ${dep.plugin.surefire.version} + + + org.apache.maven.surefire + surefire-testng + ${dep.plugin.surefire.version} + + diff --git a/lib/trino-orc/src/test/java/io/trino/orc/AbstractTestOrcReader.java b/lib/trino-orc/src/test/java/io/trino/orc/AbstractTestOrcReader.java index 1019fdabff3e..54202aa652aa 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/AbstractTestOrcReader.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/AbstractTestOrcReader.java @@ -28,8 +28,7 @@ import io.trino.spi.type.SqlTimestampWithTimeZone; import io.trino.spi.type.SqlVarbinary; import org.joda.time.DateTimeZone; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.math.BigInteger; import java.util.ArrayList; @@ -90,11 +89,7 @@ public abstract class AbstractTestOrcReader public AbstractTestOrcReader(OrcTester tester) { this.tester = tester; - } - @BeforeClass - public void setUp() - { assertEquals(DateTimeZone.getDefault(), HIVE_STORAGE_TIME_ZONE); } diff --git a/lib/trino-orc/src/test/java/io/trino/orc/BenchmarkOrcDecimalReader.java b/lib/trino-orc/src/test/java/io/trino/orc/BenchmarkOrcDecimalReader.java index b41801a04521..3d102e218a01 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/BenchmarkOrcDecimalReader.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/BenchmarkOrcDecimalReader.java @@ -19,6 +19,7 @@ import io.trino.spi.type.DecimalType; import io.trino.spi.type.SqlDecimal; import org.joda.time.DateTimeZone; +import org.junit.jupiter.api.Test; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; import org.openjdk.jmh.annotations.Fork; @@ -30,7 +31,6 @@ import org.openjdk.jmh.annotations.State; import org.openjdk.jmh.annotations.TearDown; import org.openjdk.jmh.annotations.Warmup; -import org.testng.annotations.Test; import java.io.File; import java.io.IOException; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestCachingOrcDataSource.java b/lib/trino-orc/src/test/java/io/trino/orc/TestCachingOrcDataSource.java index 601fb51caf6e..246b49dcd841 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestCachingOrcDataSource.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestCachingOrcDataSource.java @@ -22,9 +22,10 @@ import io.trino.orc.stream.OrcDataReader; import io.trino.spi.Page; import io.trino.spi.block.Block; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.IOException; import java.util.List; @@ -46,18 +47,21 @@ import static io.trino.orc.metadata.CompressionKind.ZLIB; import static io.trino.spi.type.VarcharType.VARCHAR; import static java.lang.String.format; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.fail; +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestCachingOrcDataSource { private static final int POSITION_COUNT = 50000; - private TempFile tempFile; + private final TempFile tempFile; - @BeforeClass - public void setUp() + public TestCachingOrcDataSource() throws Exception { tempFile = new TempFile(); @@ -72,12 +76,11 @@ public void setUp() .limit(POSITION_COUNT).iterator()); } - @AfterClass(alwaysRun = true) + @AfterAll public void tearDown() throws Exception { tempFile.close(); - tempFile = null; } @Test diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestDictionaryBuilder.java b/lib/trino-orc/src/test/java/io/trino/orc/TestDictionaryBuilder.java index 3a56af57f175..c732e1db7e25 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestDictionaryBuilder.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestDictionaryBuilder.java @@ -16,7 +16,7 @@ import com.google.common.collect.ImmutableSet; import io.trino.orc.writer.DictionaryBuilder; import io.trino.spi.block.VariableWidthBlock; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.HashSet; import java.util.Optional; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestDictionaryCompressionOptimizer.java b/lib/trino-orc/src/test/java/io/trino/orc/TestDictionaryCompressionOptimizer.java index 60d9f6a92686..695047b05247 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestDictionaryCompressionOptimizer.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestDictionaryCompressionOptimizer.java @@ -17,7 +17,7 @@ import io.airlift.units.DataSize; import io.airlift.units.DataSize.Unit; import io.trino.orc.DictionaryCompressionOptimizer.DictionaryColumn; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.List; import java.util.OptionalInt; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcBloomFilters.java b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcBloomFilters.java index 457501bbd43e..2649043b2c0d 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcBloomFilters.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcBloomFilters.java @@ -35,7 +35,7 @@ import io.trino.spi.predicate.ValueSet; import io.trino.spi.type.RealType; import io.trino.spi.type.Type; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.InputStream; import java.math.BigDecimal; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcDataSourceUtils.java b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcDataSourceUtils.java index b388fb179e9d..d7a41b9d41b6 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcDataSourceUtils.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcDataSourceUtils.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableList; import io.airlift.units.DataSize; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.List; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcLz4.java b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcLz4.java index 59b40f444c63..830d83ad9df1 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcLz4.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcLz4.java @@ -18,8 +18,7 @@ import io.trino.spi.Page; import io.trino.spi.block.Block; import org.joda.time.DateTimeZone; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.nio.file.Path; import java.util.Random; @@ -41,8 +40,15 @@ public class TestOrcLz4 { private static final long POSITION_COUNT = 10_000; - @Test(dataProvider = "testOrcDataProvider") - public void testReadLz4(byte[] data) + @Test + public void testReadLz4() + throws Exception + { + testReadLz4(readOrcTestData("apache-lz4.orc")); + testReadLz4(generateOrcTestData()); + } + + private void testReadLz4(byte[] data) throws Exception { OrcReader orcReader = OrcReader.createOrcReader(new MemoryOrcDataSource(new OrcDataSourceId("memory"), Slices.wrappedBuffer(data)), new OrcReaderOptions()) @@ -83,16 +89,6 @@ public void testReadLz4(byte[] data) } } - @DataProvider - public static Object[][] testOrcDataProvider() - throws Exception - { - return new Object[][] { - {readOrcTestData("apache-lz4.orc")}, - {generateOrcTestData()} - }; - } - private static byte[] readOrcTestData(String resourceFile) throws Exception { diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcOutputBuffer.java b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcOutputBuffer.java index 1db84d468981..eda0a882705f 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcOutputBuffer.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcOutputBuffer.java @@ -15,7 +15,7 @@ import io.airlift.slice.DynamicSliceOutput; import io.trino.orc.metadata.CompressionKind; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Arrays; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcReader.java b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcReader.java index 259a4b418484..ef7dfdd4234a 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcReader.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcReader.java @@ -13,7 +13,7 @@ */ package io.trino.orc; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.orc.OrcTester.fullOrcTester; import static io.trino.spi.type.DoubleType.DOUBLE; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcReaderMemoryUsage.java b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcReaderMemoryUsage.java index 10058a0144e1..1e7453407a71 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcReaderMemoryUsage.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcReaderMemoryUsage.java @@ -26,7 +26,7 @@ import org.apache.hadoop.hive.serde2.objectinspector.SettableStructObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.StructField; import org.apache.hadoop.io.Writable; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.HashMap; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcReaderPositions.java b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcReaderPositions.java index de3fcc84aa4b..afa7f0f27891 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcReaderPositions.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcReaderPositions.java @@ -35,7 +35,7 @@ import org.apache.hadoop.hive.serde2.objectinspector.SettableStructObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.StructField; import org.apache.hadoop.io.Writable; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.File; import java.io.IOException; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcWithoutRowGroupInfo.java b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcWithoutRowGroupInfo.java index bc6a53643f25..ebaaaab28f1e 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcWithoutRowGroupInfo.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcWithoutRowGroupInfo.java @@ -21,7 +21,7 @@ import io.trino.spi.predicate.Domain; import io.trino.spi.type.RowType; import org.joda.time.DateTimeZone; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.File; import java.util.OptionalInt; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcWriter.java b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcWriter.java index 19097430462f..acfe70c95a2f 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestOrcWriter.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestOrcWriter.java @@ -33,7 +33,7 @@ import io.trino.spi.block.Block; import io.trino.spi.block.VariableWidthBlockBuilder; import io.trino.spi.type.Type; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.io.InputStream; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestReadBloomFilter.java b/lib/trino-orc/src/test/java/io/trino/orc/TestReadBloomFilter.java index 781265773039..049aeed87c06 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestReadBloomFilter.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestReadBloomFilter.java @@ -20,7 +20,7 @@ import io.trino.spi.type.SqlTimestamp; import io.trino.spi.type.SqlVarbinary; import io.trino.spi.type.Type; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.List; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestSliceDictionaryColumnReader.java b/lib/trino-orc/src/test/java/io/trino/orc/TestSliceDictionaryColumnReader.java index 3bdc5cde691b..d0374a72f4e7 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestSliceDictionaryColumnReader.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestSliceDictionaryColumnReader.java @@ -20,7 +20,7 @@ import io.trino.orc.metadata.OrcMetadataReader; import io.trino.orc.metadata.StripeInformation; import io.trino.orc.reader.SliceDictionaryColumnReader; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.File; import java.nio.file.Files; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestSliceDictionaryColumnWriter.java b/lib/trino-orc/src/test/java/io/trino/orc/TestSliceDictionaryColumnWriter.java index d483409e2a54..3d277cdcc37e 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestSliceDictionaryColumnWriter.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestSliceDictionaryColumnWriter.java @@ -32,7 +32,7 @@ import io.trino.spi.block.Block; import io.trino.spi.block.RunLengthEncodedBlock; import io.trino.spi.block.VariableWidthBlockBuilder; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.ArrayList; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestStructColumnReader.java b/lib/trino-orc/src/test/java/io/trino/orc/TestStructColumnReader.java index f5926371236e..0b5f52e8235b 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestStructColumnReader.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestStructColumnReader.java @@ -31,9 +31,11 @@ import io.trino.spi.type.Type; import io.trino.spi.type.TypeSignatureParameter; import io.trino.testing.TestingConnectorSession; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.IOException; import java.util.ArrayList; @@ -50,25 +52,29 @@ import static io.trino.orc.metadata.CompressionKind.NONE; import static io.trino.spi.type.VarcharType.VARCHAR; import static io.trino.type.InternalTypeManager.TESTING_TYPE_MANAGER; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.joda.time.DateTimeZone.UTC; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNull; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestStructColumnReader { private static final String STRUCT_COL_NAME = "struct_col"; private TempFile tempFile; - @BeforeMethod + @BeforeEach public void setUp() throws IOException { tempFile = new TempFile(); } - @AfterMethod(alwaysRun = true) + @AfterEach public void tearDown() throws IOException { @@ -145,19 +151,21 @@ public void testReaderLowerCasesFieldNamesFromType() assertEquals(actual.get(2), "fieldCValue"); } - @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = - "ROW type does not have field names declared: row\\(varchar, varchar, varchar\\)") + @Test public void testThrowsExceptionWhenFieldNameMissing() - throws IOException { - List readerFields = new ArrayList<>(Arrays.asList("field_a", "field_b", "field_c")); - List writerFields = new ArrayList<>(Arrays.asList("field_a", "field_b", "field_c")); - List writerData = new ArrayList<>(Arrays.asList("field_a_value", "field_b_value", "field_c_value")); - Type readerType = getTypeNullName(readerFields.size()); - Type writerType = getType(writerFields); - - write(tempFile, writerType, writerData); - read(tempFile, readerType); + assertThatThrownBy(() -> { + List readerFields = new ArrayList<>(Arrays.asList("field_a", "field_b", "field_c")); + List writerFields = new ArrayList<>(Arrays.asList("field_a", "field_b", "field_c")); + List writerData = new ArrayList<>(Arrays.asList("field_a_value", "field_b_value", "field_c_value")); + Type readerType = getTypeNullName(readerFields.size()); + Type writerType = getType(writerFields); + + write(tempFile, writerType, writerData); + read(tempFile, readerType); + }) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("ROW type does not have field names declared: row(varchar, varchar, varchar)"); } /** diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestTimestampTzMicros.java b/lib/trino-orc/src/test/java/io/trino/orc/TestTimestampTzMicros.java index c2f986d634af..03595c186be7 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestTimestampTzMicros.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestTimestampTzMicros.java @@ -19,7 +19,7 @@ import io.trino.spi.type.TimestampType; import io.trino.spi.type.TimestampWithTimeZoneType; import org.joda.time.DateTimeZone; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.google.common.io.Resources.getResource; import static com.google.common.io.Resources.toByteArray; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/TestTupleDomainOrcPredicate.java b/lib/trino-orc/src/test/java/io/trino/orc/TestTupleDomainOrcPredicate.java index 78333d48bfaf..632f27757f25 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/TestTupleDomainOrcPredicate.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/TestTupleDomainOrcPredicate.java @@ -30,7 +30,7 @@ import io.trino.spi.type.LongTimestamp; import io.trino.spi.type.LongTimestampWithTimeZone; import io.trino.spi.type.Type; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.math.BigDecimal; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/metadata/TestOrcMetadataReader.java b/lib/trino-orc/src/test/java/io/trino/orc/metadata/TestOrcMetadataReader.java index 3efc08b44c8a..5a66a395b878 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/metadata/TestOrcMetadataReader.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/metadata/TestOrcMetadataReader.java @@ -21,7 +21,7 @@ import io.trino.orc.metadata.statistics.StringStatistics; import io.trino.orc.proto.OrcProto; import io.trino.orc.protobuf.ByteString; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.List; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/metadata/statistics/TestStringStatisticsBuilder.java b/lib/trino-orc/src/test/java/io/trino/orc/metadata/statistics/TestStringStatisticsBuilder.java index dc3bc0d9e2e3..46f985c0e03d 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/metadata/statistics/TestStringStatisticsBuilder.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/metadata/statistics/TestStringStatisticsBuilder.java @@ -16,8 +16,7 @@ import com.google.common.collect.ImmutableList; import io.airlift.slice.Slice; import io.airlift.slice.Slices; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.List; @@ -28,8 +27,6 @@ import static io.trino.orc.metadata.statistics.AbstractStatisticsBuilderTest.StatisticsType.STRING; import static io.trino.orc.metadata.statistics.ColumnStatistics.mergeColumnStatistics; import static io.trino.orc.metadata.statistics.StringStatistics.STRING_VALUE_BYTES_OVERHEAD; -import static io.trino.orc.metadata.statistics.StringStatisticsBuilder.StringCompactor.truncateMax; -import static io.trino.orc.metadata.statistics.StringStatisticsBuilder.StringCompactor.truncateMin; import static java.nio.charset.StandardCharsets.UTF_8; import static org.assertj.core.api.Assertions.assertThat; import static org.testng.Assert.assertEquals; @@ -338,65 +335,59 @@ public void testBloomFilter() assertFalse(bloomFilter.testSlice(LOW_TOP_VALUE)); } - @DataProvider(name = "computeMin") - public static Object[][] computeMinProvider() + @Test + public void testComputeMin() { - return new Object[][] { - {"simple/case", "simple", 6}, - {"simple/ƒ", "simple/", 8}, - {"simple/語", "simple/", 9}, - {"simple/語", "simple/", 8}, - {"simple/\uD80C\uDE02", "simple/", 10}, - {"simple/\uD80C\uDE02", "simple/", 9}, - {"simple/\uD80C\uDE02", "simple/", 8}, - {"\uDBFF\uDFFF", "", 3}, - }; + assertThat(truncateMin("simple/case", 6)).containsExactly("simple".getBytes(UTF_8)); + assertThat(truncateMin("simple/ƒ", 8)).containsExactly("simple/".getBytes(UTF_8)); + assertThat(truncateMin("simple/語", 9)).containsExactly("simple/".getBytes(UTF_8)); + assertThat(truncateMin("simple/語", 8)).containsExactly("simple/".getBytes(UTF_8)); + assertThat(truncateMin("simple/\uD80C\uDE02", 10)).containsExactly("simple/".getBytes(UTF_8)); + assertThat(truncateMin("simple/\uD80C\uDE02", 9)).containsExactly("simple/".getBytes(UTF_8)); + assertThat(truncateMin("simple/\uD80C\uDE02", 8)).containsExactly("simple/".getBytes(UTF_8)); + assertThat(truncateMin("\uDBFF\uDFFF", 3)).containsExactly("".getBytes(UTF_8)); } - @Test(dataProvider = "computeMin") - public void testComputeMin(String input, String expected, int maxLength) + @Test + public void testComputeMax() { - assertThat(truncateMin(Slices.wrappedBuffer(input.getBytes(UTF_8)), maxLength).getBytes()).containsExactly(expected.getBytes(UTF_8)); + assertThat(truncateMax("simple/case", 6)).containsExactly("simplf".getBytes(UTF_8)); + assertThat(truncateMax("simple/ƒ", 8)).containsExactly("simple0".getBytes(UTF_8)); + assertThat(truncateMax("simple/語", 9)).containsExactly("simple0".getBytes(UTF_8)); + assertThat(truncateMax("simple/語", 8)).containsExactly("simple0".getBytes(UTF_8)); + assertThat(truncateMax("simple/\uD80C\uDE02", 10)).containsExactly("simple0".getBytes(UTF_8)); + assertThat(truncateMax("simple/\uD80C\uDE02", 9)).containsExactly("simple0".getBytes(UTF_8)); + assertThat(truncateMax("simple/\uD80C\uDE02", 8)).containsExactly("simple0".getBytes(UTF_8)); + assertThat(truncateMax("simple/ƒƒ", 10)).containsExactly("simple/Ɠ".getBytes(UTF_8)); + assertThat(truncateMax("\uDBFF\uDFFF", 3)).containsExactly("".getBytes(UTF_8)); } - @DataProvider(name = "computeMax") - public static Object[][] computeMaxProvider() + @Test + public void testComputeMaxForMaxUtf8Chars() { - return new Object[][] { - {"simple/case", "simplf", 6}, - {"simple/ƒ", "simple0", 8}, - {"simple/語", "simple0", 9}, - {"simple/語", "simple0", 8}, - {"simple/\uD80C\uDE02", "simple0", 10}, - {"simple/\uD80C\uDE02", "simple0", 9}, - {"simple/\uD80C\uDE02", "simple0", 8}, - {"simple/ƒƒ", "simple/Ɠ", 10}, - {"\uDBFF\uDFFF", "", 3}, - }; + assertThat(truncateMax("\uDBFF\uDFFF\uDBFF\uDFFF\uDBFF\uDFFF", 11)).isEqualTo(new byte[0]); } - @Test(dataProvider = "computeMax") - public void testComputeMax(String input, String expected, int maxLength) + @Test + public void testComputeMaxSkipsMaxUtf8Chars() { - assertThat(truncateMax(Slices.wrappedBuffer(input.getBytes(UTF_8)), maxLength).getBytes()).containsExactly(expected.getBytes(UTF_8)); + assertThat(truncateMax("a\uDBFF\uDFFF\uDBFF\uDFFF\uDBFF\uDFFF", 12)).containsExactly("b".getBytes(UTF_8)); } @Test - public void testComputeMaxForMaxUtf8Chars() + public void testComputeMixMaxReturnsNullForMaxLengthEquals0() { - assertThat(truncateMax(Slices.wrappedBuffer("\uDBFF\uDFFF\uDBFF\uDFFF\uDBFF\uDFFF".getBytes(UTF_8)), 11)).isEqualTo(EMPTY_SLICE); + assertThat(StringStatisticsBuilder.StringCompactor.truncateMin(Slices.wrappedBuffer("simple/test".getBytes(UTF_8)), 0)).isEqualTo(EMPTY_SLICE); + assertThat(truncateMax("simple/test", 0)).isEqualTo(new byte[0]); } - @Test - public void testComputeMaxSkipsMaxUtf8Chars() + private static byte[] truncateMin(String input, int maxLength) { - assertThat(truncateMax(Slices.wrappedBuffer("a\uDBFF\uDFFF\uDBFF\uDFFF\uDBFF\uDFFF".getBytes(UTF_8)), 12).getBytes()).containsExactly("b".getBytes(UTF_8)); + return StringStatisticsBuilder.StringCompactor.truncateMin(Slices.wrappedBuffer(input.getBytes(UTF_8)), maxLength).getBytes(); } - @Test - public void testComputeMixMaxReturnsNullForMaxLengthEquals0() + private static byte[] truncateMax(String input, int maxLength) { - assertThat(truncateMin(Slices.wrappedBuffer("simple/test".getBytes(UTF_8)), 0)).isEqualTo(EMPTY_SLICE); - assertThat(truncateMax(Slices.wrappedBuffer("simple/test".getBytes(UTF_8)), 0)).isEqualTo(EMPTY_SLICE); + return StringStatisticsBuilder.StringCompactor.truncateMax(Slices.wrappedBuffer(input.getBytes(UTF_8)), maxLength).getBytes(); } } diff --git a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestBooleanOutputStream.java b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestBooleanOutputStream.java index 2e03c6389712..d3edb8559d39 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestBooleanOutputStream.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestBooleanOutputStream.java @@ -19,7 +19,7 @@ import io.trino.orc.OrcOutputBuffer; import io.trino.orc.checkpoint.BooleanStreamCheckpoint; import io.trino.orc.checkpoint.ByteStreamCheckpoint; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.List; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestBooleanStream.java b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestBooleanStream.java index 7aaedd90e27e..ea5a8971c63b 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestBooleanStream.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestBooleanStream.java @@ -23,7 +23,7 @@ import io.trino.orc.metadata.Stream.StreamKind; import it.unimi.dsi.fastutil.booleans.BooleanArrayList; import it.unimi.dsi.fastutil.booleans.BooleanList; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.ArrayList; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestByteArrayStream.java b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestByteArrayStream.java index ffa54ec1c014..85d8b3de6d3f 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestByteArrayStream.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestByteArrayStream.java @@ -19,7 +19,7 @@ import io.trino.orc.OrcCorruptionException; import io.trino.orc.OrcDecompressor; import io.trino.orc.checkpoint.ByteArrayStreamCheckpoint; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.ArrayList; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestByteStream.java b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestByteStream.java index 2306a981f1c7..9af014dac87a 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestByteStream.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestByteStream.java @@ -17,7 +17,7 @@ import io.trino.orc.OrcCorruptionException; import io.trino.orc.OrcDecompressor; import io.trino.orc.checkpoint.ByteStreamCheckpoint; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.ArrayList; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestDecimalStream.java b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestDecimalStream.java index 06b7575c529d..b5fb0d2e8e9c 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestDecimalStream.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestDecimalStream.java @@ -20,7 +20,7 @@ import io.trino.orc.OrcCorruptionException; import io.trino.orc.OrcDataSourceId; import io.trino.spi.type.Int128; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.ByteArrayOutputStream; import java.io.IOException; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestDoubleStream.java b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestDoubleStream.java index 68aa2690b947..9b95edf61bdf 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestDoubleStream.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestDoubleStream.java @@ -17,7 +17,7 @@ import io.trino.orc.OrcCorruptionException; import io.trino.orc.OrcDecompressor; import io.trino.orc.checkpoint.DoubleStreamCheckpoint; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.ArrayList; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestFloatStream.java b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestFloatStream.java index d5b55f59d6d0..09a76510a93f 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestFloatStream.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestFloatStream.java @@ -17,7 +17,7 @@ import io.trino.orc.OrcCorruptionException; import io.trino.orc.OrcDecompressor; import io.trino.orc.checkpoint.FloatStreamCheckpoint; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.ArrayList; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongBitPacker.java b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongBitPacker.java index 208d0ee7c978..5d3f1c3c0f46 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongBitPacker.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongBitPacker.java @@ -13,7 +13,7 @@ */ package io.trino.orc.stream; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.io.InputStream; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongDecimalStream.java b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongDecimalStream.java index 9318f14783e8..ff68aea5a448 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongDecimalStream.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongDecimalStream.java @@ -18,7 +18,7 @@ import io.trino.orc.OrcDecompressor; import io.trino.orc.checkpoint.DecimalStreamCheckpoint; import io.trino.spi.type.Int128; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.math.BigInteger; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongDecode.java b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongDecode.java index 361c006f71f1..f8f731a0627b 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongDecode.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongDecode.java @@ -17,7 +17,7 @@ import io.airlift.slice.SliceOutput; import io.airlift.slice.Slices; import io.trino.orc.OrcDataSourceId; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.EOFException; import java.io.IOException; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongStreamV1.java b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongStreamV1.java index 5145f137b637..18283d4252e3 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongStreamV1.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongStreamV1.java @@ -17,7 +17,7 @@ import io.trino.orc.OrcCorruptionException; import io.trino.orc.OrcDecompressor; import io.trino.orc.checkpoint.LongStreamCheckpoint; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.ArrayList; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongStreamV2.java b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongStreamV2.java index 0596ed8e8a56..b8a4106b0728 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongStreamV2.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestLongStreamV2.java @@ -17,7 +17,7 @@ import io.trino.orc.OrcCorruptionException; import io.trino.orc.OrcDecompressor; import io.trino.orc.checkpoint.LongStreamCheckpoint; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.ArrayList; diff --git a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestShortDecimalStream.java b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestShortDecimalStream.java index 0cb06431bfe3..b7757806b9dc 100644 --- a/lib/trino-orc/src/test/java/io/trino/orc/stream/TestShortDecimalStream.java +++ b/lib/trino-orc/src/test/java/io/trino/orc/stream/TestShortDecimalStream.java @@ -18,7 +18,7 @@ import io.trino.orc.OrcDecompressor; import io.trino.orc.checkpoint.DecimalStreamCheckpoint; import io.trino.spi.type.Int128; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.ArrayList; diff --git a/lib/trino-parquet/pom.xml b/lib/trino-parquet/pom.xml index 5854262dbb03..bf07308bc12d 100644 --- a/lib/trino-parquet/pom.xml +++ b/lib/trino-parquet/pom.xml @@ -187,6 +187,12 @@ test + + org.junit.jupiter + junit-jupiter-api + test + + org.junit.jupiter junit-jupiter-engine diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/TestParquetTimestampUtils.java b/lib/trino-parquet/src/test/java/io/trino/parquet/TestParquetTimestampUtils.java index fd2cb6a133bf..d38de5fffc4f 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/TestParquetTimestampUtils.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/TestParquetTimestampUtils.java @@ -17,7 +17,7 @@ import io.trino.spi.TrinoException; import org.apache.hadoop.hive.common.type.Timestamp; import org.apache.parquet.io.api.Binary; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.time.LocalDateTime; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/predicate/BenchmarkTupleDomainParquetPredicate.java b/lib/trino-parquet/src/test/java/io/trino/parquet/predicate/BenchmarkTupleDomainParquetPredicate.java index 13f8df3cff3d..23b15ccd5bf5 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/predicate/BenchmarkTupleDomainParquetPredicate.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/predicate/BenchmarkTupleDomainParquetPredicate.java @@ -20,6 +20,7 @@ import io.trino.spi.predicate.Domain; import org.apache.parquet.column.ColumnDescriptor; import org.apache.parquet.schema.Types; +import org.junit.jupiter.api.Test; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; import org.openjdk.jmh.annotations.Fork; @@ -32,7 +33,6 @@ import org.openjdk.jmh.annotations.State; import org.openjdk.jmh.annotations.Warmup; import org.openjdk.jmh.runner.RunnerException; -import org.testng.annotations.Test; import java.io.IOException; import java.util.ArrayList; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/predicate/TestPredicateUtils.java b/lib/trino-parquet/src/test/java/io/trino/parquet/predicate/TestPredicateUtils.java index 6c48d294491b..f70716d7fa6d 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/predicate/TestPredicateUtils.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/predicate/TestPredicateUtils.java @@ -21,7 +21,7 @@ import org.apache.parquet.hadoop.metadata.ColumnChunkMetaData; import org.apache.parquet.schema.PrimitiveType; import org.apache.parquet.schema.Types; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Set; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestBinaryColumnBenchmark.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestBinaryColumnBenchmark.java index 73a82cf9f5db..a459299c3364 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestBinaryColumnBenchmark.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestBinaryColumnBenchmark.java @@ -16,7 +16,7 @@ import io.trino.parquet.reader.BenchmarkBinaryColumnReader.Encoding; import io.trino.parquet.reader.BenchmarkBinaryColumnReader.FieldType; import io.trino.parquet.reader.BenchmarkBinaryColumnReader.PositionLength; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestColumnIndexBuilder.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestColumnIndexBuilder.java index d6944356fc01..73fff71fd453 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestColumnIndexBuilder.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestColumnIndexBuilder.java @@ -27,7 +27,7 @@ import org.apache.parquet.schema.LogicalTypeAnnotation; import org.apache.parquet.schema.PrimitiveType; import org.apache.parquet.schema.Types; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.math.BigDecimal; import java.nio.ByteBuffer; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestColumnIndexFilter.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestColumnIndexFilter.java index ade047c61970..ec77c71ed73d 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestColumnIndexFilter.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestColumnIndexFilter.java @@ -29,7 +29,7 @@ import org.apache.parquet.internal.filter2.columnindex.ColumnIndexStore; import org.apache.parquet.internal.filter2.columnindex.RowRanges; import org.apache.parquet.schema.PrimitiveType; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.nio.ByteBuffer; import java.util.ArrayList; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestColumnReaderBenchmark.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestColumnReaderBenchmark.java index 9bad2f5a4e09..adb3f9366fb7 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestColumnReaderBenchmark.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestColumnReaderBenchmark.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableList; import io.trino.parquet.ParquetEncoding; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestParquetReaderMemoryUsage.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestParquetReaderMemoryUsage.java index 8ade0d3cbfbe..fab5d6284986 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestParquetReaderMemoryUsage.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestParquetReaderMemoryUsage.java @@ -23,7 +23,7 @@ import io.trino.spi.block.LazyBlock; import io.trino.spi.type.Type; import org.apache.parquet.hadoop.metadata.ParquetMetadata; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.List; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestParquetReaderUtils.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestParquetReaderUtils.java index fbf8d4a3ea87..3df221bdd66c 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestParquetReaderUtils.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestParquetReaderUtils.java @@ -15,7 +15,7 @@ import io.airlift.slice.Slices; import org.apache.parquet.bytes.BytesUtils; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.ByteArrayOutputStream; import java.io.IOException; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestParquetReaderUtilsBenchmarks.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestParquetReaderUtilsBenchmarks.java index b9e92a74a1e0..b4a2141f883f 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestParquetReaderUtilsBenchmarks.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestParquetReaderUtilsBenchmarks.java @@ -13,7 +13,7 @@ */ package io.trino.parquet.reader; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestShortDecimalColumnReaderBenchmark.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestShortDecimalColumnReaderBenchmark.java index fab2dc1bf14b..40b44427d40c 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestShortDecimalColumnReaderBenchmark.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestShortDecimalColumnReaderBenchmark.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableList; import io.trino.parquet.ParquetEncoding; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestTimeMillis.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestTimeMillis.java index cd781878c1db..1d27c37c91eb 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestTimeMillis.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/TestTimeMillis.java @@ -23,13 +23,11 @@ import io.trino.spi.type.TimeType; import io.trino.spi.type.Type; import org.apache.parquet.hadoop.metadata.ParquetMetadata; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.File; import java.util.List; import java.util.Optional; -import java.util.stream.Stream; import static io.trino.memory.context.AggregatedMemoryContext.newSimpleAggregatedMemoryContext; import static io.trino.parquet.ParquetTestUtils.createParquetReader; @@ -37,14 +35,22 @@ import static io.trino.spi.type.TimeType.TIME_MILLIS; import static io.trino.spi.type.TimeType.TIME_NANOS; import static io.trino.spi.type.TimeType.TIME_SECONDS; -import static io.trino.testing.DataProviders.toDataProvider; import static io.trino.testing.TestingConnectorSession.SESSION; import static org.assertj.core.api.Assertions.assertThat; public class TestTimeMillis { - @Test(dataProvider = "timeTypeProvider") - public void testTimeMillsInt32(TimeType timeType) + @Test + public void testTimeMillsInt32() + throws Exception + { + testTimeMillsInt32(TIME_SECONDS); + testTimeMillsInt32(TIME_MILLIS); + testTimeMillsInt32(TIME_MICROS); + testTimeMillsInt32(TIME_NANOS); + } + + private void testTimeMillsInt32(TimeType timeType) throws Exception { List columnNames = ImmutableList.of("COLUMN1", "COLUMN2"); @@ -71,11 +77,4 @@ public void testTimeMillsInt32(TimeType timeType) assertThat(timeType.getObjectValue(SESSION, block, 0)) .isEqualTo(SqlTime.newInstance(precision, timeType == TIME_SECONDS ? 0L : 86399999000000000L)); } - - @DataProvider - public static Object[][] timeTypeProvider() - { - return Stream.of(TIME_SECONDS, TIME_MILLIS, TIME_MICROS, TIME_NANOS) - .collect(toDataProvider()); - } } diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/decoders/TestRleBitPackingDecoderBenchmark.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/decoders/TestRleBitPackingDecoderBenchmark.java index f233b77b583b..3858392cc71a 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/decoders/TestRleBitPackingDecoderBenchmark.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/decoders/TestRleBitPackingDecoderBenchmark.java @@ -13,7 +13,7 @@ */ package io.trino.parquet.reader.decoders; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestBinaryBuffer.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestBinaryBuffer.java index d81b5e51870d..12acf25b6f12 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestBinaryBuffer.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestBinaryBuffer.java @@ -15,7 +15,7 @@ import io.airlift.slice.Slice; import io.airlift.slice.Slices; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.testng.Assert.assertSame; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestBitPackingUtils.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestBitPackingUtils.java index c9b49614b08e..2aee7249b4e1 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestBitPackingUtils.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestBitPackingUtils.java @@ -13,7 +13,7 @@ */ package io.trino.parquet.reader.flat; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Random; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestFlatColumnReader.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestFlatColumnReader.java index e52ca0fe1353..bae20cf49539 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestFlatColumnReader.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestFlatColumnReader.java @@ -30,7 +30,7 @@ import org.apache.parquet.column.values.ValuesWriter; import org.apache.parquet.column.values.rle.RunLengthBitPackingHybridValuesWriter; import org.apache.parquet.schema.PrimitiveType; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.List; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestNullsDecoderBenchmark.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestNullsDecoderBenchmark.java index aa66ce3caacf..9915c88d21cb 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestNullsDecoderBenchmark.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestNullsDecoderBenchmark.java @@ -14,7 +14,7 @@ package io.trino.parquet.reader.flat; import io.trino.parquet.reader.flat.BenchmarkFlatDefinitionLevelDecoder.DataGenerator; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestRowRangesIterator.java b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestRowRangesIterator.java index e5f933b9edee..cf45fc34cf8c 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestRowRangesIterator.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/reader/flat/TestRowRangesIterator.java @@ -15,7 +15,7 @@ import com.google.common.base.VerifyException; import io.trino.parquet.reader.FilteredRowRanges; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Optional; import java.util.OptionalLong; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/writer/TestParquetSchemaConverter.java b/lib/trino-parquet/src/test/java/io/trino/parquet/writer/TestParquetSchemaConverter.java index a78079b43a2e..ff35f5d8a433 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/writer/TestParquetSchemaConverter.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/writer/TestParquetSchemaConverter.java @@ -18,7 +18,7 @@ import org.apache.parquet.schema.LogicalTypeAnnotation; import org.apache.parquet.schema.PrimitiveType; import org.apache.parquet.schema.Type; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.math.BigInteger; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/writer/TestParquetWriter.java b/lib/trino-parquet/src/test/java/io/trino/parquet/writer/TestParquetWriter.java index 14a6a2011fb8..555bc6275e60 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/writer/TestParquetWriter.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/writer/TestParquetWriter.java @@ -41,7 +41,7 @@ import org.apache.parquet.hadoop.metadata.ColumnChunkMetaData; import org.apache.parquet.hadoop.metadata.ParquetMetadata; import org.apache.parquet.schema.PrimitiveType; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.ByteArrayOutputStream; import java.io.IOException; diff --git a/lib/trino-parquet/src/test/java/io/trino/parquet/writer/TestTrinoValuesWriterFactory.java b/lib/trino-parquet/src/test/java/io/trino/parquet/writer/TestTrinoValuesWriterFactory.java index 3abec18fe784..888086c892c3 100644 --- a/lib/trino-parquet/src/test/java/io/trino/parquet/writer/TestTrinoValuesWriterFactory.java +++ b/lib/trino-parquet/src/test/java/io/trino/parquet/writer/TestTrinoValuesWriterFactory.java @@ -28,7 +28,7 @@ import org.apache.parquet.column.values.plain.FixedLenByteArrayPlainValuesWriter; import org.apache.parquet.column.values.plain.PlainValuesWriter; import org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static java.util.Locale.ENGLISH; import static org.apache.parquet.column.ParquetProperties.WriterVersion.PARQUET_1_0; diff --git a/lib/trino-parquet/src/test/java/org/apache/parquet/column/values/dictionary/TestDictionaryWriter.java b/lib/trino-parquet/src/test/java/org/apache/parquet/column/values/dictionary/TestDictionaryWriter.java index 06afb635a310..018d1f070274 100644 --- a/lib/trino-parquet/src/test/java/org/apache/parquet/column/values/dictionary/TestDictionaryWriter.java +++ b/lib/trino-parquet/src/test/java/org/apache/parquet/column/values/dictionary/TestDictionaryWriter.java @@ -35,7 +35,7 @@ import org.apache.parquet.column.values.dictionary.DictionaryValuesWriter.PlainLongDictionaryValuesWriter; import org.apache.parquet.column.values.plain.PlainValuesWriter; import org.apache.parquet.io.api.Binary; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.nio.charset.StandardCharsets; diff --git a/lib/trino-phoenix5-patched/pom.xml b/lib/trino-phoenix5-patched/pom.xml index 81ae850c914f..75ac2659b018 100644 --- a/lib/trino-phoenix5-patched/pom.xml +++ b/lib/trino-phoenix5-patched/pom.xml @@ -25,8 +25,14 @@ - org.testng - testng + io.airlift + junit-extensions + test + + + + org.junit.jupiter + junit-jupiter-api test diff --git a/lib/trino-phoenix5-patched/src/test/java/org/apache/phoenix/TestDummy.java b/lib/trino-phoenix5-patched/src/test/java/org/apache/phoenix/TestDummy.java index 324d7da818bd..5a6de3fbedc3 100644 --- a/lib/trino-phoenix5-patched/src/test/java/org/apache/phoenix/TestDummy.java +++ b/lib/trino-phoenix5-patched/src/test/java/org/apache/phoenix/TestDummy.java @@ -13,7 +13,7 @@ */ package org.apache.phoenix; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; public class TestDummy { diff --git a/lib/trino-plugin-toolkit/pom.xml b/lib/trino-plugin-toolkit/pom.xml index 9fa935df3e93..f771c5ec834d 100644 --- a/lib/trino-plugin-toolkit/pom.xml +++ b/lib/trino-plugin-toolkit/pom.xml @@ -145,6 +145,12 @@ test + + io.airlift + junit-extensions + test + + io.airlift testing @@ -170,6 +176,18 @@ test + + org.junit.jupiter + junit-jupiter-api + test + + + + org.junit.jupiter + junit-jupiter-engine + test + + org.testng testng @@ -178,6 +196,7 @@ + true @@ -194,5 +213,24 @@ + + + org.apache.maven.plugins + maven-surefire-plugin + + + + org.apache.maven.surefire + surefire-junit-platform + ${dep.plugin.surefire.version} + + + org.apache.maven.surefire + surefire-testng + ${dep.plugin.surefire.version} + + + + diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/authentication/TestKerberosConfiguration.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/authentication/TestKerberosConfiguration.java index c5c3748333f7..91bb1597e527 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/authentication/TestKerberosConfiguration.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/authentication/TestKerberosConfiguration.java @@ -13,8 +13,7 @@ */ package io.trino.plugin.base.authentication; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.plugin.base.authentication.KerberosConfiguration.Builder.getServerPrincipal; import static org.assertj.core.api.Assertions.assertThat; @@ -23,22 +22,14 @@ public class TestKerberosConfiguration { private static final String HOST_NAME = "host_name"; - @Test(dataProvider = "kerberosPrincipalPattern") - public void testHostnameSubstitution(String actual, String expected) + @Test + public void testHostnameSubstitution() { - assertThat(getServerPrincipal(actual, HOST_NAME)).isEqualTo(expected); - } - - @DataProvider(name = "kerberosPrincipalPattern") - public Object[][] kerberosPrincipalPattern() - { - return new Object[][] { - {"server/_HOST@REALM.COM", "server/host_name@REALM.COM"}, - {"server/_HOST", "server/host_name"}, - {"server/trino-worker@REALM.COM", "server/trino-worker@REALM.COM"}, - {"server/trino-worker", "server/trino-worker"}, - {"SERVER_HOST/_HOST@REALM.COM", "SERVER_HOST/host_name@REALM.COM"}, - {"SERVER_HOST/_HOST", "SERVER_HOST/host_name"}, - }; + assertThat(getServerPrincipal("server/_HOST@REALM.COM", HOST_NAME)).isEqualTo("server/host_name@REALM.COM"); + assertThat(getServerPrincipal("server/_HOST", HOST_NAME)).isEqualTo("server/host_name"); + assertThat(getServerPrincipal("server/trino-worker@REALM.COM", HOST_NAME)).isEqualTo("server/trino-worker@REALM.COM"); + assertThat(getServerPrincipal("server/trino-worker", HOST_NAME)).isEqualTo("server/trino-worker"); + assertThat(getServerPrincipal("SERVER_HOST/_HOST@REALM.COM", HOST_NAME)).isEqualTo("SERVER_HOST/host_name@REALM.COM"); + assertThat(getServerPrincipal("SERVER_HOST/_HOST", HOST_NAME)).isEqualTo("SERVER_HOST/host_name"); } } diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/classloader/TestClassLoaderSafeWrappers.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/classloader/TestClassLoaderSafeWrappers.java index 55646e93a8b1..b7274558b7c2 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/classloader/TestClassLoaderSafeWrappers.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/classloader/TestClassLoaderSafeWrappers.java @@ -27,7 +27,7 @@ import io.trino.spi.connector.SystemTable; import io.trino.spi.eventlistener.EventListener; import io.trino.spi.function.table.ConnectorTableFunction; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.lang.reflect.Method; import java.util.Iterator; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/io/TestByteBuffers.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/io/TestByteBuffers.java index 50da4844039a..2b769545cdaa 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/io/TestByteBuffers.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/io/TestByteBuffers.java @@ -13,7 +13,7 @@ */ package io.trino.plugin.base.io; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.nio.ByteBuffer; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/ldap/TestLdapConfig.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/ldap/TestLdapConfig.java index 89874bae7b1c..d9e987beca54 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/ldap/TestLdapConfig.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/ldap/TestLdapConfig.java @@ -19,7 +19,7 @@ import jakarta.validation.constraints.AssertTrue; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Pattern; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.nio.file.Files; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/logging/TestFormatInterpolator.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/logging/TestFormatInterpolator.java index 561777bbbde4..4fb7a245243c 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/logging/TestFormatInterpolator.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/logging/TestFormatInterpolator.java @@ -13,7 +13,7 @@ */ package io.trino.plugin.base.logging; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; import static org.testng.Assert.assertFalse; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/mapping/TestForwardingIdentifierMapping.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/mapping/TestForwardingIdentifierMapping.java index cd264d7ee1d5..42b990cac3dc 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/mapping/TestForwardingIdentifierMapping.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/mapping/TestForwardingIdentifierMapping.java @@ -13,7 +13,7 @@ */ package io.trino.plugin.base.mapping; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.spi.testing.InterfaceTestUtils.assertAllMethodsOverridden; import static io.trino.spi.testing.InterfaceTestUtils.assertProperForwardingMethodsAreCalled; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/mapping/TestIdentifierMappingRules.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/mapping/TestIdentifierMappingRules.java index 56b4ea1fec08..d312d181652c 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/mapping/TestIdentifierMappingRules.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/mapping/TestIdentifierMappingRules.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableList; import io.airlift.json.JsonCodec; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/mapping/TestMappingConfig.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/mapping/TestMappingConfig.java index d737012a5490..2b50b2d7dd06 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/mapping/TestMappingConfig.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/mapping/TestMappingConfig.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableMap; import io.airlift.units.Duration; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/metrics/TestMetrics.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/metrics/TestMetrics.java index 9237577d6e8f..43f8f7be4464 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/metrics/TestMetrics.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/metrics/TestMetrics.java @@ -20,7 +20,7 @@ import io.airlift.units.Duration; import io.trino.spi.metrics.Metric; import io.trino.spi.metrics.Metrics; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Map; @@ -28,6 +28,7 @@ import static io.trino.spi.metrics.Metrics.accumulator; import static java.util.concurrent.TimeUnit.NANOSECONDS; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; public class TestMetrics { @@ -103,12 +104,15 @@ public void testDurationJson() assertThat(result.getAirliftDuration()).isEqualTo(duration.getAirliftDuration()); } - @Test(expectedExceptions = ClassCastException.class) + @Test public void testFailIncompatibleTypes() { - Metrics m1 = new Metrics(ImmutableMap.of("a", new TDigestHistogram(new TDigest()))); - Metrics m2 = new Metrics(ImmutableMap.of("a", new LongCount(0))); - merge(m1, m2); + assertThatThrownBy(() -> { + Metrics m1 = new Metrics(ImmutableMap.of("a", new TDigestHistogram(new TDigest()))); + Metrics m2 = new Metrics(ImmutableMap.of("a", new LongCount(0))); + merge(m1, m2); + }) + .isInstanceOf(ClassCastException.class); } @Test diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/projection/TestApplyProjectionUtil.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/projection/TestApplyProjectionUtil.java index a5a924355210..5ae338c3c504 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/projection/TestApplyProjectionUtil.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/projection/TestApplyProjectionUtil.java @@ -19,7 +19,7 @@ import io.trino.spi.expression.FieldDereference; import io.trino.spi.expression.Variable; import io.trino.spi.type.RowType; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.plugin.base.projection.ApplyProjectionUtil.extractSupportedProjectedColumns; import static io.trino.plugin.base.projection.ApplyProjectionUtil.isPushdownSupported; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/BaseFileBasedConnectorAccessControlTest.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/BaseFileBasedConnectorAccessControlTest.java index abf4b0b8fa42..75d92892b4a9 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/BaseFileBasedConnectorAccessControlTest.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/BaseFileBasedConnectorAccessControlTest.java @@ -31,17 +31,14 @@ import io.trino.spi.security.Privilege; import io.trino.spi.security.TrinoPrincipal; import io.trino.spi.security.ViewExpression; +import org.junit.jupiter.api.Test; import org.testng.Assert.ThrowingRunnable; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; import java.io.File; -import java.util.EnumSet; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; -import java.util.stream.Stream; import static com.google.common.io.Files.copy; import static io.trino.spi.security.PrincipalType.ROLE; @@ -201,8 +198,16 @@ public void testSchemaRules() assertDenied(() -> accessControl.checkCanShowCreateSchema(CHARLIE, "test")); } - @Test(dataProvider = "privilegeGrantOption") - public void testGrantSchemaPrivilege(Privilege privilege, boolean grantOption) + @Test + public void testGrantSchemaPrivilege() + { + for (Privilege privilege : Privilege.values()) { + testGrantSchemaPrivilege(privilege, false); + testGrantSchemaPrivilege(privilege, true); + } + } + + private void testGrantSchemaPrivilege(Privilege privilege, boolean grantOption) { ConnectorAccessControl accessControl = createAccessControl("schema.json"); TrinoPrincipal grantee = new TrinoPrincipal(USER, "alice"); @@ -245,8 +250,16 @@ public void testDenySchemaPrivilege() assertDenied(() -> accessControl.checkCanDenySchemaPrivilege(CHARLIE, UPDATE, "test", grantee)); } - @Test(dataProvider = "privilegeGrantOption") - public void testRevokeSchemaPrivilege(Privilege privilege, boolean grantOption) + @Test + public void testRevokeSchemaPrivilege() + { + for (Privilege privilege : Privilege.values()) { + testRevokeSchemaPrivilege(privilege, false); + testRevokeSchemaPrivilege(privilege, true); + } + } + + private void testRevokeSchemaPrivilege(Privilege privilege, boolean grantOption) { ConnectorAccessControl accessControl = createAccessControl("schema.json"); TrinoPrincipal grantee = new TrinoPrincipal(USER, "alice"); @@ -267,15 +280,6 @@ public void testRevokeSchemaPrivilege(Privilege privilege, boolean grantOption) assertDenied(() -> accessControl.checkCanRevokeSchemaPrivilege(CHARLIE, privilege, "test", grantee, grantOption)); } - @DataProvider(name = "privilegeGrantOption") - public Object[][] privilegeGrantOption() - { - return EnumSet.allOf(Privilege.class) - .stream() - .flatMap(privilege -> Stream.of(true, false).map(grantOption -> new Object[] {privilege, grantOption})) - .toArray(Object[][]::new); - } - @Test public void testTableRules() { diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/BaseFileBasedSystemAccessControlTest.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/BaseFileBasedSystemAccessControlTest.java index c996a01dc780..d9faa620cf24 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/BaseFileBasedSystemAccessControlTest.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/BaseFileBasedSystemAccessControlTest.java @@ -32,19 +32,16 @@ import io.trino.spi.security.TrinoPrincipal; import io.trino.spi.security.ViewExpression; import org.assertj.core.api.ThrowableAssert.ThrowingCallable; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import javax.security.auth.kerberos.KerberosPrincipal; import java.io.File; import java.time.Instant; -import java.util.EnumSet; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; -import java.util.stream.Stream; import static com.google.common.io.Files.copy; import static io.trino.spi.security.PrincipalType.ROLE; @@ -315,8 +312,16 @@ public void testSchemaRulesForCheckCanShowCreateSchema() assertAccessDenied(() -> accessControl.checkCanShowCreateSchema(CHARLIE, new CatalogSchemaName("some-catalog", "test")), SHOW_CREATE_SCHEMA_ACCESS_DENIED_MESSAGE); } - @Test(dataProvider = "privilegeGrantOption") - public void testGrantSchemaPrivilege(Privilege privilege, boolean grantOption) + @Test + public void testGrantSchemaPrivilege() + { + for (Privilege privilege : Privilege.values()) { + testGrantSchemaPrivilege(privilege, false); + testGrantSchemaPrivilege(privilege, true); + } + } + + private void testGrantSchemaPrivilege(Privilege privilege, boolean grantOption) { SystemAccessControl accessControl = newFileBasedSystemAccessControl("file-based-system-access-schema.json"); TrinoPrincipal grantee = new TrinoPrincipal(USER, "alice"); @@ -375,8 +380,16 @@ public void testDenySchemaPrivilege() format(DENY_SCHEMA_ACCESS_DENIED_MESSAGE, UPDATE, "some-catalog.test", "")); } - @Test(dataProvider = "privilegeGrantOption") - public void testRevokeSchemaPrivilege(Privilege privilege, boolean grantOption) + @Test + public void testRevokeSchemaPrivilege() + { + for (Privilege privilege : Privilege.values()) { + testRevokeSchemaPrivilege(privilege, false); + testRevokeSchemaPrivilege(privilege, true); + } + } + + private void testRevokeSchemaPrivilege(Privilege privilege, boolean grantOption) { SystemAccessControl accessControl = newFileBasedSystemAccessControl("file-based-system-access-schema.json"); TrinoPrincipal grantee = new TrinoPrincipal(USER, "alice"); @@ -405,15 +418,6 @@ public void testRevokeSchemaPrivilege(Privilege privilege, boolean grantOption) format(REVOKE_SCHEMA_ACCESS_DENIED_MESSAGE, privilege, "some-catalog.test", "")); } - @DataProvider(name = "privilegeGrantOption") - public Object[][] privilegeGrantOption() - { - return EnumSet.allOf(Privilege.class) - .stream() - .flatMap(privilege -> Stream.of(true, false).map(grantOption -> new Object[] {privilege, grantOption})) - .toArray(Object[][]::new); - } - @Test public void testTableRulesForCheckCanSelectFromColumns() { diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestAllowAllAccessControl.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestAllowAllAccessControl.java index 5ba6e98a7570..8f9955791e59 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestAllowAllAccessControl.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestAllowAllAccessControl.java @@ -14,7 +14,7 @@ package io.trino.plugin.base.security; import io.trino.spi.connector.ConnectorAccessControl; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.spi.testing.InterfaceTestUtils.assertAllMethodsOverridden; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestAllowAllSystemAccessControl.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestAllowAllSystemAccessControl.java index aafcd9b63e30..3bf6b9c65602 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestAllowAllSystemAccessControl.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestAllowAllSystemAccessControl.java @@ -14,7 +14,7 @@ package io.trino.plugin.base.security; import io.trino.spi.security.SystemAccessControl; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.spi.testing.InterfaceTestUtils.assertAllMethodsOverridden; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestFileBasedAccessControlConfig.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestFileBasedAccessControlConfig.java index 7e79e656c65d..425f587c29e7 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestFileBasedAccessControlConfig.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestFileBasedAccessControlConfig.java @@ -18,7 +18,7 @@ import io.airlift.units.MinDuration; import jakarta.validation.constraints.AssertTrue; import jakarta.validation.constraints.NotNull; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.nio.file.Files; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestForwardingConnectorAccessControl.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestForwardingConnectorAccessControl.java index 0a7276d3c068..8d621a67b1d7 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestForwardingConnectorAccessControl.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestForwardingConnectorAccessControl.java @@ -14,7 +14,7 @@ package io.trino.plugin.base.security; import io.trino.spi.connector.ConnectorAccessControl; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.spi.testing.InterfaceTestUtils.assertAllMethodsOverridden; import static io.trino.spi.testing.InterfaceTestUtils.assertProperForwardingMethodsAreCalled; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestForwardingSystemAccessControl.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestForwardingSystemAccessControl.java index 7b999e44c1bb..8887b681833c 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestForwardingSystemAccessControl.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestForwardingSystemAccessControl.java @@ -14,7 +14,7 @@ package io.trino.plugin.base.security; import io.trino.spi.security.SystemAccessControl; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.spi.testing.InterfaceTestUtils.assertAllMethodsOverridden; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestHttpFileBasedAccessControl.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestHttpFileBasedAccessControl.java index a0e15b1e560f..7caf675d38be 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestHttpFileBasedAccessControl.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestHttpFileBasedAccessControl.java @@ -16,27 +16,26 @@ import com.google.common.collect.ImmutableMap; import io.trino.plugin.base.util.TestingHttpServer; import io.trino.spi.connector.ConnectorAccessControl; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.File; import java.io.IOException; import java.util.Map; import static io.airlift.testing.Closeables.closeAll; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestHttpFileBasedAccessControl extends BaseFileBasedConnectorAccessControlTest { - private TestingHttpServer testingHttpServer; + private final TestingHttpServer testingHttpServer = new TestingHttpServer(); - @BeforeClass - public void setUp() - { - testingHttpServer = new TestingHttpServer(); - } - - @AfterClass(alwaysRun = true) + @AfterAll public void tearDown() throws IOException { diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestHttpFileBasedSystemAccessControl.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestHttpFileBasedSystemAccessControl.java index 461a48498324..c8c93b8e686a 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestHttpFileBasedSystemAccessControl.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/security/TestHttpFileBasedSystemAccessControl.java @@ -16,27 +16,26 @@ import com.google.common.collect.ImmutableMap; import io.trino.plugin.base.util.TestingHttpServer; import io.trino.spi.security.SystemAccessControl; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.File; import java.io.IOException; import java.util.Map; import static io.airlift.testing.Closeables.closeAll; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestHttpFileBasedSystemAccessControl extends BaseFileBasedSystemAccessControlTest { - private TestingHttpServer testingHttpServer; + private final TestingHttpServer testingHttpServer = new TestingHttpServer(); - @BeforeClass - public void setUp() - { - testingHttpServer = new TestingHttpServer(); - } - - @AfterClass(alwaysRun = true) + @AfterAll public void tearDown() throws IOException { diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestClosables.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestClosables.java index ec6d20fe3096..2ba41e59907e 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestClosables.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestClosables.java @@ -13,7 +13,7 @@ */ package io.trino.plugin.base.util; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Optional; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestJsonUtils.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestJsonUtils.java index 8aded8864c92..48b38f2ca7b9 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestJsonUtils.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestJsonUtils.java @@ -16,7 +16,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.core.StreamReadConstraints; import com.fasterxml.jackson.databind.JsonNode; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.io.UncheckedIOException; diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestLoggingInvocationHandler.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestLoggingInvocationHandler.java index 52cc3e5ddb6a..facad3476139 100644 --- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestLoggingInvocationHandler.java +++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestLoggingInvocationHandler.java @@ -13,7 +13,7 @@ */ package io.trino.plugin.base.util; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.lang.reflect.InvocationHandler; import java.util.ArrayList; diff --git a/lib/trino-record-decoder/pom.xml b/lib/trino-record-decoder/pom.xml index 6f11ff54873c..03de63dee9a6 100644 --- a/lib/trino-record-decoder/pom.xml +++ b/lib/trino-record-decoder/pom.xml @@ -117,6 +117,12 @@ test + + io.airlift + junit-extensions + test + + io.airlift testing @@ -148,6 +154,18 @@ test + + org.junit.jupiter + junit-jupiter-api + test + + + + org.junit.jupiter + junit-jupiter-engine + test + + org.testng testng @@ -177,6 +195,24 @@ + + + org.apache.maven.plugins + maven-surefire-plugin + + + + org.apache.maven.surefire + surefire-junit-platform + ${dep.plugin.surefire.version} + + + org.apache.maven.surefire + surefire-testng + ${dep.plugin.surefire.version} + + + diff --git a/lib/trino-record-decoder/src/test/java/io/trino/decoder/avro/TestAvroDecoder.java b/lib/trino-record-decoder/src/test/java/io/trino/decoder/avro/TestAvroDecoder.java index 0a68febae1b7..1593330c4245 100644 --- a/lib/trino-record-decoder/src/test/java/io/trino/decoder/avro/TestAvroDecoder.java +++ b/lib/trino-record-decoder/src/test/java/io/trino/decoder/avro/TestAvroDecoder.java @@ -47,7 +47,7 @@ import org.apache.avro.generic.GenericRecord; import org.apache.avro.generic.GenericRecordBuilder; import org.assertj.core.api.ThrowableAssert; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.ByteArrayOutputStream; import java.io.IOException; diff --git a/lib/trino-record-decoder/src/test/java/io/trino/decoder/csv/TestCsvDecoder.java b/lib/trino-record-decoder/src/test/java/io/trino/decoder/csv/TestCsvDecoder.java index 2d65ebc72318..0d01d5638d8b 100644 --- a/lib/trino-record-decoder/src/test/java/io/trino/decoder/csv/TestCsvDecoder.java +++ b/lib/trino-record-decoder/src/test/java/io/trino/decoder/csv/TestCsvDecoder.java @@ -31,7 +31,7 @@ import io.trino.spi.type.Type; import io.trino.spi.type.VarbinaryType; import org.assertj.core.api.ThrowableAssert; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.nio.charset.StandardCharsets; import java.util.Map; diff --git a/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestCustomDateTimeJsonFieldDecoder.java b/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestCustomDateTimeJsonFieldDecoder.java index 29c603c8f1c9..a2c281fb8758 100644 --- a/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestCustomDateTimeJsonFieldDecoder.java +++ b/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestCustomDateTimeJsonFieldDecoder.java @@ -18,7 +18,7 @@ import io.trino.decoder.DecoderTestColumnHandle; import io.trino.decoder.RowDecoderSpec; import io.trino.spi.TrinoException; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.decoder.util.DecoderTestUtil.TESTING_SESSION; import static io.trino.spi.type.DateTimeEncoding.packDateTimeWithZone; diff --git a/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestDefaultJsonFieldDecoder.java b/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestDefaultJsonFieldDecoder.java index 8326c3d44e9d..82d97e5f8baa 100644 --- a/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestDefaultJsonFieldDecoder.java +++ b/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestDefaultJsonFieldDecoder.java @@ -14,7 +14,7 @@ package io.trino.decoder.json; import io.trino.spi.type.Type; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.math.BigInteger; diff --git a/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestISO8601JsonFieldDecoder.java b/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestISO8601JsonFieldDecoder.java index cd1a4f5ad067..35dfd1511a7e 100644 --- a/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestISO8601JsonFieldDecoder.java +++ b/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestISO8601JsonFieldDecoder.java @@ -14,7 +14,7 @@ package io.trino.decoder.json; import io.trino.spi.type.Type; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.spi.type.DateTimeEncoding.packDateTimeWithZone; import static io.trino.spi.type.DateTimeEncoding.packTimeWithTimeZone; diff --git a/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestJsonDecoder.java b/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestJsonDecoder.java index 8bf3ef1fd7f2..f1466a43229b 100644 --- a/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestJsonDecoder.java +++ b/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestJsonDecoder.java @@ -24,7 +24,7 @@ import io.trino.spi.TrinoException; import io.trino.spi.type.Type; import org.assertj.core.api.ThrowableAssert.ThrowingCallable; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.nio.charset.StandardCharsets; import java.util.Map; diff --git a/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestMillisecondsSinceEpochJsonFieldDecoder.java b/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestMillisecondsSinceEpochJsonFieldDecoder.java index b36acf2e3038..7664d7ff33d7 100644 --- a/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestMillisecondsSinceEpochJsonFieldDecoder.java +++ b/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestMillisecondsSinceEpochJsonFieldDecoder.java @@ -14,7 +14,7 @@ package io.trino.decoder.json; import io.trino.spi.type.Type; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.concurrent.TimeUnit; diff --git a/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestRFC2822JsonFieldDecoder.java b/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestRFC2822JsonFieldDecoder.java index 698d92061275..bdc638712db9 100644 --- a/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestRFC2822JsonFieldDecoder.java +++ b/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestRFC2822JsonFieldDecoder.java @@ -14,7 +14,7 @@ package io.trino.decoder.json; import io.trino.spi.type.Type; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.spi.type.DateTimeEncoding.packDateTimeWithZone; import static io.trino.spi.type.TimeZoneKey.UTC_KEY; diff --git a/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestSecondsSinceEpochJsonFieldDecoder.java b/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestSecondsSinceEpochJsonFieldDecoder.java index 0ea0e43c492f..25363804d64f 100644 --- a/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestSecondsSinceEpochJsonFieldDecoder.java +++ b/lib/trino-record-decoder/src/test/java/io/trino/decoder/json/TestSecondsSinceEpochJsonFieldDecoder.java @@ -14,7 +14,7 @@ package io.trino.decoder.json; import io.trino.spi.type.Type; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.concurrent.TimeUnit; diff --git a/lib/trino-record-decoder/src/test/java/io/trino/decoder/protobuf/ProtobufDataProviders.java b/lib/trino-record-decoder/src/test/java/io/trino/decoder/protobuf/ProtobufDataProviders.java deleted file mode 100644 index d9383833d32d..000000000000 --- a/lib/trino-record-decoder/src/test/java/io/trino/decoder/protobuf/ProtobufDataProviders.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.trino.decoder.protobuf; - -import org.testng.annotations.DataProvider; - -import java.time.LocalDateTime; - -import static io.trino.testing.DateTimeTestingUtils.sqlTimestampOf; -import static java.lang.Math.PI; -import static java.nio.charset.StandardCharsets.UTF_8; -import static java.util.stream.Collectors.joining; -import static java.util.stream.IntStream.range; - -public class ProtobufDataProviders -{ - @DataProvider - public Object[][] allTypesDataProvider() - { - return new Object[][] { - { - "Trino", - 1, - 493857959588286460L, - PI, - 3.14f, - true, - "ONE", - sqlTimestampOf(3, LocalDateTime.parse("2020-12-12T15:35:45.923")), - "X'65683F'".getBytes(UTF_8) - }, - { - range(0, 5000) - .mapToObj(Integer::toString) - .collect(joining(", ")), - Integer.MAX_VALUE, - Long.MIN_VALUE, - Double.MAX_VALUE, - Float.MIN_VALUE, - false, - "ZERO", - sqlTimestampOf(3, LocalDateTime.parse("1856-01-12T05:25:14.456")), - new byte[0] - }, - { - range(5000, 10000) - .mapToObj(Integer::toString) - .collect(joining(", ")), - Integer.MIN_VALUE, - Long.MAX_VALUE, - Double.NaN, - Float.NEGATIVE_INFINITY, - false, - "ZERO", - sqlTimestampOf(3, LocalDateTime.parse("0001-01-01T00:00:00.923")), - "X'65683F'".getBytes(UTF_8) - } - }; - } -} diff --git a/lib/trino-record-decoder/src/test/java/io/trino/decoder/protobuf/TestProtobufDecoder.java b/lib/trino-record-decoder/src/test/java/io/trino/decoder/protobuf/TestProtobufDecoder.java index a5c78d760850..3f3936117c72 100644 --- a/lib/trino-record-decoder/src/test/java/io/trino/decoder/protobuf/TestProtobufDecoder.java +++ b/lib/trino-record-decoder/src/test/java/io/trino/decoder/protobuf/TestProtobufDecoder.java @@ -42,7 +42,7 @@ import io.trino.spi.type.SqlVarbinary; import io.trino.testing.TestingSession; import io.trino.type.JsonType; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.File; import java.net.URI; @@ -74,6 +74,8 @@ import static java.lang.Math.floorDiv; import static java.lang.Math.floorMod; import static java.nio.charset.StandardCharsets.UTF_8; +import static java.util.stream.Collectors.joining; +import static java.util.stream.IntStream.range; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNull; @@ -83,8 +85,49 @@ public class TestProtobufDecoder { private static final ProtobufRowDecoderFactory DECODER_FACTORY = new ProtobufRowDecoderFactory(new FixedSchemaDynamicMessageProvider.Factory(), TESTING_TYPE_MANAGER, new FileDescriptorProvider()); - @Test(dataProvider = "allTypesDataProvider", dataProviderClass = ProtobufDataProviders.class) - public void testAllDataTypes(String stringData, Integer integerData, Long longData, Double doubleData, Float floatData, Boolean booleanData, String enumData, SqlTimestamp sqlTimestamp, byte[] bytesData) + @Test + public void testAllDataTypes() + throws Exception + { + testAllDataTypes( + "Trino", + 1, + 493857959588286460L, + PI, + 3.14f, + true, + "ONE", + sqlTimestampOf(3, LocalDateTime.parse("2020-12-12T15:35:45.923")), + "X'65683F'".getBytes(UTF_8)); + + testAllDataTypes( + range(0, 5000) + .mapToObj(Integer::toString) + .collect(joining(", ")), + Integer.MAX_VALUE, + Long.MIN_VALUE, + Double.MAX_VALUE, + Float.MIN_VALUE, + false, + "ZERO", + sqlTimestampOf(3, LocalDateTime.parse("1856-01-12T05:25:14.456")), + new byte[0]); + + testAllDataTypes( + range(5000, 10000) + .mapToObj(Integer::toString) + .collect(joining(", ")), + Integer.MIN_VALUE, + Long.MAX_VALUE, + Double.NaN, + Float.NEGATIVE_INFINITY, + false, + "ZERO", + sqlTimestampOf(3, LocalDateTime.parse("0001-01-01T00:00:00.923")), + "X'65683F'".getBytes(UTF_8)); + } + + private void testAllDataTypes(String stringData, Integer integerData, Long longData, Double doubleData, Float floatData, Boolean booleanData, String enumData, SqlTimestamp sqlTimestamp, byte[] bytesData) throws Exception { DecoderTestColumnHandle stringColumn = new DecoderTestColumnHandle(0, "stringColumn", createVarcharType(30000), "stringColumn", null, null, false, false, false); @@ -372,8 +415,49 @@ public void testAnyTypeWithFileDescriptor() assertEquals(actual.get("bytesColumn").binaryValue(), bytesData); } - @Test(dataProvider = "allTypesDataProvider", dataProviderClass = ProtobufDataProviders.class) - public void testStructuralDataTypes(String stringData, Integer integerData, Long longData, Double doubleData, Float floatData, Boolean booleanData, String enumData, SqlTimestamp sqlTimestamp, byte[] bytesData) + @Test + public void testStructuralDataTypes() + throws Exception + { + testStructuralDataTypes( + "Trino", + 1, + 493857959588286460L, + PI, + 3.14f, + true, + "ONE", + sqlTimestampOf(3, LocalDateTime.parse("2020-12-12T15:35:45.923")), + "X'65683F'".getBytes(UTF_8)); + + testStructuralDataTypes( + range(0, 5000) + .mapToObj(Integer::toString) + .collect(joining(", ")), + Integer.MAX_VALUE, + Long.MIN_VALUE, + Double.MAX_VALUE, + Float.MIN_VALUE, + false, + "ZERO", + sqlTimestampOf(3, LocalDateTime.parse("1856-01-12T05:25:14.456")), + new byte[0]); + + testStructuralDataTypes( + range(5000, 10000) + .mapToObj(Integer::toString) + .collect(joining(", ")), + Integer.MIN_VALUE, + Long.MAX_VALUE, + Double.NaN, + Float.NEGATIVE_INFINITY, + false, + "ZERO", + sqlTimestampOf(3, LocalDateTime.parse("0001-01-01T00:00:00.923")), + "X'65683F'".getBytes(UTF_8)); + } + + private void testStructuralDataTypes(String stringData, Integer integerData, Long longData, Double doubleData, Float floatData, Boolean booleanData, String enumData, SqlTimestamp sqlTimestamp, byte[] bytesData) throws Exception { DecoderTestColumnHandle listColumn = new DecoderTestColumnHandle(0, "list", new ArrayType(createVarcharType(100)), "list", null, null, false, false, false); @@ -480,8 +564,49 @@ public void testMissingFieldInRowType() .hasMessageMatching("Unknown Field unknown_mapping"); } - @Test(dataProvider = "allTypesDataProvider", dataProviderClass = ProtobufDataProviders.class) - public void testRowFlattening(String stringData, Integer integerData, Long longData, Double doubleData, Float floatData, Boolean booleanData, String enumData, SqlTimestamp sqlTimestamp, byte[] bytesData) + @Test + public void testRowFlattening() + throws Exception + { + testRowFlattening( + "Trino", + 1, + 493857959588286460L, + PI, + 3.14f, + true, + "ONE", + sqlTimestampOf(3, LocalDateTime.parse("2020-12-12T15:35:45.923")), + "X'65683F'".getBytes(UTF_8)); + + testRowFlattening( + range(0, 5000) + .mapToObj(Integer::toString) + .collect(joining(", ")), + Integer.MAX_VALUE, + Long.MIN_VALUE, + Double.MAX_VALUE, + Float.MIN_VALUE, + false, + "ZERO", + sqlTimestampOf(3, LocalDateTime.parse("1856-01-12T05:25:14.456")), + new byte[0]); + + testRowFlattening( + range(5000, 10000) + .mapToObj(Integer::toString) + .collect(joining(", ")), + Integer.MIN_VALUE, + Long.MAX_VALUE, + Double.NaN, + Float.NEGATIVE_INFINITY, + false, + "ZERO", + sqlTimestampOf(3, LocalDateTime.parse("0001-01-01T00:00:00.923")), + "X'65683F'".getBytes(UTF_8)); + } + + private void testRowFlattening(String stringData, Integer integerData, Long longData, Double doubleData, Float floatData, Boolean booleanData, String enumData, SqlTimestamp sqlTimestamp, byte[] bytesData) throws Exception { DecoderTestColumnHandle stringColumn = new DecoderTestColumnHandle(0, "stringColumn", createVarcharType(30000), "row/string_column", null, null, false, false, false); diff --git a/lib/trino-record-decoder/src/test/java/io/trino/decoder/raw/TestRawDecoder.java b/lib/trino-record-decoder/src/test/java/io/trino/decoder/raw/TestRawDecoder.java index d535a205471b..93378de5edf3 100644 --- a/lib/trino-record-decoder/src/test/java/io/trino/decoder/raw/TestRawDecoder.java +++ b/lib/trino-record-decoder/src/test/java/io/trino/decoder/raw/TestRawDecoder.java @@ -32,7 +32,7 @@ import io.trino.spi.type.VarbinaryType; import io.trino.spi.type.VarcharType; import org.assertj.core.api.ThrowableAssert; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; diff --git a/plugin/trino-base-jdbc/src/test/java/io/trino/plugin/jdbc/TestJdbcTableProperties.java b/plugin/trino-base-jdbc/src/test/java/io/trino/plugin/jdbc/TestJdbcTableProperties.java index 2c354d50aa46..8c69032467c7 100644 --- a/plugin/trino-base-jdbc/src/test/java/io/trino/plugin/jdbc/TestJdbcTableProperties.java +++ b/plugin/trino-base-jdbc/src/test/java/io/trino/plugin/jdbc/TestJdbcTableProperties.java @@ -20,6 +20,7 @@ import io.trino.testing.QueryRunner; import io.trino.tpch.TpchTable; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; @@ -27,7 +28,9 @@ import static io.trino.plugin.jdbc.H2QueryRunner.createH2QueryRunner; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; +@Execution(SAME_THREAD) public class TestJdbcTableProperties extends AbstractTestQueryFramework { diff --git a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergSystemTables.java b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergSystemTables.java index 32697ad6090e..c64668c8b50a 100644 --- a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergSystemTables.java +++ b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseIcebergSystemTables.java @@ -18,9 +18,10 @@ import io.trino.testing.DistributedQueryRunner; import io.trino.testing.MaterializedResult; import io.trino.testing.MaterializedRow; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; import java.time.LocalDate; import java.util.Map; @@ -31,8 +32,10 @@ import static io.trino.testing.MaterializedResult.DEFAULT_PRECISION; import static java.util.Objects.requireNonNull; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; import static org.testng.Assert.assertEquals; +@TestInstance(PER_CLASS) public abstract class BaseIcebergSystemTables extends AbstractTestQueryFramework { @@ -52,7 +55,7 @@ protected DistributedQueryRunner createQueryRunner() .build(); } - @BeforeClass + @BeforeAll public void setUp() { assertUpdate("CREATE SCHEMA test_schema"); @@ -90,7 +93,7 @@ public void setUp() assertQuery("SELECT count(*) FROM test_schema.test_table_with_dml", "VALUES 7"); } - @AfterClass(alwaysRun = true) + @AfterAll public void tearDown() { assertUpdate("DROP TABLE IF EXISTS test_schema.test_table"); diff --git a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseSharedMetastoreTest.java b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseSharedMetastoreTest.java index 2f497f4180d9..8a867611dd08 100644 --- a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseSharedMetastoreTest.java +++ b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/BaseSharedMetastoreTest.java @@ -14,7 +14,7 @@ package io.trino.plugin.iceberg; import io.trino.testing.AbstractTestQueryFramework; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.time.Instant; import java.time.ZonedDateTime; diff --git a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/TestSharedHiveMetastore.java b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/TestSharedHiveMetastore.java index c3a3240fd2d1..130edc81cd82 100644 --- a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/TestSharedHiveMetastore.java +++ b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/TestSharedHiveMetastore.java @@ -21,7 +21,9 @@ import io.trino.testing.DistributedQueryRunner; import io.trino.testing.QueryRunner; import io.trino.tpch.TpchTable; -import org.testng.annotations.AfterClass; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.nio.file.Path; @@ -31,7 +33,11 @@ import static io.trino.testing.QueryAssertions.copyTpchTables; import static io.trino.testing.TestingSession.testSessionBuilder; import static java.lang.String.format; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestSharedHiveMetastore extends BaseSharedMetastoreTest { @@ -88,7 +94,7 @@ protected QueryRunner createQueryRunner() return queryRunner; } - @AfterClass(alwaysRun = true) + @AfterAll public void cleanup() { assertQuerySucceeds("DROP TABLE IF EXISTS hive." + schema + ".region"); diff --git a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/catalog/glue/TestSharedGlueMetastore.java b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/catalog/glue/TestSharedGlueMetastore.java index 014800e00482..8b18b345f2e3 100644 --- a/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/catalog/glue/TestSharedGlueMetastore.java +++ b/plugin/trino-iceberg/src/test/java/io/trino/plugin/iceberg/catalog/glue/TestSharedGlueMetastore.java @@ -25,7 +25,9 @@ import io.trino.testing.DistributedQueryRunner; import io.trino.testing.QueryRunner; import io.trino.tpch.TpchTable; -import org.testng.annotations.AfterClass; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.nio.file.Path; @@ -35,6 +37,8 @@ import static io.trino.testing.QueryAssertions.copyTpchTables; import static io.trino.testing.TestingSession.testSessionBuilder; import static java.lang.String.format; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; /** * Tests metadata operations on a schema which has a mix of Hive and Iceberg tables. @@ -42,6 +46,8 @@ * Requires AWS credentials, which can be provided any way supported by the DefaultProviderChain * See https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default */ +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestSharedGlueMetastore extends BaseSharedMetastoreTest { @@ -102,7 +108,7 @@ protected QueryRunner createQueryRunner() return queryRunner; } - @AfterClass(alwaysRun = true) + @AfterAll public void cleanup() { try { diff --git a/plugin/trino-kafka/src/test/java/io/trino/plugin/kafka/protobuf/TestProtobufEncoder.java b/plugin/trino-kafka/src/test/java/io/trino/plugin/kafka/protobuf/TestProtobufEncoder.java index 715ae7213ff5..8e4c38d5d4c6 100644 --- a/plugin/trino-kafka/src/test/java/io/trino/plugin/kafka/protobuf/TestProtobufEncoder.java +++ b/plugin/trino-kafka/src/test/java/io/trino/plugin/kafka/protobuf/TestProtobufEncoder.java @@ -18,7 +18,6 @@ import com.google.protobuf.DynamicMessage; import com.google.protobuf.Timestamp; import io.airlift.slice.Slices; -import io.trino.decoder.protobuf.ProtobufDataProviders; import io.trino.plugin.kafka.KafkaColumnHandle; import io.trino.plugin.kafka.encoder.EncoderColumnHandle; import io.trino.plugin.kafka.encoder.RowEncoder; @@ -36,8 +35,9 @@ import io.trino.spi.type.SqlTimestamp; import io.trino.spi.type.Type; import io.trino.testing.TestingConnectorSession; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; +import java.time.LocalDateTime; import java.util.List; import java.util.Optional; @@ -63,18 +63,64 @@ import static io.trino.spi.type.VarbinaryType.VARBINARY; import static io.trino.spi.type.VarcharType.VARCHAR; import static io.trino.spi.type.VarcharType.createVarcharType; +import static io.trino.testing.DateTimeTestingUtils.sqlTimestampOf; import static io.trino.type.InternalTypeManager.TESTING_TYPE_MANAGER; import static java.lang.Float.floatToIntBits; +import static java.lang.Math.PI; import static java.lang.Math.floorDiv; import static java.lang.Math.floorMod; +import static java.nio.charset.StandardCharsets.UTF_8; +import static java.util.stream.Collectors.joining; +import static java.util.stream.IntStream.range; import static org.testng.Assert.assertEquals; public class TestProtobufEncoder { private static final ProtobufRowEncoderFactory ENCODER_FACTORY = new ProtobufRowEncoderFactory(); - @Test(dataProvider = "allTypesDataProvider", dataProviderClass = ProtobufDataProviders.class) - public void testAllDataTypes(String stringData, Integer integerData, Long longData, Double doubleData, Float floatData, Boolean booleanData, String enumData, SqlTimestamp sqlTimestamp, byte[] bytesData) + @Test + public void testAllDataTypes() + throws Exception + { + testAllDataTypes( + "Trino", + 1, + 493857959588286460L, + PI, + 3.14f, + true, + "ONE", + sqlTimestampOf(3, LocalDateTime.parse("2020-12-12T15:35:45.923")), + "X'65683F'".getBytes(UTF_8)); + + testAllDataTypes( + range(0, 5000) + .mapToObj(Integer::toString) + .collect(joining(", ")), + Integer.MAX_VALUE, + Long.MIN_VALUE, + Double.MAX_VALUE, + Float.MIN_VALUE, + false, + "ZERO", + sqlTimestampOf(3, LocalDateTime.parse("1856-01-12T05:25:14.456")), + new byte[0]); + + testAllDataTypes( + range(5000, 10000) + .mapToObj(Integer::toString) + .collect(joining(", ")), + Integer.MIN_VALUE, + Long.MAX_VALUE, + Double.NaN, + Float.NEGATIVE_INFINITY, + false, + "ZERO", + sqlTimestampOf(3, LocalDateTime.parse("0001-01-01T00:00:00.923")), + "X'65683F'".getBytes(UTF_8)); + } + + private void testAllDataTypes(String stringData, Integer integerData, Long longData, Double doubleData, Float floatData, Boolean booleanData, String enumData, SqlTimestamp sqlTimestamp, byte[] bytesData) throws Exception { Descriptor descriptor = getDescriptor("all_datatypes.proto"); @@ -115,8 +161,49 @@ public void testAllDataTypes(String stringData, Integer integerData, Long longDa assertEquals(messageBuilder.build().toByteArray(), rowEncoder.toByteArray()); } - @Test(dataProvider = "allTypesDataProvider", dataProviderClass = ProtobufDataProviders.class) - public void testStructuralDataTypes(String stringData, Integer integerData, Long longData, Double doubleData, Float floatData, Boolean booleanData, String enumData, SqlTimestamp sqlTimestamp, byte[] bytesData) + @Test + public void testStructuralDataTypes() + throws Exception + { + testStructuralDataTypes( + "Trino", + 1, + 493857959588286460L, + PI, + 3.14f, + true, + "ONE", + sqlTimestampOf(3, LocalDateTime.parse("2020-12-12T15:35:45.923")), + "X'65683F'".getBytes(UTF_8)); + + testStructuralDataTypes( + range(0, 5000) + .mapToObj(Integer::toString) + .collect(joining(", ")), + Integer.MAX_VALUE, + Long.MIN_VALUE, + Double.MAX_VALUE, + Float.MIN_VALUE, + false, + "ZERO", + sqlTimestampOf(3, LocalDateTime.parse("1856-01-12T05:25:14.456")), + new byte[0]); + + testStructuralDataTypes( + range(5000, 10000) + .mapToObj(Integer::toString) + .collect(joining(", ")), + Integer.MIN_VALUE, + Long.MAX_VALUE, + Double.NaN, + Float.NEGATIVE_INFINITY, + false, + "ZERO", + sqlTimestampOf(3, LocalDateTime.parse("0001-01-01T00:00:00.923")), + "X'65683F'".getBytes(UTF_8)); + } + + private void testStructuralDataTypes(String stringData, Integer integerData, Long longData, Double doubleData, Float floatData, Boolean booleanData, String enumData, SqlTimestamp sqlTimestamp, byte[] bytesData) throws Exception { Descriptor descriptor = getDescriptor("structural_datatypes.proto"); @@ -194,8 +281,49 @@ public void testStructuralDataTypes(String stringData, Integer integerData, Long assertEquals(messageBuilder.build().toByteArray(), rowEncoder.toByteArray()); } - @Test(dataProvider = "allTypesDataProvider", dataProviderClass = ProtobufDataProviders.class) - public void testNestedStructuralDataTypes(String stringData, Integer integerData, Long longData, Double doubleData, Float floatData, Boolean booleanData, String enumData, SqlTimestamp sqlTimestamp, byte[] bytesData) + @Test + public void testNestedStructuralDataTypes() + throws Exception + { + testNestedStructuralDataTypes( + "Trino", + 1, + 493857959588286460L, + PI, + 3.14f, + true, + "ONE", + sqlTimestampOf(3, LocalDateTime.parse("2020-12-12T15:35:45.923")), + "X'65683F'".getBytes(UTF_8)); + + testNestedStructuralDataTypes( + range(0, 5000) + .mapToObj(Integer::toString) + .collect(joining(", ")), + Integer.MAX_VALUE, + Long.MIN_VALUE, + Double.MAX_VALUE, + Float.MIN_VALUE, + false, + "ZERO", + sqlTimestampOf(3, LocalDateTime.parse("1856-01-12T05:25:14.456")), + new byte[0]); + + testNestedStructuralDataTypes( + range(5000, 10000) + .mapToObj(Integer::toString) + .collect(joining(", ")), + Integer.MIN_VALUE, + Long.MAX_VALUE, + Double.NaN, + Float.NEGATIVE_INFINITY, + false, + "ZERO", + sqlTimestampOf(3, LocalDateTime.parse("0001-01-01T00:00:00.923")), + "X'65683F'".getBytes(UTF_8)); + } + + private void testNestedStructuralDataTypes(String stringData, Integer integerData, Long longData, Double doubleData, Float floatData, Boolean booleanData, String enumData, SqlTimestamp sqlTimestamp, byte[] bytesData) throws Exception { Descriptor descriptor = getDescriptor("structural_datatypes.proto"); @@ -294,8 +422,49 @@ public void testNestedStructuralDataTypes(String stringData, Integer integerData assertEquals(messageBuilder.build().toByteArray(), rowEncoder.toByteArray()); } - @Test(dataProvider = "allTypesDataProvider", dataProviderClass = ProtobufDataProviders.class) - public void testRowFlattening(String stringData, Integer integerData, Long longData, Double doubleData, Float floatData, Boolean booleanData, String enumData, SqlTimestamp sqlTimestamp, byte[] bytesData) + @Test + public void testRowFlattening() + throws Exception + { + testRowFlattening( + "Trino", + 1, + 493857959588286460L, + PI, + 3.14f, + true, + "ONE", + sqlTimestampOf(3, LocalDateTime.parse("2020-12-12T15:35:45.923")), + "X'65683F'".getBytes(UTF_8)); + + testRowFlattening( + range(0, 5000) + .mapToObj(Integer::toString) + .collect(joining(", ")), + Integer.MAX_VALUE, + Long.MIN_VALUE, + Double.MAX_VALUE, + Float.MIN_VALUE, + false, + "ZERO", + sqlTimestampOf(3, LocalDateTime.parse("1856-01-12T05:25:14.456")), + new byte[0]); + + testRowFlattening( + range(5000, 10000) + .mapToObj(Integer::toString) + .collect(joining(", ")), + Integer.MIN_VALUE, + Long.MAX_VALUE, + Double.NaN, + Float.NEGATIVE_INFINITY, + false, + "ZERO", + sqlTimestampOf(3, LocalDateTime.parse("0001-01-01T00:00:00.923")), + "X'65683F'".getBytes(UTF_8)); + } + + private void testRowFlattening(String stringData, Integer integerData, Long longData, Double doubleData, Float floatData, Boolean booleanData, String enumData, SqlTimestamp sqlTimestamp, byte[] bytesData) throws Exception { Descriptor descriptor = getDescriptor("structural_datatypes.proto"); diff --git a/plugin/trino-mariadb/src/test/java/io/trino/plugin/mariadb/TestMariaDbClient.java b/plugin/trino-mariadb/src/test/java/io/trino/plugin/mariadb/TestMariaDbClient.java index b184d7a8008b..d56909a046f1 100644 --- a/plugin/trino-mariadb/src/test/java/io/trino/plugin/mariadb/TestMariaDbClient.java +++ b/plugin/trino-mariadb/src/test/java/io/trino/plugin/mariadb/TestMariaDbClient.java @@ -27,7 +27,7 @@ import io.trino.spi.connector.ColumnHandle; import io.trino.spi.expression.ConnectorExpression; import io.trino.spi.expression.Variable; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.sql.Types; import java.util.List; diff --git a/plugin/trino-mariadb/src/test/java/io/trino/plugin/mariadb/TestMariaDbJdbcConfig.java b/plugin/trino-mariadb/src/test/java/io/trino/plugin/mariadb/TestMariaDbJdbcConfig.java index f5c4556e0a6d..ae18de64de00 100644 --- a/plugin/trino-mariadb/src/test/java/io/trino/plugin/mariadb/TestMariaDbJdbcConfig.java +++ b/plugin/trino-mariadb/src/test/java/io/trino/plugin/mariadb/TestMariaDbJdbcConfig.java @@ -13,7 +13,7 @@ */ package io.trino.plugin.mariadb; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; diff --git a/plugin/trino-mariadb/src/test/java/io/trino/plugin/mariadb/TestMariaDbPlugin.java b/plugin/trino-mariadb/src/test/java/io/trino/plugin/mariadb/TestMariaDbPlugin.java index 846f8eef1752..ed8b48987e0d 100644 --- a/plugin/trino-mariadb/src/test/java/io/trino/plugin/mariadb/TestMariaDbPlugin.java +++ b/plugin/trino-mariadb/src/test/java/io/trino/plugin/mariadb/TestMariaDbPlugin.java @@ -17,7 +17,7 @@ import io.trino.spi.Plugin; import io.trino.spi.connector.ConnectorFactory; import io.trino.testing.TestingConnectorContext; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.google.common.collect.Iterables.getOnlyElement; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/plugin/trino-memory/pom.xml b/plugin/trino-memory/pom.xml index 26b071354ab0..c62255744c41 100644 --- a/plugin/trino-memory/pom.xml +++ b/plugin/trino-memory/pom.xml @@ -112,6 +112,12 @@ runtime + + io.airlift + junit-extensions + test + + io.airlift testing @@ -173,6 +179,12 @@ test + + org.junit.jupiter + junit-jupiter-api + test + + org.junit.jupiter junit-jupiter-engine diff --git a/plugin/trino-memory/src/test/java/io/trino/plugin/memory/TestMemoryMetadata.java b/plugin/trino-memory/src/test/java/io/trino/plugin/memory/TestMemoryMetadata.java index aaf9d15ccd1b..15a65ed02dc6 100644 --- a/plugin/trino-memory/src/test/java/io/trino/plugin/memory/TestMemoryMetadata.java +++ b/plugin/trino-memory/src/test/java/io/trino/plugin/memory/TestMemoryMetadata.java @@ -26,7 +26,7 @@ import io.trino.spi.connector.SchemaTableName; import io.trino.spi.security.TrinoPrincipal; import io.trino.testing.TestingNodeManager; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.List; import java.util.Map; diff --git a/plugin/trino-memory/src/test/java/io/trino/plugin/memory/TestMemoryPagesStore.java b/plugin/trino-memory/src/test/java/io/trino/plugin/memory/TestMemoryPagesStore.java index 5f3baeb98605..f24852a6594a 100644 --- a/plugin/trino-memory/src/test/java/io/trino/plugin/memory/TestMemoryPagesStore.java +++ b/plugin/trino-memory/src/test/java/io/trino/plugin/memory/TestMemoryPagesStore.java @@ -23,8 +23,10 @@ import io.trino.spi.connector.ConnectorInsertTableHandle; import io.trino.spi.connector.ConnectorOutputTableHandle; import io.trino.spi.connector.ConnectorPageSink; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.util.OptionalDouble; import java.util.OptionalLong; @@ -33,11 +35,14 @@ import static io.trino.testing.TestingConnectorSession.SESSION; import static io.trino.testing.TestingPageSinkId.TESTING_PAGE_SINK_ID; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestMemoryPagesStore { private static final int POSITIONS_PER_PAGE = 0; @@ -45,7 +50,7 @@ public class TestMemoryPagesStore private MemoryPagesStore pagesStore; private MemoryPageSinkProvider pageSinkProvider; - @BeforeMethod + @BeforeEach public void setUp() { pagesStore = new MemoryPagesStore(new MemoryConfig().setMaxDataPerNode(DataSize.of(1, DataSize.Unit.MEGABYTE))); @@ -74,10 +79,13 @@ public void testInsertPageWithoutCreate() assertEquals(pagesStore.getPages(0L, 0, 1, new int[] {0}, POSITIONS_PER_PAGE, OptionalLong.empty(), OptionalDouble.empty()).size(), 1); } - @Test(expectedExceptions = TrinoException.class) + @Test public void testReadFromUnknownTable() { - pagesStore.getPages(0L, 0, 1, new int[] {0}, 0, OptionalLong.empty(), OptionalDouble.empty()); + assertThatThrownBy(() -> { + pagesStore.getPages(0L, 0, 1, new int[] {0}, 0, OptionalLong.empty(), OptionalDouble.empty()); + }) + .isInstanceOf(TrinoException.class); } @Test diff --git a/plugin/trino-memory/src/test/java/io/trino/plugin/memory/TestMemoryTableStatistics.java b/plugin/trino-memory/src/test/java/io/trino/plugin/memory/TestMemoryTableStatistics.java index d79b4e80d9f5..84c3cc64c337 100644 --- a/plugin/trino-memory/src/test/java/io/trino/plugin/memory/TestMemoryTableStatistics.java +++ b/plugin/trino-memory/src/test/java/io/trino/plugin/memory/TestMemoryTableStatistics.java @@ -19,7 +19,7 @@ import io.trino.sql.planner.OptimizerConfig; import io.trino.testing.AbstractTestQueryFramework; import io.trino.testing.QueryRunner; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.google.common.base.Verify.verify; import static io.trino.SystemSessionProperties.STATISTICS_PRECALCULATION_FOR_PUSHDOWN_ENABLED; diff --git a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoCaseInsensitiveMapping.java b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoCaseInsensitiveMapping.java index c711ac295beb..d12cda7b4e31 100644 --- a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoCaseInsensitiveMapping.java +++ b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoCaseInsensitiveMapping.java @@ -20,27 +20,37 @@ import io.trino.testing.AbstractTestQueryFramework; import io.trino.testing.QueryRunner; import org.bson.Document; -import org.testng.annotations.AfterClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import static io.trino.plugin.mongodb.MongoQueryRunner.createMongoClient; import static io.trino.plugin.mongodb.MongoQueryRunner.createMongoQueryRunner; import static io.trino.testing.TestingNames.randomNameSuffix; import static java.util.Locale.ENGLISH; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestMongoCaseInsensitiveMapping extends AbstractTestQueryFramework { - private MongoServer server; - private MongoClient client; + private final MongoServer server; + private final MongoClient client; + + public TestMongoCaseInsensitiveMapping() + { + server = new MongoServer(); + client = createMongoClient(server); + } @Override protected QueryRunner createQueryRunner() throws Exception { - server = new MongoServer(); - client = createMongoClient(server); return createMongoQueryRunner( server, ImmutableMap.of(), @@ -50,13 +60,11 @@ protected QueryRunner createQueryRunner() runner -> {}); } - @AfterClass(alwaysRun = true) + @AfterAll public final void destroy() { server.close(); - server = null; client.close(); - client = null; } @Test diff --git a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoClientConfig.java b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoClientConfig.java index 9576fd534ddb..13bd693dfaf6 100644 --- a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoClientConfig.java +++ b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoClientConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.mongodb; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoPlugin.java b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoPlugin.java index a50fa8023f36..08d13422617e 100644 --- a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoPlugin.java +++ b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoPlugin.java @@ -18,7 +18,7 @@ import io.trino.spi.connector.ConnectorFactory; import io.trino.spi.type.Type; import io.trino.testing.TestingConnectorContext; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.google.common.collect.Iterables.getOnlyElement; import static io.trino.plugin.mongodb.ObjectIdType.OBJECT_ID; diff --git a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoProjectionPushdownPlans.java b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoProjectionPushdownPlans.java index dc85d8249468..918e24eeb65a 100644 --- a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoProjectionPushdownPlans.java +++ b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoProjectionPushdownPlans.java @@ -29,8 +29,10 @@ import io.trino.sql.planner.assertions.BasePushdownPlanTest; import io.trino.sql.planner.assertions.PlanMatchPattern; import io.trino.testing.LocalQueryRunner; -import org.testng.annotations.AfterClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.util.List; import java.util.Map; @@ -52,14 +54,18 @@ import static io.trino.testing.TestingNames.randomNameSuffix; import static io.trino.testing.TestingSession.testSessionBuilder; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestMongoProjectionPushdownPlans extends BasePushdownPlanTest { private static final String CATALOG = "mongodb"; private static final String SCHEMA = "test"; - private Closer closer; + private final Closer closer = Closer.create(); @Override protected LocalQueryRunner createLocalQueryRunner() @@ -71,7 +77,6 @@ protected LocalQueryRunner createLocalQueryRunner() LocalQueryRunner queryRunner = LocalQueryRunner.create(session); - closer = Closer.create(); MongoServer server = closer.register(new MongoServer()); MongoClient client = closer.register(createMongoClient(server)); @@ -91,12 +96,11 @@ protected LocalQueryRunner createLocalQueryRunner() return queryRunner; } - @AfterClass(alwaysRun = true) + @AfterAll public final void destroy() throws Exception { closer.close(); - closer = null; } @Test diff --git a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoSession.java b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoSession.java index bfc497d769a7..c5fb6146481c 100644 --- a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoSession.java +++ b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoSession.java @@ -21,7 +21,7 @@ import io.trino.spi.predicate.ValueSet; import io.trino.spi.type.Type; import org.bson.Document; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.List; import java.util.Optional; diff --git a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoSplit.java b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoSplit.java index 543404686448..d5ecf9c2db81 100644 --- a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoSplit.java +++ b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoSplit.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableList; import io.airlift.json.JsonCodec; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static org.testng.Assert.assertEquals; diff --git a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoSslConfig.java b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoSslConfig.java index 314c93f4c77a..83fa57a9035d 100644 --- a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoSslConfig.java +++ b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoSslConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.mongodb; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.nio.file.Files; import java.nio.file.Path; diff --git a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoTableHandle.java b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoTableHandle.java index 0e124e227f23..e3777733f21c 100644 --- a/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoTableHandle.java +++ b/plugin/trino-mongodb/src/test/java/io/trino/plugin/mongodb/TestMongoTableHandle.java @@ -24,8 +24,7 @@ import io.trino.spi.type.RowType; import io.trino.spi.type.Type; import io.trino.type.TypeDeserializer; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Optional; import java.util.OptionalInt; @@ -38,10 +37,9 @@ public class TestMongoTableHandle { - private JsonCodec codec; + private final JsonCodec codec; - @BeforeClass - public void init() + public TestMongoTableHandle() { ObjectMapperProvider objectMapperProvider = new ObjectMapperProvider(); objectMapperProvider.setJsonDeserializers(ImmutableMap.of(Type.class, new TypeDeserializer(TESTING_TYPE_MANAGER))); diff --git a/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlClient.java b/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlClient.java index c080db369187..3c793f5cd1d1 100644 --- a/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlClient.java +++ b/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlClient.java @@ -27,7 +27,7 @@ import io.trino.spi.connector.ColumnHandle; import io.trino.spi.expression.ConnectorExpression; import io.trino.spi.expression.Variable; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.sql.Types; import java.util.List; diff --git a/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlConfig.java b/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlConfig.java index 446ba35ff7a0..fc85cf936059 100644 --- a/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlConfig.java +++ b/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlConfig.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableMap; import io.airlift.units.Duration; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; import java.util.concurrent.TimeUnit; diff --git a/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlJdbcConfig.java b/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlJdbcConfig.java index fa7ffb3bd3cc..99afceb7294a 100644 --- a/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlJdbcConfig.java +++ b/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlJdbcConfig.java @@ -13,7 +13,7 @@ */ package io.trino.plugin.mysql; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; diff --git a/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlLegacyConnectorTest.java b/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlLegacyConnectorTest.java index 91f6b197f615..eff06d44caef 100644 --- a/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlLegacyConnectorTest.java +++ b/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlLegacyConnectorTest.java @@ -20,7 +20,7 @@ import io.trino.sql.planner.plan.MarkDistinctNode; import io.trino.testing.QueryRunner; import io.trino.testing.sql.TestTable; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.List; import java.util.Optional; diff --git a/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlPlugin.java b/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlPlugin.java index 7607ca52e961..19a3c5457db0 100644 --- a/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlPlugin.java +++ b/plugin/trino-mysql/src/test/java/io/trino/plugin/mysql/TestMySqlPlugin.java @@ -17,7 +17,7 @@ import io.trino.spi.Plugin; import io.trino.spi.connector.ConnectorFactory; import io.trino.testing.TestingConnectorContext; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.google.common.collect.Iterables.getOnlyElement; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/plugin/trino-oracle/src/test/java/io/trino/plugin/oracle/TestOracleConfig.java b/plugin/trino-oracle/src/test/java/io/trino/plugin/oracle/TestOracleConfig.java index 204937256537..659dec813f51 100644 --- a/plugin/trino-oracle/src/test/java/io/trino/plugin/oracle/TestOracleConfig.java +++ b/plugin/trino-oracle/src/test/java/io/trino/plugin/oracle/TestOracleConfig.java @@ -17,7 +17,7 @@ import io.airlift.units.Duration; import jakarta.validation.constraints.Max; import jakarta.validation.constraints.Min; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.math.RoundingMode; import java.util.Map; diff --git a/plugin/trino-oracle/src/test/java/io/trino/plugin/oracle/TestOraclePlugin.java b/plugin/trino-oracle/src/test/java/io/trino/plugin/oracle/TestOraclePlugin.java index 7b13e1914a85..b76aba6744bf 100644 --- a/plugin/trino-oracle/src/test/java/io/trino/plugin/oracle/TestOraclePlugin.java +++ b/plugin/trino-oracle/src/test/java/io/trino/plugin/oracle/TestOraclePlugin.java @@ -17,7 +17,7 @@ import io.trino.spi.Plugin; import io.trino.spi.connector.ConnectorFactory; import io.trino.testing.TestingConnectorContext; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.google.common.collect.Iterables.getOnlyElement; diff --git a/plugin/trino-password-authenticators/pom.xml b/plugin/trino-password-authenticators/pom.xml index 12e19498db40..c751814b470e 100644 --- a/plugin/trino-password-authenticators/pom.xml +++ b/plugin/trino-password-authenticators/pom.xml @@ -117,6 +117,12 @@ test + + io.airlift + junit-extensions + test + + io.airlift testing @@ -135,6 +141,18 @@ test + + org.junit.jupiter + junit-jupiter-api + test + + + + org.junit.jupiter + junit-jupiter-engine + test + + org.testcontainers testcontainers @@ -153,4 +171,26 @@ test + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + org.apache.maven.surefire + surefire-junit-platform + ${dep.plugin.surefire.version} + + + org.apache.maven.surefire + surefire-testng + ${dep.plugin.surefire.version} + + + + + diff --git a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestEncryptionUtil.java b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestEncryptionUtil.java index 2315882d7ef9..d711e9df5b01 100644 --- a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestEncryptionUtil.java +++ b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestEncryptionUtil.java @@ -13,7 +13,7 @@ */ package io.trino.plugin.password.file; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.plugin.password.file.EncryptionUtil.getHashingAlgorithm; import static io.trino.plugin.password.file.HashingAlgorithm.BCRYPT; diff --git a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestFileConfig.java b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestFileConfig.java index c70b5cd5e77b..8a770797c024 100644 --- a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestFileConfig.java +++ b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestFileConfig.java @@ -16,7 +16,7 @@ import com.google.common.collect.ImmutableMap; import io.airlift.units.Duration; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.nio.file.Files; diff --git a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestFileGroupConfig.java b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestFileGroupConfig.java index 3f437baa9860..93442ff353e9 100644 --- a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestFileGroupConfig.java +++ b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestFileGroupConfig.java @@ -16,7 +16,7 @@ import com.google.common.collect.ImmutableMap; import io.airlift.units.Duration; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.nio.file.Files; diff --git a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestFileGroupProvider.java b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestFileGroupProvider.java index e1749ecc9081..893341ba18c4 100644 --- a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestFileGroupProvider.java +++ b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestFileGroupProvider.java @@ -17,7 +17,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.io.Resources; import io.trino.spi.security.GroupProvider; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.File; diff --git a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestPasswordStore.java b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestPasswordStore.java index 4187e3fe08d8..77dcd8009ecc 100644 --- a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestPasswordStore.java +++ b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/file/TestPasswordStore.java @@ -14,7 +14,7 @@ package io.trino.plugin.password.file; import com.google.common.collect.ImmutableList; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.testng.Assert.assertFalse; diff --git a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/ldap/TestLdapAuthenticator.java b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/ldap/TestLdapAuthenticator.java index 0272fd13226e..4ea836bf3e37 100644 --- a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/ldap/TestLdapAuthenticator.java +++ b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/ldap/TestLdapAuthenticator.java @@ -19,26 +19,29 @@ import io.trino.plugin.password.ldap.TestingOpenLdapServer.DisposableSubContext; import io.trino.spi.security.AccessDeniedException; import io.trino.spi.security.BasicPrincipal; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import org.testcontainers.containers.Network; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; import static java.lang.String.format; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; import static org.testng.Assert.assertEquals; +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestLdapAuthenticator { - private Closer closer; + private final Closer closer; - private TestingOpenLdapServer openLdapServer; - private LdapAuthenticatorClient client; + private final TestingOpenLdapServer openLdapServer; + private final LdapAuthenticatorClient client; - @BeforeClass - public void setup() - throws Exception + public TestLdapAuthenticator() { closer = Closer.create(); Network network = Network.newNetwork(); @@ -52,14 +55,11 @@ public void setup() .setLdapUrl(openLdapServer.getLdapUrl()))); } - @AfterClass(alwaysRun = true) + @AfterAll public void close() throws Exception { closer.close(); - closer = null; - openLdapServer = null; - client = null; } @Test diff --git a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/ldap/TestLdapAuthenticatorConfig.java b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/ldap/TestLdapAuthenticatorConfig.java index 38eff5c9fba7..cf562c9fbacd 100644 --- a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/ldap/TestLdapAuthenticatorConfig.java +++ b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/ldap/TestLdapAuthenticatorConfig.java @@ -17,7 +17,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import io.airlift.units.Duration; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; import java.util.concurrent.TimeUnit; diff --git a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/ldap/TestLdapAuthenticatorWithTimeouts.java b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/ldap/TestLdapAuthenticatorWithTimeouts.java index 7e5e7ca08b9d..1d78d76a88d8 100644 --- a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/ldap/TestLdapAuthenticatorWithTimeouts.java +++ b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/ldap/TestLdapAuthenticatorWithTimeouts.java @@ -19,30 +19,33 @@ import io.trino.plugin.base.ldap.LdapClientConfig; import io.trino.plugin.password.ldap.TestingOpenLdapServer.DisposableSubContext; import io.trino.spi.security.BasicPrincipal; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; import org.testcontainers.containers.Network; import org.testcontainers.containers.ToxiproxyContainer; import org.testcontainers.containers.ToxiproxyContainer.ContainerProxy; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; + +import java.io.IOException; import static eu.rekawek.toxiproxy.model.ToxicDirection.DOWNSTREAM; import static io.trino.plugin.password.ldap.TestingOpenLdapServer.LDAP_PORT; import static java.lang.String.format; import static java.util.concurrent.TimeUnit.SECONDS; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; import static org.testng.Assert.assertEquals; +@TestInstance(PER_CLASS) public class TestLdapAuthenticatorWithTimeouts { - private Closer closer; + private final Closer closer; - private TestingOpenLdapServer openLdapServer; - private String proxyLdapUrl; + private final TestingOpenLdapServer openLdapServer; + private final String proxyLdapUrl; - @BeforeClass - public void setup() - throws Exception + public TestLdapAuthenticatorWithTimeouts() + throws IOException { closer = Closer.create(); Network network = Network.newNetwork(); @@ -62,14 +65,11 @@ public void setup() proxyLdapUrl = format("ldap://%s:%s", proxy.getContainerIpAddress(), proxy.getProxyPort()); } - @AfterClass(alwaysRun = true) + @AfterAll public void close() throws Exception { closer.close(); - closer = null; - openLdapServer = null; - proxyLdapUrl = null; } @Test diff --git a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/salesforce/TestSalesforceBasicAuthenticator.java b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/salesforce/TestSalesforceBasicAuthenticator.java index 2bd8f069e2f0..932aea459187 100644 --- a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/salesforce/TestSalesforceBasicAuthenticator.java +++ b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/salesforce/TestSalesforceBasicAuthenticator.java @@ -19,9 +19,7 @@ import io.airlift.http.client.testing.TestingHttpClient; import io.airlift.units.Duration; import io.trino.spi.security.AccessDeniedException; -import org.testng.SkipException; -import org.testng.annotations.BeforeSuite; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.security.Principal; import java.util.concurrent.TimeUnit; @@ -32,24 +30,21 @@ import static io.airlift.http.client.testing.TestingResponse.mockResponse; import static java.lang.String.format; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.Assumptions.abort; import static org.testng.Assert.assertEquals; import static org.testng.Assert.fail; public class TestSalesforceBasicAuthenticator { - private boolean forReal; + private final boolean forReal; private final String successResponse = "https://example.salesforce.com/services/Soap/m/46.0/examplefalsefalsehttps://example.salesforce.com/services/Soap/u/46.0/exampleexampleexamplefalsefalse$5242880USDen_USfalsetrue%sfalseexampleexampleexample7200user@salesforce.comVince Chaseexampleen_USen_US%sAmerica/ChicagoStandardTheme3"; private final String failedResponse = "sf:INVALID_LOGININVALID_LOGIN: Invalid username, password, security token; or user locked out.INVALID_LOGINInvalid username, password, security token; or user locked out."; - @BeforeSuite - public void initOnce() + public TestSalesforceBasicAuthenticator() { - forReal = false; String forRealEnvVar = System.getenv("SALESFORCE_TEST_FORREAL"); - if (forRealEnvVar != null && forRealEnvVar.equalsIgnoreCase("TRUE")) { - forReal = true; - } + forReal = forRealEnvVar != null && forRealEnvVar.equalsIgnoreCase("TRUE"); } @Test @@ -169,12 +164,12 @@ public void createAuthenticatedPrincipalFewOrgs() */ // Test a real login. - @Test(description = "Test principal name for real, yo!") + @Test public void createAuthenticatedPrincipalRealSuccess() { // Skip this test if SALESFORCE_TEST_FORREAL is not set to TRUE. if (!forReal) { - throw new SkipException("Skipping real tests."); + abort("Skipping real tests."); } String org = System.getenv("SALESFORCE_TEST_ORG"); @@ -202,7 +197,7 @@ public void createAuthenticatedPrincipalRealWrongOrg() { // Skip this test if SALESFORCE_TEST_FORREAL is not set to TRUE. if (!forReal) { - throw new SkipException("Skipping real tests."); + abort("Skipping real tests."); } String username = System.getenv("SALESFORCE_TEST_USERNAME"); @@ -228,7 +223,7 @@ public void createAuthenticatedPrincipalRealAllOrgs() { // Skip this test if SALESFORCE_TEST_FORREAL is not set to TRUE. if (!forReal) { - throw new SkipException("Skipping real tests."); + abort("Skipping real tests."); } String username = System.getenv("SALESFORCE_TEST_USERNAME"); @@ -253,7 +248,7 @@ public void createAuthenticatedPrincipalRealBadPassword() { // Skip this test if SALESFORCE_TEST_FORREAL is not set to TRUE. if (!forReal) { - throw new SkipException("Skipping real tests."); + abort("Skipping real tests."); } String org = System.getenv("SALESFORCE_TEST_ORG"); diff --git a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/salesforce/TestSalesforceConfig.java b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/salesforce/TestSalesforceConfig.java index 56c94650427d..98b708319e32 100644 --- a/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/salesforce/TestSalesforceConfig.java +++ b/plugin/trino-password-authenticators/src/test/java/io/trino/plugin/password/salesforce/TestSalesforceConfig.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableMap; import io.airlift.units.Duration; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-phoenix5/pom.xml b/plugin/trino-phoenix5/pom.xml index db987d630a15..91233e0ef3b3 100644 --- a/plugin/trino-phoenix5/pom.xml +++ b/plugin/trino-phoenix5/pom.xml @@ -173,6 +173,12 @@ + + io.airlift + junit-extensions + test + + io.airlift testing @@ -361,6 +367,12 @@ test + + org.junit.jupiter + junit-jupiter-api + test + + org.junit.jupiter junit-jupiter-engine diff --git a/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixConfig.java b/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixConfig.java index 14be50d711b8..0a0400dff163 100644 --- a/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixConfig.java +++ b/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.phoenix5; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.nio.file.Files; diff --git a/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixPlugin.java b/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixPlugin.java index a54f168d1131..274fa7cb42fb 100644 --- a/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixPlugin.java +++ b/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixPlugin.java @@ -17,7 +17,7 @@ import io.trino.spi.Plugin; import io.trino.spi.connector.ConnectorFactory; import io.trino.testing.TestingConnectorContext; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.google.common.collect.Iterables.getOnlyElement; diff --git a/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixSplit.java b/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixSplit.java index 8820ad988d5a..f9311bc48047 100644 --- a/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixSplit.java +++ b/plugin/trino-phoenix5/src/test/java/io/trino/plugin/phoenix5/TestPhoenixSplit.java @@ -20,7 +20,7 @@ import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.mapreduce.PhoenixInputSplit; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.List; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestBrokerQueries.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestBrokerQueries.java index 668a6c33d775..4f43d5456509 100644 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestBrokerQueries.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestBrokerQueries.java @@ -24,8 +24,7 @@ import org.apache.pinot.common.response.broker.ResultTable; import org.apache.pinot.common.utils.DataSchema; import org.apache.pinot.common.utils.DataSchema.ColumnDataType; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.List; @@ -50,7 +49,7 @@ public class TestBrokerQueries private static final ResultTable RESULT_TABLE; private static final int LIMIT_FOR_BROKER_QUERIES = 2; - private PinotClient testingPinotClient; + private final PinotClient testingPinotClient; static { DATA_SCHEMA = new DataSchema(new String[] {"col_1", "col_2", "col_3"}, new ColumnDataType[] {STRING, LONG, STRING}); @@ -63,9 +62,8 @@ public class TestBrokerQueries RESPONSE.setNumDocsScanned(1); } - @BeforeClass - public void setup() - throws Exception + public TestBrokerQueries() + throws IOException { testingPinotClient = new MockPinotClient(pinotConfig, getTestingMetadata(), RESPONSE.toJsonString()); } diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestDynamicTable.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestDynamicTable.java index cfbfac8dd048..00fdba82ba5f 100755 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestDynamicTable.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestDynamicTable.java @@ -24,7 +24,7 @@ import io.trino.spi.predicate.Range; import io.trino.spi.predicate.TupleDomain; import io.trino.spi.predicate.ValueSet; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.List; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestInstance.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestInstance.java index d93873c5779f..610d8cce0580 100644 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestInstance.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestInstance.java @@ -15,7 +15,7 @@ import org.apache.helix.model.InstanceConfig; import org.apache.pinot.core.transport.ServerInstance; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static org.testng.Assert.assertEquals; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotClient.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotClient.java index 11f5890e7320..fcdec034438d 100755 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotClient.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotClient.java @@ -24,7 +24,7 @@ import io.trino.plugin.pinot.auth.none.PinotEmptyAuthenticationProvider; import io.trino.plugin.pinot.client.IdentityPinotHostMapper; import io.trino.plugin.pinot.client.PinotClient; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.concurrent.TimeUnit; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotColumnHandle.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotColumnHandle.java index e7ee4f70acdd..f2056d4d493f 100755 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotColumnHandle.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotColumnHandle.java @@ -14,7 +14,7 @@ package io.trino.plugin.pinot; import io.airlift.testing.EquivalenceTester; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.plugin.pinot.MetadataUtil.COLUMN_CODEC; import static io.trino.spi.type.BigintType.BIGINT; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotConfig.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotConfig.java index 6101ecf4f111..92ac07b06e20 100755 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotConfig.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotConfig.java @@ -17,7 +17,7 @@ import io.airlift.configuration.testing.ConfigAssertions; import io.airlift.units.DataSize; import io.airlift.units.Duration; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; import java.util.concurrent.TimeUnit; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotGrpcServerQueryClientConfig.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotGrpcServerQueryClientConfig.java index 5d109eec9879..09690f4705bf 100644 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotGrpcServerQueryClientConfig.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotGrpcServerQueryClientConfig.java @@ -17,7 +17,7 @@ import io.airlift.configuration.testing.ConfigAssertions; import io.airlift.units.DataSize; import io.trino.plugin.pinot.client.PinotGrpcServerQueryClientConfig; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotGrpcServerQueryClientTlsConfig.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotGrpcServerQueryClientTlsConfig.java index 27ce338851ba..97dfd5754d75 100644 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotGrpcServerQueryClientTlsConfig.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotGrpcServerQueryClientTlsConfig.java @@ -17,7 +17,7 @@ import com.google.inject.ConfigurationException; import io.airlift.configuration.testing.ConfigAssertions; import io.trino.plugin.pinot.client.PinotGrpcServerQueryClientTlsConfig; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.FileWriter; import java.io.IOException; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotLegacyServerQueryClientConfig.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotLegacyServerQueryClientConfig.java index 5d0dc416e7c5..f4a49ed6d27a 100644 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotLegacyServerQueryClientConfig.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotLegacyServerQueryClientConfig.java @@ -16,7 +16,7 @@ import com.google.common.collect.ImmutableMap; import io.airlift.configuration.testing.ConfigAssertions; import io.trino.plugin.pinot.client.PinotLegacyServerQueryClientConfig; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotMetadata.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotMetadata.java index 7249cb5e6301..cf9f4fc2feb2 100755 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotMetadata.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotMetadata.java @@ -18,7 +18,7 @@ import io.trino.spi.connector.ConnectorSession; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.type.TestingTypeManager; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.List; import java.util.Optional; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotSessionProperties.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotSessionProperties.java index 16bf27fa4ae7..c19af44912df 100755 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotSessionProperties.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotSessionProperties.java @@ -16,18 +16,22 @@ import io.airlift.units.Duration; import io.trino.spi.connector.ConnectorSession; import io.trino.testing.TestingConnectorSession; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.concurrent.TimeUnit; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.testng.Assert.assertEquals; public class TestPinotSessionProperties { - @Test(expectedExceptions = IllegalArgumentException.class) + @Test public void testInvalidNumSegmentSplits() { - new PinotConfig().setSegmentsPerSplit(-3); + assertThatThrownBy(() -> { + new PinotConfig().setSegmentsPerSplit(-3); + }) + .isInstanceOf(IllegalArgumentException.class); } @Test diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotSplitManager.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotSplitManager.java index d47f33eb8219..69849d1f1199 100755 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotSplitManager.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotSplitManager.java @@ -22,7 +22,7 @@ import io.trino.spi.connector.SchemaTableName; import io.trino.spi.predicate.TupleDomain; import io.trino.testing.TestingConnectorSession; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.time.Instant; import java.util.ArrayList; @@ -37,6 +37,7 @@ import static io.trino.spi.type.TimeZoneKey.UTC_KEY; import static java.lang.String.format; import static java.util.stream.Collectors.toList; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; @@ -58,12 +59,15 @@ public void testSplitsBroker() assertSplits(splits, 1, BROKER); } - @Test(expectedExceptions = PinotSplitManager.QueryNotAdequatelyPushedDownException.class) + @Test public void testBrokerNonShortQuery() { - PinotTableHandle pinotTableHandle = new PinotTableHandle(realtimeOnlyTable.getSchemaName(), realtimeOnlyTable.getTableName()); - List splits = getSplitsHelper(pinotTableHandle, 1, true); - assertSplits(splits, 1, BROKER); + assertThatThrownBy(() -> { + PinotTableHandle pinotTableHandle = new PinotTableHandle(realtimeOnlyTable.getSchemaName(), realtimeOnlyTable.getTableName()); + List splits = getSplitsHelper(pinotTableHandle, 1, true); + assertSplits(splits, 1, BROKER); + }) + .isInstanceOf(PinotSplitManager.QueryNotAdequatelyPushedDownException.class); } @Test diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotTableHandle.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotTableHandle.java index b4d992f571ba..b80370f85552 100755 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotTableHandle.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/TestPinotTableHandle.java @@ -15,7 +15,7 @@ import io.airlift.json.JsonCodec; import io.airlift.testing.EquivalenceTester; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.airlift.json.JsonCodec.jsonCodec; import static org.testng.Assert.assertEquals; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/TestPinotAuthenticationTypeConfig.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/TestPinotAuthenticationTypeConfig.java index d4032ab3cebb..5b9ef2e5ddda 100644 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/TestPinotAuthenticationTypeConfig.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/TestPinotAuthenticationTypeConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.pinot.auth; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/none/TestPinotEmptyAuthenticationProvider.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/none/TestPinotEmptyAuthenticationProvider.java index 18ab1701f557..35f4923b9fe3 100644 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/none/TestPinotEmptyAuthenticationProvider.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/none/TestPinotEmptyAuthenticationProvider.java @@ -13,7 +13,7 @@ */ package io.trino.plugin.pinot.auth.none; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Optional; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/password/TestPinotPasswordAuthenticationProvider.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/password/TestPinotPasswordAuthenticationProvider.java index 501bbb2289db..4d52831515ed 100644 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/password/TestPinotPasswordAuthenticationProvider.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/password/TestPinotPasswordAuthenticationProvider.java @@ -13,7 +13,7 @@ */ package io.trino.plugin.pinot.auth.password; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Optional; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/password/inline/TestPinotPasswordBrokerAuthenticationConfig.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/password/inline/TestPinotPasswordBrokerAuthenticationConfig.java index 211513479a9f..15f0c08ff7e7 100644 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/password/inline/TestPinotPasswordBrokerAuthenticationConfig.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/password/inline/TestPinotPasswordBrokerAuthenticationConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.pinot.auth.password.inline; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/password/inline/TestPinotPasswordControllerAuthenticationConfig.java b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/password/inline/TestPinotPasswordControllerAuthenticationConfig.java index c204899ac23f..3e5f4c0348c0 100644 --- a/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/password/inline/TestPinotPasswordControllerAuthenticationConfig.java +++ b/plugin/trino-pinot/src/test/java/io/trino/plugin/pinot/auth/password/inline/TestPinotPasswordControllerAuthenticationConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.pinot.auth.password.inline; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestJoinReorderingWithJoinPushdown.java b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestJoinReorderingWithJoinPushdown.java index 472b805444bf..d674053690f8 100644 --- a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestJoinReorderingWithJoinPushdown.java +++ b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestJoinReorderingWithJoinPushdown.java @@ -19,7 +19,7 @@ import io.trino.testing.AbstractTestQueryFramework; import io.trino.testing.DistributedQueryRunner; import io.trino.testing.QueryRunner; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.List; import java.util.Map; diff --git a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlConfig.java b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlConfig.java index 8ca80f04f058..aade2bde29e7 100644 --- a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlConfig.java +++ b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.postgresql; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlPlugin.java b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlPlugin.java index 606cbd320da0..b1e42e783167 100644 --- a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlPlugin.java +++ b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestPostgreSqlPlugin.java @@ -17,7 +17,7 @@ import io.trino.spi.Plugin; import io.trino.spi.connector.ConnectorFactory; import io.trino.testing.TestingConnectorContext; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.google.common.collect.Iterables.getOnlyElement; diff --git a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestRemoteQueryCommentLogging.java b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestRemoteQueryCommentLogging.java index a78a3cad2517..1c206794fae0 100644 --- a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestRemoteQueryCommentLogging.java +++ b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestRemoteQueryCommentLogging.java @@ -18,14 +18,16 @@ import io.trino.testing.AbstractTestQueryFramework; import io.trino.testing.DistributedQueryRunner; import io.trino.testing.QueryRunner; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; import static io.trino.plugin.postgresql.PostgreSqlQueryRunner.createPostgreSqlQueryRunner; import static io.trino.tpch.TpchTable.CUSTOMER; import static io.trino.tpch.TpchTable.NATION; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; -@Test(singleThreaded = true) +@Execution(SAME_THREAD) public class TestRemoteQueryCommentLogging extends AbstractTestQueryFramework { diff --git a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestRemoteQueryCommentLoggingDisabledByDefault.java b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestRemoteQueryCommentLoggingDisabledByDefault.java index 0fb0ec7a5eb5..d20be0295f68 100644 --- a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestRemoteQueryCommentLoggingDisabledByDefault.java +++ b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestRemoteQueryCommentLoggingDisabledByDefault.java @@ -18,14 +18,16 @@ import io.trino.testing.AbstractTestQueryFramework; import io.trino.testing.DistributedQueryRunner; import io.trino.testing.QueryRunner; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; import static io.trino.plugin.postgresql.PostgreSqlQueryRunner.createPostgreSqlQueryRunner; import static io.trino.tpch.TpchTable.CUSTOMER; import static io.trino.tpch.TpchTable.NATION; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; -@Test(singleThreaded = true) +@Execution(SAME_THREAD) public class TestRemoteQueryCommentLoggingDisabledByDefault extends AbstractTestQueryFramework { diff --git a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestTestingPostgreSqlServer.java b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestTestingPostgreSqlServer.java index 117aba46c10f..694b09340ca1 100644 --- a/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestTestingPostgreSqlServer.java +++ b/plugin/trino-postgresql/src/test/java/io/trino/plugin/postgresql/TestTestingPostgreSqlServer.java @@ -14,9 +14,11 @@ package io.trino.plugin.postgresql; import io.trino.plugin.jdbc.RemoteDatabaseEvent; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.Timeout; +import org.junit.jupiter.api.parallel.Execution; import java.sql.Connection; import java.sql.DriverManager; @@ -33,20 +35,18 @@ import static java.util.concurrent.Executors.newCachedThreadPool; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestTestingPostgreSqlServer { private final ExecutorService threadPool = newCachedThreadPool(daemonThreadsNamed("TestTestingPostgreSqlServer-%d")); - private TestingPostgreSqlServer postgreSqlServer; + private final TestingPostgreSqlServer postgreSqlServer = new TestingPostgreSqlServer(); - @BeforeClass - public void setUp() - { - postgreSqlServer = new TestingPostgreSqlServer(); - } - - @AfterClass(alwaysRun = true) + @AfterAll public void tearDown() throws Exception { @@ -69,7 +69,8 @@ public void testCapturingSuccessfulStatement() assertEventually(() -> assertThat(postgreSqlServer.getRemoteDatabaseEvents()).contains(event)); } - @Test(timeOut = 60_000) + @Test + @Timeout(60) public void testCapturingCancelledStatement() throws Exception { diff --git a/plugin/trino-prometheus/pom.xml b/plugin/trino-prometheus/pom.xml index 592393725c50..f25fbc1e2365 100644 --- a/plugin/trino-prometheus/pom.xml +++ b/plugin/trino-prometheus/pom.xml @@ -146,6 +146,12 @@ test + + io.airlift + junit-extensions + test + + io.airlift testing @@ -214,6 +220,12 @@ 4.4.16 test + + org.aspectj + aspectjweaver + 1.9.9.1 + test + org.assertj @@ -227,6 +239,12 @@ test + + org.junit.jupiter + junit-jupiter-api + test + + org.junit.jupiter junit-jupiter-engine diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusBasicAuth.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusBasicAuth.java index ce907436d263..af5eaec6b444 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusBasicAuth.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusBasicAuth.java @@ -17,7 +17,7 @@ import io.airlift.units.Duration; import io.trino.testing.AbstractTestQueryFramework; import io.trino.testing.QueryRunner; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.plugin.prometheus.MetadataUtil.METRIC_CODEC; import static io.trino.plugin.prometheus.PrometheusQueryRunner.createPrometheusQueryRunner; diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusCaseInsensitiveNameMatching.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusCaseInsensitiveNameMatching.java index f584a68a99c4..bad892836dfd 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusCaseInsensitiveNameMatching.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusCaseInsensitiveNameMatching.java @@ -14,9 +14,10 @@ package io.trino.plugin.prometheus; import io.trino.spi.connector.SchemaTableName; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.util.List; import java.util.Optional; @@ -26,30 +27,26 @@ import static io.trino.type.InternalTypeManager.TESTING_TYPE_MANAGER; import static java.util.Locale.ENGLISH; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestPrometheusCaseInsensitiveNameMatching { - private PrometheusHttpServer prometheusHttpServer; private static final String DEFAULT_SCHEMA = "default"; private static final String UPPER_CASE_METRIC = "UpperCase-Metric"; - @BeforeClass - public void setUp() - { - prometheusHttpServer = new PrometheusHttpServer(); - } + private final PrometheusHttpServer prometheusHttpServer = new PrometheusHttpServer(); - @AfterClass(alwaysRun = true) + @AfterAll public void tearDown() { - if (prometheusHttpServer != null) { - prometheusHttpServer.stop(); - prometheusHttpServer = null; - } + prometheusHttpServer.stop(); } @Test diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusColumnHandle.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusColumnHandle.java index a8c49c2bd863..766a386adaab 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusColumnHandle.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusColumnHandle.java @@ -14,7 +14,7 @@ package io.trino.plugin.prometheus; import io.airlift.testing.EquivalenceTester; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.plugin.prometheus.MetadataUtil.COLUMN_CODEC; import static io.trino.spi.type.BigintType.BIGINT; diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusConnectorConfig.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusConnectorConfig.java index ac8e3c5bee46..fcef75b51264 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusConnectorConfig.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusConnectorConfig.java @@ -16,7 +16,7 @@ import com.google.common.collect.ImmutableMap; import com.google.inject.ConfigurationException; import io.airlift.units.Duration; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.File; import java.net.URI; diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusIntegration.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusIntegration.java index f7a5569ee2d3..9e771bb78791 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusIntegration.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusIntegration.java @@ -21,7 +21,7 @@ import io.trino.testing.AbstractTestQueryFramework; import io.trino.testing.MaterializedResult; import io.trino.testing.QueryRunner; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.concurrent.TimeUnit; diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusQueryMatrixResponseParse.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusQueryMatrixResponseParse.java index cc1c2eeb9ad0..01d11ee9e1be 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusQueryMatrixResponseParse.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusQueryMatrixResponseParse.java @@ -15,9 +15,11 @@ import com.google.common.io.Resources; import io.trino.spi.TrinoException; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.IOException; import java.io.InputStream; @@ -26,11 +28,14 @@ import static java.time.Instant.ofEpochMilli; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestPrometheusQueryMatrixResponseParse { private InputStream promMatrixResponse; @@ -75,7 +80,7 @@ public void verifyOnErrorResponse() .hasMessageContaining("Unable to parse Prometheus response: error bad_data invalid parameter 'query': parse error at char 4: bad duration syntax"); } - @BeforeMethod + @BeforeEach public void setUp() throws Exception { @@ -88,7 +93,7 @@ public void setUp() this.promErrorResponse = promErrorResponse.openStream(); } - @AfterMethod(alwaysRun = true) + @AfterEach public void tearDown() throws Exception { diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusQueryScalarResponseParse.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusQueryScalarResponseParse.java index d2e4d6de62f7..74d2a57b871c 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusQueryScalarResponseParse.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusQueryScalarResponseParse.java @@ -14,9 +14,7 @@ package io.trino.plugin.prometheus; import com.google.common.io.Resources; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.io.InputStream; @@ -28,56 +26,52 @@ import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; -@Test(singleThreaded = true) // see @BeforeMethod public class TestPrometheusQueryScalarResponseParse { - private InputStream promVectorResponse; - @Test public void trueStatusOnSuccessResponse() throws IOException { - assertTrue(new PrometheusQueryResponseParse(promVectorResponse).getStatus()); + try (InputStream promVectorResponse = openStream()) { + assertTrue(new PrometheusQueryResponseParse(promVectorResponse).getStatus()); + } } @Test public void verifyMetricPropertiesResponse() throws IOException { - List results = new PrometheusQueryResponseParse(promVectorResponse).getResults(); - assertEquals(results.get(0).getMetricHeader().get("__name__"), "scalar"); + try (InputStream promVectorResponse = openStream()) { + List results = new PrometheusQueryResponseParse(promVectorResponse).getResults(); + assertEquals(results.get(0).getMetricHeader().get("__name__"), "scalar"); + } } @Test public void verifyMetricTimestampResponse() throws IOException { - List results = new PrometheusQueryResponseParse(promVectorResponse).getResults(); - assertEquals(results.get(0).getTimeSeriesValues().getValues().get(0).getTimestamp(), ofEpochMilli(1566306405073L)); + try (InputStream promVectorResponse = openStream()) { + List results = new PrometheusQueryResponseParse(promVectorResponse).getResults(); + assertEquals(results.get(0).getTimeSeriesValues().getValues().get(0).getTimestamp(), ofEpochMilli(1566306405073L)); + } } @Test public void verifyMetricValueResponse() throws IOException { - List results = new PrometheusQueryResponseParse(promVectorResponse).getResults(); - assertEquals(results.get(0).getTimeSeriesValues().getValues().get(0).getValue(), "1"); + try (InputStream promVectorResponse = openStream()) { + List results = new PrometheusQueryResponseParse(promVectorResponse).getResults(); + assertEquals(results.get(0).getTimeSeriesValues().getValues().get(0).getValue(), "1"); + } } - @BeforeMethod - public void setUp() - throws Exception + private static InputStream openStream() + throws IOException { - URL promMatrixResponse = Resources.getResource(getClass(), "/prometheus-data/up_scalar_response.json"); + URL promMatrixResponse = Resources.getResource(TestPrometheusQueryScalarResponseParse.class, "/prometheus-data/up_scalar_response.json"); assertNotNull(promMatrixResponse, "metadataUrl is null"); - this.promVectorResponse = promMatrixResponse.openStream(); - } - - @AfterMethod(alwaysRun = true) - public void tearDown() - throws Exception - { - promVectorResponse.close(); - promVectorResponse = null; + return promMatrixResponse.openStream(); } } diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusQueryVectorResponseParse.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusQueryVectorResponseParse.java index 15b1f7a51629..0be201d67ae0 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusQueryVectorResponseParse.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusQueryVectorResponseParse.java @@ -14,9 +14,7 @@ package io.trino.plugin.prometheus; import com.google.common.io.Resources; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.io.InputStream; @@ -28,56 +26,52 @@ import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; -@Test(singleThreaded = true) // see @BeforeMethod public class TestPrometheusQueryVectorResponseParse { - private InputStream promVectorResponse; - @Test public void trueStatusOnSuccessResponse() throws IOException { - assertTrue(new PrometheusQueryResponseParse(promVectorResponse).getStatus()); + try (InputStream promVectorResponse = openStream()) { + assertTrue(new PrometheusQueryResponseParse(promVectorResponse).getStatus()); + } } @Test public void verifyMetricPropertiesResponse() throws IOException { - List results = new PrometheusQueryResponseParse(promVectorResponse).getResults(); - assertEquals(results.get(0).getMetricHeader().get("__name__"), "up"); + try (InputStream promVectorResponse = openStream()) { + List results = new PrometheusQueryResponseParse(promVectorResponse).getResults(); + assertEquals(results.get(0).getMetricHeader().get("__name__"), "up"); + } } @Test public void verifyMetricTimestampResponse() throws IOException { - List results = new PrometheusQueryResponseParse(promVectorResponse).getResults(); - assertEquals(results.get(0).getTimeSeriesValues().getValues().get(0).getTimestamp(), ofEpochMilli(1565889995668L)); + try (InputStream promVectorResponse = openStream()) { + List results = new PrometheusQueryResponseParse(promVectorResponse).getResults(); + assertEquals(results.get(0).getTimeSeriesValues().getValues().get(0).getTimestamp(), ofEpochMilli(1565889995668L)); + } } @Test public void verifyMetricValueResponse() throws IOException { - List results = new PrometheusQueryResponseParse(promVectorResponse).getResults(); - assertEquals(results.get(0).getTimeSeriesValues().getValues().get(0).getValue(), "1"); + try (InputStream promVectorResponse = openStream()) { + List results = new PrometheusQueryResponseParse(promVectorResponse).getResults(); + assertEquals(results.get(0).getTimeSeriesValues().getValues().get(0).getValue(), "1"); + } } - @BeforeMethod - public void setUp() - throws Exception + private static InputStream openStream() + throws IOException { - URL promMatrixResponse = Resources.getResource(getClass(), "/prometheus-data/up_vector_response.json"); + URL promMatrixResponse = Resources.getResource(TestPrometheusQueryVectorResponseParse.class, "/prometheus-data/up_vector_response.json"); assertNotNull(promMatrixResponse, "metadataUrl is null"); - this.promVectorResponse = promMatrixResponse.openStream(); - } - - @AfterMethod(alwaysRun = true) - public void tearDown() - throws Exception - { - promVectorResponse.close(); - promVectorResponse = null; + return promMatrixResponse.openStream(); } } diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusRecordSet.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusRecordSet.java index cdac316251cc..fa0f052199a7 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusRecordSet.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusRecordSet.java @@ -19,9 +19,10 @@ import io.trino.spi.connector.RecordCursor; import io.trino.spi.connector.RecordSet; import io.trino.spi.type.DoubleType; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.time.Instant; import java.util.ArrayList; @@ -36,13 +37,17 @@ import static io.trino.type.InternalTypeManager.TESTING_TYPE_MANAGER; import static java.time.Instant.ofEpochMilli; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestPrometheusRecordSet { - private PrometheusHttpServer prometheusHttpServer; - private String dataUri; + private final PrometheusHttpServer prometheusHttpServer = new PrometheusHttpServer(); + private final String dataUri = prometheusHttpServer.resolve("/prometheus-data/up_matrix_response.json").toString(); @Test public void testCursorSimple() @@ -93,19 +98,9 @@ public void testCursorSimple() } } - @BeforeClass - public void setUp() - { - prometheusHttpServer = new PrometheusHttpServer(); - dataUri = prometheusHttpServer.resolve("/prometheus-data/up_matrix_response.json").toString(); - } - - @AfterClass(alwaysRun = true) + @AfterAll public void tearDown() { - if (prometheusHttpServer != null) { - prometheusHttpServer.stop(); - prometheusHttpServer = null; - } + prometheusHttpServer.stop(); } } diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusRecordSetProvider.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusRecordSetProvider.java index 65613688c21d..44ea49952aaf 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusRecordSetProvider.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusRecordSetProvider.java @@ -20,9 +20,10 @@ import io.trino.spi.connector.RecordCursor; import io.trino.spi.connector.RecordSet; import io.trino.spi.type.DoubleType; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.time.Instant; import java.util.LinkedHashMap; @@ -35,30 +36,23 @@ import static io.trino.testing.TestingConnectorSession.SESSION; import static io.trino.type.InternalTypeManager.TESTING_TYPE_MANAGER; import static java.time.Instant.ofEpochMilli; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestPrometheusRecordSetProvider { - private PrometheusHttpServer prometheusHttpServer; - private String dataUri; - private PrometheusClient client; + private final PrometheusHttpServer prometheusHttpServer = new PrometheusHttpServer(); + private final String dataUri = prometheusHttpServer.resolve("/prometheus-data/up_matrix_response.json").toString(); + private final PrometheusClient client = new PrometheusClient(new PrometheusConnectorConfig(), METRIC_CODEC, TESTING_TYPE_MANAGER); - @BeforeClass - public void setUp() - { - prometheusHttpServer = new PrometheusHttpServer(); - dataUri = prometheusHttpServer.resolve("/prometheus-data/up_matrix_response.json").toString(); - client = new PrometheusClient(new PrometheusConnectorConfig(), METRIC_CODEC, TESTING_TYPE_MANAGER); - } - - @AfterClass(alwaysRun = true) + @AfterAll public void tearDown() { - if (prometheusHttpServer != null) { - prometheusHttpServer.stop(); - prometheusHttpServer = null; - } + prometheusHttpServer.stop(); } @Test diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusSplit.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusSplit.java index 7f347c3ed1cb..11476f1078b6 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusSplit.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusSplit.java @@ -28,9 +28,11 @@ import io.trino.spi.predicate.TupleDomain; import io.trino.spi.predicate.ValueSet; import org.apache.http.NameValuePair; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.math.BigDecimal; import java.net.URI; @@ -59,28 +61,24 @@ import static java.util.concurrent.TimeUnit.DAYS; import static java.util.concurrent.TimeUnit.SECONDS; import static org.apache.http.client.utils.URLEncodedUtils.parse; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotEquals; import static org.testng.Assert.assertTrue; -@Test(singleThreaded = true) +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestPrometheusSplit { - private PrometheusHttpServer prometheusHttpServer; + private final PrometheusHttpServer prometheusHttpServer = new PrometheusHttpServer(); private final PrometheusSplit split = new PrometheusSplit("http://127.0.0.1/test.file"); private static final int NUMBER_MORE_THAN_EXPECTED_NUMBER_SPLITS = 100; - @BeforeClass - public void setUp() - { - prometheusHttpServer = new PrometheusHttpServer(); - } - - @AfterClass(alwaysRun = true) + @AfterAll public void tearDown() { prometheusHttpServer.stop(); - prometheusHttpServer = null; } @Test @@ -316,7 +314,8 @@ public void testPredicatePushDownLowerBoundDirect() assertEquals(predicateTimes.getPredicateLowerTimeBound().orElseThrow(), expected); } - @Test(enabled = false) + @Test + @Disabled public void testPredicatePushDownSetsLowerBoundOnly() { long predicateLowValue = 1568638171999L - 600000L; diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusTable.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusTable.java index aa1ea1aa43c6..69d490c2b40a 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusTable.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusTable.java @@ -16,7 +16,7 @@ import com.google.common.collect.ImmutableList; import io.trino.spi.connector.ColumnMetadata; import io.trino.spi.type.DoubleType; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.plugin.prometheus.MetadataUtil.TABLE_CODEC; import static io.trino.plugin.prometheus.MetadataUtil.varcharMapType; diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusTableHandle.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusTableHandle.java index a4e469dc2d02..64401552011e 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusTableHandle.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusTableHandle.java @@ -15,7 +15,7 @@ import io.airlift.json.JsonCodec; import io.airlift.testing.EquivalenceTester; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.airlift.json.JsonCodec.jsonCodec; import static org.testng.Assert.assertEquals; diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusTimestampDeserializer.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusTimestampDeserializer.java index d8ff21b8acd0..1ecdb62192ba 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusTimestampDeserializer.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusTimestampDeserializer.java @@ -13,7 +13,7 @@ */ package io.trino.plugin.prometheus; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.time.Instant; diff --git a/plugin/trino-raptor-legacy/pom.xml b/plugin/trino-raptor-legacy/pom.xml index 20fb51b5713a..b8f61b9e1d65 100644 --- a/plugin/trino-raptor-legacy/pom.xml +++ b/plugin/trino-raptor-legacy/pom.xml @@ -204,6 +204,12 @@ test + + io.airlift + junit-extensions + test + + io.airlift testing @@ -284,6 +290,12 @@ test + + org.junit.jupiter + junit-jupiter-api + test + + org.junit.jupiter junit-jupiter-engine diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorBucketFunction.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorBucketFunction.java index 5bbdd3fa1dcd..16342723cd68 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorBucketFunction.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorBucketFunction.java @@ -18,7 +18,7 @@ import io.trino.spi.block.Block; import io.trino.spi.connector.BucketFunction; import io.trino.spi.type.Type; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.block.BlockAssertions.createIntsBlock; import static io.trino.block.BlockAssertions.createLongsBlock; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorConnector.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorConnector.java index 2c16880f8715..8e68b678b727 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorConnector.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorConnector.java @@ -44,9 +44,11 @@ import io.trino.testing.TestingNodeManager; import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Jdbi; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.File; import java.nio.file.Files; @@ -69,11 +71,14 @@ import static io.trino.testing.TestingPageSinkId.TESTING_PAGE_SINK_ID; import static io.trino.type.InternalTypeManager.TESTING_TYPE_MANAGER; import static io.trino.util.DateTimeUtils.parseDate; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestRaptorConnector { private static final ConnectorSession SESSION = TestingConnectorSession.builder() @@ -85,7 +90,7 @@ public class TestRaptorConnector private File dataDir; private RaptorConnector connector; - @BeforeMethod + @BeforeEach public void setup() throws Exception { @@ -118,7 +123,7 @@ public void setup() dbi); } - @AfterMethod(alwaysRun = true) + @AfterEach public void tearDown() throws Exception { diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorPlugin.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorPlugin.java index d72d31372c65..3db165638310 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorPlugin.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/TestRaptorPlugin.java @@ -17,7 +17,7 @@ import io.trino.spi.Plugin; import io.trino.spi.connector.ConnectorFactory; import io.trino.testing.TestingConnectorContext; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.File; import java.nio.file.Files; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestBackupConfig.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestBackupConfig.java index 9c8084fdaa35..db9ce39cdabf 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestBackupConfig.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestBackupConfig.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableMap; import io.airlift.units.Duration; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestBackupManager.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestBackupManager.java index 672b64e4582e..7520db6e929e 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestBackupManager.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestBackupManager.java @@ -16,9 +16,11 @@ import io.trino.plugin.raptor.legacy.storage.BackupStats; import io.trino.plugin.raptor.legacy.storage.FileStorageService; import io.trino.spi.TrinoException; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.File; import java.io.IOException; @@ -42,11 +44,14 @@ import static java.util.UUID.randomUUID; import static java.util.concurrent.TimeUnit.SECONDS; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import static org.testng.FileAssert.assertFile; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestBackupManager { private static final UUID FAILURE_UUID = randomUUID(); @@ -57,7 +62,7 @@ public class TestBackupManager private FileStorageService storageService; private BackupManager backupManager; - @BeforeMethod + @BeforeEach public void setup() throws IOException { @@ -73,7 +78,7 @@ public void setup() backupManager = new BackupManager(Optional.of(backupStore), storageService, 5); } - @AfterMethod(alwaysRun = true) + @AfterEach public void tearDown() throws Exception { diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestFileBackupConfig.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestFileBackupConfig.java index b9fc8767b54d..a08e89f8529f 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestFileBackupConfig.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestFileBackupConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.raptor.legacy.backup; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.File; import java.util.Map; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestHttpBackupConfig.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestHttpBackupConfig.java index f7a123f9816e..db650c9b807f 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestHttpBackupConfig.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/backup/TestHttpBackupConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.raptor.legacy.backup; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.net.URI; import java.util.Map; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestAssignmentLimiter.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestAssignmentLimiter.java index 8f347b8c8ab0..f319ddf6184a 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestAssignmentLimiter.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestAssignmentLimiter.java @@ -17,7 +17,7 @@ import io.airlift.testing.TestingTicker; import io.airlift.units.Duration; import io.trino.spi.ErrorCodeSupplier; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.plugin.raptor.legacy.RaptorErrorCode.RAPTOR_REASSIGNMENT_DELAY; import static io.trino.plugin.raptor.legacy.RaptorErrorCode.RAPTOR_REASSIGNMENT_THROTTLE; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestDatabaseConfig.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestDatabaseConfig.java index 0de9385fe71a..b9f8daa3e5ff 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestDatabaseConfig.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestDatabaseConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.raptor.legacy.metadata; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestDatabaseShardManager.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestDatabaseShardManager.java index 8545f6980335..64a512fbf559 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestDatabaseShardManager.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestDatabaseShardManager.java @@ -36,9 +36,11 @@ import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Jdbi; import org.jdbi.v3.core.result.ResultIterator; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.File; import java.io.IOException; @@ -90,10 +92,13 @@ import static java.time.ZoneOffset.UTC; import static java.util.concurrent.TimeUnit.DAYS; import static java.util.stream.Collectors.toSet; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestDatabaseShardManager { private Jdbi dbi; @@ -101,7 +106,7 @@ public class TestDatabaseShardManager private File dataDir; private ShardManager shardManager; - @BeforeMethod + @BeforeEach public void setup() throws Exception { @@ -112,7 +117,7 @@ public void setup() shardManager = createShardManager(dbi); } - @AfterMethod(alwaysRun = true) + @AfterEach public void teardown() throws IOException { diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestH2DatabaseConfig.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestH2DatabaseConfig.java index dfffea9e4f3f..8cdd7155c491 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestH2DatabaseConfig.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestH2DatabaseConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.raptor.legacy.metadata; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestMetadataConfig.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestMetadataConfig.java index fb2fd6c889b1..e8e3ecafc2da 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestMetadataConfig.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestMetadataConfig.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableMap; import io.airlift.units.Duration; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestMetadataDao.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestMetadataDao.java index 4f76bef29c41..3745933aae04 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestMetadataDao.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestMetadataDao.java @@ -15,9 +15,11 @@ import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Jdbi; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.util.Optional; import java.util.OptionalInt; @@ -25,17 +27,20 @@ import static io.trino.plugin.raptor.legacy.DatabaseTesting.createTestingJdbi; import static io.trino.plugin.raptor.legacy.metadata.SchemaDaoUtil.createTablesWithRetry; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertNull; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestMetadataDao { private MetadataDao dao; private Handle dummyHandle; - @BeforeMethod + @BeforeEach public void setup() { Jdbi dbi = createTestingJdbi(); @@ -44,7 +49,7 @@ public void setup() createTablesWithRetry(dbi); } - @AfterMethod(alwaysRun = true) + @AfterEach public void tearDown() { dummyHandle.close(); diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestRaptorMetadata.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestRaptorMetadata.java index 873aebddf938..b7c4515aacda 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestRaptorMetadata.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestRaptorMetadata.java @@ -42,9 +42,11 @@ import io.trino.testing.TestingNodeManager; import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Jdbi; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.util.List; import java.util.Map; @@ -73,14 +75,16 @@ import static io.trino.testing.assertions.TrinoExceptionAssert.assertTrinoExceptionThrownBy; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; -import static org.testng.Assert.fail; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestRaptorMetadata { private static final SchemaTableName DEFAULT_TEST_ORDERS = new SchemaTableName("test", "orders"); @@ -94,7 +98,7 @@ public class TestRaptorMetadata private ShardManager shardManager; private RaptorMetadata metadata; - @BeforeMethod + @BeforeEach public void setupDatabase() { dbi = createTestingJdbi(); @@ -107,7 +111,7 @@ public void setupDatabase() metadata = new RaptorMetadata(dbi, shardManager); } - @AfterMethod(alwaysRun = true) + @AfterEach public void cleanupDatabase() { dummyHandle.close(); @@ -461,48 +465,54 @@ public void testCreateBucketedTableExistingDistribution() assertEquals(getTableDistributionId(tableId), Long.valueOf(1)); } - @Test(expectedExceptions = TrinoException.class, expectedExceptionsMessageRegExp = "Ordering column does not exist: orderdatefoo") + @Test public void testInvalidOrderingColumns() { assertNull(metadata.getTableHandle(SESSION, DEFAULT_TEST_ORDERS)); - ConnectorTableMetadata ordersTable = getOrdersTable(ImmutableMap.of(ORDERING_PROPERTY, ImmutableList.of("orderdatefoo"))); - metadata.createTable(SESSION, ordersTable, false); - fail("Expected createTable to fail"); + assertThatThrownBy(() -> metadata.createTable(SESSION, getOrdersTable(ImmutableMap.of(ORDERING_PROPERTY, ImmutableList.of("orderdatefoo"))), false)) + .isInstanceOf(TrinoException.class) + .hasMessage("Ordering column does not exist: orderdatefoo"); } - @Test(expectedExceptions = TrinoException.class, expectedExceptionsMessageRegExp = "Temporal column does not exist: foo") + @Test public void testInvalidTemporalColumn() { assertNull(metadata.getTableHandle(SESSION, DEFAULT_TEST_ORDERS)); - ConnectorTableMetadata ordersTable = getOrdersTable(ImmutableMap.of(TEMPORAL_COLUMN_PROPERTY, "foo")); - metadata.createTable(SESSION, ordersTable, false); - fail("Expected createTable to fail"); + assertThatThrownBy(() -> metadata.createTable(SESSION, getOrdersTable(ImmutableMap.of(TEMPORAL_COLUMN_PROPERTY, "foo")), false)) + .isInstanceOf(TrinoException.class) + .hasMessage("Temporal column does not exist: foo"); } - @Test(expectedExceptions = TrinoException.class, expectedExceptionsMessageRegExp = "Temporal column must be of type timestamp or date: orderkey") + @Test public void testInvalidTemporalColumnType() { assertNull(metadata.getTableHandle(SESSION, DEFAULT_TEST_ORDERS)); - metadata.createTable(SESSION, getOrdersTable(ImmutableMap.of(TEMPORAL_COLUMN_PROPERTY, "orderkey")), false); + assertThatThrownBy(() -> metadata.createTable(SESSION, getOrdersTable(ImmutableMap.of(TEMPORAL_COLUMN_PROPERTY, "orderkey")), false)) + .isInstanceOf(TrinoException.class) + .hasMessage("Temporal column must be of type timestamp or date: orderkey"); } - @Test(expectedExceptions = TrinoException.class, expectedExceptionsMessageRegExp = "Table with temporal columns cannot be organized") + @Test public void testInvalidTemporalOrganization() { assertNull(metadata.getTableHandle(SESSION, DEFAULT_TEST_ORDERS)); - metadata.createTable(SESSION, getOrdersTable(ImmutableMap.of( - TEMPORAL_COLUMN_PROPERTY, "orderdate", - ORGANIZED_PROPERTY, true)), - false); + assertThatThrownBy(() -> metadata.createTable(SESSION, getOrdersTable(ImmutableMap.of( + TEMPORAL_COLUMN_PROPERTY, "orderdate", + ORGANIZED_PROPERTY, true)), + false)) + .isInstanceOf(TrinoException.class) + .hasMessage("Table with temporal columns cannot be organized"); } - @Test(expectedExceptions = TrinoException.class, expectedExceptionsMessageRegExp = "Table organization requires an ordering") + @Test public void testInvalidOrderingOrganization() { assertNull(metadata.getTableHandle(SESSION, DEFAULT_TEST_ORDERS)); - metadata.createTable(SESSION, getOrdersTable(ImmutableMap.of(ORGANIZED_PROPERTY, true)), false); + assertThatThrownBy(() -> metadata.createTable(SESSION, getOrdersTable(ImmutableMap.of(ORGANIZED_PROPERTY, true)), false)) + .isInstanceOf(TrinoException.class) + .hasMessage("Table organization requires an ordering"); } @Test @@ -622,18 +632,14 @@ public void testViews() .isEmpty(); } - @Test(expectedExceptions = TrinoException.class, expectedExceptionsMessageRegExp = "View already exists: test\\.test_view") + @Test public void testCreateViewWithoutReplace() { SchemaTableName test = new SchemaTableName("test", "test_view"); - try { - metadata.createView(SESSION, test, testingViewDefinition("test"), false); - } - catch (Exception e) { - fail("should have succeeded"); - } - metadata.createView(SESSION, test, testingViewDefinition("test"), false); + assertThatThrownBy(() -> metadata.createView(SESSION, test, testingViewDefinition("test"), false)) + .isInstanceOf(TrinoException.class) + .hasMessage("View already exists: test.test_view"); } @Test diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestRaptorSplitManager.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestRaptorSplitManager.java index d8d1a1035d23..0d038ef3e243 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestRaptorSplitManager.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestRaptorSplitManager.java @@ -39,9 +39,11 @@ import io.trino.testing.TestingNodeManager; import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Jdbi; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.IOException; import java.net.URI; @@ -66,9 +68,13 @@ import static java.nio.file.Files.createTempDirectory; import static java.util.concurrent.TimeUnit.MINUTES; import static java.util.stream.Collectors.toList; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestRaptorSplitManager { private static final ConnectorTableMetadata TEST_TABLE = tableMetadataBuilder(new SchemaTableName("demo", "test_table")) @@ -85,7 +91,7 @@ public class TestRaptorSplitManager private ShardManager shardManager; private long tableId; - @BeforeMethod + @BeforeEach public void setup() throws Exception { @@ -127,7 +133,7 @@ public void setup() raptorSplitManager = new RaptorSplitManager(connectorId, nodeSupplier, shardManager, false); } - @AfterMethod(alwaysRun = true) + @AfterEach public void teardown() throws IOException { @@ -147,13 +153,17 @@ public void testSanity() assertEquals(splitCount, 4); } - @Test(expectedExceptions = TrinoException.class, expectedExceptionsMessageRegExp = "No host for shard .* found: \\[\\]") + @Test public void testNoHostForShard() { - deleteShardNodes(); - - ConnectorSplitSource splitSource = getSplits(raptorSplitManager, tableHandle); - getSplits(splitSource, 1000); + assertThatThrownBy(() -> { + deleteShardNodes(); + + ConnectorSplitSource splitSource = getSplits(raptorSplitManager, tableHandle); + getSplits(splitSource, 1000); + }) + .isInstanceOf(TrinoException.class) + .hasMessageMatching("No host for shard .* found: \\[\\]"); } @Test @@ -173,14 +183,18 @@ public void testAssignRandomNodeWhenBackupAvailable() assertEquals(getOnlyElement(getOnlyElement(batch).getAddresses()), node.getHostAndPort()); } - @Test(expectedExceptions = TrinoException.class, expectedExceptionsMessageRegExp = "No nodes available to run query") + @Test public void testNoNodes() { - deleteShardNodes(); - - RaptorSplitManager raptorSplitManagerWithBackup = new RaptorSplitManager(new CatalogName("fbraptor"), ImmutableSet::of, shardManager, true); - ConnectorSplitSource splitSource = getSplits(raptorSplitManagerWithBackup, tableHandle); - getSplits(splitSource, 1000); + assertThatThrownBy(() -> { + deleteShardNodes(); + + RaptorSplitManager raptorSplitManagerWithBackup = new RaptorSplitManager(new CatalogName("fbraptor"), ImmutableSet::of, shardManager, true); + ConnectorSplitSource splitSource = getSplits(raptorSplitManagerWithBackup, tableHandle); + getSplits(splitSource, 1000); + }) + .isInstanceOf(TrinoException.class) + .hasMessage("No nodes available to run query"); } private void deleteShardNodes() diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardCleaner.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardCleaner.java index a8575a2f5e5f..e52c35c1b54c 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardCleaner.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardCleaner.java @@ -28,9 +28,11 @@ import org.jdbi.v3.sqlobject.config.RegisterArgumentFactory; import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys; import org.jdbi.v3.sqlobject.statement.SqlUpdate; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.File; import java.io.IOException; @@ -53,11 +55,14 @@ import static java.util.UUID.randomUUID; import static java.util.concurrent.TimeUnit.HOURS; import static java.util.concurrent.TimeUnit.MILLISECONDS; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestShardCleaner { private Jdbi dbi; @@ -68,7 +73,7 @@ public class TestShardCleaner private TestingTicker ticker; private ShardCleaner cleaner; - @BeforeMethod + @BeforeEach public void setup() throws IOException { @@ -105,7 +110,7 @@ public void setup() config.getMaxCompletedTransactionAge()); } - @AfterMethod(alwaysRun = true) + @AfterEach public void teardown() throws IOException { diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardCleanerConfig.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardCleanerConfig.java index 9c4710d7acaf..92fff624f373 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardCleanerConfig.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardCleanerConfig.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableMap; import io.airlift.units.Duration; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardDao.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardDao.java index 485ca7741af2..d5f018e943ee 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardDao.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardDao.java @@ -18,9 +18,11 @@ import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Jdbi; import org.jdbi.v3.core.statement.UnableToExecuteStatementException; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.sql.SQLException; import java.util.OptionalInt; @@ -32,19 +34,22 @@ import static io.trino.plugin.raptor.legacy.DatabaseTesting.createTestingJdbi; import static io.trino.plugin.raptor.legacy.metadata.SchemaDaoUtil.createTablesWithRetry; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestShardDao { private TestingShardDao dao; private Jdbi dbi; private Handle dummyHandle; - @BeforeMethod + @BeforeEach public void setup() { dbi = createTestingJdbi(); @@ -53,7 +58,7 @@ public void setup() createTablesWithRetry(dbi); } - @AfterMethod(alwaysRun = true) + @AfterEach public void teardown() { dummyHandle.close(); diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardPredicate.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardPredicate.java index cc8e69d82c0d..109f0e49d0c8 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardPredicate.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/metadata/TestShardPredicate.java @@ -20,7 +20,7 @@ import io.trino.plugin.raptor.legacy.RaptorColumnHandle; import io.trino.spi.predicate.SortedRangeSet; import io.trino.spi.predicate.TupleDomain; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.airlift.slice.Slices.utf8Slice; import static io.trino.plugin.raptor.legacy.RaptorColumnHandle.bucketNumberColumnHandle; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/security/TestRaptorFileBasedSecurity.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/security/TestRaptorFileBasedSecurity.java index 25aa8f9e8169..95beca87bb85 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/security/TestRaptorFileBasedSecurity.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/security/TestRaptorFileBasedSecurity.java @@ -19,21 +19,26 @@ import io.trino.spi.security.Identity; import io.trino.testing.QueryRunner; import io.trino.tpch.TpchTable; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.File; import static io.trino.plugin.raptor.legacy.RaptorQueryRunner.createRaptorQueryRunner; import static io.trino.testing.TestingSession.testSessionBuilder; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestRaptorFileBasedSecurity { - private QueryRunner queryRunner; + private final QueryRunner queryRunner; - @BeforeClass - public void setUp() + public TestRaptorFileBasedSecurity() throws Exception { String path = new File(Resources.getResource(getClass(), "security.json").toURI()).getPath(); @@ -44,11 +49,10 @@ public void setUp() ImmutableMap.of("security.config-file", path, "raptor.security", "file")); } - @AfterClass(alwaysRun = true) + @AfterAll public void tearDown() { queryRunner.close(); - queryRunner = null; } @Test @@ -58,11 +62,15 @@ public void testAdminCanRead() queryRunner.execute(admin, "SELECT * FROM orders"); } - @Test(expectedExceptions = RuntimeException.class, expectedExceptionsMessageRegExp = ".*Access Denied: Cannot select from table tpch.orders.*") + @Test public void testNonAdminCannotRead() { - Session bob = getSession("bob"); - queryRunner.execute(bob, "SELECT * FROM orders"); + assertThatThrownBy(() -> { + Session bob = getSession("bob"); + queryRunner.execute(bob, "SELECT * FROM orders"); + }) + .isInstanceOf(RuntimeException.class) + .hasMessageMatching(".*Access Denied: Cannot select from table tpch.orders.*"); } private Session getSession(String user) diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/security/TestRaptorReadOnlySecurity.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/security/TestRaptorReadOnlySecurity.java index 92db9439fa4c..5f17c2143a6b 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/security/TestRaptorReadOnlySecurity.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/security/TestRaptorReadOnlySecurity.java @@ -16,33 +16,23 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import io.trino.testing.QueryRunner; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import static io.trino.plugin.raptor.legacy.RaptorQueryRunner.createRaptorQueryRunner; +import static org.assertj.core.api.Assertions.assertThatThrownBy; public class TestRaptorReadOnlySecurity { - private QueryRunner queryRunner; - - @BeforeClass - public void setUp() - throws Exception - { - queryRunner = createRaptorQueryRunner(ImmutableMap.of(), ImmutableList.of(), false, ImmutableMap.of("raptor.security", "read-only")); - } - - @AfterClass(alwaysRun = true) - public void tearDown() - { - queryRunner.close(); - queryRunner = null; - } - - @Test(expectedExceptions = RuntimeException.class, expectedExceptionsMessageRegExp = ".*Access Denied: Cannot create .*") + @Test public void testCannotWrite() + throws Exception { - queryRunner.execute("CREATE TABLE test_create (a bigint, b double, c varchar)"); + try (QueryRunner queryRunner = createRaptorQueryRunner(ImmutableMap.of(), ImmutableList.of(), false, ImmutableMap.of("raptor.security", "read-only"))) { + assertThatThrownBy(() -> { + queryRunner.execute("CREATE TABLE test_create (a bigint, b double, c varchar)"); + }) + .isInstanceOf(RuntimeException.class) + .hasMessageMatching(".*Access Denied: Cannot create .*"); + } } } diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/security/TestRaptorSecurityConfig.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/security/TestRaptorSecurityConfig.java index eab26443f5df..449067454b2f 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/security/TestRaptorSecurityConfig.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/security/TestRaptorSecurityConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.raptor.legacy.security; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestBucketBalancer.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestBucketBalancer.java index 33db3766f939..fbaabf8961b9 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestBucketBalancer.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestBucketBalancer.java @@ -32,9 +32,11 @@ import io.trino.testing.TestingNodeManager; import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Jdbi; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.net.URI; import java.util.List; @@ -50,9 +52,12 @@ import static io.trino.plugin.raptor.legacy.metadata.TestDatabaseShardManager.createShardManager; import static io.trino.spi.type.BigintType.BIGINT; import static java.util.concurrent.TimeUnit.DAYS; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestBucketBalancer { private static final List AVAILABLE_WORKERS = ImmutableList.of("node1", "node2", "node3", "node4", "node5"); @@ -64,7 +69,7 @@ public class TestBucketBalancer private MetadataDao metadataDao; private BucketBalancer balancer; - @BeforeMethod + @BeforeEach public void setup() { dbi = createTestingJdbi(); @@ -81,7 +86,7 @@ public void setup() balancer = new BucketBalancer(nodeSupplier, shardManager, true, new Duration(1, DAYS), true, true, "test"); } - @AfterMethod(alwaysRun = true) + @AfterEach public void teardown() { if (dummyHandle != null) { diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestBucketBalancerConfig.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestBucketBalancerConfig.java index f4a2b7edbebe..6b91e65febf6 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestBucketBalancerConfig.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestBucketBalancerConfig.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableMap; import io.airlift.units.Duration; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestFileStorageService.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestFileStorageService.java index a3fedd7d949b..c6abfcacd9f3 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestFileStorageService.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestFileStorageService.java @@ -14,9 +14,11 @@ package io.trino.plugin.raptor.legacy.storage; import com.google.common.collect.ImmutableSet; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.File; import java.io.IOException; @@ -30,19 +32,22 @@ import static java.lang.String.format; import static java.nio.file.Files.createTempDirectory; import static java.util.UUID.randomUUID; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; import static org.testng.FileAssert.assertDirectory; import static org.testng.FileAssert.assertFile; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestFileStorageService { private Path temporary; private FileStorageService store; - @BeforeMethod + @BeforeEach public void setup() throws IOException { @@ -51,7 +56,7 @@ public void setup() store.start(); } - @AfterMethod(alwaysRun = true) + @AfterEach public void tearDown() throws Exception { diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestMissingShardComparator.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestMissingShardComparator.java index f6edb5b1b8dc..00dfc546ec0a 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestMissingShardComparator.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestMissingShardComparator.java @@ -13,7 +13,7 @@ */ package io.trino.plugin.raptor.legacy.storage; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.plugin.raptor.legacy.storage.ShardRecoveryManager.MissingShardComparator; import static io.trino.plugin.raptor.legacy.storage.ShardRecoveryManager.MissingShardRunnable; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestOrcFileRewriter.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestOrcFileRewriter.java index 8ca7727d3eb6..9f9da1c14827 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestOrcFileRewriter.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestOrcFileRewriter.java @@ -28,9 +28,10 @@ import io.trino.spi.type.Type; import io.trino.spi.type.TypeId; import io.trino.spi.type.TypeSignatureParameter; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.File; import java.io.IOException; @@ -59,26 +60,28 @@ import static java.nio.file.Files.createTempDirectory; import static java.nio.file.Files.readAllBytes; import static java.util.UUID.randomUUID; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; -@Test(singleThreaded = true) +@TestInstance(PER_CLASS) +@Execution(SAME_THREAD) public class TestOrcFileRewriter { private static final JsonCodec METADATA_CODEC = jsonCodec(OrcFileMetadata.class); - private Path temporary; + private final Path temporary; - @BeforeClass - public void setup() + public TestOrcFileRewriter() throws IOException { temporary = createTempDirectory(null); } - @AfterClass(alwaysRun = true) + @AfterAll public void tearDown() throws Exception { diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestRaptorStorageManager.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestRaptorStorageManager.java index 458698d9ea38..adce54990608 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestRaptorStorageManager.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestRaptorStorageManager.java @@ -49,9 +49,11 @@ import org.joda.time.DateTime; import org.joda.time.Days; import org.joda.time.chrono.ISOChronology; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.File; import java.io.IOException; @@ -96,6 +98,8 @@ import static java.nio.file.Files.createTempDirectory; import static org.assertj.core.api.Assertions.assertThat; import static org.joda.time.DateTimeZone.UTC; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotEquals; @@ -106,7 +110,8 @@ import static org.testng.FileAssert.assertDirectory; import static org.testng.FileAssert.assertFile; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestRaptorStorageManager { private static final ISOChronology UTC_CHRONOLOGY = ISOChronology.getInstanceUTC(); @@ -134,7 +139,7 @@ public class TestRaptorStorageManager private Optional backupStore; private InMemoryShardRecorder shardRecorder; - @BeforeMethod + @BeforeEach public void setup() throws IOException { @@ -159,7 +164,7 @@ public void setup() shardRecorder = new InMemoryShardRecorder(); } - @AfterMethod(alwaysRun = true) + @AfterEach public void tearDown() throws Exception { diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestShardEjector.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestShardEjector.java index 5efdbbb752e3..3756fbdcc921 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestShardEjector.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestShardEjector.java @@ -30,9 +30,11 @@ import io.trino.testing.TestingNodeManager; import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Jdbi; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.RepeatedTest; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.File; import java.io.IOException; @@ -55,11 +57,14 @@ import static java.util.UUID.randomUUID; import static java.util.concurrent.TimeUnit.HOURS; import static java.util.stream.Collectors.toSet; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestShardEjector { private Jdbi dbi; @@ -68,7 +73,7 @@ public class TestShardEjector private Path dataDir; private StorageService storageService; - @BeforeMethod + @BeforeEach public void setup() throws IOException { @@ -82,7 +87,7 @@ public void setup() storageService.start(); } - @AfterMethod(alwaysRun = true) + @AfterEach public void teardown() throws Exception { @@ -95,7 +100,7 @@ public void teardown() } } - @Test(invocationCount = 20) + @RepeatedTest(20) public void testEjector() throws Exception { diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestShardRecovery.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestShardRecovery.java index 2a98d916d6a2..739eac07cf32 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestShardRecovery.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestShardRecovery.java @@ -23,9 +23,11 @@ import io.trino.testing.TestingNodeManager; import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Jdbi; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.File; import java.io.IOException; @@ -48,13 +50,17 @@ import static java.nio.file.Files.createTempFile; import static java.nio.file.Files.writeString; import static java.util.concurrent.TimeUnit.MINUTES; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestShardRecovery { private StorageService storageService; @@ -63,7 +69,7 @@ public class TestShardRecovery private Path temporary; private FileBackupStore backupStore; - @BeforeMethod + @BeforeEach public void setup() throws IOException { @@ -82,7 +88,7 @@ public void setup() recoveryManager = createShardRecoveryManager(storageService, Optional.of(backupStore), shardManager); } - @AfterMethod(alwaysRun = true) + @AfterEach public void tearDown() throws Exception { @@ -235,10 +241,14 @@ public void testShardRecoveryBackupChecksumMismatch() assertTrue(getOnlyElement(quarantined).startsWith(shardUuid + ".orc.corrupt")); } - @Test(expectedExceptions = TrinoException.class, expectedExceptionsMessageRegExp = "No backup file found for shard: .*") + @Test public void testNoBackupException() { - recoveryManager.restoreFromBackup(UUID.randomUUID(), 0, OptionalLong.empty()); + assertThatThrownBy(() -> { + recoveryManager.restoreFromBackup(UUID.randomUUID(), 0, OptionalLong.empty()); + }) + .isInstanceOf(TrinoException.class) + .hasMessageMatching("No backup file found for shard: .*"); } public static ShardRecoveryManager createShardRecoveryManager( diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestShardWriter.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestShardWriter.java index 02b8a99bd321..3979a5c1588a 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestShardWriter.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestShardWriter.java @@ -28,9 +28,10 @@ import io.trino.spi.type.Type; import io.trino.spi.type.TypeId; import io.trino.spi.type.TypeSignatureParameter; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.File; import java.io.IOException; @@ -56,25 +57,28 @@ import static io.trino.testing.StructuralTestUtil.sqlMapOf; import static io.trino.type.InternalTypeManager.TESTING_TYPE_MANAGER; import static java.nio.file.Files.createTempDirectory; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestShardWriter { - private Path directory; + private final Path directory; private static final JsonCodec METADATA_CODEC = jsonCodec(OrcFileMetadata.class); - @BeforeClass - public void setup() + public TestShardWriter() throws IOException { directory = createTempDirectory(null); } - @AfterClass(alwaysRun = true) + @AfterAll public void tearDown() throws Exception { diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestStorageManagerConfig.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestStorageManagerConfig.java index 57116c729648..17deeaeb059e 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestStorageManagerConfig.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/TestStorageManagerConfig.java @@ -17,7 +17,7 @@ import io.airlift.units.DataSize; import io.airlift.units.Duration; import jakarta.validation.constraints.NotNull; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.File; import java.util.Map; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestCompactionSetCreator.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestCompactionSetCreator.java index 3667ca650e3d..82c6c14a95b7 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestCompactionSetCreator.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestCompactionSetCreator.java @@ -18,7 +18,7 @@ import io.airlift.units.DataSize; import io.trino.plugin.raptor.legacy.metadata.Table; import io.trino.spi.type.Type; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.time.Duration; import java.util.HashSet; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardCompactor.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardCompactor.java index 5e64812b8daf..ca6a3d739575 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardCompactor.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardCompactor.java @@ -36,9 +36,11 @@ import io.trino.testing.MaterializedRow; import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Jdbi; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.IOException; import java.nio.file.Path; @@ -67,9 +69,12 @@ import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toSet; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestShardCompactor { private static final int MAX_SHARD_ROWS = 1000; @@ -85,7 +90,7 @@ public class TestShardCompactor private Path temporary; private Handle dummyHandle; - @BeforeMethod + @BeforeEach public void setup() throws IOException { @@ -96,7 +101,7 @@ public void setup() compactor = new ShardCompactor(storageManager, READER_OPTIONS, new TypeOperators()); } - @AfterMethod(alwaysRun = true) + @AfterEach public void tearDown() throws Exception { diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardOrganizationManager.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardOrganizationManager.java index 9a875396d528..17f99cf2bf36 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardOrganizationManager.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardOrganizationManager.java @@ -21,9 +21,11 @@ import io.trino.spi.type.Type; import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Jdbi; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.util.List; import java.util.Optional; @@ -47,9 +49,12 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.concurrent.TimeUnit.MINUTES; import static java.util.stream.Collectors.toSet; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestShardOrganizationManager { private Jdbi dbi; @@ -62,7 +67,7 @@ public class TestShardOrganizationManager private static final List types = ImmutableList.of(BIGINT, VARCHAR, DATE, TIMESTAMP_MILLIS); - @BeforeMethod + @BeforeEach public void setup() { dbi = createTestingJdbi(); @@ -73,7 +78,7 @@ public void setup() createTablesWithRetry(dbi); } - @AfterMethod(alwaysRun = true) + @AfterEach public void teardown() { dummyHandle.close(); diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardOrganizer.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardOrganizer.java index d633aedc8403..5fff0cc87dc4 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardOrganizer.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardOrganizer.java @@ -14,7 +14,8 @@ package io.trino.plugin.raptor.legacy.storage.organization; import com.google.common.collect.ImmutableSet; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Timeout; import java.util.OptionalInt; import java.util.Set; @@ -29,7 +30,8 @@ public class TestShardOrganizer { - @Test(timeOut = 5_000) + @Test + @Timeout(5) public void testShardOrganizerInProgress() throws Exception { diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardOrganizerUtil.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardOrganizerUtil.java index e3e2eb9cb7fb..8e197063adfb 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardOrganizerUtil.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardOrganizerUtil.java @@ -30,9 +30,11 @@ import io.trino.spi.type.Type; import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Jdbi; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.File; import java.nio.file.Files; @@ -58,9 +60,12 @@ import static io.trino.spi.type.VarcharType.VARCHAR; import static io.trino.spi.type.VarcharType.createVarcharType; import static io.trino.testing.TestingConnectorSession.SESSION; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestShardOrganizerUtil { private static final List COLUMNS = ImmutableList.of( @@ -75,7 +80,7 @@ public class TestShardOrganizerUtil private MetadataDao metadataDao; private ConnectorMetadata metadata; - @BeforeMethod + @BeforeEach public void setup() throws Exception { @@ -90,7 +95,7 @@ public void setup() shardManager = createShardManager(dbi); } - @AfterMethod(alwaysRun = true) + @AfterEach public void teardown() throws Exception { diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardRange.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardRange.java index 869f941cd789..1dbcf0d1c284 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardRange.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestShardRange.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableList; import io.trino.spi.type.Type; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.List; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestTemporalFunction.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestTemporalFunction.java index 536dfd2aa4f4..2adf82c17483 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestTemporalFunction.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestTemporalFunction.java @@ -16,7 +16,7 @@ import io.trino.spi.block.Block; import io.trino.spi.block.BlockBuilder; import org.joda.time.DateTime; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.time.Duration; diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestTuple.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestTuple.java index 344be5490c89..f42eec0b460b 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestTuple.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/storage/organization/TestTuple.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableList; import io.trino.spi.type.Type; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.List; @@ -28,6 +28,7 @@ import static io.trino.spi.type.TimestampType.TIMESTAMP_MILLIS; import static io.trino.spi.type.VarcharType.VARCHAR; import static io.trino.spi.type.VarcharType.createVarcharType; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.testng.Assert.assertEquals; public class TestTuple @@ -47,13 +48,17 @@ public void testComparableTuple() assertGreaterThan(tuple1.compareTo(lessThanTuple1), 0); } - @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "types must be the same") + @Test public void testMismatchedTypes() { - List types1 = ImmutableList.of(createVarcharType(3)); - List types2 = ImmutableList.of(createVarcharType(4)); - Tuple tuple1 = new Tuple(types1, ImmutableList.of("abc")); - Tuple tuple2 = new Tuple(types2, ImmutableList.of("abcd")); - tuple1.compareTo(tuple2); + assertThatThrownBy(() -> { + List types1 = ImmutableList.of(createVarcharType(3)); + List types2 = ImmutableList.of(createVarcharType(4)); + Tuple tuple1 = new Tuple(types1, ImmutableList.of("abc")); + Tuple tuple2 = new Tuple(types2, ImmutableList.of("abcd")); + tuple1.compareTo(tuple2); + }) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("types must be the same"); } } diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/systemtables/TestShardMetadataRecordCursor.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/systemtables/TestShardMetadataRecordCursor.java index 3753f3a02075..48a05cdc6e66 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/systemtables/TestShardMetadataRecordCursor.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/systemtables/TestShardMetadataRecordCursor.java @@ -35,9 +35,11 @@ import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Jdbi; import org.joda.time.DateTime; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.util.ArrayList; import java.util.List; @@ -60,9 +62,12 @@ import static io.trino.testing.MaterializedResult.DEFAULT_PRECISION; import static io.trino.testing.TestingConnectorSession.SESSION; import static java.util.stream.Collectors.toList; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestShardMetadataRecordCursor { private static final SchemaTableName DEFAULT_TEST_ORDERS = new SchemaTableName("test", "orders"); @@ -71,7 +76,7 @@ public class TestShardMetadataRecordCursor private ConnectorMetadata metadata; private Jdbi dbi; - @BeforeMethod + @BeforeEach public void setup() { dbi = createTestingJdbi(); @@ -88,7 +93,7 @@ public void setup() createTable(table); } - @AfterMethod(alwaysRun = true) + @AfterEach public void teardown() { dummyHandle.close(); diff --git a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/util/TestPrioritizedFifoExecutor.java b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/util/TestPrioritizedFifoExecutor.java index 822f5e18754d..78e51c1922fa 100644 --- a/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/util/TestPrioritizedFifoExecutor.java +++ b/plugin/trino-raptor-legacy/src/test/java/io/trino/plugin/raptor/legacy/util/TestPrioritizedFifoExecutor.java @@ -13,9 +13,11 @@ */ package io.trino.plugin.raptor.legacy.util; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.util.ArrayList; import java.util.Comparator; @@ -29,24 +31,27 @@ import static com.google.common.util.concurrent.Uninterruptibles.awaitUninterruptibly; import static java.util.concurrent.Executors.newCachedThreadPool; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_METHOD; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; -@Test(singleThreaded = true) +@TestInstance(PER_METHOD) +@Execution(SAME_THREAD) public class TestPrioritizedFifoExecutor { private static final Comparator DUMMY_COMPARATOR = (o1, o2) -> 0; private ExecutorService executor; - @BeforeMethod + @BeforeEach public void setUp() { executor = newCachedThreadPool(); } - @AfterMethod(alwaysRun = true) + @AfterEach public void tearDown() { executor.shutdownNow(); diff --git a/plugin/trino-redis/src/test/java/io/trino/plugin/redis/BaseRedisConnectorTest.java b/plugin/trino-redis/src/test/java/io/trino/plugin/redis/BaseRedisConnectorTest.java index 90f929c11f2c..268cb817d481 100644 --- a/plugin/trino-redis/src/test/java/io/trino/plugin/redis/BaseRedisConnectorTest.java +++ b/plugin/trino-redis/src/test/java/io/trino/plugin/redis/BaseRedisConnectorTest.java @@ -16,7 +16,7 @@ import io.trino.sql.planner.plan.FilterNode; import io.trino.testing.BaseConnectorTest; import io.trino.testing.TestingConnectorBehavior; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; diff --git a/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftConfig.java b/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftConfig.java index 2b516055d33d..90b912746ba8 100644 --- a/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftConfig.java +++ b/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.redshift; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftPlugin.java b/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftPlugin.java index f5a13eae1039..a1d9b6ab73b9 100644 --- a/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftPlugin.java +++ b/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftPlugin.java @@ -17,7 +17,7 @@ import io.trino.spi.Plugin; import io.trino.spi.connector.ConnectorFactory; import io.trino.testing.TestingConnectorContext; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.google.common.collect.Iterables.getOnlyElement; diff --git a/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftTableStatisticsReader.java b/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftTableStatisticsReader.java index 5a2b85eb3856..fe471829e926 100644 --- a/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftTableStatisticsReader.java +++ b/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftTableStatisticsReader.java @@ -34,8 +34,7 @@ import io.trino.testing.sql.TestTable; import org.assertj.core.api.InstanceOfAssertFactories; import org.assertj.core.api.SoftAssertions; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.sql.Types; import java.util.List; @@ -78,17 +77,10 @@ public class TestRedshiftTableStatisticsReader createVarcharJdbcColumnHandle("mktsegment", 10), createVarcharJdbcColumnHandle("comment", 117)); - private RedshiftTableStatisticsReader statsReader; - - @BeforeClass - public void setup() - { - DriverConnectionFactory connectionFactory = new DriverConnectionFactory( - new Driver(), - new BaseJdbcConfig().setConnectionUrl(JDBC_URL), - new StaticCredentialProvider(Optional.of(JDBC_USER), Optional.of(JDBC_PASSWORD))); - statsReader = new RedshiftTableStatisticsReader(connectionFactory); - } + private final RedshiftTableStatisticsReader statsReader = new RedshiftTableStatisticsReader(new DriverConnectionFactory( + new Driver(), + new BaseJdbcConfig().setConnectionUrl(JDBC_URL), + new StaticCredentialProvider(Optional.of(JDBC_USER), Optional.of(JDBC_PASSWORD)))); @Override protected QueryRunner createQueryRunner() diff --git a/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftTypeMapping.java b/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftTypeMapping.java index 64d8d04616c2..b2ea6798863b 100644 --- a/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftTypeMapping.java +++ b/plugin/trino-redshift/src/test/java/io/trino/plugin/redshift/TestRedshiftTypeMapping.java @@ -27,9 +27,7 @@ import io.trino.testing.sql.SqlExecutor; import io.trino.testing.sql.TestTable; import io.trino.testing.sql.TrinoSqlExecutor; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.sql.SQLException; import java.time.LocalDate; @@ -103,8 +101,7 @@ public class TestRedshiftTypeMapping private final LocalDate dayOfMidnightGapInVilnius = LocalDate.of(1983, 4, 1); private final LocalDate dayAfterMidnightSetBackInVilnius = LocalDate.of(1983, 10, 1); - @BeforeClass - public void checkRanges() + public TestRedshiftTypeMapping() { // Timestamps checkIsGap(jvmZone, timeGapInJvmZone); @@ -373,8 +370,17 @@ public void testUnsupportedTrinoDataTypes() "Unsupported column type: json"); } - @Test(dataProvider = "datetime_test_parameters") - public void testDate(ZoneId sessionZone) + @Test + public void testDate() + { + testDate(UTC); + testDate(jvmZone); + testDate(vilnius); + testDate(kathmandu); + testDate(testZone); + } + + private void testDate(ZoneId sessionZone) { Session session = Session.builder(getSession()) .setTimeZoneKey(getTimeZoneKey(sessionZone.getId())) @@ -403,8 +409,17 @@ public void testDate(ZoneId sessionZone) .execute(getQueryRunner(), session, redshiftCreateAndInsert("test_date")); } - @Test(dataProvider = "datetime_test_parameters") - public void testTime(ZoneId sessionZone) + @Test + public void testTime() + { + testTime(UTC); + testTime(jvmZone); + testTime(vilnius); + testTime(kathmandu); + testTime(testZone); + } + + private void testTime(ZoneId sessionZone) { // Redshift gets bizarre errors if you try to insert after // specifying precision for a time column. @@ -437,7 +452,17 @@ private static SqlDataTypeTest timeTypeTests(String inputType) .addRoundTrip(inputType, "TIME '23:59:59.999999'", createTimeType(6), "TIME '23:59:59.999999'"); } - @Test(dataProvider = "datetime_test_parameters") + @Test + public void testTimestamp() + { + testTimestamp(UTC); + testTimestamp(jvmZone); + testTimestamp(vilnius); + testTimestamp(kathmandu); + testTimestamp(testZone); + } + + @Test public void testTimestamp(ZoneId sessionZone) { Session session = Session.builder(getSession()) @@ -476,8 +501,17 @@ private static SqlDataTypeTest timestampTypeTests(String inputType) .addRoundTrip(inputType, "TIMESTAMP '1970-01-01 00:00:00.999999'", createTimestampType(6), "TIMESTAMP '1970-01-01 00:00:00.999999'"); } - @Test(dataProvider = "datetime_test_parameters") - public void testTimestampWithTimeZone(ZoneId sessionZone) + @Test + public void testTimestampWithTimeZone() + { + testTimestampWithTimeZone(UTC); + testTimestampWithTimeZone(jvmZone); + testTimestampWithTimeZone(vilnius); + testTimestampWithTimeZone(kathmandu); + testTimestampWithTimeZone(testZone); + } + + private void testTimestampWithTimeZone(ZoneId sessionZone) { Session session = Session.builder(getSession()) .setTimeZoneKey(getTimeZoneKey(sessionZone.getId())) @@ -630,18 +664,6 @@ public void testTimestampWithTimeZoneOverflow() } } - @DataProvider(name = "datetime_test_parameters") - public Object[][] dataProviderForDatetimeTests() - { - return new Object[][] { - {UTC}, - {jvmZone}, - {vilnius}, - {kathmandu}, - {testZone}, - }; - } - @Test public void testUnsupportedDateTimeTypes() { diff --git a/plugin/trino-resource-group-managers/pom.xml b/plugin/trino-resource-group-managers/pom.xml index c81e30caceee..6caf81b2f6f8 100644 --- a/plugin/trino-resource-group-managers/pom.xml +++ b/plugin/trino-resource-group-managers/pom.xml @@ -193,6 +193,12 @@ test + + io.airlift + junit-extensions + test + + io.airlift testing @@ -211,6 +217,18 @@ test + + org.junit.jupiter + junit-jupiter-api + test + + + + org.junit.jupiter + junit-jupiter-engine + test + + org.testcontainers jdbc @@ -247,4 +265,26 @@ test + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + org.apache.maven.surefire + surefire-junit-platform + ${dep.plugin.surefire.version} + + + org.apache.maven.surefire + surefire-testng + ${dep.plugin.surefire.version} + + + + + diff --git a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestFileResourceGroupConfig.java b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestFileResourceGroupConfig.java index 253c01a84bab..4974a7754fc5 100644 --- a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestFileResourceGroupConfig.java +++ b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestFileResourceGroupConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.resourcegroups; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.nio.file.Files; diff --git a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestFileResourceGroupConfigurationManager.java b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestFileResourceGroupConfigurationManager.java index 567444f20ced..939c1741f03d 100644 --- a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestFileResourceGroupConfigurationManager.java +++ b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestFileResourceGroupConfigurationManager.java @@ -23,7 +23,7 @@ import io.trino.spi.resourcegroups.SelectionContext; import io.trino.spi.resourcegroups.SelectionCriteria; import io.trino.spi.session.ResourceEstimates; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.time.Duration; import java.util.Optional; diff --git a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestResourceGroupIdTemplate.java b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestResourceGroupIdTemplate.java index 027731f6322d..74e038862f67 100644 --- a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestResourceGroupIdTemplate.java +++ b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestResourceGroupIdTemplate.java @@ -19,11 +19,12 @@ import io.trino.spi.resourcegroups.SelectionContext; import io.trino.spi.resourcegroups.SelectionCriteria; import io.trino.spi.session.ResourceEstimates; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Optional; import java.util.regex.Pattern; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; @@ -78,23 +79,31 @@ public void testNoMatch() assertFalse(selector.match(context).isPresent()); } - @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "unresolved variables \\[user\\] in resource group ID.*") + @Test public void testUnresolvedVariableLoadTime() { - ResourceGroupIdTemplate template = new ResourceGroupIdTemplate("test.pipeline.${pipeline}.${user}"); - Pattern sourcePattern = Pattern.compile("scheduler.important.(?[^\\[]*).*"); - StaticSelector selector = new StaticSelector(Optional.empty(), Optional.empty(), Optional.of(sourcePattern), Optional.empty(), Optional.empty(), Optional.empty(), template); - SelectionCriteria context = new SelectionCriteria(true, "user", ImmutableSet.of(), Optional.of("scheduler.important.testpipeline[5]"), ImmutableSet.of(), EMPTY_RESOURCE_ESTIMATES, Optional.empty()); - selector.match(context); + assertThatThrownBy(() -> { + ResourceGroupIdTemplate template = new ResourceGroupIdTemplate("test.pipeline.${pipeline}.${user}"); + Pattern sourcePattern = Pattern.compile("scheduler.important.(?[^\\[]*).*"); + StaticSelector selector = new StaticSelector(Optional.empty(), Optional.empty(), Optional.of(sourcePattern), Optional.empty(), Optional.empty(), Optional.empty(), template); + SelectionCriteria context = new SelectionCriteria(true, "user", ImmutableSet.of(), Optional.of("scheduler.important.testpipeline[5]"), ImmutableSet.of(), EMPTY_RESOURCE_ESTIMATES, Optional.empty()); + selector.match(context); + }) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageMatching("unresolved variables \\[user\\] in resource group ID.*"); } - @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = "unresolved variable 'pipeline' in resource group '\\$\\{pipeline\\}', available.*") + @Test public void testUnresolvedVariableRunTime() { - ResourceGroupIdTemplate template = new ResourceGroupIdTemplate("test.pipeline.${pipeline}.${USER}"); - Pattern sourcePattern = Pattern.compile("scheduler.important.(testpipeline\\[|(?[^\\[]*)).*"); - StaticSelector selector = new StaticSelector(Optional.empty(), Optional.empty(), Optional.of(sourcePattern), Optional.empty(), Optional.empty(), Optional.empty(), template); - SelectionCriteria context = new SelectionCriteria(true, "user", ImmutableSet.of(), Optional.of("scheduler.important.testpipeline[5]"), ImmutableSet.of(), EMPTY_RESOURCE_ESTIMATES, Optional.empty()); - selector.match(context); + assertThatThrownBy(() -> { + ResourceGroupIdTemplate template = new ResourceGroupIdTemplate("test.pipeline.${pipeline}.${USER}"); + Pattern sourcePattern = Pattern.compile("scheduler.important.(testpipeline\\[|(?[^\\[]*)).*"); + StaticSelector selector = new StaticSelector(Optional.empty(), Optional.empty(), Optional.of(sourcePattern), Optional.empty(), Optional.empty(), Optional.empty(), template); + SelectionCriteria context = new SelectionCriteria(true, "user", ImmutableSet.of(), Optional.of("scheduler.important.testpipeline[5]"), ImmutableSet.of(), EMPTY_RESOURCE_ESTIMATES, Optional.empty()); + selector.match(context); + }) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageMatching("unresolved variable 'pipeline' in resource group '\\$\\{pipeline\\}', available.*"); } } diff --git a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestStaticSelector.java b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestStaticSelector.java index 0142361b7952..2d5bfb2100e3 100644 --- a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestStaticSelector.java +++ b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/TestStaticSelector.java @@ -22,7 +22,7 @@ import io.trino.spi.resourcegroups.SelectionContext; import io.trino.spi.resourcegroups.SelectionCriteria; import io.trino.spi.session.ResourceEstimates; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Optional; import java.util.Set; diff --git a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/BaseTestDbResourceGroupsFlywayMigration.java b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/BaseTestDbResourceGroupsFlywayMigration.java index f1fc9b59e75b..dcd9780e5061 100644 --- a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/BaseTestDbResourceGroupsFlywayMigration.java +++ b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/BaseTestDbResourceGroupsFlywayMigration.java @@ -15,43 +15,35 @@ import org.jdbi.v3.core.Handle; import org.jdbi.v3.core.Jdbi; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.Isolated; import org.testcontainers.containers.JdbcDatabaseContainer; -import org.testng.annotations.AfterClass; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; import java.util.List; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.SAME_THREAD; import static org.testng.Assert.assertEquals; -@Test(singleThreaded = true) +@TestInstance(PER_CLASS) +@Execution(SAME_THREAD) +@Isolated public abstract class BaseTestDbResourceGroupsFlywayMigration { - protected JdbcDatabaseContainer container; - protected Jdbi jdbi; - - @BeforeClass - public final void setup() - { - container = startContainer(); - jdbi = Jdbi.create(container.getJdbcUrl(), container.getUsername(), container.getPassword()); - } + protected final JdbcDatabaseContainer container = startContainer(); + protected final Jdbi jdbi = Jdbi.create(container.getJdbcUrl(), container.getUsername(), container.getPassword()); protected abstract JdbcDatabaseContainer startContainer(); - @AfterClass(alwaysRun = true) + @AfterAll public final void close() { container.close(); } - @AfterMethod(alwaysRun = true) - public void cleanup() - { - dropAllTables(); - } - @Test public void testMigrationWithEmptyDatabase() { @@ -61,6 +53,8 @@ public void testMigrationWithEmptyDatabase() .setConfigDbPassword(container.getPassword()); FlywayMigration.migrate(config); verifyResourceGroupsSchema(0); + + dropAllTables(); } @Test @@ -82,6 +76,8 @@ public void testMigrationWithNonEmptyDatabase() jdbiHandle.execute(t1Drop); jdbiHandle.execute(t2Drop); jdbiHandle.close(); + + dropAllTables(); } protected void verifyResourceGroupsSchema(long expectedPropertiesCount) diff --git a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupConfig.java b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupConfig.java index 0832722560ab..3fac39267b5c 100644 --- a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupConfig.java +++ b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupConfig.java @@ -16,7 +16,7 @@ import com.google.common.collect.ImmutableMap; import io.airlift.units.Duration; import jakarta.validation.constraints.AssertTrue; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupConfigurationManager.java b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupConfigurationManager.java index 02513b1ad563..8d4c2e33520e 100644 --- a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupConfigurationManager.java +++ b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupConfigurationManager.java @@ -27,7 +27,8 @@ import io.trino.spi.resourcegroups.SelectionCriteria; import io.trino.spi.session.ResourceEstimates; import org.jdbi.v3.core.statement.UnableToExecuteStatementException; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Timeout; import java.time.Duration; import java.util.ArrayList; @@ -177,7 +178,8 @@ public void testMissing() .hasMessage("No matching configuration found for [missing] using [missing]"); } - @Test(timeOut = 60_000) + @Test + @Timeout(60) public void testReconfig() throws Exception { diff --git a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupsMysqlFlywayMigration.java b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupsMysqlFlywayMigration.java index f845586d2c4f..50a31ca2f064 100644 --- a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupsMysqlFlywayMigration.java +++ b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupsMysqlFlywayMigration.java @@ -14,11 +14,10 @@ package io.trino.plugin.resourcegroups.db; import org.jdbi.v3.core.Handle; +import org.junit.jupiter.api.Test; import org.testcontainers.containers.JdbcDatabaseContainer; import org.testcontainers.containers.MySQLContainer; -import org.testng.annotations.Test; -@Test(singleThreaded = true) public class TestDbResourceGroupsMysqlFlywayMigration extends BaseTestDbResourceGroupsFlywayMigration { @@ -43,6 +42,8 @@ public void testMigrationWithOldResourceGroupsSchema() .setConfigDbPassword(container.getPassword()); FlywayMigration.migrate(config); verifyResourceGroupsSchema(1); + + dropAllTables(); } private void createOldSchema() diff --git a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupsOracleFlywayMigration.java b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupsOracleFlywayMigration.java index c4231901e714..4126ec73a87a 100644 --- a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupsOracleFlywayMigration.java +++ b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupsOracleFlywayMigration.java @@ -16,14 +16,12 @@ import org.jdbi.v3.core.Handle; import org.testcontainers.containers.JdbcDatabaseContainer; import org.testcontainers.containers.OracleContainer; -import org.testng.annotations.Test; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Locale; -@Test(singleThreaded = true) public class TestDbResourceGroupsOracleFlywayMigration extends BaseTestDbResourceGroupsFlywayMigration { @@ -82,12 +80,4 @@ private boolean tableExists(Handle jdbiHandle, String tableName) return false; } } - - @Test - public void forceTestNgToRespectSingleThreaded() - { - // TODO: Remove after updating TestNG to 7.4.0+ (https://github.com/trinodb/trino/issues/8571) - // TestNG doesn't enforce @Test(singleThreaded = true) when tests are defined in base class. According to - // https://github.com/cbeust/testng/issues/2361#issuecomment-688393166 a workaround it to add a dummy test to the leaf test class. - } } diff --git a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupsPostgresqlFlywayMigration.java b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupsPostgresqlFlywayMigration.java index 6bda1c6a2008..71fb148caec4 100644 --- a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupsPostgresqlFlywayMigration.java +++ b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbResourceGroupsPostgresqlFlywayMigration.java @@ -15,9 +15,7 @@ import org.testcontainers.containers.JdbcDatabaseContainer; import org.testcontainers.containers.PostgreSQLContainer; -import org.testng.annotations.Test; -@Test(singleThreaded = true) public class TestDbResourceGroupsPostgresqlFlywayMigration extends BaseTestDbResourceGroupsFlywayMigration { @@ -28,12 +26,4 @@ protected final JdbcDatabaseContainer startContainer() container.start(); return container; } - - @Test - public void forceTestNgToRespectSingleThreaded() - { - // TODO: Remove after updating TestNG to 7.4.0+ (https://github.com/trinodb/trino/issues/8571) - // TestNG doesn't enforce @Test(singleThreaded = true) when tests are defined in base class. According to - // https://github.com/cbeust/testng/issues/2361#issuecomment-688393166 a workaround it to add a dummy test to the leaf test class. - } } diff --git a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbSourceExactMatchSelector.java b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbSourceExactMatchSelector.java index 515d28135dc4..e6f9c4ed08a3 100644 --- a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbSourceExactMatchSelector.java +++ b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestDbSourceExactMatchSelector.java @@ -20,8 +20,7 @@ import io.trino.spi.resourcegroups.SelectionContext; import io.trino.spi.resourcegroups.SelectionCriteria; import io.trino.spi.session.ResourceEstimates; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Optional; import java.util.concurrent.ThreadLocalRandom; @@ -35,10 +34,9 @@ public class TestDbSourceExactMatchSelector { private static final JsonCodec CODEC = JsonCodec.jsonCodec(ResourceGroupId.class); private static final ResourceEstimates EMPTY_RESOURCE_ESTIMATES = new ResourceEstimates(Optional.empty(), Optional.empty(), Optional.empty()); - private H2ResourceGroupsDao dao; + private final H2ResourceGroupsDao dao; - @BeforeClass - public void setup() + public TestDbSourceExactMatchSelector() { DbResourceGroupConfig config = new DbResourceGroupConfig().setConfigDbUrl("jdbc:h2:mem:test_db-exact-match-selector" + System.nanoTime() + ThreadLocalRandom.current().nextLong()); dao = new H2DaoProvider(config).get(); diff --git a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestResourceGroupsDao.java b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestResourceGroupsDao.java index f31ac9692eb4..b0bbd708a773 100644 --- a/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestResourceGroupsDao.java +++ b/plugin/trino-resource-group-managers/src/test/java/io/trino/plugin/resourcegroups/db/TestResourceGroupsDao.java @@ -22,7 +22,7 @@ import io.trino.plugin.resourcegroups.SelectorResourceEstimate.Range; import io.trino.spi.resourcegroups.ResourceGroupId; import org.jdbi.v3.core.statement.UnableToExecuteStatementException; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.HashMap; import java.util.List; diff --git a/plugin/trino-session-property-managers/pom.xml b/plugin/trino-session-property-managers/pom.xml index 264e0515f5a0..c2de34d5e418 100644 --- a/plugin/trino-session-property-managers/pom.xml +++ b/plugin/trino-session-property-managers/pom.xml @@ -144,6 +144,12 @@ provided + + io.airlift + junit-extensions + test + + io.airlift testing @@ -182,6 +188,12 @@ test + + org.junit.jupiter + junit-jupiter-api + test + + org.junit.jupiter junit-jupiter-engine diff --git a/plugin/trino-session-property-managers/src/test/java/io/trino/plugin/session/file/TestFileSessionPropertyManagerConfig.java b/plugin/trino-session-property-managers/src/test/java/io/trino/plugin/session/file/TestFileSessionPropertyManagerConfig.java index e5b4e5ec8cf0..f75dc0731f6e 100644 --- a/plugin/trino-session-property-managers/src/test/java/io/trino/plugin/session/file/TestFileSessionPropertyManagerConfig.java +++ b/plugin/trino-session-property-managers/src/test/java/io/trino/plugin/session/file/TestFileSessionPropertyManagerConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.session.file; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.nio.file.Files; diff --git a/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStoreConfig.java b/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStoreConfig.java index 6d762f5d7ecd..0716a4d4aabc 100644 --- a/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStoreConfig.java +++ b/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStoreConfig.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableMap; import io.airlift.units.Duration; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; import java.util.concurrent.TimeUnit; diff --git a/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStoreJdbcConfig.java b/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStoreJdbcConfig.java index 7957cbc501d5..3ecf9da6eb10 100644 --- a/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStoreJdbcConfig.java +++ b/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStoreJdbcConfig.java @@ -18,7 +18,7 @@ import io.trino.spi.Plugin; import io.trino.spi.connector.ConnectorFactory; import io.trino.testing.TestingConnectorContext; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.google.common.collect.MoreCollectors.toOptional; import static com.google.common.collect.Streams.stream; diff --git a/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStorePlugin.java b/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStorePlugin.java index b6b5f8f62d23..fc440831e949 100644 --- a/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStorePlugin.java +++ b/plugin/trino-singlestore/src/test/java/io/trino/plugin/singlestore/TestSingleStorePlugin.java @@ -17,7 +17,7 @@ import io.trino.spi.Plugin; import io.trino.spi.connector.ConnectorFactory; import io.trino.testing.TestingConnectorContext; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.google.common.collect.MoreCollectors.toOptional; import static com.google.common.collect.Streams.stream; diff --git a/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerClient.java b/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerClient.java index 8be977683b19..7b050b5bac86 100644 --- a/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerClient.java +++ b/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerClient.java @@ -27,7 +27,7 @@ import io.trino.spi.connector.ColumnHandle; import io.trino.spi.expression.ConnectorExpression; import io.trino.spi.expression.Variable; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.sql.Types; import java.util.List; diff --git a/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerConfig.java b/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerConfig.java index d6ad75365f85..02e588d7acd3 100644 --- a/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerConfig.java +++ b/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerConfig.java @@ -14,7 +14,7 @@ package io.trino.plugin.sqlserver; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Map; diff --git a/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerPlugin.java b/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerPlugin.java index b683528dd715..6d68ab83e9da 100644 --- a/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerPlugin.java +++ b/plugin/trino-sqlserver/src/test/java/io/trino/plugin/sqlserver/TestSqlServerPlugin.java @@ -17,7 +17,7 @@ import io.trino.spi.Plugin; import io.trino.spi.connector.ConnectorFactory; import io.trino.testing.TestingConnectorContext; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.google.common.collect.Iterables.getOnlyElement; diff --git a/plugin/trino-thrift-api/pom.xml b/plugin/trino-thrift-api/pom.xml index 0a2ab27c502a..218b02fe8732 100644 --- a/plugin/trino-thrift-api/pom.xml +++ b/plugin/trino-thrift-api/pom.xml @@ -48,6 +48,12 @@ jakarta.annotation-api + + io.airlift + junit-extensions + test + + io.airlift stats @@ -66,6 +72,18 @@ test + + org.junit.jupiter + junit-jupiter-api + test + + + + org.junit.jupiter + junit-jupiter-engine + test + + org.testng testng @@ -89,6 +107,24 @@ + + + org.apache.maven.plugins + maven-surefire-plugin + + + + org.apache.maven.surefire + surefire-junit-platform + ${dep.plugin.surefire.version} + + + org.apache.maven.surefire + surefire-testng + ${dep.plugin.surefire.version} + + + diff --git a/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/TestNameValidationUtils.java b/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/TestNameValidationUtils.java index 2de62f1375f0..864d66203dca 100644 --- a/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/TestNameValidationUtils.java +++ b/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/TestNameValidationUtils.java @@ -13,7 +13,7 @@ */ package io.trino.plugin.thrift.api; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.plugin.thrift.api.NameValidationUtils.checkValidName; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/TestReadWrite.java b/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/TestReadWrite.java index 56c6a97cfac5..c6856609716d 100644 --- a/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/TestReadWrite.java +++ b/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/TestReadWrite.java @@ -24,7 +24,7 @@ import io.trino.spi.type.ArrayType; import io.trino.spi.type.Type; import io.trino.spi.type.VarcharType; -import org.testng.annotations.Test; +import org.junit.jupiter.api.RepeatedTest; import java.util.ArrayList; import java.util.Calendar; @@ -109,26 +109,26 @@ public class TestReadWrite MAX_GENERATED_DATE = toIntExact(MILLISECONDS.toDays(MAX_GENERATED_TIMESTAMP)); } - @Test(invocationCount = 20) + @RepeatedTest(20) public void testSingleRowPageReadWrite() { testPageReadWrite(new Random(singleRowPageSeedGenerator.incrementAndGet()), 1); } - @Test(invocationCount = 20) + @RepeatedTest(20) public void testSingleRowRecordSetReadWrite() { testRecordSetReadWrite(new Random(singleRowRecordSetSeedGenerator.incrementAndGet()), 1); } - @Test(invocationCount = 20) + @RepeatedTest(20) public void testMultiRowPageReadWrite() { Random random = new Random(multiRowPageSeedGenerator.incrementAndGet()); testPageReadWrite(random, random.nextInt(10000) + 10000); } - @Test(invocationCount = 20) + @RepeatedTest(20) public void testMultiRowRecordSetReadWrite() { Random random = new Random(multiRowRecordSetSeedGenerator.incrementAndGet()); diff --git a/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/TestTrinoThriftId.java b/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/TestTrinoThriftId.java index c68b987c0bc0..d66ddd76e56b 100644 --- a/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/TestTrinoThriftId.java +++ b/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/TestTrinoThriftId.java @@ -14,7 +14,7 @@ package io.trino.plugin.thrift.api; import com.google.common.primitives.UnsignedBytes; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.plugin.thrift.api.TrinoThriftId.summarize; import static org.testng.Assert.assertEquals; diff --git a/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/datatypes/TestTrinoThriftBigint.java b/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/datatypes/TestTrinoThriftBigint.java index e41e35a5071b..77bc56be58b6 100644 --- a/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/datatypes/TestTrinoThriftBigint.java +++ b/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/datatypes/TestTrinoThriftBigint.java @@ -16,7 +16,7 @@ import io.trino.plugin.thrift.api.TrinoThriftBlock; import io.trino.spi.block.Block; import io.trino.spi.block.BlockBuilder; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.List; diff --git a/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/valuesets/TestTrinoThriftAllOrNoneValueSet.java b/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/valuesets/TestTrinoThriftAllOrNoneValueSet.java index bfd7b08d5b40..c354d574b1c2 100644 --- a/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/valuesets/TestTrinoThriftAllOrNoneValueSet.java +++ b/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/valuesets/TestTrinoThriftAllOrNoneValueSet.java @@ -14,7 +14,7 @@ package io.trino.plugin.thrift.api.valuesets; import io.trino.spi.predicate.ValueSet; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.plugin.thrift.api.valuesets.TrinoThriftValueSet.fromValueSet; import static io.trino.spi.type.HyperLogLogType.HYPER_LOG_LOG; diff --git a/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/valuesets/TestTrinoThriftEquatableValueSet.java b/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/valuesets/TestTrinoThriftEquatableValueSet.java index bd371646d9b3..f55a244689ce 100644 --- a/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/valuesets/TestTrinoThriftEquatableValueSet.java +++ b/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/valuesets/TestTrinoThriftEquatableValueSet.java @@ -16,7 +16,7 @@ import com.google.common.collect.ImmutableList; import io.trino.plugin.thrift.api.datatypes.TrinoThriftJson; import io.trino.spi.predicate.ValueSet; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.airlift.slice.Slices.utf8Slice; import static io.trino.plugin.thrift.api.TrinoThriftBlock.jsonData; diff --git a/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/valuesets/TestTrinoThriftRangeValueSet.java b/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/valuesets/TestTrinoThriftRangeValueSet.java index 06888e7a4791..0d24f0446dce 100644 --- a/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/valuesets/TestTrinoThriftRangeValueSet.java +++ b/plugin/trino-thrift-api/src/test/java/io/trino/plugin/thrift/api/valuesets/TestTrinoThriftRangeValueSet.java @@ -20,7 +20,7 @@ import io.trino.plugin.thrift.api.valuesets.TrinoThriftRangeValueSet.TrinoThriftRange; import io.trino.spi.predicate.Range; import io.trino.spi.predicate.ValueSet; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static io.trino.plugin.thrift.api.TrinoThriftBlock.bigintData; import static io.trino.plugin.thrift.api.valuesets.TrinoThriftRangeValueSet.TrinoThriftBound.ABOVE; diff --git a/plugin/trino-thrift-testing-server/pom.xml b/plugin/trino-thrift-testing-server/pom.xml index 6ddba66b16fb..b419d2ec4b54 100644 --- a/plugin/trino-thrift-testing-server/pom.xml +++ b/plugin/trino-thrift-testing-server/pom.xml @@ -86,6 +86,10 @@ org.assertj assertj-core + + org.junit.jupiter + junit-jupiter-api + org.testng testng @@ -113,12 +117,24 @@ jakarta.annotation-api + + io.airlift + junit-extensions + test + + org.assertj assertj-core test + + org.junit.jupiter + junit-jupiter-api + test + + org.junit.jupiter junit-jupiter-engine diff --git a/plugin/trino-thrift-testing-server/src/test/java/io/trino/plugin/thrift/server/TestListBasedRecordSet.java b/plugin/trino-thrift-testing-server/src/test/java/io/trino/plugin/thrift/server/TestListBasedRecordSet.java index 82157658e630..a6c28fd9fa3e 100644 --- a/plugin/trino-thrift-testing-server/src/test/java/io/trino/plugin/thrift/server/TestListBasedRecordSet.java +++ b/plugin/trino-thrift-testing-server/src/test/java/io/trino/plugin/thrift/server/TestListBasedRecordSet.java @@ -16,7 +16,7 @@ import com.google.common.collect.ImmutableList; import io.airlift.slice.Slices; import io.trino.spi.connector.RecordCursor; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.util.Arrays; diff --git a/pom.xml b/pom.xml index 5d28b064cf00..1831d653c50d 100644 --- a/pom.xml +++ b/pom.xml @@ -652,7 +652,7 @@ io.airlift junit-extensions - 1 + 2 diff --git a/testing/trino-test-jdbc-compatibility-old-driver/pom.xml b/testing/trino-test-jdbc-compatibility-old-driver/pom.xml index 6f30e13c4a08..8a7ea390324a 100644 --- a/testing/trino-test-jdbc-compatibility-old-driver/pom.xml +++ b/testing/trino-test-jdbc-compatibility-old-driver/pom.xml @@ -31,6 +31,12 @@ test + + io.airlift + junit-extensions + test + + io.airlift log @@ -83,10 +89,44 @@ test + + org.junit.jupiter + junit-jupiter-api + test + + + + org.junit.jupiter + junit-jupiter-engine + test + + org.testng testng test + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + org.apache.maven.surefire + surefire-junit-platform + ${dep.plugin.surefire.version} + + + org.apache.maven.surefire + surefire-testng + ${dep.plugin.surefire.version} + + + + + diff --git a/testing/trino-test-jdbc-compatibility-old-driver/src/test/java/io/trino/TestJdbcCompatibility.java b/testing/trino-test-jdbc-compatibility-old-driver/src/test/java/io/trino/TestJdbcCompatibility.java index 61b65583b613..a10e22a225e4 100644 --- a/testing/trino-test-jdbc-compatibility-old-driver/src/test/java/io/trino/TestJdbcCompatibility.java +++ b/testing/trino-test-jdbc-compatibility-old-driver/src/test/java/io/trino/TestJdbcCompatibility.java @@ -18,10 +18,10 @@ import io.airlift.log.Logging; import io.trino.plugin.mongodb.MongoPlugin; import io.trino.server.testing.TestingTrinoServer; -import org.testng.SkipException; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.IOException; import java.math.BigDecimal; @@ -55,6 +55,9 @@ import static java.sql.Types.TIMESTAMP; import static java.sql.Types.TIMESTAMP_WITH_TIMEZONE; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assumptions.abort; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; /** * The main purpose of this class is to test cases when current server implementation breaks older JDBC clients @@ -65,19 +68,33 @@ *

* This test in turn is run using an old JDBC client against current server implementation. */ +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestJdbcCompatibility { private static final Optional VERSION_UNDER_TEST = testedVersion(); private static final int TIMESTAMP_DEFAULT_PRECISION = 3; - private TestingTrinoServer server; - private String serverUrl; + private final TestingTrinoServer server; + private final String serverUrl; + + public TestJdbcCompatibility() + { + Logging.initialize(); + + server = TestingTrinoServer.builder() + .build(); + + server.installPlugin(new MongoPlugin()); + + serverUrl = format("jdbc:trino://%s", server.getAddress()); + } @Test public void ensureProperDriverVersionLoaded() { if (VERSION_UNDER_TEST.isEmpty()) { - throw new SkipException("Information about JDBC version under test is missing"); + abort("Information about JDBC version under test is missing"); } assertThat(driverVersion()) @@ -87,25 +104,11 @@ public void ensureProperDriverVersionLoaded() .isEqualTo(VERSION_UNDER_TEST.get().toString()); } - @BeforeClass - public void setup() - { - Logging.initialize(); - - server = TestingTrinoServer.builder() - .build(); - - server.installPlugin(new MongoPlugin()); - - serverUrl = format("jdbc:trino://%s", server.getAddress()); - } - - @AfterClass(alwaysRun = true) + @AfterAll public void tearDown() throws IOException { server.close(); - server = null; } @Test @@ -134,7 +137,7 @@ public void testSelectTimestamp() public void testSelectTimestampWithTimeZone() { if (hasBrokenParametricTimestampWithTimeZoneSupport()) { - throw new SkipException("This version reports PARAMETRIC_DATETIME client capability but TIMESTAMP WITH TIME ZONE is not supported"); + abort("This version reports PARAMETRIC_DATETIME client capability but TIMESTAMP WITH TIME ZONE is not supported"); } String query = "SELECT timestamp '2012-10-31 01:00 Australia/Eucla'"; @@ -190,7 +193,7 @@ private void testSelectParametricTimestamp(String expression, Object expectedVal public void testSelectParametricTimestampWithTimeZone() { if (hasBrokenParametricTimestampWithTimeZoneSupport()) { - throw new SkipException("This version reports PARAMETRIC_DATETIME client capability but TIMESTAMP WITH TIME ZONE is not supported"); + abort("This version reports PARAMETRIC_DATETIME client capability but TIMESTAMP WITH TIME ZONE is not supported"); } if (!supportsParametricTimestampWithTimeZone()) { @@ -299,7 +302,7 @@ private void testSelectParametricTimestampInMap(String elementExpression, int ex public void testSelectParametricTimestampWithTimeZoneInMap() { if (hasBrokenParametricTimestampWithTimeZoneSupport()) { - throw new SkipException("This version reports PARAMETRIC_DATETIME client capability but TIMESTAMP WITH TIME ZONE is not supported"); + abort("This version reports PARAMETRIC_DATETIME client capability but TIMESTAMP WITH TIME ZONE is not supported"); } if (!supportsParametricTimestampWithTimeZone()) { @@ -422,7 +425,7 @@ private void testSelectParametricTimestampInArray(String elementExpression, int public void testSelectParametricTimestampWithTimeZoneInArray() { if (hasBrokenParametricTimestampWithTimeZoneSupport()) { - throw new SkipException("This version reports PARAMETRIC_DATETIME client capability but TIMESTAMP WITH TIME ZONE is not supported"); + abort("This version reports PARAMETRIC_DATETIME client capability but TIMESTAMP WITH TIME ZONE is not supported"); } if (!supportsParametricTimestampWithTimeZone()) { @@ -544,7 +547,7 @@ private void testSelectParametricTimestampInRow(String elementExpression, int pr public void testSelectParametricTimestampWithTimeZoneInRow() { if (hasBrokenParametricTimestampWithTimeZoneSupport()) { - throw new SkipException("This version reports PARAMETRIC_DATETIME client capability but TIMESTAMP WITH TIME ZONE is not supported"); + abort("This version reports PARAMETRIC_DATETIME client capability but TIMESTAMP WITH TIME ZONE is not supported"); } if (!supportsParametricTimestampWithTimeZone()) { diff --git a/testing/trino-testing/src/test/java/io/trino/testing/TestH2QueryRunner.java b/testing/trino-testing/src/test/java/io/trino/testing/TestH2QueryRunner.java index 2ed5f3aa1f55..038ecfc88f39 100644 --- a/testing/trino-testing/src/test/java/io/trino/testing/TestH2QueryRunner.java +++ b/testing/trino-testing/src/test/java/io/trino/testing/TestH2QueryRunner.java @@ -14,9 +14,7 @@ package io.trino.testing; import com.google.common.collect.ImmutableList; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.time.LocalDate; import java.time.ZoneId; @@ -29,34 +27,21 @@ public class TestH2QueryRunner { - private H2QueryRunner h2QueryRunner; - - @BeforeClass - public void init() - { - h2QueryRunner = new H2QueryRunner(); - } - - @AfterClass(alwaysRun = true) - public void close() - { - h2QueryRunner.close(); - h2QueryRunner = null; - } - @Test public void testDateToTimestampCoercion() { - // allow running tests with a connector that supports TIMESTAMP but not DATE - - // ordinary date - MaterializedResult rows = h2QueryRunner.execute(TEST_SESSION, "SELECT DATE '2018-01-13'", ImmutableList.of(TIMESTAMP_MILLIS)); - assertEquals(rows.getOnlyValue(), LocalDate.of(2018, 1, 13).atStartOfDay()); - - // date, which midnight was skipped in JVM zone - LocalDate forwardOffsetChangeAtMidnightInJvmZone = LocalDate.of(1970, 1, 1); - checkState(ZoneId.systemDefault().getRules().getValidOffsets(forwardOffsetChangeAtMidnightInJvmZone.atStartOfDay()).size() == 0, "This test assumes certain JVM time zone"); - rows = h2QueryRunner.execute(TEST_SESSION, DateTimeFormatter.ofPattern("'SELECT DATE '''uuuu-MM-dd''").format(forwardOffsetChangeAtMidnightInJvmZone), ImmutableList.of(TIMESTAMP_MILLIS)); - assertEquals(rows.getOnlyValue(), forwardOffsetChangeAtMidnightInJvmZone.atStartOfDay()); + try (H2QueryRunner h2QueryRunner = new H2QueryRunner()) { + // allow running tests with a connector that supports TIMESTAMP but not DATE + + // ordinary date + MaterializedResult rows = h2QueryRunner.execute(TEST_SESSION, "SELECT DATE '2018-01-13'", ImmutableList.of(TIMESTAMP_MILLIS)); + assertEquals(rows.getOnlyValue(), LocalDate.of(2018, 1, 13).atStartOfDay()); + + // date, which midnight was skipped in JVM zone + LocalDate forwardOffsetChangeAtMidnightInJvmZone = LocalDate.of(1970, 1, 1); + checkState(ZoneId.systemDefault().getRules().getValidOffsets(forwardOffsetChangeAtMidnightInJvmZone.atStartOfDay()).size() == 0, "This test assumes certain JVM time zone"); + rows = h2QueryRunner.execute(TEST_SESSION, DateTimeFormatter.ofPattern("'SELECT DATE '''uuuu-MM-dd''").format(forwardOffsetChangeAtMidnightInJvmZone), ImmutableList.of(TIMESTAMP_MILLIS)); + assertEquals(rows.getOnlyValue(), forwardOffsetChangeAtMidnightInJvmZone.atStartOfDay()); + } } } diff --git a/testing/trino-testing/src/test/java/io/trino/testing/TestTestingTrinoClient.java b/testing/trino-testing/src/test/java/io/trino/testing/TestTestingTrinoClient.java index e356e43fd205..b1c28bdf3fbb 100644 --- a/testing/trino-testing/src/test/java/io/trino/testing/TestTestingTrinoClient.java +++ b/testing/trino-testing/src/test/java/io/trino/testing/TestTestingTrinoClient.java @@ -27,9 +27,10 @@ import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Request; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.parallel.Execution; import java.io.IOException; import java.nio.file.Files; @@ -37,8 +38,12 @@ import java.security.Principal; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; +import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; import static org.testng.Assert.assertEquals; +@TestInstance(PER_CLASS) +@Execution(CONCURRENT) public class TestTestingTrinoClient { private static final String TEST_USER = "test_user"; @@ -51,10 +56,9 @@ public class TestTestingTrinoClient .setQueryId(queryIdGenerator.createNextQueryId()) .build(); - private TestingTrinoServer server; + private final TestingTrinoServer server; - @BeforeClass - public void setup() + public TestTestingTrinoClient() throws IOException { Path passwordConfigDummy = Files.createTempFile("passwordConfigDummy", ""); @@ -79,12 +83,11 @@ private static Principal authenticate(String user, String password) throw new AccessDeniedException("Invalid credentials"); } - @AfterClass(alwaysRun = true) + @AfterAll public void teardown() throws Exception { server.close(); - server = null; } @Test diff --git a/testing/trino-testing/src/test/java/io/trino/testing/datatype/TestDataType.java b/testing/trino-testing/src/test/java/io/trino/testing/datatype/TestDataType.java index 82e49a25e285..cea9e9e6048b 100644 --- a/testing/trino-testing/src/test/java/io/trino/testing/datatype/TestDataType.java +++ b/testing/trino-testing/src/test/java/io/trino/testing/datatype/TestDataType.java @@ -13,7 +13,7 @@ */ package io.trino.testing.datatype; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import java.time.LocalTime;