1 package org.onap.config.test;
3 import org.onap.config.util.ConfigTestConstant;
4 import org.onap.config.Constants;
5 import org.onap.config.api.ConfigurationChangeListener;
6 import org.onap.config.api.ConfigurationManager;
7 import org.onap.config.util.TestUtil;
8 import org.junit.AfterClass;
9 import org.junit.Assert;
10 import org.junit.Test;
12 import javax.management.JMX;
13 import javax.management.MBeanServerConnection;
14 import javax.management.ObjectName;
16 import java.io.FileOutputStream;
17 import java.io.OutputStream;
18 import java.lang.management.ManagementFactory;
19 import java.util.HashMap;
21 import java.util.Properties;
24 * Created by sheetalm on 10/19/2016.
26 * Pre-requisite - set -Dnode.config.location=${"user.home"}/TestResources/ while running test
27 * Verify node specific override using CLI
29 public class NodeSpecificCLITest {
31 public final static String NAMESPACE = "NodeCLI";
32 private String updatedValue = "";
35 public void testCLIApi() throws Exception{
36 //Verify without fallback
37 Map<String, Object> input = new HashMap<>();
38 input.put("ImplClass", "org.openecomp.config.type.ConfigurationQuery");
39 input.put("namespace", NAMESPACE);
40 input.put("key", ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH);
42 MBeanServerConnection mbsc = ManagementFactory.getPlatformMBeanServer();
43 ObjectName mbeanName = new ObjectName(Constants.MBEAN_NAME);
44 ConfigurationManager conf = JMX.newMBeanProxy(mbsc, mbeanName, ConfigurationManager.class, true);
45 String maxLength = conf.getConfigurationValue(input);
47 //Verify Property from Namespace configurations
48 Assert.assertEquals("30",maxLength);
50 //Add node specific configurations
51 Properties props = new Properties();
52 props.setProperty(ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH, "50");
53 props.setProperty("_config.namespace",NAMESPACE);
54 File f = new File(TestUtil.jsonSchemaLoc + "config.properties");
55 try (OutputStream out = new FileOutputStream(f)) {
56 props.store(out, "Node Config Property");
61 //Verify property from node specific configuration
62 input.put("nodeSpecific", true);
63 String nodeVal = conf.getConfigurationValue(input);
64 Assert.assertEquals("50", nodeVal);
67 conf.addConfigurationChangeListener(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH, new CLINodeListener());
70 input.put("ImplClass", "org.openecomp.config.type.ConfigurationUpdate");
71 input.put("nodeOverride", true);
72 input.put("nodeSpecific", false);
73 input.put("value", "60");
74 conf.updateConfigurationValue(input);
78 Assert.assertEquals("60",updatedValue);
80 //Fetch the updated nodespecific value
81 input.put("nodeOverride", false);
82 input.put("nodeSpecific", true);
83 input.put("ImplClass", "org.openecomp.config.type.ConfigurationQuery");
84 String updatedMaxLength = conf.getConfigurationValue(input);
85 Assert.assertEquals("60",updatedMaxLength);
87 //Verify maxlength on other nodes by deleting node specific configuration
94 input.put("ImplClass", "org.openecomp.config.type.ConfigurationQuery");
95 input.put("nodeOverride", false);
96 input.put("nodeSpecific", false);
97 System.out.println("val on other node is::"+conf.getConfigurationValue(input));
98 Assert.assertEquals("30",conf.getConfigurationValue(input));
102 public static void tearDown() throws Exception {
104 File f = new File(TestUtil.jsonSchemaLoc+"config.properties");
110 private class CLINodeListener implements ConfigurationChangeListener {
112 public void notify(String key, Object oldValue, Object newValue) {
113 System.out.println("received notification::oldValue=="+oldValue+" newValue=="+newValue);
114 updatedValue = newValue.toString();