sanpwc commented on code in PR #1902:
URL: https://github.com/apache/ignite-3/pull/1902#discussion_r1158413878
##########
modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/DistributionZoneManagerTest.java:
##########
@@ -755,17 +740,118 @@ public void testTryDropDefaultZone() {
);
}
- private void bindZoneToTable(String zoneName) {
- int zoneId = distributionZoneManager.getZoneId(zoneName);
+ @Test
+ public void testCreateZoneWithFilter() throws Exception {
+ String expectedFilter = "['nodeAttributes'][?(@.['region'] == 'EU')]";
+
+ distributionZoneManager.createZone(
+ new
DistributionZoneConfigurationParameters.Builder(ZONE_NAME)
+ .filter(expectedFilter).build()
+ )
+ .get(5, TimeUnit.SECONDS);
+
+ DistributionZoneConfiguration zone1 =
registry.getConfiguration(DistributionZonesConfiguration.KEY).distributionZones()
+ .get(ZONE_NAME);
+
+ assertEquals(expectedFilter, zone1.filter().value());
+
+ distributionZoneManager.dropZone(ZONE_NAME).get(5, TimeUnit.SECONDS);
+
+ zone1 =
registry.getConfiguration(DistributionZonesConfiguration.KEY).distributionZones()
+ .get(ZONE_NAME);
+
+ assertNull(zone1, "Zone was not dropped.");
+ }
+
+ @Test
+ public void testAlterZoneWithFilter() throws Exception {
+ String expectedFilter = "['nodeAttributes'][?(@.['region'] == 'EU')]";
+
+ distributionZoneManager.createZone(
+ new
DistributionZoneConfigurationParameters.Builder(ZONE_NAME)
+ .filter(expectedFilter).build()
+ )
+ .get(5, TimeUnit.SECONDS);
- NamedConfigurationTree<TableConfiguration, TableView, TableChange>
tables = mock(NamedConfigurationTree.class, RETURNS_DEEP_STUBS);
+ DistributionZoneConfiguration zone1 =
registry.getConfiguration(DistributionZonesConfiguration.KEY).distributionZones()
+ .get(ZONE_NAME);
+
+ assertEquals(expectedFilter, zone1.filter().value());
+
+ String newExpectedFilter = "['nodeAttributes'][?(@.['storage'] ==
'SSD')]";
+
+ distributionZoneManager.alterZone(
+ ZONE_NAME,
+ new
DistributionZoneConfigurationParameters.Builder(ZONE_NAME)
+ .filter(newExpectedFilter).build())
+ .get(5, TimeUnit.SECONDS);
+
+ zone1 =
registry.getConfiguration(DistributionZonesConfiguration.KEY).distributionZones()
+ .get(ZONE_NAME);
+
+ assertEquals(newExpectedFilter, zone1.filter().value());
+
+ distributionZoneManager.dropZone(ZONE_NAME).get(5, TimeUnit.SECONDS);
+
+ zone1 =
registry.getConfiguration(DistributionZonesConfiguration.KEY).distributionZones()
+ .get(ZONE_NAME);
+
+ assertNull(zone1, "Zone was not dropped.");
+ }
+
+ @Test
+ @SuppressWarnings("ThrowableNotThrown")
+ public void testCreateZoneWithNotValidFilter() {
+ assertThrowsWithCause(
+ () -> distributionZoneManager.createZone(
+ new
DistributionZoneConfigurationParameters.Builder(ZONE_NAME)
+ .filter("['nodeAttributes'[?(@.['region'] ==
'EU')]").build()
+ )
+ .get(5, TimeUnit.SECONDS),
+ ConfigurationValidationException.class
+ );
+ }
- when(tablesConfiguration.tables()).thenReturn(tables);
+ @Test
+ @SuppressWarnings("ThrowableNotThrown")
+ public void testAlterZoneWithNotValidFilter() throws Exception {
+ String expectedFilter = "['nodeAttributes'][?(@.['region'] == 'EU')]";
+
+ distributionZoneManager.createZone(
+ new DistributionZoneConfigurationParameters.Builder(ZONE_NAME)
+ .filter(expectedFilter).build()
+ )
+ .get(5, TimeUnit.SECONDS);
- TableView tableView = mock(TableView.class);
+ DistributionZoneConfiguration zone1 =
registry.getConfiguration(DistributionZonesConfiguration.KEY).distributionZones()
+ .get(ZONE_NAME);
+
+ assertEquals(expectedFilter, zone1.filter().value());
+
+ String notValidFilter = "['nodeAttributes[?(@.['region'] == 'EU')]";
+
+ assertThrowsWithCause(
+ () -> distributionZoneManager.alterZone(
+ ZONE_NAME,
+ new
DistributionZoneConfigurationParameters.Builder(ZONE_NAME)
+ .filter(notValidFilter).build()
+ )
+ .get(5, TimeUnit.SECONDS),
+ ConfigurationValidationException.class
Review Comment:
Let's also check the message.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]