3,
"MasterSlave",
true);
ConfigAccessor configAccessor = new ConfigAccessor(_gZkClient);
HelixConfigScope clusterScope = new HelixConfigScopeBuilder(ConfigScopeProperty.CLUSTER)
.forCluster(clusterName)
.build();
// cluster scope config
String clusterConfigValue = configAccessor.get(clusterScope, "clusterConfigKey");
Assert.assertNull(clusterConfigValue);
configAccessor.set(clusterScope, "clusterConfigKey", "clusterConfigValue");
clusterConfigValue = configAccessor.get(clusterScope, "clusterConfigKey");
Assert.assertEquals(clusterConfigValue, "clusterConfigValue");
// resource scope config
HelixConfigScope resourceScope = new HelixConfigScopeBuilder(ConfigScopeProperty.RESOURCE)
.forCluster(clusterName)
.forResource("testResource")
.build();
configAccessor.set(resourceScope, "resourceConfigKey", "resourceConfigValue");
String resourceConfigValue = configAccessor.get(resourceScope, "resourceConfigKey");
Assert.assertEquals(resourceConfigValue, "resourceConfigValue");
// partition scope config
HelixConfigScope partitionScope = new HelixConfigScopeBuilder(ConfigScopeProperty.PARTITION)
.forCluster(clusterName)
.forResource("testResource")
.forPartition("testPartition")
.build();
configAccessor.set(partitionScope, "partitionConfigKey", "partitionConfigValue");
String partitionConfigValue = configAccessor.get(partitionScope, "partitionConfigKey");
Assert.assertEquals(partitionConfigValue, "partitionConfigValue");
// participant scope config
HelixConfigScope participantScope = new HelixConfigScopeBuilder(ConfigScopeProperty.PARTICIPANT)
.forCluster(clusterName)
.forParticipant("localhost_12918")
.build();
configAccessor.set(participantScope, "participantConfigKey", "participantConfigValue");
String participantConfigValue = configAccessor.get(participantScope, "participantConfigKey");
Assert.assertEquals(participantConfigValue, "participantConfigValue");
// test get-keys
List<String> keys = configAccessor.getKeys(new HelixConfigScopeBuilder(ConfigScopeProperty.RESOURCE)
.forCluster(clusterName)
.build());
Assert.assertEquals(keys.size(), 1, "should be [testResource]");
Assert.assertEquals(keys.get(0), "testResource");
// keys = configAccessor.getKeys(new HelixConfigScopeBuilder(ConfigScopeProperty.CLUSTER)
// .forCluster(clusterName)
// .build());
// Assert.assertEquals(keys.size(), 1, "should be [" + clusterName + "]");
// Assert.assertEquals(keys.get(0), clusterName);
keys = configAccessor.getKeys(new HelixConfigScopeBuilder(ConfigScopeProperty.PARTICIPANT)
.forCluster(clusterName)
.build());
Assert.assertEquals(keys.size(), 5, "should be [localhost_12918~22] sorted");
Assert.assertTrue(keys.contains("localhost_12918"));
Assert.assertTrue(keys.contains("localhost_12922"));
keys = configAccessor.getKeys(new HelixConfigScopeBuilder(ConfigScopeProperty.PARTITION)
.forCluster(clusterName)
.forResource("testResource")
.build());
Assert.assertEquals(keys.size(), 1, "should be [testPartition]");
Assert.assertEquals(keys.get(0), "testPartition");
keys = configAccessor.getKeys(new HelixConfigScopeBuilder(ConfigScopeProperty.RESOURCE)
.forCluster(clusterName)
.forResource("testResource")
.build());
Assert.assertEquals(keys.size(), 1, "should be [resourceConfigKey]");
Assert.assertTrue(keys.contains("resourceConfigKey"));
keys = configAccessor.getKeys(new HelixConfigScopeBuilder(ConfigScopeProperty.CLUSTER)
.forCluster(clusterName)
.build());
Assert.assertEquals(keys.size(), 1, "should be [clusterConfigKey]");
Assert.assertTrue(keys.contains("clusterConfigKey"));
keys = configAccessor.getKeys(new HelixConfigScopeBuilder(ConfigScopeProperty.PARTICIPANT)
.forCluster(clusterName)
.forParticipant("localhost_12918")
.build());
Assert.assertEquals(keys.size(), 4, "should be [HELIX_ENABLED, HELIX_PORT, HELIX_HOST, participantConfigKey]");
Assert.assertTrue(keys.contains("participantConfigKey"));
keys = configAccessor.getKeys(new HelixConfigScopeBuilder(ConfigScopeProperty.PARTITION)
.forCluster(clusterName)
.forResource("testResource")
.forPartition("testPartition")
.build());
Assert.assertEquals(keys.size(), 1, "should be [partitionConfigKey]");
Assert.assertEquals(keys.get(0), "partitionConfigKey");
// test configAccessor.remove
configAccessor.remove(clusterScope, "clusterConfigKey");
clusterConfigValue = configAccessor.get(clusterScope, "clusterConfigKey");
Assert.assertNull(clusterConfigValue, "Should be null since it's removed");
configAccessor.remove(resourceScope, "resourceConfigKey");
resourceConfigValue = configAccessor.get(resourceScope, "resourceConfigKey");
Assert.assertNull(resourceConfigValue, "Should be null since it's removed");
configAccessor.remove(partitionScope, "partitionConfigKey");
partitionConfigValue = configAccessor.get(partitionScope, "partitionConfigKey");
Assert.assertNull(partitionConfigValue, "Should be null since it's removed");
configAccessor.remove(participantScope, "participantConfigKey");
participantConfigValue = configAccessor.get(partitionScope, "participantConfigKey");
Assert.assertNull(participantConfigValue, "Should be null since it's removed");
// negative tests
try
{
new HelixConfigScopeBuilder(ConfigScopeProperty.PARTITION)
.forPartition("testPartition")
.build();
Assert.fail("Should fail since cluster name is not set");
} catch (Exception e)
{
// OK
}
try
{
new HelixConfigScopeBuilder(ConfigScopeProperty.PARTICIPANT)
.forParticipant("testParticipant")
.build();
Assert.fail("Should fail since cluster name is not set");
} catch (Exception e)
{
// OK
}
try
{
new HelixConfigScopeBuilder(ConfigScopeProperty.PARTITION)
.forCluster("testCluster")
.forPartition("testPartition")
.build();
Assert.fail("Should fail since resource name is not set");
} catch (Exception e)