}
@Test
public void testProfileManager() throws Exception {
ProfileManager profileManager = ProfileManagerLocator.getProfileManager();
// fabric:profile-create prfA
ProfileBuilder pbA10 = ProfileBuilder.Factory.create("1.0", "prfA")
.addConfiguration("pidA", Collections.singletonMap("keyA", "valA"));
Profile prfA10 = profileManager.createProfile(pbA10.getProfile());
Assert.assertEquals("1.0", prfA10.getVersion());
Assert.assertEquals("prfA", prfA10.getId());
Assert.assertEquals("valA", prfA10.getConfiguration("pidA").get("keyA"));
// Verify access to original profile
profileManager.getRequiredVersion("1.0").getRequiredProfile("prfA");
// fabric:version-create --parent 1.0 1.1
Version v11 = profileManager.createVersionFrom("1.0", "1.1", null);
Profile prfA11a = v11.getRequiredProfile("prfA");
Assert.assertEquals("1.1", prfA11a.getVersion());
Assert.assertEquals("prfA", prfA11a.getId());
Assert.assertEquals("valA", prfA11a.getConfiguration("pidA").get("keyA"));
// Verify access to original profile
profileManager.getRequiredVersion("1.0").getRequiredProfile("prfA");
profileManager.getRequiredVersion("1.1").getRequiredProfile("prfA");
ProfileBuilder pbA11 = ProfileBuilder.Factory.createFrom(prfA11a)
.addConfiguration("pidA", Collections.singletonMap("keyB", "valB"));
Profile prfA11b = profileManager.updateProfile(pbA11.getProfile());
Assert.assertEquals("1.1", prfA11b.getVersion());
Assert.assertEquals("prfA", prfA11b.getId());
Assert.assertEquals("valB", prfA11b.getConfiguration("pidA").get("keyB"));
Assert.assertNotEquals(prfA11a, prfA11b);
// System.out.println(Profiles.getProfileDifference(prfA11a, prfA11b));
// Verify access to original profile
profileManager.getRequiredVersion("1.0").getRequiredProfile("prfA");
profileManager.getRequiredVersion("1.1").getRequiredProfile("prfA");
// Delete the profile/version that were added
profileManager.deleteProfile(prfA10.getVersion(), prfA10.getId(), true);
profileManager.deleteVersion(v11.getId());
}