From 694999cbd08140040eb75af40b02ad05f743330b Mon Sep 17 00:00:00 2001 From: "Xiaotian (Jackie) Jiang" <17555551+Jackie-Jiang@users.noreply.github.com> Date: Tue, 1 Nov 2022 15:40:00 -0700 Subject: [PATCH] [Clean up] Auto reformat controller tests (#9706) --- ...nsumingSegmentInfoReaderStatelessTest.java | 130 ++++++------ ...tAccessControlUserRestletResourceTest.java | 195 +++++++++--------- .../api/PinotControllerAppConfigsTest.java | 20 +- .../controller/api/PinotFileUploadTest.java | 9 +- ...IngestionRestletResourceStatelessTest.java | 17 +- .../api/PinotSchemaRestletResourceTest.java | 113 +++++----- .../api/PinotSegmentRestletResourceTest.java | 37 ++-- .../api/PinotSegmentsMetadataTest.java | 31 +-- .../SegmentCompletionProtocolDeserTest.java | 25 +-- .../api/SegmentCompletionUtilsTest.java | 8 +- .../api/ServerTableSizeReaderTest.java | 28 +-- .../controller/api/TableSizeReaderTest.java | 125 +++++------ .../controller/api/TableTierReaderTest.java | 12 +- 13 files changed, 372 insertions(+), 378 deletions(-) diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/ConsumingSegmentInfoReaderStatelessTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/ConsumingSegmentInfoReaderStatelessTest.java index c16fe5b5733c..af25904593c6 100644 --- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/ConsumingSegmentInfoReaderStatelessTest.java +++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/ConsumingSegmentInfoReaderStatelessTest.java @@ -48,14 +48,16 @@ import org.mockito.ArgumentMatchers; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; -import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNull; +import static org.testng.Assert.assertTrue; /** @@ -76,7 +78,6 @@ public class ConsumingSegmentInfoReaderStatelessTest { private PinotHelixResourceManager _helix; private final Map _serverMap = new HashMap<>(); - @BeforeClass public void setUp() throws IOException { @@ -88,56 +89,54 @@ public void setUp() partitionToOffset0.put("0", "150"); Map partitionToOffset1 = new HashMap<>(); partitionToOffset1.put("1", "150"); - FakeConsumingInfoServer s0 = new FakeConsumingInfoServer(Lists - .newArrayList( - new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_0, "CONSUMING", 0, - partitionToOffset0, new SegmentConsumerInfo.PartitionOffsetInfo( - partitionToOffset0, Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap())), - new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_1, "CONSUMING", 0, - partitionToOffset1, new SegmentConsumerInfo.PartitionOffsetInfo( - partitionToOffset1, Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap())))); + FakeConsumingInfoServer s0 = new FakeConsumingInfoServer(Lists.newArrayList( + new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_0, "CONSUMING", 0, partitionToOffset0, + new SegmentConsumerInfo.PartitionOffsetInfo(partitionToOffset0, Collections.emptyMap(), + Collections.emptyMap(), Collections.emptyMap())), + new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_1, "CONSUMING", 0, partitionToOffset1, + new SegmentConsumerInfo.PartitionOffsetInfo(partitionToOffset1, Collections.emptyMap(), + Collections.emptyMap(), Collections.emptyMap())))); s0.start(uriPath, createHandler(200, s0._consumerInfos, 0)); _serverMap.put("server0", s0); // server1 - 1 consumer each for p0 and p1. CONSUMING. - FakeConsumingInfoServer s1 = new FakeConsumingInfoServer(Lists - .newArrayList( - new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_0, "CONSUMING", 0, - partitionToOffset0, new SegmentConsumerInfo.PartitionOffsetInfo( - partitionToOffset0, Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap())), - new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_1, "CONSUMING", 0, - partitionToOffset1, new SegmentConsumerInfo.PartitionOffsetInfo( - partitionToOffset1, Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap())))); + FakeConsumingInfoServer s1 = new FakeConsumingInfoServer(Lists.newArrayList( + new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_0, "CONSUMING", 0, partitionToOffset0, + new SegmentConsumerInfo.PartitionOffsetInfo(partitionToOffset0, Collections.emptyMap(), + Collections.emptyMap(), Collections.emptyMap())), + new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_1, "CONSUMING", 0, partitionToOffset1, + new SegmentConsumerInfo.PartitionOffsetInfo(partitionToOffset1, Collections.emptyMap(), + Collections.emptyMap(), Collections.emptyMap())))); s1.start(uriPath, createHandler(200, s1._consumerInfos, 0)); _serverMap.put("server1", s1); // server2 - p1 consumer CONSUMING. p0 consumer NOT_CONSUMING - FakeConsumingInfoServer s2 = new FakeConsumingInfoServer(Lists - .newArrayList(new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_0, "NOT_CONSUMING", 0, - partitionToOffset0, new SegmentConsumerInfo.PartitionOffsetInfo( - partitionToOffset0, Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap())), - new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_1, "CONSUMING", 0, partitionToOffset1, - new SegmentConsumerInfo.PartitionOffsetInfo(partitionToOffset1, Collections.emptyMap(), - Collections.emptyMap(), Collections.emptyMap())))); + FakeConsumingInfoServer s2 = new FakeConsumingInfoServer(Lists.newArrayList( + new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_0, "NOT_CONSUMING", 0, partitionToOffset0, + new SegmentConsumerInfo.PartitionOffsetInfo(partitionToOffset0, Collections.emptyMap(), + Collections.emptyMap(), Collections.emptyMap())), + new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_1, "CONSUMING", 0, partitionToOffset1, + new SegmentConsumerInfo.PartitionOffsetInfo(partitionToOffset1, Collections.emptyMap(), + Collections.emptyMap(), Collections.emptyMap())))); s2.start(uriPath, createHandler(200, s2._consumerInfos, 0)); _serverMap.put("server2", s2); // server3 - 1 consumer for p1. No consumer for p0 - FakeConsumingInfoServer s3 = new FakeConsumingInfoServer( - Lists.newArrayList(new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_1, "CONSUMING", 0, - partitionToOffset1, new SegmentConsumerInfo.PartitionOffsetInfo(partitionToOffset1, Collections.emptyMap(), + FakeConsumingInfoServer s3 = new FakeConsumingInfoServer(Lists.newArrayList( + new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_1, "CONSUMING", 0, partitionToOffset1, + new SegmentConsumerInfo.PartitionOffsetInfo(partitionToOffset1, Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap())))); s3.start(uriPath, createHandler(200, s3._consumerInfos, 0)); _serverMap.put("server3", s3); // server4 - unreachable/error/timeout - FakeConsumingInfoServer s4 = new FakeConsumingInfoServer(Lists - .newArrayList(new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_0, "CONSUMING", 0, - partitionToOffset0, new SegmentConsumerInfo.PartitionOffsetInfo(partitionToOffset0, - Collections.emptyMap(), Collections.emptyMap(), Collections.emptyMap())), - new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_1, "CONSUMING", 0, partitionToOffset1, - new SegmentConsumerInfo.PartitionOffsetInfo(partitionToOffset1, Collections.emptyMap(), - Collections.emptyMap(), Collections.emptyMap())))); + FakeConsumingInfoServer s4 = new FakeConsumingInfoServer(Lists.newArrayList( + new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_0, "CONSUMING", 0, partitionToOffset0, + new SegmentConsumerInfo.PartitionOffsetInfo(partitionToOffset0, Collections.emptyMap(), + Collections.emptyMap(), Collections.emptyMap())), + new SegmentConsumerInfo(SEGMENT_NAME_PARTITION_1, "CONSUMING", 0, partitionToOffset1, + new SegmentConsumerInfo.PartitionOffsetInfo(partitionToOffset1, Collections.emptyMap(), + Collections.emptyMap(), Collections.emptyMap())))); s4.start(uriPath, createHandler(200, s4._consumerInfos, TIMEOUT_MSEC * EXTENDED_TIMEOUT_FACTOR)); _serverMap.put("server4", s4); } @@ -198,11 +197,11 @@ private BiMap serverEndpoints(String... servers) { private void mockSetup(final String[] servers, final Set consumingSegments) throws InvalidConfigException { when(_helix.getServerToSegmentsMap(anyString())).thenAnswer(invocationOnMock -> subsetOfServerSegments(servers)); - when(_helix.getDataInstanceAdminEndpoints(ArgumentMatchers.anySet())) - .thenAnswer(invocationOnMock -> serverEndpoints(servers)); + when(_helix.getDataInstanceAdminEndpoints(ArgumentMatchers.anySet())).thenAnswer( + invocationOnMock -> serverEndpoints(servers)); when(_helix.getConsumingSegments(anyString())).thenAnswer(invocationOnMock -> consumingSegments); - when(_helix.getServersForSegment(anyString(), anyString())).thenAnswer(invocationOnMock -> new HashSet<>( - Arrays.asList(servers))); + when(_helix.getServersForSegment(anyString(), anyString())).thenAnswer( + invocationOnMock -> new HashSet<>(Arrays.asList(servers))); } private ConsumingSegmentInfoReader.ConsumingSegmentsInfoMap testRunner(final String[] servers, @@ -224,9 +223,8 @@ private TableStatus.IngestionStatus testRunnerIngestionStatus(final String[] ser private void checkIngestionStatus(final String[] servers, final Set consumingSegments, TableStatus.IngestionState expectedState) throws InvalidConfigException { - TableStatus.IngestionStatus ingestionStatus = - testRunnerIngestionStatus(servers, consumingSegments, TABLE_NAME); - Assert.assertEquals(ingestionStatus.getIngestionState(), expectedState); + TableStatus.IngestionStatus ingestionStatus = testRunnerIngestionStatus(servers, consumingSegments, TABLE_NAME); + assertEquals(ingestionStatus.getIngestionState(), expectedState); } @Test @@ -235,7 +233,7 @@ public void testEmptyTable() ConsumingSegmentInfoReader.ConsumingSegmentsInfoMap consumingSegmentsInfoMap = testRunner(new String[]{}, Collections.emptySet(), TABLE_NAME); checkIngestionStatus(new String[]{}, Collections.emptySet(), TableStatus.IngestionState.HEALTHY); - Assert.assertTrue(consumingSegmentsInfoMap._segmentToConsumingInfoMap.isEmpty()); + assertTrue(consumingSegmentsInfoMap._segmentToConsumingInfoMap.isEmpty()); } /** @@ -252,16 +250,16 @@ public void testHappyPath() List consumingSegmentInfos = consumingSegmentsInfoMap._segmentToConsumingInfoMap.get(SEGMENT_NAME_PARTITION_0); - Assert.assertEquals(consumingSegmentInfos.size(), 2); + assertEquals(consumingSegmentInfos.size(), 2); for (ConsumingSegmentInfoReader.ConsumingSegmentInfo info : consumingSegmentInfos) { - checkConsumingSegmentInfo(info, Sets.newHashSet("server0", "server1"), - ConsumerState.CONSUMING.toString(), "0", "150"); + checkConsumingSegmentInfo(info, Sets.newHashSet("server0", "server1"), ConsumerState.CONSUMING.toString(), "0", + "150"); } consumingSegmentInfos = consumingSegmentsInfoMap._segmentToConsumingInfoMap.get(SEGMENT_NAME_PARTITION_1); - Assert.assertEquals(consumingSegmentInfos.size(), 2); + assertEquals(consumingSegmentInfos.size(), 2); for (ConsumingSegmentInfoReader.ConsumingSegmentInfo info : consumingSegmentInfos) { - checkConsumingSegmentInfo(info, Sets.newHashSet("server0", "server1"), - ConsumerState.CONSUMING.toString(), "1", "150"); + checkConsumingSegmentInfo(info, Sets.newHashSet("server0", "server1"), ConsumerState.CONSUMING.toString(), "1", + "150"); } } @@ -279,21 +277,19 @@ public void testNotConsumingState() List consumingSegmentInfos = consumingSegmentsInfoMap._segmentToConsumingInfoMap.get(SEGMENT_NAME_PARTITION_0); - Assert.assertEquals(consumingSegmentInfos.size(), 2); + assertEquals(consumingSegmentInfos.size(), 2); for (ConsumingSegmentInfoReader.ConsumingSegmentInfo info : consumingSegmentInfos) { if (info._serverName.equals("server0")) { - checkConsumingSegmentInfo(info, Sets.newHashSet("server0"), ConsumerState.CONSUMING.toString(), - "0", "150"); + checkConsumingSegmentInfo(info, Sets.newHashSet("server0"), ConsumerState.CONSUMING.toString(), "0", "150"); } else { - checkConsumingSegmentInfo(info, Sets.newHashSet("server2"), - ConsumerState.NOT_CONSUMING.toString(), "0", "150"); + checkConsumingSegmentInfo(info, Sets.newHashSet("server2"), ConsumerState.NOT_CONSUMING.toString(), "0", "150"); } } consumingSegmentInfos = consumingSegmentsInfoMap._segmentToConsumingInfoMap.get(SEGMENT_NAME_PARTITION_1); - Assert.assertEquals(consumingSegmentInfos.size(), 2); + assertEquals(consumingSegmentInfos.size(), 2); for (ConsumingSegmentInfoReader.ConsumingSegmentInfo info : consumingSegmentInfos) { - checkConsumingSegmentInfo(info, Sets.newHashSet("server0", "server2"), - ConsumerState.CONSUMING.toString(), "1", "150"); + checkConsumingSegmentInfo(info, Sets.newHashSet("server0", "server2"), ConsumerState.CONSUMING.toString(), "1", + "150"); } } @@ -311,10 +307,10 @@ public void testNoConsumerButConsumingInIdealState() List consumingSegmentInfos = consumingSegmentsInfoMap._segmentToConsumingInfoMap.get(SEGMENT_NAME_PARTITION_0); - Assert.assertTrue(consumingSegmentInfos.isEmpty()); + assertTrue(consumingSegmentInfos.isEmpty()); consumingSegmentInfos = consumingSegmentsInfoMap._segmentToConsumingInfoMap.get(SEGMENT_NAME_PARTITION_1); - Assert.assertEquals(consumingSegmentInfos.size(), 1); + assertEquals(consumingSegmentInfos.size(), 1); checkConsumingSegmentInfo(consumingSegmentInfos.get(0), Sets.newHashSet("server3"), ConsumerState.CONSUMING.toString(), "1", "150"); } @@ -334,10 +330,10 @@ public void testNoConsumerOfflineInIdealState() List consumingSegmentInfos = consumingSegmentsInfoMap._segmentToConsumingInfoMap.get(SEGMENT_NAME_PARTITION_0); - Assert.assertNull(consumingSegmentInfos); + assertNull(consumingSegmentInfos); consumingSegmentInfos = consumingSegmentsInfoMap._segmentToConsumingInfoMap.get(SEGMENT_NAME_PARTITION_1); - Assert.assertEquals(consumingSegmentInfos.size(), 1); + assertEquals(consumingSegmentInfos.size(), 1); checkConsumingSegmentInfo(consumingSegmentInfos.get(0), Sets.newHashSet("server3"), ConsumerState.CONSUMING.toString(), "1", "150"); } @@ -356,20 +352,20 @@ public void testErrorFromServer() List consumingSegmentInfos = consumingSegmentsInfoMap._segmentToConsumingInfoMap.get(SEGMENT_NAME_PARTITION_0); - Assert.assertEquals(consumingSegmentInfos.size(), 1); + assertEquals(consumingSegmentInfos.size(), 1); checkConsumingSegmentInfo(consumingSegmentInfos.get(0), Sets.newHashSet("server0"), ConsumerState.CONSUMING.toString(), "0", "150"); consumingSegmentInfos = consumingSegmentsInfoMap._segmentToConsumingInfoMap.get(SEGMENT_NAME_PARTITION_1); - Assert.assertEquals(consumingSegmentInfos.size(), 1); + assertEquals(consumingSegmentInfos.size(), 1); checkConsumingSegmentInfo(consumingSegmentInfos.get(0), Sets.newHashSet("server0"), ConsumerState.CONSUMING.toString(), "1", "150"); } private void checkConsumingSegmentInfo(ConsumingSegmentInfoReader.ConsumingSegmentInfo info, Set serverNames, String consumerState, String partition, String offset) { - Assert.assertTrue(serverNames.contains(info._serverName)); - Assert.assertEquals(info._consumerState, consumerState); - Assert.assertEquals(info._partitionOffsetInfo._currentOffsetsMap.get(partition), offset); + assertTrue(serverNames.contains(info._serverName)); + assertEquals(info._consumerState, consumerState); + assertEquals(info._partitionOffsetInfo._currentOffsetsMap.get(partition), offset); } } diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotAccessControlUserRestletResourceTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotAccessControlUserRestletResourceTest.java index e96a78ffce33..abe684eb4267 100644 --- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotAccessControlUserRestletResourceTest.java +++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotAccessControlUserRestletResourceTest.java @@ -28,111 +28,110 @@ import org.apache.pinot.spi.utils.JsonUtils; import org.apache.pinot.spi.utils.StringUtil; import org.apache.pinot.spi.utils.builder.UserConfigBuilder; -import org.testng.Assert; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; -public class PinotAccessControlUserRestletResourceTest { - private static final ControllerTest TEST_INSTANCE = ControllerTest.getInstance(); - - private String _createUserUrl; - private final UserConfigBuilder _userConfigBuilder = new UserConfigBuilder(); - - @BeforeClass - public void setup() - throws Exception { - TEST_INSTANCE.setupSharedStateAndValidate(); - - _createUserUrl = TEST_INSTANCE.getControllerRequestURLBuilder().forUserCreate(); - _userConfigBuilder.setUsername("testUser").setPassword("123456").setComponentType(ComponentType.CONTROLLER) - .setRoleType(RoleType.USER); - } +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; +import static org.testng.Assert.fail; - @Test - public void testAddUser() - throws Exception { - String userconfigString = _userConfigBuilder.setUsername("bad.user.with.dot").build().toJsonString(); - try { - ControllerTest.sendPostRequest(_createUserUrl, userconfigString); - Assert.fail("Adding a user with dot in username does not fail"); - } catch (IOException e) { - Assert.assertTrue(e.getMessage().contains( - "Username: bad.user.with.dot containing '.' or space is not allowed")); - } - - // Creating an user with a valid username should succeed - userconfigString = _userConfigBuilder.setUsername("valid_table_name").build().toJsonString(); - ControllerTest.sendPostRequest(_createUserUrl, userconfigString); - - // Create an user that already exists should fail - try { - ControllerTest.sendPostRequest(_createUserUrl, userconfigString); - Assert.fail("Creation of an existing user does not fail"); - } catch (IOException e) { - Assert.assertTrue(e.getMessage().contains("User valid_table_name_CONTROLLER already exists")); - } - } - private UserConfig getUserConfig(String username, String componentType) - throws Exception { - String userConfigString = - ControllerTest.sendGetRequest(TEST_INSTANCE.getControllerRequestURLBuilder() - .forUserGet(username, componentType)); - String usernameWithType = username + "_" + componentType; - return JsonUtils.jsonNodeToObject(JsonUtils.stringToJsonNode(userConfigString) - .get(usernameWithType), UserConfig.class); +public class PinotAccessControlUserRestletResourceTest { + private static final ControllerTest TEST_INSTANCE = ControllerTest.getInstance(); + + private String _createUserUrl; + private final UserConfigBuilder _userConfigBuilder = new UserConfigBuilder(); + + @BeforeClass + public void setup() + throws Exception { + TEST_INSTANCE.setupSharedStateAndValidate(); + + _createUserUrl = TEST_INSTANCE.getControllerRequestURLBuilder().forUserCreate(); + _userConfigBuilder.setUsername("testUser").setPassword("123456").setComponentType(ComponentType.CONTROLLER) + .setRoleType(RoleType.USER); + } + + @Test + public void testAddUser() + throws Exception { + String userConfigString = _userConfigBuilder.setUsername("bad.user.with.dot").build().toJsonString(); + try { + ControllerTest.sendPostRequest(_createUserUrl, userConfigString); + fail("Adding a user with dot in username does not fail"); + } catch (IOException e) { + assertTrue(e.getMessage().contains("Username: bad.user.with.dot containing '.' or space is not allowed")); } - @Test - public void testUpdateUserConfig() - throws Exception { - String username = "updateTC"; - String userConfigString = _userConfigBuilder.setUsername(username).setComponentType(ComponentType.CONTROLLER) - .build().toJsonString(); - ControllerTest.sendPostRequest(_createUserUrl, userConfigString); - // user creation should succeed - UserConfig userConfig = getUserConfig(username, "CONTROLLER"); - Assert.assertEquals(userConfig.getRoleType().toString(), RoleType.USER.toString()); - Assert.assertTrue(BcryptUtils.checkpw("123456", userConfig.getPassword())); - userConfig.setRole("ADMIN"); - userConfig.setPassword("654321"); - - JsonNode jsonResponse = JsonUtils.stringToJsonNode(ControllerTest - .sendPutRequest(TEST_INSTANCE.getControllerRequestURLBuilder() - .forUpdateUserConfig(username, "CONTROLLER", true), - userConfig.toString())); - Assert.assertTrue(jsonResponse.has("status")); - - UserConfig modifiedConfig = getUserConfig(username, "CONTROLLER"); - Assert.assertEquals(modifiedConfig.getRoleType().toString(), "ADMIN"); - Assert.assertTrue(BcryptUtils.checkpw("654321", modifiedConfig.getPassword())); - } + // Creating a user with a valid username should succeed + userConfigString = _userConfigBuilder.setUsername("valid_table_name").build().toJsonString(); + ControllerTest.sendPostRequest(_createUserUrl, userConfigString); - @Test - public void testDeleteUser() - throws Exception { - // Case 1: Create a CONTORLLER user and delete it directly w/o using query param. - UserConfig controllerUserConfig = _userConfigBuilder.setUsername("user1") - .setComponentType(ComponentType.CONTROLLER).build(); - String creationResponse = ControllerTest.sendPostRequest(_createUserUrl, controllerUserConfig.toJsonString()); - Assert.assertEquals(creationResponse, "{\"status\":\"User user1_CONTROLLER has been successfully added!\"}"); - - // Delete controller user using CONTROLLER suffix - String deleteResponse = ControllerTest.sendDeleteRequest( - StringUtil.join("/", TEST_INSTANCE.getControllerBaseApiUrl(), - "users", "user1?component=CONTROLLER")); - Assert.assertEquals(deleteResponse, "{\"status\":\"User: user1_CONTROLLER has been successfully deleted\"}"); - - // Case 2: Create a BROKER user and delete it directly w/o using query param. - UserConfig brokerUserConfig = _userConfigBuilder.setUsername("user1").setComponentType(ComponentType.BROKER) - .build(); - creationResponse = ControllerTest.sendPostRequest(_createUserUrl, brokerUserConfig.toJsonString()); - Assert.assertEquals(creationResponse, "{\"status\":\"User user1_BROKER has been successfully added!\"}"); - - // Delete controller user using BROKER suffix - deleteResponse = ControllerTest.sendDeleteRequest( - StringUtil.join("/", TEST_INSTANCE.getControllerBaseApiUrl(), "users", "user1?component=BROKER") - ); - Assert.assertEquals(deleteResponse, "{\"status\":\"User: user1_BROKER has been successfully deleted\"}"); + // Create a user that already exists should fail + try { + ControllerTest.sendPostRequest(_createUserUrl, userConfigString); + fail("Creation of an existing user does not fail"); + } catch (IOException e) { + assertTrue(e.getMessage().contains("User valid_table_name_CONTROLLER already exists")); } + } + + private UserConfig getUserConfig(String username, String componentType) + throws Exception { + String userConfigString = ControllerTest.sendGetRequest( + TEST_INSTANCE.getControllerRequestURLBuilder().forUserGet(username, componentType)); + String usernameWithType = username + "_" + componentType; + return JsonUtils.jsonNodeToObject(JsonUtils.stringToJsonNode(userConfigString).get(usernameWithType), + UserConfig.class); + } + + @Test + public void testUpdateUserConfig() + throws Exception { + String username = "updateTC"; + String userConfigString = + _userConfigBuilder.setUsername(username).setComponentType(ComponentType.CONTROLLER).build().toJsonString(); + ControllerTest.sendPostRequest(_createUserUrl, userConfigString); + // user creation should succeed + UserConfig userConfig = getUserConfig(username, "CONTROLLER"); + assertEquals(userConfig.getRoleType().toString(), RoleType.USER.toString()); + assertTrue(BcryptUtils.checkpw("123456", userConfig.getPassword())); + userConfig.setRole("ADMIN"); + userConfig.setPassword("654321"); + + JsonNode jsonResponse = JsonUtils.stringToJsonNode(ControllerTest.sendPutRequest( + TEST_INSTANCE.getControllerRequestURLBuilder().forUpdateUserConfig(username, "CONTROLLER", true), + userConfig.toString())); + assertTrue(jsonResponse.has("status")); + + UserConfig modifiedConfig = getUserConfig(username, "CONTROLLER"); + assertEquals(modifiedConfig.getRoleType().toString(), "ADMIN"); + assertTrue(BcryptUtils.checkpw("654321", modifiedConfig.getPassword())); + } + + @Test + public void testDeleteUser() + throws Exception { + // Case 1: Create a CONTORLLER user and delete it directly w/o using query param. + UserConfig controllerUserConfig = + _userConfigBuilder.setUsername("user1").setComponentType(ComponentType.CONTROLLER).build(); + String creationResponse = ControllerTest.sendPostRequest(_createUserUrl, controllerUserConfig.toJsonString()); + assertEquals(creationResponse, "{\"status\":\"User user1_CONTROLLER has been successfully added!\"}"); + + // Delete controller user using CONTROLLER suffix + String deleteResponse = ControllerTest.sendDeleteRequest( + StringUtil.join("/", TEST_INSTANCE.getControllerBaseApiUrl(), "users", "user1?component=CONTROLLER")); + assertEquals(deleteResponse, "{\"status\":\"User: user1_CONTROLLER has been successfully deleted\"}"); + + // Case 2: Create a BROKER user and delete it directly w/o using query param. + UserConfig brokerUserConfig = + _userConfigBuilder.setUsername("user1").setComponentType(ComponentType.BROKER).build(); + creationResponse = ControllerTest.sendPostRequest(_createUserUrl, brokerUserConfig.toJsonString()); + assertEquals(creationResponse, "{\"status\":\"User user1_BROKER has been successfully added!\"}"); + + // Delete controller user using BROKER suffix + deleteResponse = ControllerTest.sendDeleteRequest( + StringUtil.join("/", TEST_INSTANCE.getControllerBaseApiUrl(), "users", "user1?component=BROKER")); + assertEquals(deleteResponse, "{\"status\":\"User: user1_BROKER has been successfully deleted\"}"); + } } diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotControllerAppConfigsTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotControllerAppConfigsTest.java index 7b95a68dd4b1..4d0ff555e9fd 100644 --- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotControllerAppConfigsTest.java +++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotControllerAppConfigsTest.java @@ -24,11 +24,12 @@ import org.apache.pinot.controller.helix.ControllerTest; import org.apache.pinot.spi.utils.JsonUtils; import org.apache.pinot.spi.utils.Obfuscator; -import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; +import static org.testng.Assert.assertEquals; + /** * Test for {@link org.apache.pinot.controller.api.resources.PinotControllerAppConfigs} class. @@ -53,8 +54,7 @@ public void testControllerAppConfigs() ControllerConf expectedControllerConf = TEST_INSTANCE.getControllerConfig(); PinotAppConfigs expected = new PinotAppConfigs(expectedControllerConf); - String configsJson = - ControllerTest.sendGetRequest(TEST_INSTANCE.getControllerRequestURLBuilder().forAppConfigs()); + String configsJson = ControllerTest.sendGetRequest(TEST_INSTANCE.getControllerRequestURLBuilder().forAppConfigs()); PinotAppConfigs actual = JsonUtils.stringToObject(configsJson, PinotAppConfigs.class); // RuntimeConfig is not checked as it has information that can change during the test run. @@ -62,18 +62,18 @@ public void testControllerAppConfigs() PinotAppConfigs.SystemConfig actualSystemConfig = actual.getSystemConfig(); PinotAppConfigs.SystemConfig expectedSystemConfig = expected.getSystemConfig(); - Assert.assertEquals(actualSystemConfig.getName(), expectedSystemConfig.getName()); - Assert.assertEquals(actualSystemConfig.getVersion(), expectedSystemConfig.getVersion()); - Assert.assertEquals(actualSystemConfig.getAvailableProcessors(), expectedSystemConfig.getAvailableProcessors()); - Assert.assertEquals(actualSystemConfig.getTotalPhysicalMemory(), expectedSystemConfig.getTotalPhysicalMemory()); - Assert.assertEquals(actualSystemConfig.getTotalSwapSpace(), expectedSystemConfig.getTotalSwapSpace()); + assertEquals(actualSystemConfig.getName(), expectedSystemConfig.getName()); + assertEquals(actualSystemConfig.getVersion(), expectedSystemConfig.getVersion()); + assertEquals(actualSystemConfig.getAvailableProcessors(), expectedSystemConfig.getAvailableProcessors()); + assertEquals(actualSystemConfig.getTotalPhysicalMemory(), expectedSystemConfig.getTotalPhysicalMemory()); + assertEquals(actualSystemConfig.getTotalSwapSpace(), expectedSystemConfig.getTotalSwapSpace()); // tests Equals on obfuscated expected and actual Obfuscator obfuscator = new Obfuscator(); String obfuscatedExpectedJson = obfuscator.toJsonString(expected); PinotAppConfigs obfuscatedExpected = JsonUtils.stringToObject(obfuscatedExpectedJson, PinotAppConfigs.class); - Assert.assertEquals(actual.getJvmConfig(), obfuscatedExpected.getJvmConfig()); - Assert.assertEquals(actual.getPinotConfig(), obfuscatedExpected.getPinotConfig()); + assertEquals(actual.getJvmConfig(), obfuscatedExpected.getJvmConfig()); + assertEquals(actual.getPinotConfig(), obfuscatedExpected.getPinotConfig()); } @AfterClass diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotFileUploadTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotFileUploadTest.java index e7a13d5a562a..e499edf634ea 100644 --- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotFileUploadTest.java +++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotFileUploadTest.java @@ -27,11 +27,12 @@ import org.apache.pinot.spi.config.table.TableConfig; import org.apache.pinot.spi.config.table.TableType; import org.apache.pinot.spi.utils.builder.TableConfigBuilder; -import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; +import static org.testng.Assert.assertTrue; + /** * Tests for the file upload restlet. @@ -47,9 +48,7 @@ public void setUp() // Adding table TableConfig tableConfig = new TableConfigBuilder(TableType.OFFLINE).setTableName(TABLE_NAME) - .setSegmentAssignmentStrategy("RandomAssignmentStrategy") - .setNumReplicas(2) - .build(); + .setSegmentAssignmentStrategy("RandomAssignmentStrategy").setNumReplicas(2).build(); TEST_INSTANCE.getHelixResourceManager().addTable(tableConfig); } @@ -63,7 +62,7 @@ public void testUploadBogusData() HttpResponse response = httpClient.execute(httpPost); int statusCode = response.getStatusLine().getStatusCode(); - Assert.assertTrue(statusCode >= 400 && statusCode < 500, "Status code = " + statusCode); + assertTrue(statusCode >= 400 && statusCode < 500, "Status code = " + statusCode); } @AfterClass diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotIngestionRestletResourceStatelessTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotIngestionRestletResourceStatelessTest.java index fe19747a1d7e..1820729300cd 100644 --- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotIngestionRestletResourceStatelessTest.java +++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotIngestionRestletResourceStatelessTest.java @@ -40,11 +40,14 @@ import org.apache.pinot.spi.data.Schema; import org.apache.pinot.spi.ingestion.batch.BatchConfigProperties; import org.apache.pinot.spi.utils.builder.TableConfigBuilder; -import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertTrue; + /** * Tests for the ingestion restlet @@ -87,11 +90,11 @@ public void testIngestEndpoint() throws Exception { List segments = _helixResourceManager.getSegmentsFor(TABLE_NAME_WITH_TYPE, false); - Assert.assertEquals(segments.size(), 0); + assertEquals(segments.size(), 0); // the ingestion dir does not exist before ingesting files File ingestionDir = new File(_controllerConfig.getLocalTempDir() + "/ingestion_dir"); - Assert.assertFalse(ingestionDir.exists()); + assertFalse(ingestionDir.exists()); // ingest from file Map batchConfigMap = new HashMap<>(); @@ -99,17 +102,17 @@ public void testIngestEndpoint() batchConfigMap.put(String.format("%s.delimiter", BatchConfigProperties.RECORD_READER_PROP_PREFIX), "|"); sendHttpPost(_controllerRequestURLBuilder.forIngestFromFile(TABLE_NAME_WITH_TYPE, batchConfigMap)); segments = _helixResourceManager.getSegmentsFor(TABLE_NAME_WITH_TYPE, false); - Assert.assertEquals(segments.size(), 1); + assertEquals(segments.size(), 1); // ingest from URI sendHttpPost(_controllerRequestURLBuilder.forIngestFromURI(TABLE_NAME_WITH_TYPE, batchConfigMap, String.format("file://%s", _inputFile.getAbsolutePath()))); segments = _helixResourceManager.getSegmentsFor(TABLE_NAME_WITH_TYPE, false); - Assert.assertEquals(segments.size(), 2); + assertEquals(segments.size(), 2); // the ingestion dir exists after ingesting files. We check the existence to make sure this dir is created under // _controllerConfig.getLocalTempDir() - Assert.assertTrue(ingestionDir.exists()); + assertTrue(ingestionDir.exists()); } private void sendHttpPost(String uri) @@ -121,7 +124,7 @@ private void sendHttpPost(String uri) httpPost.setEntity(reqEntity); HttpResponse response = httpClient.execute(httpPost); int statusCode = response.getStatusLine().getStatusCode(); - Assert.assertEquals(statusCode, 200); + assertEquals(statusCode, 200); } @AfterClass diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSchemaRestletResourceTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSchemaRestletResourceTest.java index b73f49b7e4a0..15fa17c436f1 100644 --- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSchemaRestletResourceTest.java +++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSchemaRestletResourceTest.java @@ -24,11 +24,14 @@ import org.apache.pinot.spi.data.DimensionFieldSpec; import org.apache.pinot.spi.data.FieldSpec.DataType; import org.apache.pinot.spi.data.Schema; -import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; +import static org.testng.Assert.fail; + public class PinotSchemaRestletResourceTest { private static final ControllerTest TEST_INSTANCE = ControllerTest.getInstance(); @@ -50,12 +53,13 @@ public void testPostJson() { + " \"metricFieldSpecs\" : [ {\n" + " \"name\" : \"score\",\n" + " \"dataType\" : \"FLOAT\"\n" + " } ]}"; try { - final String response = ControllerTest - .sendPostRequest(TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaCreate(), schemaString); - Assert.assertEquals(response, "{\"unrecognizedProperties\":{},\"status\":\"transcript successfully added\"}"); + final String response = + ControllerTest.sendPostRequest(TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaCreate(), + schemaString); + assertEquals(response, "{\"unrecognizedProperties\":{},\"status\":\"transcript successfully added\"}"); } catch (IOException e) { // should not reach here - Assert.fail("Shouldn't have caught an exception: " + e.getMessage()); + fail("Shouldn't have caught an exception: " + e.getMessage()); } } @@ -67,28 +71,26 @@ public void testCreateUpdateSchema() // Add the schema String addSchemaUrl = TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaCreate(); - SimpleHttpResponse resp = - ControllerTest.sendMultipartPostRequest(addSchemaUrl, schema.toSingleLineJsonString()); - Assert.assertEquals(resp.getStatusCode(), 200); + SimpleHttpResponse resp = ControllerTest.sendMultipartPostRequest(addSchemaUrl, schema.toSingleLineJsonString()); + assertEquals(resp.getStatusCode(), 200); // Add a new column DimensionFieldSpec newColumnFieldSpec = new DimensionFieldSpec("newColumn", DataType.STRING, true); schema.addField(newColumnFieldSpec); // Update the schema with addSchema api and override off - resp = - ControllerTest.sendMultipartPostRequest(addSchemaUrl + "?override=false", schema.toSingleLineJsonString()); - Assert.assertEquals(resp.getStatusCode(), 409); + resp = ControllerTest.sendMultipartPostRequest(addSchemaUrl + "?override=false", schema.toSingleLineJsonString()); + assertEquals(resp.getStatusCode(), 409); // Update the schema with addSchema api and override on resp = ControllerTest.sendMultipartPostRequest(addSchemaUrl, schema.toSingleLineJsonString()); - Assert.assertEquals(resp.getStatusCode(), 200); + assertEquals(resp.getStatusCode(), 200); // Get the schema and verify the new column exists String getSchemaUrl = TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaGet(schemaName); Schema remoteSchema = Schema.fromString(ControllerTest.sendGetRequest(getSchemaUrl)); - Assert.assertEquals(remoteSchema, schema); - Assert.assertTrue(remoteSchema.hasColumn(newColumnFieldSpec.getName())); + assertEquals(remoteSchema, schema); + assertTrue(remoteSchema.hasColumn(newColumnFieldSpec.getName())); // Add another new column DimensionFieldSpec newColumnFieldSpec2 = new DimensionFieldSpec("newColumn2", DataType.STRING, true); @@ -97,31 +99,31 @@ public void testCreateUpdateSchema() // Update the schema with updateSchema api String updateSchemaUrl = TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaUpdate(schemaName); resp = ControllerTest.sendMultipartPutRequest(updateSchemaUrl, schema.toSingleLineJsonString()); - Assert.assertEquals(resp.getStatusCode(), 200); + assertEquals(resp.getStatusCode(), 200); // Get the schema and verify both the new columns exist remoteSchema = Schema.fromString(ControllerTest.sendGetRequest(getSchemaUrl)); - Assert.assertEquals(remoteSchema, schema); - Assert.assertTrue(remoteSchema.hasColumn(newColumnFieldSpec.getName())); - Assert.assertTrue(remoteSchema.hasColumn(newColumnFieldSpec2.getName())); + assertEquals(remoteSchema, schema); + assertTrue(remoteSchema.hasColumn(newColumnFieldSpec.getName())); + assertTrue(remoteSchema.hasColumn(newColumnFieldSpec2.getName())); // Change the column data type - backward-incompatible change newColumnFieldSpec.setDataType(DataType.INT); // Update the schema with addSchema api and override on resp = ControllerTest.sendMultipartPostRequest(addSchemaUrl, schema.toSingleLineJsonString()); - Assert.assertEquals(resp.getStatusCode(), 400); + assertEquals(resp.getStatusCode(), 400); // Update the schema with updateSchema api resp = ControllerTest.sendMultipartPutRequest(updateSchemaUrl, schema.toSingleLineJsonString()); - Assert.assertEquals(resp.getStatusCode(), 400); + assertEquals(resp.getStatusCode(), 400); // Change the column data type from STRING to BOOLEAN newColumnFieldSpec.setDataType(DataType.BOOLEAN); // Update the schema with addSchema api and override on, force on resp = ControllerTest.sendMultipartPostRequest(addSchemaUrl + "?force=true", schema.toSingleLineJsonString()); - Assert.assertEquals(resp.getStatusCode(), 200); + assertEquals(resp.getStatusCode(), 200); // Change another column max length from default 512 to 2000 newColumnFieldSpec2.setMaxLength(2000); @@ -130,12 +132,12 @@ public void testCreateUpdateSchema() // Update the schema with addSchema api and override on resp = ControllerTest.sendMultipartPostRequest(addSchemaUrl, schema.toSingleLineJsonString()); - Assert.assertEquals(resp.getStatusCode(), 200); + assertEquals(resp.getStatusCode(), 200); // Get the schema and verify the default null value and max length have been changed remoteSchema = Schema.fromString(ControllerTest.sendGetRequest(getSchemaUrl)); - Assert.assertEquals(remoteSchema.getFieldSpecFor(newColumnFieldSpec2.getName()).getMaxLength(), 2000); - Assert.assertEquals(remoteSchema.getFieldSpecFor(newColumnFieldSpec2.getName()).getDefaultNullValue(), "0"); + assertEquals(remoteSchema.getFieldSpecFor(newColumnFieldSpec2.getName()).getMaxLength(), 2000); + assertEquals(remoteSchema.getFieldSpecFor(newColumnFieldSpec2.getName()).getDefaultNullValue(), "0"); // Change another column max length from 1000 newColumnFieldSpec2.setMaxLength(1000); @@ -144,12 +146,12 @@ public void testCreateUpdateSchema() // Update the schema with updateSchema api and override on resp = ControllerTest.sendMultipartPutRequest(updateSchemaUrl, schema.toSingleLineJsonString()); - Assert.assertEquals(resp.getStatusCode(), 200); + assertEquals(resp.getStatusCode(), 200); // Get the schema and verify the default null value and max length have been changed remoteSchema = Schema.fromString(ControllerTest.sendGetRequest(getSchemaUrl)); - Assert.assertEquals(remoteSchema.getFieldSpecFor(newColumnFieldSpec2.getName()).getMaxLength(), 1000); - Assert.assertEquals(remoteSchema.getFieldSpecFor(newColumnFieldSpec2.getName()).getDefaultNullValue(), "1"); + assertEquals(remoteSchema.getFieldSpecFor(newColumnFieldSpec2.getName()).getMaxLength(), 1000); + assertEquals(remoteSchema.getFieldSpecFor(newColumnFieldSpec2.getName()).getDefaultNullValue(), "1"); // Add a new BOOLEAN column DimensionFieldSpec newColumnFieldSpec3 = new DimensionFieldSpec("newColumn3", DataType.BOOLEAN, true); @@ -157,35 +159,34 @@ public void testCreateUpdateSchema() // Update the schema with updateSchema api resp = ControllerTest.sendMultipartPutRequest(updateSchemaUrl, schema.toSingleLineJsonString()); - Assert.assertEquals(resp.getStatusCode(), 200); + assertEquals(resp.getStatusCode(), 200); // Get the schema and verify the new column has BOOLEAN data type remoteSchema = Schema.fromString(ControllerTest.sendGetRequest(getSchemaUrl)); - Assert.assertEquals(remoteSchema.getFieldSpecFor(newColumnFieldSpec3.getName()).getDataType(), DataType.BOOLEAN); + assertEquals(remoteSchema.getFieldSpecFor(newColumnFieldSpec3.getName()).getDataType(), DataType.BOOLEAN); // Post invalid schema string String invalidSchemaString = schema.toSingleLineJsonString().substring(1); resp = ControllerTest.sendMultipartPostRequest(addSchemaUrl, invalidSchemaString); - Assert.assertEquals(resp.getStatusCode(), 400); + assertEquals(resp.getStatusCode(), 400); resp = ControllerTest.sendMultipartPutRequest(updateSchemaUrl, invalidSchemaString); - Assert.assertEquals(resp.getStatusCode(), 400); + assertEquals(resp.getStatusCode(), 400); // Update schema with null schema name schema.setSchemaName(null); resp = ControllerTest.sendMultipartPutRequest(updateSchemaUrl, schema.toSingleLineJsonString()); - Assert.assertEquals(resp.getStatusCode(), 400); + assertEquals(resp.getStatusCode(), 400); // Update schema with non-matching schema name String newSchemaName = "newSchemaName"; schema.setSchemaName(newSchemaName); resp = ControllerTest.sendMultipartPutRequest(updateSchemaUrl, schema.toSingleLineJsonString()); - Assert.assertEquals(resp.getStatusCode(), 400); + assertEquals(resp.getStatusCode(), 400); // Update non-existing schema resp = ControllerTest.sendMultipartPutRequest( - TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaUpdate(newSchemaName), - schema.toSingleLineJsonString()); - Assert.assertEquals(resp.getStatusCode(), 404); + TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaUpdate(newSchemaName), schema.toSingleLineJsonString()); + assertEquals(resp.getStatusCode(), 404); } @Test @@ -201,21 +202,19 @@ public void testUnrecognizedProperties() + " \"metricFieldSpecs\" : [ {\n" + " \"name\" : \"score\",\n" + " \"dataType\" : \"FLOAT\"\n" + " } ]}"; - String response = - ControllerTest.sendPostRequest(TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaValidate(), - schemaStringWithExtraProps); - Assert.assertTrue(response.contains("/illegalKey1\" : 1")); + String response = ControllerTest.sendPostRequest(TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaValidate(), + schemaStringWithExtraProps); + assertTrue(response.contains("/illegalKey1\" : 1")); - response = - ControllerTest.sendPostRequest(TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaCreate(), - schemaStringWithExtraProps); - Assert.assertEquals(response, + response = ControllerTest.sendPostRequest(TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaCreate(), + schemaStringWithExtraProps); + assertEquals(response, "{\"unrecognizedProperties\":{\"/illegalKey1\":1},\"status\":\"transcript2 successfully added\"}"); - response = ControllerTest.sendPutRequest( - TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaUpdate("transcript2"), - schemaStringWithExtraProps); - Assert.assertEquals(response, + response = + ControllerTest.sendPutRequest(TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaUpdate("transcript2"), + schemaStringWithExtraProps); + assertEquals(response, "{\"unrecognizedProperties\":{\"/illegalKey1\":1},\"status\":\"transcript2 successfully added\"}"); } @@ -232,19 +231,19 @@ public void testUnrecognizedPropertiesFileEndpoints() + " \"metricFieldSpecs\" : [ {\n" + " \"name\" : \"score\",\n" + " \"dataType\" : \"FLOAT\"\n" + " } ]}"; - SimpleHttpResponse response = ControllerTest.sendMultipartPostRequest( - TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaValidate(), schemaStringWithExtraProps); - Assert.assertTrue(response.getResponse().contains("/illegalKey1\" : 1")); + SimpleHttpResponse response = + ControllerTest.sendMultipartPostRequest(TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaValidate(), + schemaStringWithExtraProps); + assertTrue(response.getResponse().contains("/illegalKey1\" : 1")); - response = ControllerTest.sendMultipartPostRequest( - TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaCreate(), schemaStringWithExtraProps); - Assert.assertEquals(response.getResponse(), + response = ControllerTest.sendMultipartPostRequest(TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaCreate(), + schemaStringWithExtraProps); + assertEquals(response.getResponse(), "{\"unrecognizedProperties\":{\"/illegalKey1\":1},\"status\":\"transcript2 successfully added\"}"); response = ControllerTest.sendMultipartPutRequest( - TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaUpdate("transcript2"), - schemaStringWithExtraProps); - Assert.assertEquals(response.getResponse(), + TEST_INSTANCE.getControllerRequestURLBuilder().forSchemaUpdate("transcript2"), schemaStringWithExtraProps); + assertEquals(response.getResponse(), "{\"unrecognizedProperties\":{\"/illegalKey1\":1},\"status\":\"transcript2 successfully added\"}"); } diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSegmentRestletResourceTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSegmentRestletResourceTest.java index 090d066eeda9..d09031603152 100644 --- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSegmentRestletResourceTest.java +++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSegmentRestletResourceTest.java @@ -31,11 +31,14 @@ import org.apache.pinot.spi.utils.JsonUtils; import org.apache.pinot.spi.utils.builder.TableConfigBuilder; import org.apache.pinot.spi.utils.builder.TableNameBuilder; -import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertThrows; +import static org.testng.Assert.assertTrue; + public class PinotSegmentRestletResourceTest { private static final ControllerTest TEST_INSTANCE = ControllerTest.getInstance(); @@ -74,7 +77,7 @@ public void testListSegmentLineage() // There should be no segment lineage at this point. String segmentLineageResponse = ControllerTest.sendGetRequest(TEST_INSTANCE.getControllerRequestURLBuilder() .forListAllSegmentLineages(TABLE_NAME, TableType.OFFLINE.toString())); - Assert.assertEquals(segmentLineageResponse, ""); + assertEquals(segmentLineageResponse, ""); // Now starts to replace segments. List segmentsFrom = Arrays.asList("s0", "s1"); @@ -91,22 +94,20 @@ public void testListSegmentLineage() // There should now be two segment lineage entries resulting from the operations above. segmentLineageResponse = ControllerTest.sendGetRequest(TEST_INSTANCE.getControllerRequestURLBuilder() .forListAllSegmentLineages(TABLE_NAME, TableType.OFFLINE.toString())); - Assert.assertTrue(segmentLineageResponse.contains("\"state\":\"IN_PROGRESS\"")); - Assert.assertTrue(segmentLineageResponse.contains("\"segmentsFrom\":[\"s0\",\"s1\"]")); - Assert.assertTrue(segmentLineageResponse.contains("\"segmentsTo\":[\"some_segment\"]")); - Assert.assertTrue(segmentLineageResponse.contains("\"segmentsFrom\":[\"s2\",\"s3\"]")); - Assert.assertTrue(segmentLineageResponse.contains("\"segmentsTo\":[\"another_segment\"]")); + assertTrue(segmentLineageResponse.contains("\"state\":\"IN_PROGRESS\"")); + assertTrue(segmentLineageResponse.contains("\"segmentsFrom\":[\"s0\",\"s1\"]")); + assertTrue(segmentLineageResponse.contains("\"segmentsTo\":[\"some_segment\"]")); + assertTrue(segmentLineageResponse.contains("\"segmentsFrom\":[\"s2\",\"s3\"]")); + assertTrue(segmentLineageResponse.contains("\"segmentsTo\":[\"another_segment\"]")); // Ensures the two entries are sorted in chronological order by timestamp. - Assert.assertTrue( - segmentLineageResponse.indexOf(segmentLineageId) < segmentLineageResponse.indexOf(nextSegmentLineageId)); + assertTrue(segmentLineageResponse.indexOf(segmentLineageId) < segmentLineageResponse.indexOf(nextSegmentLineageId)); // List segment lineage should fail for non-existing table - Assert.assertThrows(IOException.class, () -> ControllerTest.sendGetRequest( - TEST_INSTANCE.getControllerRequestURLBuilder() - .forListAllSegmentLineages("non-existing-table", TableType.OFFLINE.toString()))); + assertThrows(IOException.class, () -> ControllerTest.sendGetRequest(TEST_INSTANCE.getControllerRequestURLBuilder() + .forListAllSegmentLineages("non-existing-table", TableType.OFFLINE.toString()))); // List segment lineage should also fail for invalid table type. - Assert.assertThrows(IOException.class, () -> ControllerTest.sendGetRequest( + assertThrows(IOException.class, () -> ControllerTest.sendGetRequest( TEST_INSTANCE.getControllerRequestURLBuilder().forListAllSegmentLineages(TABLE_NAME, "invalid-type"))); // Delete segments @@ -151,13 +152,13 @@ public void testSegmentCrcApi() String resp = ControllerTest.sendGetRequest( TEST_INSTANCE.getControllerRequestURLBuilder().forSegmentMetadata(TABLE_NAME, entry.getKey())); Map fetchedMetadata = JsonUtils.stringToObject(resp, Map.class); - Assert.assertEquals(fetchedMetadata.get("segment.download.url"), "downloadUrl"); + assertEquals(fetchedMetadata.get("segment.download.url"), "downloadUrl"); // use table name with table type resp = ControllerTest.sendGetRequest( TEST_INSTANCE.getControllerRequestURLBuilder().forSegmentMetadata(TABLE_NAME + "_OFFLINE", entry.getKey())); fetchedMetadata = JsonUtils.stringToObject(resp, Map.class); - Assert.assertEquals(fetchedMetadata.get("segment.download.url"), "downloadUrl"); + assertEquals(fetchedMetadata.get("segment.download.url"), "downloadUrl"); // Add more segments for (int i = 0; i < 5; i++) { @@ -188,10 +189,10 @@ private void checkCrcRequest(Map metadataTable, int exp Map crcMap = JsonUtils.stringToObject(crcMapStr, Map.class); for (String segmentName : crcMap.keySet()) { SegmentMetadata metadata = metadataTable.get(segmentName); - Assert.assertTrue(metadata != null); - Assert.assertEquals(crcMap.get(segmentName), metadata.getCrc()); + assertTrue(metadata != null); + assertEquals(crcMap.get(segmentName), metadata.getCrc()); } - Assert.assertEquals(crcMap.size(), expectedSize); + assertEquals(crcMap.size(), expectedSize); } @AfterClass diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSegmentsMetadataTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSegmentsMetadataTest.java index 46997a55e4dd..3c49ecc80fb3 100644 --- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSegmentsMetadataTest.java +++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotSegmentsMetadataTest.java @@ -41,7 +41,6 @@ import org.mockito.stubbing.Answer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -49,6 +48,7 @@ import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import static org.testng.Assert.assertEquals; public class PinotSegmentsMetadataTest { @@ -156,7 +156,7 @@ public void testServerSegmentMetadataFetchSuccess() { BiMap endpoints = serverEndpoints(servers); String table = "offline"; List metadata = testMetadataResponse(table, serverToSegmentsMap, endpoints); - Assert.assertEquals(1, metadata.size()); + assertEquals(1, metadata.size()); } @Test @@ -174,8 +174,8 @@ public void testServerSegmentMetadataFetchError() { BiMap endpoints = serverEndpoints(servers); String table = "offline"; List metadata = testMetadataResponse(table, serverToSegmentsMap, endpoints); - Assert.assertEquals(1, metadata.size()); - Assert.assertEquals(expectedNonResponsiveServers, totalResponses - metadata.size()); + assertEquals(1, metadata.size()); + assertEquals(expectedNonResponsiveServers, totalResponses - metadata.size()); } public static class SegmentsServerMock extends FakeHttpServer { @@ -199,22 +199,11 @@ public static class MetadataConstants { public static final List SEGMENT_SERVERS = Arrays.asList("server1", "server2", "server3", "server4", "server5"); public static final String SEGMENT_METADATA_STR = - "{\n" - + " \"segmentName\" : \"testTable_OFFLINE_default_s1\",\n" - + " \"schemaName\" : null,\n" - + " \"crc\" : 1804064321,\n" - + " \"creationTimeMillis\" : 1595127594768,\n" - + " \"creationTimeReadable\" : \"2020-07-19T02:59:54:768 UTC\",\n" - + " \"timeGranularitySec\" : null,\n" - + " \"startTimeMillis\" : null,\n" - + " \"startTimeReadable\" : null,\n" - + " \"endTimeMillis\" : null,\n" - + " \"endTimeReadable\" : null,\n" - + " \"segmentVersion\" : \"v3\",\n" - + " \"creatorName\" : null,\n" - + " \"paddingCharacter\" : \"\\u0000\",\n" - + " \"columns\" : [ ],\n" - + " \"indexes\" : [ { } ]\n" - + "}"; + "{\n" + " \"segmentName\" : \"testTable_OFFLINE_default_s1\",\n" + " \"schemaName\" : null,\n" + + " \"crc\" : 1804064321,\n" + " \"creationTimeMillis\" : 1595127594768,\n" + + " \"creationTimeReadable\" : \"2020-07-19T02:59:54:768 UTC\",\n" + " \"timeGranularitySec\" : null,\n" + + " \"startTimeMillis\" : null,\n" + " \"startTimeReadable\" : null,\n" + " \"endTimeMillis\" : null,\n" + + " \"endTimeReadable\" : null,\n" + " \"segmentVersion\" : \"v3\",\n" + " \"creatorName\" : null,\n" + + " \"paddingCharacter\" : \"\\u0000\",\n" + " \"columns\" : [ ],\n" + " \"indexes\" : [ { } ]\n" + "}"; } } diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/SegmentCompletionProtocolDeserTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/SegmentCompletionProtocolDeserTest.java index 736c3c6415cb..3420d069f866 100644 --- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/SegmentCompletionProtocolDeserTest.java +++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/SegmentCompletionProtocolDeserTest.java @@ -42,8 +42,7 @@ public void testCompleteResponseParams() { // Test with all params SegmentCompletionProtocol.Response.Params params = new SegmentCompletionProtocol.Response.Params().withBuildTimeSeconds(BUILD_TIME_MILLIS) - .withStreamPartitionMsgOffset(OFFSET.toString()) - .withSegmentLocation(SEGMENT_LOCATION).withSplitCommit(true) + .withStreamPartitionMsgOffset(OFFSET.toString()).withSegmentLocation(SEGMENT_LOCATION).withSplitCommit(true) .withStatus(SegmentCompletionProtocol.ControllerResponseStatus.COMMIT); SegmentCompletionProtocol.Response response = new SegmentCompletionProtocol.Response(params); @@ -75,8 +74,8 @@ public void testJsonResponseWithAllParams() { // Test with all params SegmentCompletionProtocol.Response.Params params = new SegmentCompletionProtocol.Response.Params().withBuildTimeSeconds(BUILD_TIME_MILLIS) - .withStreamPartitionMsgOffset(OFFSET.toString()) - .withSegmentLocation(SEGMENT_LOCATION).withSplitCommit(true).withControllerVipUrl(CONTROLLER_VIP_URL) + .withStreamPartitionMsgOffset(OFFSET.toString()).withSegmentLocation(SEGMENT_LOCATION).withSplitCommit(true) + .withControllerVipUrl(CONTROLLER_VIP_URL) .withStatus(SegmentCompletionProtocol.ControllerResponseStatus.COMMIT); SegmentCompletionProtocol.Response response = new SegmentCompletionProtocol.Response(params); @@ -93,8 +92,8 @@ public void testJsonResponseWithAllParams() { public void testJsonNullSegmentLocationAndVip() { SegmentCompletionProtocol.Response.Params params = new SegmentCompletionProtocol.Response.Params().withBuildTimeSeconds(BUILD_TIME_MILLIS) - .withStreamPartitionMsgOffset(OFFSET.toString()) - .withSplitCommit(false).withStatus(SegmentCompletionProtocol.ControllerResponseStatus.COMMIT); + .withStreamPartitionMsgOffset(OFFSET.toString()).withSplitCommit(false) + .withStatus(SegmentCompletionProtocol.ControllerResponseStatus.COMMIT); SegmentCompletionProtocol.Response response = new SegmentCompletionProtocol.Response(params); JsonNode jsonNode = JsonUtils.objectToJsonNode(response); @@ -110,8 +109,8 @@ public void testJsonNullSegmentLocationAndVip() { public void testJsonResponseWithoutSplitCommit() { SegmentCompletionProtocol.Response.Params params = new SegmentCompletionProtocol.Response.Params().withBuildTimeSeconds(BUILD_TIME_MILLIS) - .withStreamPartitionMsgOffset(OFFSET.toString()) - .withSplitCommit(false).withStatus(SegmentCompletionProtocol.ControllerResponseStatus.COMMIT); + .withStreamPartitionMsgOffset(OFFSET.toString()).withSplitCommit(false) + .withStatus(SegmentCompletionProtocol.ControllerResponseStatus.COMMIT); SegmentCompletionProtocol.Response response = new SegmentCompletionProtocol.Response(params); JsonNode jsonNode = JsonUtils.objectToJsonNode(response); @@ -129,9 +128,8 @@ public void testJsonResponseWithSegmentLocationNullVip() { // regardless SegmentCompletionProtocol.Response.Params params = new SegmentCompletionProtocol.Response.Params().withBuildTimeSeconds(BUILD_TIME_MILLIS) - .withStreamPartitionMsgOffset(OFFSET.toString()) - .withSegmentLocation(SEGMENT_LOCATION).withSplitCommit(false) - .withStatus(SegmentCompletionProtocol.ControllerResponseStatus.COMMIT); + .withStreamPartitionMsgOffset(OFFSET.toString()).withSegmentLocation(SEGMENT_LOCATION) + .withSplitCommit(false).withStatus(SegmentCompletionProtocol.ControllerResponseStatus.COMMIT); SegmentCompletionProtocol.Response response = new SegmentCompletionProtocol.Response(params); JsonNode jsonNode = JsonUtils.objectToJsonNode(response); @@ -149,9 +147,8 @@ public void testJsonResponseWithVipAndNullSegmentLocation() { // regardless SegmentCompletionProtocol.Response.Params params = new SegmentCompletionProtocol.Response.Params().withBuildTimeSeconds(BUILD_TIME_MILLIS) - .withStreamPartitionMsgOffset(OFFSET.toString()) - .withControllerVipUrl(CONTROLLER_VIP_URL).withSplitCommit(false) - .withStatus(SegmentCompletionProtocol.ControllerResponseStatus.COMMIT); + .withStreamPartitionMsgOffset(OFFSET.toString()).withControllerVipUrl(CONTROLLER_VIP_URL) + .withSplitCommit(false).withStatus(SegmentCompletionProtocol.ControllerResponseStatus.COMMIT); SegmentCompletionProtocol.Response response = new SegmentCompletionProtocol.Response(params); JsonNode jsonNode = JsonUtils.objectToJsonNode(response); diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/SegmentCompletionUtilsTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/SegmentCompletionUtilsTest.java index 11cb8ba6ff17..06f9cd43c015 100644 --- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/SegmentCompletionUtilsTest.java +++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/SegmentCompletionUtilsTest.java @@ -19,22 +19,24 @@ package org.apache.pinot.controller.api; import org.apache.pinot.controller.util.SegmentCompletionUtils; -import org.testng.Assert; import org.testng.annotations.Test; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; + public class SegmentCompletionUtilsTest { @Test public void testGenerateSegmentFilePrefix() { String segmentName = "segment"; - Assert.assertEquals(SegmentCompletionUtils.getSegmentNamePrefix(segmentName), "segment.tmp."); + assertEquals(SegmentCompletionUtils.getSegmentNamePrefix(segmentName), "segment.tmp."); } @Test public void testGenerateSegmentLocation() { String segmentName = "segment"; String segmentNamePrefix = SegmentCompletionUtils.getSegmentNamePrefix(segmentName); - Assert.assertTrue(SegmentCompletionUtils.generateSegmentFileName(segmentName).startsWith(segmentNamePrefix)); + assertTrue(SegmentCompletionUtils.generateSegmentFileName(segmentName).startsWith(segmentNamePrefix)); } } diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/ServerTableSizeReaderTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/ServerTableSizeReaderTest.java index f3c00f94b3cd..f694738b90f6 100644 --- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/ServerTableSizeReaderTest.java +++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/ServerTableSizeReaderTest.java @@ -40,11 +40,13 @@ import org.apache.pinot.spi.utils.JsonUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; + public class ServerTableSizeReaderTest { private static final Logger LOGGER = LoggerFactory.getLogger(ServerTableSizeReader.class); @@ -155,14 +157,14 @@ public void testServerSizeReader() { endpoints.put(_serverList.get(5), _endpointList.get(5)); Map> serverSizes = reader.getSegmentSizeInfoFromServers(endpoints, "foo", TIMEOUT_MSEC); - Assert.assertEquals(serverSizes.size(), 3); - Assert.assertTrue(serverSizes.containsKey(_serverList.get(0))); - Assert.assertTrue(serverSizes.containsKey(_serverList.get(1))); - Assert.assertTrue(serverSizes.containsKey(_serverList.get(5))); - - Assert.assertEquals(serverSizes.get(_serverList.get(0)), _tableInfo1.getSegments()); - Assert.assertEquals(serverSizes.get(_serverList.get(1)), _tableInfo2.getSegments()); - Assert.assertEquals(serverSizes.get(_serverList.get(5)), _tableInfo3.getSegments()); + assertEquals(serverSizes.size(), 3); + assertTrue(serverSizes.containsKey(_serverList.get(0))); + assertTrue(serverSizes.containsKey(_serverList.get(1))); + assertTrue(serverSizes.containsKey(_serverList.get(5))); + + assertEquals(serverSizes.get(_serverList.get(0)), _tableInfo1.getSegments()); + assertEquals(serverSizes.get(_serverList.get(1)), _tableInfo2.getSegments()); + assertEquals(serverSizes.get(_serverList.get(5)), _tableInfo3.getSegments()); } @Test @@ -174,10 +176,10 @@ public void testServerSizesErrors() { } Map> serverSizes = reader.getSegmentSizeInfoFromServers(endpoints, "foo", TIMEOUT_MSEC); - Assert.assertEquals(serverSizes.size(), 3); - Assert.assertTrue(serverSizes.containsKey(_serverList.get(0))); - Assert.assertTrue(serverSizes.containsKey(_serverList.get(1))); - Assert.assertTrue(serverSizes.containsKey(_serverList.get(5))); + assertEquals(serverSizes.size(), 3); + assertTrue(serverSizes.containsKey(_serverList.get(0))); + assertTrue(serverSizes.containsKey(_serverList.get(1))); + assertTrue(serverSizes.containsKey(_serverList.get(5))); // error and timing out servers are not part of responses } } diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableSizeReaderTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableSizeReaderTest.java index 0f5cd75ad0c0..a46fd912c54c 100644 --- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableSizeReaderTest.java +++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableSizeReaderTest.java @@ -55,14 +55,17 @@ import org.mockito.stubbing.Answer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; -import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertNull; +import static org.testng.Assert.assertTrue; public class TableSizeReaderTest { @@ -221,7 +224,7 @@ private BiMap serverEndpoints(String... servers) { public void testNoSuchTable() throws InvalidConfigException { TableSizeReader reader = new TableSizeReader(_executor, _connectionManager, _controllerMetrics, _helix); - Assert.assertNull(reader.getTableSizeDetails("mytable", 5000)); + assertNull(reader.getTableSizeDetails("mytable", 5000)); } private TableSizeReader.TableSizeDetails testRunner(final String[] servers, String table) @@ -234,7 +237,7 @@ public Object answer(InvocationOnMock invocationOnMock) } }); - when(_helix.getDataInstanceAdminEndpoints(ArgumentMatchers.anySet())).thenAnswer(new Answer() { + when(_helix.getDataInstanceAdminEndpoints(ArgumentMatchers.anySet())).thenAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocationOnMock) throws Throwable { @@ -278,30 +281,30 @@ private void validateTableSubTypeSize(String[] servers, TableSizeReader.TableSub estimatedSize += segmentDetails._estimatedSizeInBytes; } - Assert.assertNotNull(segmentDetails); + assertNotNull(segmentDetails); final List expectedServers = segmentEntry.getValue(); final long expectedSegmentSize = FakeSizeServer.getSegmentSize(segmentName); int numResponses = expectedServers.size(); for (String expectedServer : expectedServers) { - Assert.assertTrue(segmentDetails._serverInfo.containsKey(expectedServer)); + assertTrue(segmentDetails._serverInfo.containsKey(expectedServer)); if (expectedServer.equals("server2") || expectedServer.equals("server5")) { hasErrors = true; numResponses--; } } if (numResponses != 0) { - Assert.assertEquals(segmentDetails._reportedSizeInBytes, numResponses * expectedSegmentSize); - Assert.assertEquals(segmentDetails._estimatedSizeInBytes, expectedServers.size() * expectedSegmentSize); + assertEquals(segmentDetails._reportedSizeInBytes, numResponses * expectedSegmentSize); + assertEquals(segmentDetails._estimatedSizeInBytes, expectedServers.size() * expectedSegmentSize); } else { - Assert.assertEquals(segmentDetails._reportedSizeInBytes, TableSizeReader.DEFAULT_SIZE_WHEN_MISSING_OR_ERROR); - Assert.assertEquals(segmentDetails._estimatedSizeInBytes, TableSizeReader.DEFAULT_SIZE_WHEN_MISSING_OR_ERROR); + assertEquals(segmentDetails._reportedSizeInBytes, TableSizeReader.DEFAULT_SIZE_WHEN_MISSING_OR_ERROR); + assertEquals(segmentDetails._estimatedSizeInBytes, TableSizeReader.DEFAULT_SIZE_WHEN_MISSING_OR_ERROR); } } - Assert.assertEquals(tableSize._reportedSizeInBytes, reportedSize); - Assert.assertEquals(tableSize._estimatedSizeInBytes, estimatedSize); + assertEquals(tableSize._reportedSizeInBytes, reportedSize); + assertEquals(tableSize._estimatedSizeInBytes, estimatedSize); if (hasErrors) { - Assert.assertTrue(tableSize._reportedSizeInBytes != tableSize._estimatedSizeInBytes); - Assert.assertTrue(tableSize._missingSegments > 0); + assertTrue(tableSize._reportedSizeInBytes != tableSize._estimatedSizeInBytes); + assertTrue(tableSize._missingSegments > 0); } } @@ -312,22 +315,24 @@ public void testGetTableSubTypeSizeAllSuccess() String table = "offline"; TableSizeReader.TableSizeDetails tableSizeDetails = testRunner(servers, table); TableSizeReader.TableSubTypeSizeDetails offlineSizes = tableSizeDetails._offlineSegments; - Assert.assertNotNull(offlineSizes); - Assert.assertEquals(offlineSizes._segments.size(), 4); - Assert.assertEquals(offlineSizes._reportedSizeInBytes, offlineSizes._estimatedSizeInBytes); + assertNotNull(offlineSizes); + assertEquals(offlineSizes._segments.size(), 4); + assertEquals(offlineSizes._reportedSizeInBytes, offlineSizes._estimatedSizeInBytes); validateTableSubTypeSize(servers, offlineSizes); - Assert.assertNull(tableSizeDetails._realtimeSegments); - Assert.assertEquals(tableSizeDetails._reportedSizeInBytes, offlineSizes._reportedSizeInBytes); - Assert.assertEquals(tableSizeDetails._estimatedSizeInBytes, offlineSizes._estimatedSizeInBytes); + assertNull(tableSizeDetails._realtimeSegments); + assertEquals(tableSizeDetails._reportedSizeInBytes, offlineSizes._reportedSizeInBytes); + assertEquals(tableSizeDetails._estimatedSizeInBytes, offlineSizes._estimatedSizeInBytes); String tableNameWithType = TableNameBuilder.OFFLINE.tableNameWithType(table); - Assert.assertEquals(_controllerMetrics - .getValueOfTableGauge(tableNameWithType, ControllerGauge.TABLE_STORAGE_EST_MISSING_SEGMENT_PERCENT), 0); - Assert.assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, - ControllerGauge.TABLE_SIZE_PER_REPLICA_ON_SERVER), offlineSizes._estimatedSizeInBytes / NUM_REPLICAS); - Assert.assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, - ControllerGauge.TABLE_TOTAL_SIZE_ON_SERVER), offlineSizes._estimatedSizeInBytes); - Assert.assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, - ControllerGauge.LARGEST_SEGMENT_SIZE_ON_SERVER), 160); + assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, + ControllerGauge.TABLE_STORAGE_EST_MISSING_SEGMENT_PERCENT), 0); + assertEquals( + _controllerMetrics.getValueOfTableGauge(tableNameWithType, ControllerGauge.TABLE_SIZE_PER_REPLICA_ON_SERVER), + offlineSizes._estimatedSizeInBytes / NUM_REPLICAS); + assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, ControllerGauge.TABLE_TOTAL_SIZE_ON_SERVER), + offlineSizes._estimatedSizeInBytes); + assertEquals( + _controllerMetrics.getValueOfTableGauge(tableNameWithType, ControllerGauge.LARGEST_SEGMENT_SIZE_ON_SERVER), + 160); } @Test @@ -337,21 +342,22 @@ public void testGetTableSubTypeSizeAllErrors() String table = "offline"; TableSizeReader.TableSizeDetails tableSizeDetails = testRunner(servers, table); TableSizeReader.TableSubTypeSizeDetails offlineSizes = tableSizeDetails._offlineSegments; - Assert.assertNotNull(offlineSizes); - Assert.assertEquals(offlineSizes._missingSegments, 3); - Assert.assertEquals(offlineSizes._segments.size(), 3); - Assert.assertEquals(offlineSizes._reportedSizeInBytes, TableSizeReader.DEFAULT_SIZE_WHEN_MISSING_OR_ERROR); - Assert.assertEquals(tableSizeDetails._estimatedSizeInBytes, TableSizeReader.DEFAULT_SIZE_WHEN_MISSING_OR_ERROR); + assertNotNull(offlineSizes); + assertEquals(offlineSizes._missingSegments, 3); + assertEquals(offlineSizes._segments.size(), 3); + assertEquals(offlineSizes._reportedSizeInBytes, TableSizeReader.DEFAULT_SIZE_WHEN_MISSING_OR_ERROR); + assertEquals(tableSizeDetails._estimatedSizeInBytes, TableSizeReader.DEFAULT_SIZE_WHEN_MISSING_OR_ERROR); String tableNameWithType = TableNameBuilder.OFFLINE.tableNameWithType(table); - Assert.assertEquals(_controllerMetrics - .getValueOfTableGauge(tableNameWithType, ControllerGauge.TABLE_STORAGE_EST_MISSING_SEGMENT_PERCENT), 100); - Assert.assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, - ControllerGauge.TABLE_SIZE_PER_REPLICA_ON_SERVER), offlineSizes._estimatedSizeInBytes / NUM_REPLICAS); - Assert.assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, - ControllerGauge.TABLE_TOTAL_SIZE_ON_SERVER), offlineSizes._estimatedSizeInBytes); + assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, + ControllerGauge.TABLE_STORAGE_EST_MISSING_SEGMENT_PERCENT), 100); + assertEquals( + _controllerMetrics.getValueOfTableGauge(tableNameWithType, ControllerGauge.TABLE_SIZE_PER_REPLICA_ON_SERVER), + offlineSizes._estimatedSizeInBytes / NUM_REPLICAS); + assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, ControllerGauge.TABLE_TOTAL_SIZE_ON_SERVER), + offlineSizes._estimatedSizeInBytes); // 0 means not found for the gauge - Assert.assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, - ControllerGauge.LARGEST_SEGMENT_SIZE_ON_SERVER), 0); + assertEquals( + _controllerMetrics.getValueOfTableGauge(tableNameWithType, ControllerGauge.LARGEST_SEGMENT_SIZE_ON_SERVER), 0); } @Test @@ -361,22 +367,22 @@ public void testGetTableSubTypeSizesWithErrors() String table = "offline"; TableSizeReader.TableSizeDetails tableSizeDetails = testRunner(servers, "offline"); TableSizeReader.TableSubTypeSizeDetails offlineSizes = tableSizeDetails._offlineSegments; - Assert.assertEquals(offlineSizes._segments.size(), 5); - Assert.assertEquals(offlineSizes._missingSegments, 1); - Assert.assertTrue(offlineSizes._reportedSizeInBytes != offlineSizes._estimatedSizeInBytes); + assertEquals(offlineSizes._segments.size(), 5); + assertEquals(offlineSizes._missingSegments, 1); + assertTrue(offlineSizes._reportedSizeInBytes != offlineSizes._estimatedSizeInBytes); validateTableSubTypeSize(servers, offlineSizes); - Assert.assertNull(tableSizeDetails._realtimeSegments); + assertNull(tableSizeDetails._realtimeSegments); String tableNameWithType = TableNameBuilder.OFFLINE.tableNameWithType(table); - Assert.assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, + assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, ControllerGauge.TABLE_STORAGE_EST_MISSING_SEGMENT_PERCENT), 20); - Assert.assertEquals( + assertEquals( _controllerMetrics.getValueOfTableGauge(tableNameWithType, ControllerGauge.TABLE_SIZE_PER_REPLICA_ON_SERVER), offlineSizes._estimatedSizeInBytes / NUM_REPLICAS); - Assert.assertEquals( - _controllerMetrics.getValueOfTableGauge(tableNameWithType, ControllerGauge.TABLE_TOTAL_SIZE_ON_SERVER), + assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, ControllerGauge.TABLE_TOTAL_SIZE_ON_SERVER), offlineSizes._estimatedSizeInBytes); - Assert.assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, - ControllerGauge.LARGEST_SEGMENT_SIZE_ON_SERVER), 160); + assertEquals( + _controllerMetrics.getValueOfTableGauge(tableNameWithType, ControllerGauge.LARGEST_SEGMENT_SIZE_ON_SERVER), + 160); } @Test @@ -385,18 +391,19 @@ public void getTableSizeDetailsRealtimeOnly() final String[] servers = {"server3", "server4"}; String table = "realtime"; TableSizeReader.TableSizeDetails tableSizeDetails = testRunner(servers, table); - Assert.assertNull(tableSizeDetails._offlineSegments); + assertNull(tableSizeDetails._offlineSegments); TableSizeReader.TableSubTypeSizeDetails realtimeSegments = tableSizeDetails._realtimeSegments; - Assert.assertEquals(realtimeSegments._segments.size(), 2); - Assert.assertTrue(realtimeSegments._reportedSizeInBytes == realtimeSegments._estimatedSizeInBytes); + assertEquals(realtimeSegments._segments.size(), 2); + assertEquals(realtimeSegments._estimatedSizeInBytes, realtimeSegments._reportedSizeInBytes); validateTableSubTypeSize(servers, realtimeSegments); String tableNameWithType = TableNameBuilder.REALTIME.tableNameWithType(table); - Assert.assertEquals( + assertEquals( _controllerMetrics.getValueOfTableGauge(tableNameWithType, ControllerGauge.TABLE_SIZE_PER_REPLICA_ON_SERVER), realtimeSegments._estimatedSizeInBytes / NUM_REPLICAS); - Assert.assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, - ControllerGauge.TABLE_TOTAL_SIZE_ON_SERVER), realtimeSegments._estimatedSizeInBytes); - Assert.assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, - ControllerGauge.LARGEST_SEGMENT_SIZE_ON_SERVER), 120); + assertEquals(_controllerMetrics.getValueOfTableGauge(tableNameWithType, ControllerGauge.TABLE_TOTAL_SIZE_ON_SERVER), + realtimeSegments._estimatedSizeInBytes); + assertEquals( + _controllerMetrics.getValueOfTableGauge(tableNameWithType, ControllerGauge.LARGEST_SEGMENT_SIZE_ON_SERVER), + 120); } } diff --git a/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableTierReaderTest.java b/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableTierReaderTest.java index 948c023976a8..140f57bf2193 100644 --- a/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableTierReaderTest.java +++ b/pinot-controller/src/test/java/org/apache/pinot/controller/api/TableTierReaderTest.java @@ -218,14 +218,14 @@ private BiMap serverEndpoints(String... servers) { private TableTierReader.TableTierDetails testRunner(final String[] servers, String tableName, String segmentName) throws InvalidConfigException { - when(_helix.getServerToSegmentsMap(ArgumentMatchers.anyString())) - .thenAnswer(invocationOnMock -> subsetOfServerSegments(servers)); + when(_helix.getServerToSegmentsMap(ArgumentMatchers.anyString())).thenAnswer( + invocationOnMock -> subsetOfServerSegments(servers)); if (segmentName != null) { - when(_helix.getServers(ArgumentMatchers.anyString(), ArgumentMatchers.anyString())) - .thenAnswer(invocationOnMock -> new HashSet<>(Arrays.asList(servers))); + when(_helix.getServers(ArgumentMatchers.anyString(), ArgumentMatchers.anyString())).thenAnswer( + invocationOnMock -> new HashSet<>(Arrays.asList(servers))); } - when(_helix.getDataInstanceAdminEndpoints(ArgumentMatchers.anySet())) - .thenAnswer(invocationOnMock -> serverEndpoints(servers)); + when(_helix.getDataInstanceAdminEndpoints(ArgumentMatchers.anySet())).thenAnswer( + invocationOnMock -> serverEndpoints(servers)); TableTierReader reader = new TableTierReader(_executor, _connectionManager, _helix); return reader.getTableTierDetails(tableName, segmentName, TIMEOUT_MSEC); }