|
@@ -54,6 +54,7 @@ import org.apache.ambari.server.state.Clusters;
|
|
|
import org.apache.ambari.server.state.Config;
|
|
|
import org.apache.ambari.server.state.ConfigFactory;
|
|
|
import org.apache.ambari.server.state.DesiredConfig;
|
|
|
+import org.apache.ambari.server.state.DesiredConfig.HostOverride;
|
|
|
import org.apache.ambari.server.state.Host;
|
|
|
import org.apache.ambari.server.state.HostState;
|
|
|
import org.apache.ambari.server.state.Service;
|
|
@@ -364,6 +365,127 @@ public class ClusterTest {
|
|
|
Assert.assertEquals("Expect one host-level override", 1, dc.getHostOverrides().size());
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void testActualConfigs() throws Exception {
|
|
|
+
|
|
|
+ Assert.assertEquals (0, c1.getActualConfigs().size());
|
|
|
+
|
|
|
+ c1.updateActualConfigs("h1",
|
|
|
+ new HashMap<String, Map<String,String>>() {{
|
|
|
+ put("global", new HashMap<String,String>() {{ put("tag", "version1"); }});
|
|
|
+ }});
|
|
|
+ Map<String, DesiredConfig> actual = c1.getActualConfigs();
|
|
|
+ Assert.assertEquals(1, actual.size());
|
|
|
+ Assert.assertNotNull(actual.get("global"));
|
|
|
+ Assert.assertEquals("version1", actual.get("global").getVersion());
|
|
|
+
|
|
|
+ // change global version
|
|
|
+ c1.updateActualConfigs("h1",
|
|
|
+ new HashMap<String, Map<String,String>>() {{
|
|
|
+ put("global", new HashMap<String,String>() {{ put("tag", "version2"); }});
|
|
|
+ }});
|
|
|
+ actual = c1.getActualConfigs();
|
|
|
+ Assert.assertEquals(1, actual.size());
|
|
|
+ Assert.assertNotNull(actual.get("global"));
|
|
|
+ Assert.assertEquals("version2", actual.get("global").getVersion());
|
|
|
+
|
|
|
+
|
|
|
+ // add a host override
|
|
|
+ c1.updateActualConfigs("h1",
|
|
|
+ new HashMap<String, Map<String,String>>() {{
|
|
|
+ put("global", new HashMap<String,String>() {{
|
|
|
+ put("tag", "version2");
|
|
|
+ put("host_override_tag", "xxyyzz");
|
|
|
+ }});
|
|
|
+ }});
|
|
|
+ actual = c1.getActualConfigs();
|
|
|
+ Assert.assertEquals(1, actual.size());
|
|
|
+ Assert.assertNotNull(actual.get("global"));
|
|
|
+ Assert.assertEquals("version2", actual.get("global").getVersion());
|
|
|
+ Assert.assertEquals(1, actual.get("global").getHostOverrides().size());
|
|
|
+
|
|
|
+ // add another host
|
|
|
+ c1.updateActualConfigs("h2",
|
|
|
+ new HashMap<String, Map<String,String>>() {{
|
|
|
+ put("global", new HashMap<String,String>() {{
|
|
|
+ put("tag", "version2");
|
|
|
+ put("host_override_tag", "aabbcc");
|
|
|
+ }});
|
|
|
+ }});
|
|
|
+ actual = c1.getActualConfigs();
|
|
|
+ Assert.assertEquals(1, actual.size());
|
|
|
+ Assert.assertNotNull(actual.get("global"));
|
|
|
+ Assert.assertEquals("version2", actual.get("global").getVersion());
|
|
|
+ Assert.assertEquals(2, actual.get("global").getHostOverrides().size());
|
|
|
+ for (HostOverride o : actual.get("global").getHostOverrides()) {
|
|
|
+ if (o.getName().equals("h1")) {
|
|
|
+ Assert.assertEquals(o.getVersionTag(), "xxyyzz");
|
|
|
+ } else {
|
|
|
+ Assert.assertEquals(o.getVersionTag(), "aabbcc");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // remove h2 override
|
|
|
+ c1.updateActualConfigs("h2",
|
|
|
+ new HashMap<String, Map<String,String>>() {{
|
|
|
+ put("global", new HashMap<String,String>() {{
|
|
|
+ put("tag", "version3");
|
|
|
+ }});
|
|
|
+ }});
|
|
|
+ actual = c1.getActualConfigs();
|
|
|
+ Assert.assertEquals(1, actual.size());
|
|
|
+ Assert.assertNotNull(actual.get("global"));
|
|
|
+ Assert.assertEquals("version3", actual.get("global").getVersion());
|
|
|
+ Assert.assertEquals(1, actual.get("global").getHostOverrides().size());
|
|
|
+ Assert.assertEquals("h1", actual.get("global").getHostOverrides().get(0).getName());
|
|
|
+
|
|
|
+
|
|
|
+ // change h1 override
|
|
|
+ c1.updateActualConfigs("h1",
|
|
|
+ new HashMap<String, Map<String,String>>() {{
|
|
|
+ put("global", new HashMap<String,String>() {{
|
|
|
+ put("tag", "version2");
|
|
|
+ put("host_override_tag", "mmnnoo");
|
|
|
+ }});
|
|
|
+ }});
|
|
|
+ actual = c1.getActualConfigs();
|
|
|
+ Assert.assertEquals(1, actual.size());
|
|
|
+ Assert.assertNotNull(actual.get("global"));
|
|
|
+ Assert.assertEquals("version2", actual.get("global").getVersion());
|
|
|
+ Assert.assertEquals(1, actual.get("global").getHostOverrides().size());
|
|
|
+ Assert.assertEquals("h1", actual.get("global").getHostOverrides().get(0).getName());
|
|
|
+ Assert.assertEquals("mmnnoo", actual.get("global").getHostOverrides().get(0).getVersionTag());
|
|
|
+
|
|
|
+ // remove h1 override
|
|
|
+ c1.updateActualConfigs("h1",
|
|
|
+ new HashMap<String, Map<String,String>>() {{
|
|
|
+ put("global", new HashMap<String,String>() {{
|
|
|
+ put("tag", "version2");
|
|
|
+ }});
|
|
|
+ }});
|
|
|
+ Assert.assertEquals(1, actual.size());
|
|
|
+ Assert.assertNotNull(actual.get("global"));
|
|
|
+ Assert.assertEquals("version2", actual.get("global").getVersion());
|
|
|
+ Assert.assertEquals(0, actual.get("global").getHostOverrides().size());
|
|
|
+
|
|
|
+
|
|
|
+ // create new one with override, not as an update
|
|
|
+ // remove h1 override
|
|
|
+ c1.updateActualConfigs("h1",
|
|
|
+ new HashMap<String, Map<String,String>>() {{
|
|
|
+ put("core-site", new HashMap<String,String>() {{
|
|
|
+ put("tag", "version4");
|
|
|
+ put("host_override_tag", "qqrrss");
|
|
|
+ }});
|
|
|
+ }});
|
|
|
+ Assert.assertEquals(2, actual.size());
|
|
|
+ Assert.assertNotNull(actual.get("global"));
|
|
|
+ Assert.assertNotNull(actual.get("core-site"));
|
|
|
+ Assert.assertEquals("version4", actual.get("core-site").getVersion());
|
|
|
+ Assert.assertEquals("qqrrss", actual.get("core-site").getHostOverrides().get(0).getVersionTag());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
public ClusterEntity createDummyData() {
|
|
|
ClusterEntity clusterEntity = new ClusterEntity();
|
|
|
clusterEntity.setClusterName("test_cluster1");
|