diff --git a/gateway-ha/pom.xml b/gateway-ha/pom.xml index 25225d77e..687f1c481 100644 --- a/gateway-ha/pom.xml +++ b/gateway-ha/pom.xml @@ -141,8 +141,8 @@ - org.testng - testng + org.junit.jupiter + junit-jupiter-params test diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/HaGatewayTestUtils.java b/gateway-ha/src/test/java/io/trino/gateway/ha/HaGatewayTestUtils.java index f3d3830ca..682601399 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/HaGatewayTestUtils.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/HaGatewayTestUtils.java @@ -1,5 +1,7 @@ package io.trino.gateway.ha; +import static org.junit.Assert.assertTrue; + import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.client.WireMock; import io.trino.gateway.ha.config.DataStoreConfiguration; @@ -20,9 +22,11 @@ import okhttp3.RequestBody; import okhttp3.Response; import org.javalite.activejdbc.Base; -import org.testng.Assert; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; @Slf4j +@TestInstance(Lifecycle.PER_CLASS) public class HaGatewayTestUtils { private static final OkHttpClient httpClient = new OkHttpClient(); private static final Random RANDOM = new Random(); @@ -114,7 +118,7 @@ public static void setUpBackend( .post(requestBody) .build(); Response response = httpClient.newCall(request).execute(); - Assert.assertTrue(response.isSuccessful()); + assertTrue(response.isSuccessful()); } @Data diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/TestGatewayHaMultipleBackend.java b/gateway-ha/src/test/java/io/trino/gateway/ha/TestGatewayHaMultipleBackend.java index 6dc401533..ed1af4e6b 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/TestGatewayHaMultipleBackend.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/TestGatewayHaMultipleBackend.java @@ -1,5 +1,7 @@ package io.trino.gateway.ha; +import static org.junit.Assert.assertEquals; + import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.core.WireMockConfiguration; import okhttp3.MediaType; @@ -7,11 +9,13 @@ import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; -import org.testng.Assert; -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 org.junit.jupiter.api.TestInstance.Lifecycle; +@TestInstance(Lifecycle.PER_CLASS) public class TestGatewayHaMultipleBackend { public static final String EXPECTED_RESPONSE1 = "{\"id\":\"testId1\"}"; public static final String EXPECTED_RESPONSE2 = "{\"id\":\"testId2\"}"; @@ -25,7 +29,7 @@ public class TestGatewayHaMultipleBackend { private final WireMockServer scheduledBackend = new WireMockServer(WireMockConfiguration.options().port(backend2Port)); - @BeforeClass(alwaysRun = true) + @BeforeAll public void setup() throws Exception { HaGatewayTestUtils.prepareMockBackend(adhocBackend, "/v1/statement", EXPECTED_RESPONSE1); HaGatewayTestUtils.prepareMockBackend(scheduledBackend, "/v1/statement", EXPECTED_RESPONSE2); @@ -57,7 +61,7 @@ public void testQueryDeliveryToMultipleRoutingGroups() throws Exception { .post(requestBody) .build(); Response response1 = httpClient.newCall(request1).execute(); - Assert.assertEquals(response1.body().string(), EXPECTED_RESPONSE1); + assertEquals(EXPECTED_RESPONSE1, response1.body().string()); // When X-Trino-Routing-Group is set in header, query should be routed to cluster under the // routing group @@ -68,10 +72,10 @@ public void testQueryDeliveryToMultipleRoutingGroups() throws Exception { .addHeader("X-Trino-Routing-Group", "scheduled") .build(); Response response4 = httpClient.newCall(request4).execute(); - Assert.assertEquals(response4.body().string(), EXPECTED_RESPONSE2); + assertEquals(EXPECTED_RESPONSE2, response4.body().string()); } - @AfterClass(alwaysRun = true) + @AfterAll public void cleanup() { adhocBackend.stop(); scheduledBackend.stop(); diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/TestGatewayHaSingleBackend.java b/gateway-ha/src/test/java/io/trino/gateway/ha/TestGatewayHaSingleBackend.java index c903c04b6..d6fcfceaa 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/TestGatewayHaSingleBackend.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/TestGatewayHaSingleBackend.java @@ -1,5 +1,7 @@ package io.trino.gateway.ha; +import static org.junit.Assert.assertEquals; + import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.core.WireMockConfiguration; import okhttp3.MediaType; @@ -7,11 +9,13 @@ import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; -import org.testng.Assert; -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 org.junit.jupiter.api.TestInstance.Lifecycle; +@TestInstance(Lifecycle.PER_CLASS) public class TestGatewayHaSingleBackend { public static final String EXPECTED_RESPONSE = "{\"id\":\"testId\"}"; int backendPort = 20000 + (int) (Math.random() * 1000); @@ -21,7 +25,7 @@ public class TestGatewayHaSingleBackend { new WireMockServer(WireMockConfiguration.options().port(backendPort)); private final OkHttpClient httpClient = new OkHttpClient(); - @BeforeClass(alwaysRun = true) + @BeforeAll public void setup() throws Exception { HaGatewayTestUtils.prepareMockBackend(backend, "/v1/statement", EXPECTED_RESPONSE); @@ -46,10 +50,10 @@ public void testRequestDelivery() throws Exception { .post(requestBody) .build(); Response response = httpClient.newCall(request).execute(); - Assert.assertEquals(EXPECTED_RESPONSE, response.body().string()); + assertEquals(EXPECTED_RESPONSE, response.body().string()); } - @AfterClass(alwaysRun = true) + @AfterAll public void cleanup() { backend.stop(); } diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/handler/TestQueryIdCachingProxyHandler.java b/gateway-ha/src/test/java/io/trino/gateway/ha/handler/TestQueryIdCachingProxyHandler.java index 0b7335668..ce5b55e71 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/handler/TestQueryIdCachingProxyHandler.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/handler/TestQueryIdCachingProxyHandler.java @@ -1,7 +1,7 @@ package io.trino.gateway.ha.handler; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNull; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import java.io.IOException; @@ -9,12 +9,13 @@ import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.api.Request; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; import org.mockito.Mockito; -import org.testng.Assert; -import org.testng.annotations.Test; +@TestInstance(Lifecycle.PER_CLASS) public class TestQueryIdCachingProxyHandler { - @Test public void testExtractQueryIdFromUrl() throws IOException { String[] paths = { @@ -24,7 +25,7 @@ public void testExtractQueryIdFromUrl() throws IOException { "/ui/api/query.html?20200416_160256_03078_6b4yt"}; for (String path : paths) { String queryId = QueryIdCachingProxyHandler.extractQueryIdIfPresent(path, null); - assertEquals(queryId, "20200416_160256_03078_6b4yt"); + assertEquals("20200416_160256_03078_6b4yt", queryId); } String[] nonPaths = { "/ui/api/query/myOtherThing", @@ -46,8 +47,8 @@ public void testForwardedHostHeaderOnProxyRequest() throws IOException { Request proxyRequest = httpClient.newRequest("http://localhost:80"); QueryIdCachingProxyHandler.setForwardedHostHeaderOnProxyRequest(mockServletRequest, proxyRequest); - Assert.assertEquals(proxyRequest.getHeaders().get("Host"), String.format("%s:%s", - backendServer, backendPort)); + assertEquals(String.format("%s:%s", + backendServer, backendPort), proxyRequest.getHeaders().get("Host")); } @Test @@ -58,12 +59,11 @@ public void testUserFromRequest() throws IOException { String authHeader = "Basic dGVzdDoxMjPCow=="; Mockito.when(req.getHeader(QueryIdCachingProxyHandler.AUTHORIZATION)) .thenReturn(authHeader); - Assert.assertEquals(QueryIdCachingProxyHandler.getQueryUser(req), "test"); + assertEquals("test", QueryIdCachingProxyHandler.getQueryUser(req)); String user = "trino_user"; Mockito.when(req.getHeader(QueryIdCachingProxyHandler.USER_HEADER)) .thenReturn(user); - Assert.assertEquals(QueryIdCachingProxyHandler.getQueryUser(req), user); - + assertEquals(user, QueryIdCachingProxyHandler.getQueryUser(req)); } } diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestHaGatewayManager.java b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestHaGatewayManager.java index 7b09d1347..452cd7da9 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestHaGatewayManager.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestHaGatewayManager.java @@ -1,21 +1,28 @@ package io.trino.gateway.ha.router; +import static org.junit.jupiter.api.Assertions.assertEquals; + import io.trino.gateway.ha.HaGatewayTestUtils; import io.trino.gateway.ha.config.DataStoreConfiguration; import io.trino.gateway.ha.config.ProxyBackendConfiguration; import io.trino.gateway.ha.persistence.JdbcConnectionManager; import java.io.File; import java.util.List; -import org.testng.Assert; -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.MethodOrderer; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; +import org.junit.jupiter.api.TestMethodOrder; -@Test +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +@TestInstance(Lifecycle.PER_CLASS) public class TestHaGatewayManager { private HaGatewayManager haGatewayManager; - @BeforeClass(alwaysRun = true) + @BeforeAll public void setUp() { File baseDir = new File(System.getProperty("java.io.tmpdir")); File tempH2DbDir = new File(baseDir, "h2db-" + System.currentTimeMillis()); @@ -28,6 +35,8 @@ public void setUp() { haGatewayManager = new HaGatewayManager(connectionManager); } + @Test + @Order(1) public void testAddBackend() { ProxyBackendConfiguration backend = new ProxyBackendConfiguration(); backend.setActive(true); @@ -36,25 +45,27 @@ public void testAddBackend() { backend.setProxyTo("adhoc1.trino.gateway.io"); backend.setExternalUrl("adhoc1.trino.gateway.io"); ProxyBackendConfiguration updated = haGatewayManager.addBackend(backend); - Assert.assertEquals(updated, backend); + assertEquals(backend, updated); } - @Test(dependsOnMethods = {"testAddBackend"}) + @Test + @Order(2) public void testGetBackends() { List backends = haGatewayManager.getAllBackends(); - Assert.assertEquals(backends.size(), 1); + assertEquals(1, backends.size()); backends = haGatewayManager.getActiveBackends("adhoc"); - Assert.assertEquals(backends.size(), 1); + assertEquals(1, backends.size()); backends = haGatewayManager.getActiveBackends("unknown"); - Assert.assertEquals(backends.size(), 0); + assertEquals(0, backends.size()); backends = haGatewayManager.getActiveAdhocBackends(); - Assert.assertEquals(backends.size(), 1); + assertEquals(1, backends.size()); } - @Test(dependsOnMethods = {"testGetBackends"}) + @Test + @Order(3) public void testUpdateBackend() { ProxyBackendConfiguration backend = new ProxyBackendConfiguration(); backend.setActive(false); @@ -64,7 +75,7 @@ public void testUpdateBackend() { backend.setExternalUrl("adhoc1.trino.gateway.io"); haGatewayManager.updateBackend(backend); List backends = haGatewayManager.getActiveBackends("adhoc"); - Assert.assertEquals(backends.size(), 1); + assertEquals(1, backends.size()); backend.setActive(false); backend.setRoutingGroup("etl"); @@ -73,23 +84,24 @@ public void testUpdateBackend() { backend.setExternalUrl("adhoc2.trino.gateway.io"); haGatewayManager.updateBackend(backend); backends = haGatewayManager.getActiveBackends("adhoc"); - Assert.assertEquals(backends.size(), 0); + assertEquals(0, backends.size()); backends = haGatewayManager.getAllBackends(); - Assert.assertEquals(backends.size(), 2); - Assert.assertEquals(backends.get(1).getRoutingGroup(), "etl"); + assertEquals(2, backends.size()); + assertEquals("etl", backends.get(1).getRoutingGroup()); } - @Test(dependsOnMethods = {"testUpdateBackend"}) + @Test + @Order(4) public void testDeleteBackend() { List backends = haGatewayManager.getAllBackends(); - Assert.assertEquals(backends.size(), 2); - Assert.assertEquals(backends.get(1).getRoutingGroup(), "etl"); + assertEquals(2, backends.size()); + assertEquals("etl", backends.get(1).getRoutingGroup()); haGatewayManager.deleteBackend(backends.get(0).getName()); backends = haGatewayManager.getAllBackends(); - Assert.assertEquals(backends.size(), 1); + assertEquals(1, backends.size()); } - @AfterClass(alwaysRun = true) + @AfterAll public void cleanUp() { } } diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestHaRoutingManager.java b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestHaRoutingManager.java index 0ef8ee451..4cd43ae02 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestHaRoutingManager.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestHaRoutingManager.java @@ -7,17 +7,19 @@ import java.io.File; import lombok.extern.slf4j.Slf4j; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; @Slf4j -@Test +@TestInstance(Lifecycle.PER_CLASS) public class TestHaRoutingManager { RoutingManager haRoutingManager; GatewayBackendManager backendManager; QueryHistoryManager historyManager; - @BeforeClass(alwaysRun = true) + @BeforeAll public void setUp() { File baseDir = new File(System.getProperty("java.io.tmpdir")); File tempH2DbDir = new File(baseDir, "h2db-" + System.currentTimeMillis()); diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestQueryHistoryManager.java b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestQueryHistoryManager.java index be9494eac..2226567b7 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestQueryHistoryManager.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestQueryHistoryManager.java @@ -1,20 +1,24 @@ package io.trino.gateway.ha.router; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + import io.trino.gateway.ha.HaGatewayTestUtils; import io.trino.gateway.ha.config.DataStoreConfiguration; import io.trino.gateway.ha.persistence.JdbcConnectionManager; import java.io.File; import java.util.List; import java.util.Optional; -import org.testng.Assert; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; -@Test +@TestInstance(Lifecycle.PER_CLASS) public class TestQueryHistoryManager { private QueryHistoryManager queryHistoryManager; - @BeforeClass(alwaysRun = true) + @BeforeAll public void setUp() { File baseDir = new File(System.getProperty("java.io.tmpdir")); File tempH2DbDir = new File(baseDir, "h2db-" + System.currentTimeMillis()); @@ -29,10 +33,11 @@ public void setUp() { } + @Test public void testSubmitAndFetchQueryHistory() { List queryDetails = queryHistoryManager.fetchQueryHistory(Optional.empty()); - Assert.assertEquals(queryDetails.size(), 0); + assertEquals(0, queryDetails.size()); QueryHistoryManager.QueryDetail queryDetail = new QueryHistoryManager.QueryDetail(); queryDetail.setBackendUrl("http://localhost:9999"); queryDetail.setSource("sqlWorkbench"); @@ -51,13 +56,13 @@ public void testSubmitAndFetchQueryHistory() { queryHistoryManager.submitQueryDetail(queryDetail); queryDetails = queryHistoryManager.fetchQueryHistory(Optional.empty()); - Assert.assertTrue(queryDetails.get(0).getCaptureTime() > queryDetails.get(1).getCaptureTime()); + assertTrue(queryDetails.get(0).getCaptureTime() > queryDetails.get(1).getCaptureTime()); // All queries when user is empty - Assert.assertEquals(queryDetails.size(), 3); + assertEquals(3, queryDetails.size()); queryDetails = queryHistoryManager.fetchQueryHistory(Optional.of("other-user")); // Only 1 query when user is 'other-user' - Assert.assertEquals(queryDetails.size(), 1); + assertEquals(1, queryDetails.size()); } } diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestResourceGroupsManager.java b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestResourceGroupsManager.java index 48612152f..d78be5c22 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestResourceGroupsManager.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestResourceGroupsManager.java @@ -4,6 +4,9 @@ import static io.trino.gateway.ha.router.ResourceGroupsManager.GlobalPropertiesDetail; import static io.trino.gateway.ha.router.ResourceGroupsManager.ResourceGroupsDetail; import static io.trino.gateway.ha.router.ResourceGroupsManager.SelectorsDetail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.MethodOrderer.OrderAnnotation; import io.trino.gateway.ha.HaGatewayTestUtils; import io.trino.gateway.ha.config.DataStoreConfiguration; @@ -11,17 +14,21 @@ import java.io.File; import java.util.List; import lombok.extern.slf4j.Slf4j; -import org.testng.Assert; -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.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; +import org.junit.jupiter.api.TestMethodOrder; @Slf4j -@Test +@TestMethodOrder(OrderAnnotation.class) +@TestInstance(Lifecycle.PER_CLASS) public class TestResourceGroupsManager { public ResourceGroupsManager resourceGroupManager; - @BeforeClass(alwaysRun = true) + @BeforeAll public void setUp() { File baseDir = new File(System.getProperty("java.io.tmpdir")); File tempH2DbDir = new File(baseDir, "h2db-" + System.currentTimeMillis()); @@ -35,6 +42,7 @@ public void setUp() { } @Test + @Order(1) public void testCreateResourceGroup() { ResourceGroupsDetail resourceGroup = new ResourceGroupsDetail(); @@ -48,23 +56,25 @@ public void testCreateResourceGroup() { ResourceGroupsDetail newResourceGroup = resourceGroupManager.createResourceGroup(resourceGroup, null); - Assert.assertEquals(newResourceGroup, resourceGroup); + assertEquals(resourceGroup, newResourceGroup); } - @Test(dependsOnMethods = {"testCreateResourceGroup"}) + @Test + @Order(2) public void testReadResourceGroup() { List resourceGroups = resourceGroupManager.readAllResourceGroups(null); - Assert.assertEquals(resourceGroups.size(), 1); - - Assert.assertEquals(resourceGroups.get(0).getResourceGroupId(), 0L); - Assert.assertEquals(resourceGroups.get(0).getName(), "admin"); - Assert.assertEquals(resourceGroups.get(0).getHardConcurrencyLimit(), 20); - Assert.assertEquals(resourceGroups.get(0).getMaxQueued(), 200); - Assert.assertEquals(resourceGroups.get(0).getJmxExport(), Boolean.TRUE); - Assert.assertEquals(resourceGroups.get(0).getSoftMemoryLimit(), "80%"); + assertEquals(resourceGroups.size(), 1); + + assertEquals(0L, resourceGroups.get(0).getResourceGroupId()); + assertEquals("admin", resourceGroups.get(0).getName()); + assertEquals(20, resourceGroups.get(0).getHardConcurrencyLimit()); + assertEquals(200, resourceGroups.get(0).getMaxQueued()); + assertEquals(Boolean.TRUE, resourceGroups.get(0).getJmxExport()); + assertEquals("80%", resourceGroups.get(0).getSoftMemoryLimit()); } - @Test(dependsOnMethods = {"testReadResourceGroup"}) + @Test + @Order(3) public void testUpdateResourceGroup() { ResourceGroupsDetail resourceGroup = new ResourceGroupsDetail(); resourceGroup.setResourceGroupId(0L); @@ -76,8 +86,8 @@ public void testUpdateResourceGroup() { ResourceGroupsDetail updated = resourceGroupManager.updateResourceGroup(resourceGroup, null); List resourceGroups = resourceGroupManager.readAllResourceGroups(null); - Assert.assertEquals(resourceGroups.size(), 1); - Assert.assertEquals(updated, resourceGroup); + assertEquals(1, resourceGroups.size()); + assertEquals(resourceGroup, updated); /* Update resourceGroups that do not exist yet. * In this case, new resourceGroups should be created. */ @@ -101,43 +111,44 @@ public void testUpdateResourceGroup() { resourceGroups = resourceGroupManager.readAllResourceGroups(null); - Assert.assertEquals( - resourceGroups.size(), 3); // updated 2 non-existing groups, so count should be 3 - - Assert.assertEquals(resourceGroups.get(0).getResourceGroupId(), 0L); - Assert.assertEquals(resourceGroups.get(0).getName(), "admin"); - Assert.assertEquals(resourceGroups.get(0).getHardConcurrencyLimit(), 50); - Assert.assertEquals(resourceGroups.get(0).getMaxQueued(), 50); - Assert.assertEquals(resourceGroups.get(0).getJmxExport(), Boolean.FALSE); - Assert.assertEquals(resourceGroups.get(0).getSoftMemoryLimit(), "20%"); - - Assert.assertEquals(resourceGroups.get(1).getResourceGroupId(), 1L); - Assert.assertEquals(resourceGroups.get(1).getName(), "localization-eng"); - Assert.assertEquals(resourceGroups.get(1).getHardConcurrencyLimit(), 50); - Assert.assertEquals(resourceGroups.get(1).getMaxQueued(), 70); - Assert.assertEquals(resourceGroups.get(1).getJmxExport(), Boolean.TRUE); - Assert.assertEquals(resourceGroups.get(1).getSoftMemoryLimit(), "20%"); - Assert.assertEquals(resourceGroups.get(1).getSoftConcurrencyLimit(), Integer.valueOf(20)); + assertEquals(3, resourceGroups.size()); // updated 2 non-existing groups, so count should be 3 + + assertEquals(0L, resourceGroups.get(0).getResourceGroupId()); + assertEquals("admin", resourceGroups.get(0).getName()); + assertEquals(50, resourceGroups.get(0).getHardConcurrencyLimit()); + assertEquals(50, resourceGroups.get(0).getMaxQueued()); + assertEquals(Boolean.FALSE, resourceGroups.get(0).getJmxExport()); + assertEquals("20%", resourceGroups.get(0).getSoftMemoryLimit()); + + assertEquals(1L, resourceGroups.get(1).getResourceGroupId()); + assertEquals("localization-eng", resourceGroups.get(1).getName()); + assertEquals(50, resourceGroups.get(1).getHardConcurrencyLimit()); + assertEquals(70, resourceGroups.get(1).getMaxQueued()); + assertEquals(Boolean.TRUE, resourceGroups.get(1).getJmxExport()); + assertEquals("20%", resourceGroups.get(1).getSoftMemoryLimit()); + assertEquals(Integer.valueOf(20), resourceGroups.get(1).getSoftConcurrencyLimit()); } - @Test(dependsOnMethods = {"testUpdateResourceGroup"}) + @Test + @Order(4) public void testDeleteResourceGroup() { List resourceGroups = resourceGroupManager.readAllResourceGroups(null); - Assert.assertEquals(resourceGroups.size(), 3); + assertEquals(3, resourceGroups.size()); - Assert.assertEquals(resourceGroups.get(0).getResourceGroupId(), 0L); - Assert.assertEquals(resourceGroups.get(1).getResourceGroupId(), 1L); - Assert.assertEquals(resourceGroups.get(2).getResourceGroupId(), 3L); + assertEquals(0L, resourceGroups.get(0).getResourceGroupId()); + assertEquals(1L, resourceGroups.get(1).getResourceGroupId()); + assertEquals(3L, resourceGroups.get(2).getResourceGroupId()); resourceGroupManager.deleteResourceGroup(resourceGroups.get(1).getResourceGroupId(), null); resourceGroups = resourceGroupManager.readAllResourceGroups(null); - Assert.assertEquals(resourceGroups.size(), 2); - Assert.assertEquals(resourceGroups.get(0).getResourceGroupId(), 0L); - Assert.assertEquals(resourceGroups.get(1).getResourceGroupId(), 3L); + assertEquals(2, resourceGroups.size()); + assertEquals(0L, resourceGroups.get(0).getResourceGroupId()); + assertEquals(3L, resourceGroups.get(1).getResourceGroupId()); } - @Test(dependsOnMethods = {"testDeleteResourceGroup"}) + @Test + @Order(5) public void testCreateSelector() { SelectorsDetail selector = new SelectorsDetail(); selector.setResourceGroupId(0L); @@ -150,24 +161,26 @@ public void testCreateSelector() { SelectorsDetail newSelector = resourceGroupManager.createSelector(selector, null); - Assert.assertEquals(newSelector, selector); + assertEquals(selector, newSelector); } - @Test(dependsOnMethods = {"testCreateSelector"}) + @Test + @Order(6) public void testReadSelector() { List selectors = resourceGroupManager.readAllSelectors(null); - Assert.assertEquals(selectors.size(), 1); - Assert.assertEquals(selectors.get(0).getResourceGroupId(), 0L); - Assert.assertEquals(selectors.get(0).getPriority(), 0L); - Assert.assertEquals(selectors.get(0).getUserRegex(), "data-platform-admin"); - Assert.assertEquals(selectors.get(0).getSourceRegex(), "admin"); - Assert.assertEquals(selectors.get(0).getQueryType(), "query_type"); - Assert.assertEquals(selectors.get(0).getClientTags(), "client_tag"); - Assert.assertEquals(selectors.get(0).getSelectorResourceEstimate(), "estimate"); + assertEquals(1, selectors.size()); + assertEquals(0L, selectors.get(0).getResourceGroupId()); + assertEquals(0L, selectors.get(0).getPriority()); + assertEquals("data-platform-admin", selectors.get(0).getUserRegex()); + assertEquals("admin", selectors.get(0).getSourceRegex()); + assertEquals("query_type", selectors.get(0).getQueryType()); + assertEquals("client_tag", selectors.get(0).getClientTags() ); + assertEquals("estimate", selectors.get(0).getSelectorResourceEstimate()); } - @Test(dependsOnMethods = {"testReadSelector"}) + @Test + @Order(7) public void testUpdateSelector() { SelectorsDetail selector = new SelectorsDetail(); @@ -183,8 +196,8 @@ public void testUpdateSelector() { SelectorsDetail updated = resourceGroupManager.updateSelector(selectors.get(0), selector, null); selectors = resourceGroupManager.readAllSelectors(null); - Assert.assertEquals(selectors.size(), 1); - Assert.assertEquals(updated, selectors.get(0)); + assertEquals(1, selectors.size()); + assertEquals(selectors.get(0), updated); /* Update selectors that do not exist yet. * In this case, a new selector should be created. */ @@ -199,8 +212,8 @@ public void testUpdateSelector() { updated = resourceGroupManager.updateSelector(new SelectorsDetail(), selector, null); selectors = resourceGroupManager.readAllSelectors(null); - Assert.assertEquals(selectors.size(), 2); - Assert.assertEquals(updated, selectors.get(1)); + assertEquals(2, selectors.size()); + assertEquals(selectors.get(1), updated); /* Create selector with an already existing resourceGroupId. * In this case, new selector should be created. */ @@ -215,21 +228,24 @@ public void testUpdateSelector() { updated = resourceGroupManager.updateSelector(new SelectorsDetail(), selector, null); selectors = resourceGroupManager.readAllSelectors(null); - Assert.assertEquals(selectors.size(), 3); - Assert.assertEquals(updated, selectors.get(2)); + assertEquals(3, selectors.size()); + assertEquals(selectors.get(2), updated); } - @Test(dependsOnMethods = {"testUpdateSelector"}) + @Test + @Order(8) public void testDeleteSelector() { List selectors = resourceGroupManager.readAllSelectors(null); - Assert.assertEquals(selectors.size(), 3); - Assert.assertEquals(selectors.get(0).getResourceGroupId(), 0L); + assertEquals(3, selectors.size()); + assertEquals(0L, selectors.get(0).getResourceGroupId()); resourceGroupManager.deleteSelector(selectors.get(0), null); selectors = resourceGroupManager.readAllSelectors(null); - Assert.assertEquals(selectors.size(), 2); + assertEquals(2, selectors.size()); } + @Test + @Order(9) public void testCreateGlobalProperties() { GlobalPropertiesDetail globalPropertiesDetail = new GlobalPropertiesDetail(); globalPropertiesDetail.setName("cpu_quota_period"); @@ -238,7 +254,7 @@ public void testCreateGlobalProperties() { GlobalPropertiesDetail newGlobalProperties = resourceGroupManager.createGlobalProperty(globalPropertiesDetail, null); - Assert.assertEquals(newGlobalProperties, globalPropertiesDetail); + assertEquals(globalPropertiesDetail, newGlobalProperties); try { // make sure that the name is cpu_quota_period GlobalPropertiesDetail invalidGlobalProperty = new GlobalPropertiesDetail(); @@ -246,22 +262,24 @@ public void testCreateGlobalProperties() { invalidGlobalProperty.setValue("1h"); resourceGroupManager.createGlobalProperty(invalidGlobalProperty, null); } catch (Exception ex) { - Assert.assertTrue(ex.getCause() instanceof org.h2.jdbc.JdbcSQLException); - Assert.assertTrue(ex.getCause().getMessage().startsWith("Check constraint violation:")); + assertTrue(ex.getCause() instanceof org.h2.jdbc.JdbcSQLException); + assertTrue(ex.getCause().getMessage().startsWith("Check constraint violation:")); } } - @Test(dependsOnMethods = {"testCreateGlobalProperties"}) + @Test + @Order(10) public void testReadGlobalProperties() { List globalProperties = resourceGroupManager.readAllGlobalProperties( null); - Assert.assertEquals(globalProperties.size(), 1); - Assert.assertEquals(globalProperties.get(0).getName(), "cpu_quota_period"); - Assert.assertEquals(globalProperties.get(0).getValue(), "1h"); + assertEquals(1, globalProperties.size()); + assertEquals("cpu_quota_period", globalProperties.get(0).getName()); + assertEquals("1h", globalProperties.get(0).getValue()); } - @Test(dependsOnMethods = {"testReadGlobalProperties"}) + @Test + @Order(11) public void testUpdateGlobalProperties() { GlobalPropertiesDetail globalPropertiesDetail = new GlobalPropertiesDetail(); globalPropertiesDetail.setName("cpu_quota_period"); @@ -272,8 +290,8 @@ public void testUpdateGlobalProperties() { List globalProperties = resourceGroupManager.readAllGlobalProperties( null); - Assert.assertEquals(globalProperties.size(), 1); - Assert.assertEquals(updated, globalProperties.get(0)); + assertEquals(1, globalProperties.size()); + assertEquals(globalProperties.get(0), updated); try { // make sure that the name is cpu_quota_period GlobalPropertiesDetail invalidGlobalProperty = new GlobalPropertiesDetail(); @@ -281,11 +299,13 @@ public void testUpdateGlobalProperties() { invalidGlobalProperty.setValue("1h"); resourceGroupManager.updateGlobalProperty(invalidGlobalProperty, null); } catch (Exception ex) { - Assert.assertTrue(ex.getCause() instanceof org.h2.jdbc.JdbcSQLException); - Assert.assertTrue(ex.getCause().getMessage().startsWith("Check constraint violation:")); + assertTrue(ex.getCause() instanceof org.h2.jdbc.JdbcSQLException); + assertTrue(ex.getCause().getMessage().startsWith("Check constraint violation:")); } } + @Test + @Order(12) public void testCreateExactMatchSourceSelectors() { ExactSelectorsDetail exactSelectorDetail = new ExactSelectorsDetail(); @@ -298,30 +318,31 @@ public void testCreateExactMatchSourceSelectors() { ExactSelectorsDetail newExactMatchSourceSelector = resourceGroupManager.createExactMatchSourceSelector(exactSelectorDetail); - Assert.assertEquals(newExactMatchSourceSelector, exactSelectorDetail); + assertEquals(exactSelectorDetail, newExactMatchSourceSelector); } - @Test(dependsOnMethods = {"testCreateExactMatchSourceSelectors"}) + @Test + @Order(13) public void testReadExactMatchSourceSelectors() { List exactSelectorsDetails = resourceGroupManager.readExactMatchSourceSelector(); - Assert.assertEquals(exactSelectorsDetails.size(), 1); - Assert.assertEquals(exactSelectorsDetails.get(0).getResourceGroupId(), "0"); - Assert.assertEquals(exactSelectorsDetails.get(0).getSource(), "@test@test_pipeline"); - Assert.assertEquals(exactSelectorsDetails.get(0).getEnvironment(), "test"); - Assert.assertEquals(exactSelectorsDetails.get(0).getQueryType(), "query_type"); + assertEquals(1, exactSelectorsDetails.size()); + assertEquals("0", exactSelectorsDetails.get(0).getResourceGroupId()); + assertEquals("@test@test_pipeline", exactSelectorsDetails.get(0).getSource()); + assertEquals("test", exactSelectorsDetails.get(0).getEnvironment()); + assertEquals("query_type", exactSelectorsDetails.get(0).getQueryType()); ExactSelectorsDetail exactSelector = resourceGroupManager.getExactMatchSourceSelector(exactSelectorsDetails.get(0)); - Assert.assertEquals(exactSelector.getResourceGroupId(), "0"); - Assert.assertEquals(exactSelector.getSource(), "@test@test_pipeline"); - Assert.assertEquals(exactSelector.getEnvironment(), "test"); - Assert.assertEquals(exactSelector.getQueryType(), "query_type"); + assertEquals("0", exactSelector.getResourceGroupId()); + assertEquals("@test@test_pipeline", exactSelector.getSource()); + assertEquals("test", exactSelector.getEnvironment()); + assertEquals("query_type", exactSelector.getQueryType()); } - @AfterClass(alwaysRun = true) + @AfterAll public void cleanUp() { } } diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestRoutingGroupSelector.java b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestRoutingGroupSelector.java index f225405f4..939fd97d0 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestRoutingGroupSelector.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestRoutingGroupSelector.java @@ -1,61 +1,67 @@ package io.trino.gateway.ha.router; import static io.trino.gateway.ha.router.RoutingGroupSelector.ROUTING_GROUP_HEADER; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.io.File; import java.io.FileWriter; +import java.util.stream.Stream; import javax.servlet.http.HttpServletRequest; - -import org.testng.Assert; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Test; - -@Test +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +@TestInstance(Lifecycle.PER_CLASS) public class TestRoutingGroupSelector { public static final String TRINO_SOURCE_HEADER = "X-Trino-Source"; public static final String TRINO_CLIENT_TAGS_HEADER = "X-Trino-Client-Tags"; + @Test public void testByRoutingGroupHeader() { HttpServletRequest mockRequest = mock(HttpServletRequest.class); // If the header is present the routing group is the value of that header. when(mockRequest.getHeader(ROUTING_GROUP_HEADER)).thenReturn("batch_backend"); - Assert.assertEquals( - RoutingGroupSelector.byRoutingGroupHeader().findRoutingGroup(mockRequest), "batch_backend"); + assertEquals("batch_backend", + RoutingGroupSelector.byRoutingGroupHeader().findRoutingGroup(mockRequest)); // If the header is not present just return null. when(mockRequest.getHeader(ROUTING_GROUP_HEADER)).thenReturn(null); - Assert.assertNull(RoutingGroupSelector.byRoutingGroupHeader().findRoutingGroup(mockRequest)); + assertNull(RoutingGroupSelector.byRoutingGroupHeader().findRoutingGroup(mockRequest)); } - @DataProvider(name = "routingRuleConfigFiles") - public Object[][] provideData() { - String rulesDir = "src/test/resources/rules/"; - return new Object[][]{ - {rulesDir + "routing_rules_atomic.yml"}, - {rulesDir + "routing_rules_composite.yml"}, - {rulesDir + "routing_rules_priorities.yml"}, - {rulesDir + "routing_rules_if_statements.yml"} - }; + static Stream provideRoutingRuleConfigFiles() { + String rulesDir = "src/test/resources/rules/"; + return Stream.of( + rulesDir + "routing_rules_atomic.yml", + rulesDir + "routing_rules_composite.yml", + rulesDir + "routing_rules_priorities.yml", + rulesDir + "routing_rules_if_statements.yml" + ); } - @Test(dataProvider = "routingRuleConfigFiles") - public void testByRoutingRulesEngine(String rulesConfigPath) { + @ParameterizedTest + @MethodSource("provideRoutingRuleConfigFiles") + void testByRoutingRulesEngine(String rulesConfigPath) { RoutingGroupSelector routingGroupSelector = RoutingGroupSelector.byRoutingRulesEngine(rulesConfigPath); HttpServletRequest mockRequest = mock(HttpServletRequest.class); when(mockRequest.getHeader(TRINO_SOURCE_HEADER)).thenReturn("airflow"); - Assert.assertEquals( - routingGroupSelector.findRoutingGroup(mockRequest), "etl"); + assertEquals("etl", + routingGroupSelector.findRoutingGroup(mockRequest)); } - @Test(dataProvider = "routingRuleConfigFiles") - public void testByRoutingRulesEngineSpecialLabel(String rulesConfigPath) { + @ParameterizedTest + @MethodSource("provideRoutingRuleConfigFiles") + void testByRoutingRulesEngineSpecialLabel(String rulesConfigPath) { RoutingGroupSelector routingGroupSelector = RoutingGroupSelector.byRoutingRulesEngine(rulesConfigPath); @@ -64,12 +70,13 @@ public void testByRoutingRulesEngineSpecialLabel(String rulesConfigPath) { when(mockRequest.getHeader(TRINO_SOURCE_HEADER)).thenReturn("airflow"); when(mockRequest.getHeader(TRINO_CLIENT_TAGS_HEADER)).thenReturn( "email=test@example.com,label=special"); - Assert.assertEquals( - routingGroupSelector.findRoutingGroup(mockRequest), "etl-special"); + assertEquals("etl-special", + routingGroupSelector.findRoutingGroup(mockRequest)); } - @Test(dataProvider = "routingRuleConfigFiles") - public void testByRoutingRulesEngineNoMatch(String rulesConfigPath) { + @ParameterizedTest + @MethodSource("provideRoutingRuleConfigFiles") + void testByRoutingRulesEngineNoMatch(String rulesConfigPath) { RoutingGroupSelector routingGroupSelector = RoutingGroupSelector.byRoutingRulesEngine(rulesConfigPath); @@ -78,12 +85,11 @@ public void testByRoutingRulesEngineNoMatch(String rulesConfigPath) { // should return no match when(mockRequest.getHeader(TRINO_CLIENT_TAGS_HEADER)).thenReturn( "email=test@example.com,label=special"); - Assert.assertEquals( - routingGroupSelector.findRoutingGroup(mockRequest), null); + assertNull(routingGroupSelector.findRoutingGroup(mockRequest)); } //Todo: The functionality of reading the file before every request needs to be smarter - @Test(enabled = false) + @Disabled public void testByRoutingRulesEngineFileChange() throws Exception { File file = File.createTempFile("routing_rules", ".yml"); @@ -103,8 +109,8 @@ public void testByRoutingRulesEngineFileChange() throws Exception { HttpServletRequest mockRequest = mock(HttpServletRequest.class); when(mockRequest.getHeader(TRINO_SOURCE_HEADER)).thenReturn("airflow"); - Assert.assertEquals( - routingGroupSelector.findRoutingGroup(mockRequest), "etl"); + assertEquals("etl", + routingGroupSelector.findRoutingGroup(mockRequest)); fw = new FileWriter(file); fw.write( @@ -117,8 +123,8 @@ public void testByRoutingRulesEngineFileChange() throws Exception { fw.close(); when(mockRequest.getHeader(TRINO_SOURCE_HEADER)).thenReturn("airflow"); - Assert.assertEquals( - routingGroupSelector.findRoutingGroup(mockRequest), "etl2"); + assertEquals("etl2", + routingGroupSelector.findRoutingGroup(mockRequest)); file.deleteOnExit(); } } diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestSpecificDbResourceGroupsManager.java b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestSpecificDbResourceGroupsManager.java index 73b347306..c81bd1fe6 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestSpecificDbResourceGroupsManager.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestSpecificDbResourceGroupsManager.java @@ -1,6 +1,9 @@ package io.trino.gateway.ha.router; import static io.trino.gateway.ha.router.ResourceGroupsManager.ResourceGroupsDetail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import io.trino.gateway.ha.HaGatewayTestUtils; import io.trino.gateway.ha.config.DataStoreConfiguration; @@ -9,16 +12,17 @@ import java.util.List; import lombok.extern.slf4j.Slf4j; -import org.testng.Assert; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; @Slf4j -@Test +@TestInstance(Lifecycle.PER_CLASS) public class TestSpecificDbResourceGroupsManager extends TestResourceGroupsManager { private String specificDb; - @BeforeClass(alwaysRun = true) + @BeforeAll @Override public void setUp() { specificDb = "h2db-" + System.currentTimeMillis(); @@ -48,19 +52,23 @@ private void createResourceGroup() { specificDb); } - @Test(expectedExceptions = Exception.class) + @Test public void testReadSpecificDbResourceGroupCauseException() { - List resourceGroups = resourceGroupManager.readAllResourceGroups("abcd"); + assertThrows(Exception.class, () -> { + List resourceGroups = resourceGroupManager.readAllResourceGroups("abcd"); + }); } + @Test public void testReadSpecificDbResourceGroup() { this.createResourceGroup(); List resourceGroups = resourceGroupManager .readAllResourceGroups(specificDb); - Assert.assertNotNull(resourceGroups); + assertNotNull(resourceGroups); resourceGroupManager.deleteResourceGroup(1,specificDb); } + @Test public void testReadSpecificDbSelector() { this.createResourceGroup(); ResourceGroupsManager.SelectorsDetail selector = new ResourceGroupsManager.SelectorsDetail(); @@ -75,7 +83,7 @@ public void testReadSpecificDbSelector() { ResourceGroupsManager.SelectorsDetail newSelector = resourceGroupManager .createSelector(selector, specificDb); - Assert.assertEquals(newSelector, selector); + assertEquals(selector, newSelector); resourceGroupManager .deleteSelector(selector, specificDb); resourceGroupManager.deleteResourceGroup(1,specificDb); diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestTcpChecks.java b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestTcpChecks.java index a32d764ae..12f79605f 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestTcpChecks.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestTcpChecks.java @@ -1,5 +1,10 @@ package io.trino.gateway.ha.router; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -11,10 +16,10 @@ import java.net.UnknownHostException; import java.util.concurrent.TimeUnit; import javax.servlet.http.HttpServletRequest; -import org.testng.Assert; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; -@Test +@TestInstance(PER_CLASS) public class TestTcpChecks { public static final String TRINO_SOURCE_HEADER = "X-Trino-Source"; public static final String TRINO_CLIENT_TAGS_HEADER = "X-Trino-Client-Tags"; @@ -35,7 +40,7 @@ public void testTcpRuleCheck() throws RoutingGroupSelector routingGroupSelector = RoutingGroupSelector.byRoutingRulesEngine(rulesFile); - Assert.assertEquals(routingGroupSelector.findRoutingGroup(mockRequest), "cli"); + assertEquals("cli", routingGroupSelector.findRoutingGroup(mockRequest)); } @Test @@ -47,15 +52,15 @@ public void testConnectionCheckerSucess() throws ConnectionChecker checker = new ConnectionChecker(); ConnectionCheck check = spy(checker.getChecker("abc", 1111, checkInterval, 1, 0)); doReturn(mock(Socket.class)).when(check).makeSocket("abc", 1111); - Assert.assertTrue(check.tcpCheck() == ConnectionCheck.TCP_CHECK_SUCCESS); + assertEquals(ConnectionCheck.TCP_CHECK_SUCCESS, check.tcpCheck()); // If our inteval to check the request is 1000ms then connection check is needed TimeUnit.SECONDS.sleep(2); - Assert.assertTrue(check.isCheckNeeded()); + assertTrue(check.isCheckNeeded()); // If the inerval to check 1000 ms then we won't need a check TimeUnit.MILLISECONDS.sleep(100); - Assert.assertFalse(check.isCheckNeeded()); + assertFalse(check.isCheckNeeded()); } @Test @@ -81,26 +86,26 @@ public void testConnectionCheckerFailures() throws for (int i = 0; i < failcount; ++i) { // wait for checkinterval, fail till failcount is reached to disable the check TimeUnit.MILLISECONDS.sleep(1100); - Assert.assertTrue(check.tcpCheck() != ConnectionCheck.TCP_CHECK_SUCCESS); + assertNotEquals(ConnectionCheck.TCP_CHECK_SUCCESS, check.tcpCheck()); } // Make the server available and check if the failure contines for disableDuration doReturn(mock(Socket.class)).when(check).makeSocket(host, port); TimeUnit.SECONDS.sleep(6); - Assert.assertTrue(check.tcpCheck() != ConnectionCheck.TCP_CHECK_SUCCESS); + assertNotEquals(ConnectionCheck.TCP_CHECK_SUCCESS, check.tcpCheck()); TimeUnit.SECONDS.sleep(6); - Assert.assertTrue(check.tcpCheck() == ConnectionCheck.TCP_CHECK_SUCCESS); + assertEquals(ConnectionCheck.TCP_CHECK_SUCCESS, check.tcpCheck()); // We maintain a map of the checkers, so verify that we got the same check back, as before Object checkObj = checker.getChecker(host, port, checkInterval, failcount, disableDuration); - Assert.assertTrue(checkObj == checker.getChecker(host, port, checkInterval, + assertEquals(checkObj, checker.getChecker(host, port, checkInterval, failcount, disableDuration)); - Assert.assertFalse(checkObj == checker.getChecker(host, port, checkInterval + 10, + assertEquals(checkObj, checker.getChecker(host, port, checkInterval + 10, failcount, disableDuration)); - Assert.assertFalse(checkObj == checker.getChecker(host, port, checkInterval, + assertEquals(checkObj, checker.getChecker(host, port, checkInterval, failcount + 1, disableDuration)); - Assert.assertFalse(checkObj == checker.getChecker(host, port, checkInterval, + assertEquals(checkObj, checker.getChecker(host, port, checkInterval, failcount, disableDuration + 10)); } } diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestTrinoQueueLengthRoutingTable.java b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestTrinoQueueLengthRoutingTable.java index cd6047b04..826046536 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestTrinoQueueLengthRoutingTable.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestTrinoQueueLengthRoutingTable.java @@ -2,6 +2,7 @@ import static java.util.concurrent.TimeUnit.SECONDS; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import io.trino.gateway.ha.HaGatewayTestUtils; import io.trino.gateway.ha.config.DataStoreConfiguration; @@ -17,11 +18,12 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.atomic.AtomicBoolean; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -@Test +@TestInstance(Lifecycle.PER_CLASS) public class TestTrinoQueueLengthRoutingTable { static final int[] QUERY_VOLUMES = {15, 50, 100, 200}; static final int NUM_BACKENDS = 5; @@ -36,7 +38,7 @@ public class TestTrinoQueueLengthRoutingTable { Map> clusterQueueMap; Map> clusterRunningMap; - @BeforeClass(alwaysRun = true) + @BeforeAll public void setUp() { File baseDir = new File(System.getProperty("java.io.tmpdir")); File tempH2DbDir = new File(baseDir, "h2db-" + System.currentTimeMillis()); @@ -196,14 +198,13 @@ public void testRoutingWithEvenWeightDistribution() { // + " Distribution: " + routingDistribution.toString()); if (numBk > 1) { if (routingDistribution.containsKey(mockRoutingGroup + (numBk - 1))) { - assert routingDistribution.get(mockRoutingGroup + (numBk - 1)) - <= Math.ceil(numRequests / numBk); + assertTrue(routingDistribution.get(mockRoutingGroup + (numBk - 1)) + <= Math.ceil(numRequests / numBk)); } else { - assert routingDistribution.values().stream().mapToInt(Integer::intValue).sum() - == numRequests; + assertEquals(numRequests, routingDistribution.values().stream().mapToInt(Integer::intValue).sum()); } } else { - assert routingDistribution.get(mockRoutingGroup + '0') == numRequests; + assertEquals(Integer.valueOf(numRequests), routingDistribution.get(mockRoutingGroup + '0')); } } } @@ -227,11 +228,10 @@ public void testRoutingWithSkewedWeightDistribution() { // + routingTable.getInternalWeightedRoutingTable(mockRoutingGroup).toString() // + " Distribution: " + routingDistribution.toString()); if (numBk > 2 && routingDistribution.containsKey(mockRoutingGroup + (numBk - 1))) { - assert routingDistribution.get(mockRoutingGroup + (numBk - 1)) - <= Math.ceil(numRequests / numBk); + assertTrue(routingDistribution.get(mockRoutingGroup + (numBk - 1)) + <= Math.ceil(numRequests / numBk)); } else { - assert routingDistribution.values().stream().mapToInt(Integer::intValue).sum() - == numRequests; + assertEquals(numRequests, routingDistribution.values().stream().mapToInt(Integer::intValue).sum()); } } } @@ -246,16 +246,14 @@ public void testRoutingWithUserQueuedLength() { // Validate always routed to cluster with lowest user queue registerBackEndsWithUserQueue(mockRoutingGroup, numBackends, Arrays.asList(1, 2)); for (int i = 0; i < queryVolume; i++) { - assertEquals(routingTable.getEligibleBackEnd(mockRoutingGroup, mockUser), - mockRoutingGroup + "0"); + assertEquals(mockRoutingGroup + "0", routingTable.getEligibleBackEnd(mockRoutingGroup, mockUser)); } // Case 2: Not all user queue counts Present. // Validate always routed to cluster with zero queue length i.e. the missing cluster. registerBackEndsWithUserQueue(mockRoutingGroup, numBackends, Arrays.asList(1)); for (int i = 0; i < queryVolume; i++) { - assertEquals(routingTable.getEligibleBackEnd(mockRoutingGroup, mockUser), - mockRoutingGroup + "1"); + assertEquals(mockRoutingGroup + "1", routingTable.getEligibleBackEnd(mockRoutingGroup, mockUser)); } // Case 3: All user queue counts Present but equal @@ -271,7 +269,7 @@ public void testRoutingWithUserQueuedLength() { double expectedUpperBound = (queryVolume / numBackends) * (1 + variance); for (Integer c : counts.values()) { - assert c >= expectedLowerBound && c <= expectedUpperBound; + assertTrue(c >= expectedLowerBound && c <= expectedUpperBound); } // Case 4: NO user queue lengths present @@ -283,7 +281,7 @@ public void testRoutingWithUserQueuedLength() { counts.put(cluster, counts.getOrDefault(cluster, 0) + 1); } for (Integer c : counts.values()) { - assert c >= expectedLowerBound && c <= expectedUpperBound; + assertTrue(c >= expectedLowerBound && c <= expectedUpperBound); } // Case 5: Null or empty users @@ -295,10 +293,8 @@ public void testRoutingWithUserQueuedLength() { counts.put(cluster, counts.getOrDefault(cluster, 0) + 1); } for (Integer c : counts.values()) { - assert c >= expectedLowerBound && c <= expectedUpperBound; + assertTrue(c >= expectedLowerBound && c <= expectedUpperBound); } - - } @Test @@ -321,9 +317,9 @@ public void testRoutingWithEqualWeightDistribution() { if (numBk > 1) { // With equal weights, the algorithm randomly chooses from the list. Check that the // distribution spans atleast half of the routing group. - assert routingDistribution.size() >= clusterQueueMap.get(mockRoutingGroup).size() / 2; + assertTrue(routingDistribution.size() >= clusterQueueMap.get(mockRoutingGroup).size() / 2); } else { - assert routingDistribution.get(mockRoutingGroup + '0') == numRequests; + assertEquals(Integer.valueOf(numRequests), routingDistribution.get(mockRoutingGroup + '0')); } } } @@ -350,11 +346,10 @@ public void testRoutingWithEqualQueueSkewedRunningDistribution() { + " Distribution: " + routingDistribution.toString()); */ if (numBk > 2 && routingDistribution.containsKey(mockRoutingGroup + (numBk - 1))) { - assert routingDistribution.get(mockRoutingGroup + (numBk - 1)) - <= Math.ceil(numRequests / numBk); + assertTrue(routingDistribution.get(mockRoutingGroup + (numBk - 1)) + <= Math.ceil(numRequests / numBk)); } else { - assert routingDistribution.values().stream().mapToInt(Integer::intValue).sum() - == numRequests; + assertEquals(numRequests, routingDistribution.values().stream().mapToInt(Integer::intValue).sum()); } } } @@ -378,14 +373,13 @@ public void testRoutingWithMultipleGroups() { //+ " Distribution: " + routingDistribution.toString()); if (numBk > 1) { if (routingDistribution.containsKey(grp + (numBk - 1))) { - assert routingDistribution.get(grp + (numBk - 1)) - <= Math.ceil(numRequests / numBk); + assertTrue(routingDistribution.get(grp + (numBk - 1)) + <= Math.ceil(numRequests / numBk)); } else { - assert routingDistribution.values().stream().mapToInt(Integer::intValue).sum() - == numRequests; + assertEquals(numRequests, routingDistribution.values().stream().mapToInt(Integer::intValue).sum()); } } else { - assert routingDistribution.get(grp + '0') == numRequests; + assertEquals(Integer.valueOf(numRequests), routingDistribution.get(grp + '0')); } } } @@ -426,7 +420,6 @@ public void testActiveClusterMonitorUpdateAndRouting() throws InterruptedExcepti resetBackends(mockRoutingGroup, numBk, 0, 0); scheduler.scheduleAtFixedRate(activeClusterMonitor, 0, 1, SECONDS); - for (int batch = 0; batch < numBatches; batch++) { routingDistribution = routeQueries(mockRoutingGroup, numRequests); if (batch == 0) { @@ -443,8 +436,8 @@ public void testActiveClusterMonitorUpdateAndRouting() throws InterruptedExcepti System.out.println("Total Requests :" + numBatches * numRequests + " distribution :" + totalDistribution.toString()); - assert totalDistribution.get(mockRoutingGroup + (numBk - 1)) - <= (numBatches * numRequests / numBk); + assertTrue(totalDistribution.get(mockRoutingGroup + (numBk - 1)) + <= (numBatches * numRequests / numBk)); scheduler.shutdown(); } diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/security/TestLbAuthenticator.java b/gateway-ha/src/test/java/io/trino/gateway/ha/security/TestLbAuthenticator.java index e928b6bfa..87a534f6f 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/security/TestLbAuthenticator.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/security/TestLbAuthenticator.java @@ -2,6 +2,9 @@ import static io.trino.gateway.ha.security.SessionCookie.OAUTH_ID_TOKEN; import static io.trino.gateway.ha.security.SessionCookie.logOut; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import com.auth0.jwt.JWT; import com.auth0.jwt.interfaces.Claim; @@ -17,11 +20,13 @@ import javax.ws.rs.core.Response; import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; import org.mockito.Mockito; -import org.testng.Assert; -import org.testng.annotations.Test; @Slf4j +@TestInstance(Lifecycle.PER_CLASS) public class TestLbAuthenticator { private static final String USER = "username"; @@ -60,13 +65,12 @@ public void testAuthenticatorGetsPrincipal() throws Exception { LbAuthenticator lbAuth = new LbAuthenticator(authentication, authorization); - Assert.assertTrue(lbAuth.authenticate(ID_TOKEN).isPresent()); - Assert.assertEquals(lbAuth.authenticate(ID_TOKEN).get(), principal); + assertTrue(lbAuth.authenticate(ID_TOKEN).isPresent()); + assertEquals(principal, lbAuth.authenticate(ID_TOKEN).get()); } @Test public void testAuthenticatorMissingClaim() throws Exception { - Claim claim = Mockito.mock(Claim.class); AuthorizationManager authorization = Mockito.mock(AuthorizationManager.class); LbOAuthManager authentication = Mockito.mock(LbOAuthManager.class); @@ -79,7 +83,7 @@ public void testAuthenticatorMissingClaim() throws Exception { LbAuthenticator lbAuth = new LbAuthenticator(authentication, authorization); - Assert.assertFalse(lbAuth.authenticate(ID_TOKEN).isPresent()); + assertFalse(lbAuth.authenticate(ID_TOKEN).isPresent()); } @Test @@ -92,11 +96,11 @@ public void testPresetUsers() throws Exception { }; LbFormAuthManager authentication = new LbFormAuthManager(null, presetUsers); - Assert.assertTrue(authentication + assertTrue(authentication .authenticate(new BasicCredentials("user1", "pass1"))); - Assert.assertFalse(authentication + assertFalse(authentication .authenticate(new BasicCredentials("user2", "pass1"))); - Assert.assertFalse(authentication + assertFalse(authentication .authenticate(new BasicCredentials("not-in-map-user", "pass1"))); } @@ -104,14 +108,14 @@ public void testPresetUsers() throws Exception { @Test public void testNoLdapNoPresetUsers() throws Exception { LbFormAuthManager authentication = new LbFormAuthManager(null, null); - Assert.assertFalse(authentication + assertFalse(authentication .authenticate(new BasicCredentials("user1", "pass1"))); } @Test public void testWrongLdapConfig() throws Exception { LbFormAuthManager authentication = new LbFormAuthManager(null, null); - Assert.assertFalse(authentication + assertFalse(authentication .authenticate(new BasicCredentials("user1", "pass1"))); } @@ -120,7 +124,7 @@ public void testLogout() throws Exception { Response response = logOut(); NewCookie cookie = response.getCookies().get(OAUTH_ID_TOKEN); log.info("value {}", cookie.getValue()); - Assert.assertTrue(cookie.getValue().equals("logout")); + assertTrue(cookie.getValue().equals("logout")); } @Test @@ -143,7 +147,7 @@ public void testLoginForm() throws Exception { Response response = lbFormAuthManager.processLoginForm("user1", "pass1"); NewCookie cookie = response.getCookies().get(OAUTH_ID_TOKEN); String value = cookie.getValue(); - Assert.assertTrue(value != null && value.length() > 0); + assertTrue(value != null && value.length() > 0); log.info(cookie.getValue()); JWT.decode(value); } diff --git a/pom.xml b/pom.xml index cff13a652..fb30494a4 100644 --- a/pom.xml +++ b/pom.xml @@ -160,11 +160,6 @@ surefire-junit-platform ${dep.plugin.surefire.version} - - org.apache.maven.surefire - surefire-testng - ${dep.plugin.surefire.version} - org.junit.jupiter junit-jupiter-engine diff --git a/proxyserver/pom.xml b/proxyserver/pom.xml index 5c9b73eb3..ee96aae24 100644 --- a/proxyserver/pom.xml +++ b/proxyserver/pom.xml @@ -70,6 +70,18 @@ + + org.apache.maven.plugins + maven-surefire-plugin + ${dep.plugin.surefire.version} + + + org.apache.maven.surefire + surefire-testng + ${dep.plugin.surefire.version} + + +