public void testManipulatePid() throws Exception {
System.err.println(CommandSupport.executeCommand("fabric:create --force --clean -n"));
ModuleContext moduleContext = RuntimeLocator.getRequiredRuntime().getModuleContext();
ServiceProxy<FabricService> fabricProxy = ServiceProxy.createServiceProxy(moduleContext, FabricService.class);
try {
FabricService fabricService = fabricProxy.getService();
System.err.println(CommandSupport.executeCommand("fabric:profile-edit --pid my.pid/key=value default"));
//Check that my.pid has been added to the default profile
Profile profile = fabricService.getRequiredDefaultVersion().getRequiredProfile("default");
Assert.assertNotNull(profile);
Map<String, Map<String, String>> configurations = profile.getConfigurations();
Assert.assertNotNull(configurations);
Assert.assertTrue(configurations.containsKey("my.pid"));
Map<String, String> myPid = configurations.get("my.pid");
Assert.assertNotNull(myPid);
Assert.assertTrue(myPid.containsKey("key"));
Assert.assertEquals("value", myPid.get("key"));
//Check append options for a pid.
System.err.println(CommandSupport.executeCommand("fabric:profile-edit --append --pid my.pid/key=othervalue default"));
profile = fabricService.getRequiredDefaultVersion().getRequiredProfile("default");
configurations = profile.getConfigurations();
Assert.assertTrue(configurations.containsKey("my.pid"));
myPid = configurations.get("my.pid");
Assert.assertNotNull(myPid);
Assert.assertTrue(myPid.containsKey("key"));
Assert.assertEquals("value,othervalue", myPid.get("key"));
System.err.println(CommandSupport.executeCommand("fabric:profile-edit --remove --pid my.pid/key=value default"));
profile = fabricService.getRequiredDefaultVersion().getRequiredProfile("default");
configurations = profile.getConfigurations();
Assert.assertTrue(configurations.containsKey("my.pid"));
myPid = configurations.get("my.pid");
Assert.assertNotNull(myPid);
Assert.assertTrue(myPid.containsKey("key"));
Assert.assertEquals("othervalue", myPid.get("key"));
//Check append options for a pid.
System.err.println(CommandSupport.executeCommand("fabric:profile-edit --remove --pid my.pid/key=othervalue default"));
profile = fabricService.getRequiredDefaultVersion().getRequiredProfile("default");
configurations = profile.getConfigurations();
Assert.assertTrue(configurations.containsKey("my.pid"));
myPid = configurations.get("my.pid");
Assert.assertNotNull(myPid);
Assert.assertTrue(myPid.containsKey("key"));
Assert.assertEquals("", myPid.get("key"));
//Check assign option with '='.
System.err.println(CommandSupport.executeCommand("fabric:profile-edit --pid my.pid/key=prop1=value1 default"));
profile = fabricService.getRequiredDefaultVersion().getRequiredProfile("default");
configurations = profile.getConfigurations();
Assert.assertTrue(configurations.containsKey("my.pid"));
myPid = configurations.get("my.pid");
Assert.assertNotNull(myPid);
Assert.assertTrue(myPid.containsKey("key"));
Assert.assertEquals("prop1=value1", myPid.get("key"));
//Check multiple properties
System.err.println(CommandSupport.executeCommand("fabric:profile-edit --pid my.pid/key1=value1 --pid my.pid/key2=value2 default"));
profile = fabricService.getRequiredDefaultVersion().getRequiredProfile("default");
configurations = profile.getConfigurations();
Assert.assertTrue(configurations.containsKey("my.pid"));
myPid = configurations.get("my.pid");
Assert.assertNotNull(myPid);
Assert.assertTrue(myPid.containsKey("key1"));
Assert.assertEquals("value1", myPid.get("key1"));
Assert.assertTrue(myPid.containsKey("key2"));
Assert.assertEquals("value2", myPid.get("key2"));
//Check import pid
System.err.println(CommandSupport.executeCommands("config:edit my.pid2", "config:propset key1 value1", "config:propset key2 value2", "config:update"));
System.err.println(CommandSupport.executeCommand("fabric:profile-edit --pid my.pid2 --import-pid default"));
//Check that my.pid has been added to the default profile
profile = fabricService.getRequiredDefaultVersion().getRequiredProfile("default");
Assert.assertNotNull(profile);
configurations = profile.getConfigurations();
Assert.assertNotNull(configurations);
Assert.assertTrue(configurations.containsKey("my.pid2"));
Map<String, String> myPid2 = configurations.get("my.pid2");
System.out.println("my.pid2 => " + myPid2);
Assert.assertNotNull(myPid2);
Assert.assertTrue(myPid2.containsKey("key1"));
Assert.assertEquals("value1", myPid2.get("key1"));
Assert.assertTrue(myPid2.containsKey("key2"));
Assert.assertEquals("value2", myPid2.get("key2"));
System.err.println(CommandSupport.executeCommand("fabric:profile-edit --pid my.pid2/key1 --delete default"));
profile = fabricService.getRequiredDefaultVersion().getRequiredProfile("default");
Map<String, String> configuration = profile.getConfiguration("my.pid2");
Assert.assertFalse(configuration.containsKey("key1"));
System.err.println(CommandSupport.executeCommand("fabric:profile-edit --pid my.pid2 --delete default"));
profile = fabricService.getRequiredDefaultVersion().getRequiredProfile("default");
configurations = profile.getConfigurations();
Assert.assertFalse(configurations.containsKey("my.pid2"));
} finally {
fabricProxy.close();
}