diff options
Diffstat (limited to 'common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java')
24 files changed, 1567 insertions, 0 deletions
diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/TestCMSuite.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/TestCMSuite.java new file mode 100644 index 0000000000..4ef46f6c9d --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/TestCMSuite.java @@ -0,0 +1,58 @@ +package org.openecomp.config; + +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.test.*; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +/** + * Created by sheetalm on 10/25/2016. + */ + +@RunWith(Suite.class) +@Suite.SuiteClasses({ + JAVAPropertiesConfigTest.class, + JSONConfigTest.class, + XMLConfigTest.class, + YAMLConfigTest.class, + CLIFallbackAndLookupTest.class, + CLITest.class, + ConfigSourceLocationTest.class, + DynamicConfigurationTest.class, + FallbackConfigTest.class, + FallbackToGlobalNSTest.class, + GlobalAndNSConfigTest.class, + ModeAsConfigPropTest.class, + MultiTenancyConfigTest.class, + NodeSpecificCLITest.class, + NotificationForNodeConfigTest.class, + NotificationOnPropValTest.class, + ResourceChangeNotificationTest.class, + UnregisterNotificationTest.class, + ValidateDefaultModeTest.class, + ValidateNodeConfigTest.class, + LoadOrderMergeAndOverrideTest.class + + +}) + +public class TestCMSuite extends junit.framework.TestSuite { + + private TestCMSuite() { + + } + + @AfterClass + public static void tearDown(){ + try { + ConfigurationUtils.executeDdlSql("truncate dox.configuration_change"); + ConfigurationUtils.executeDdlSql("truncate dox.configuration"); + } + catch(Exception e){ + e.printStackTrace(); + } + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/CLIFallbackAndLookupTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/CLIFallbackAndLookupTest.java new file mode 100644 index 0000000000..4f7ab92dd0 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/CLIFallbackAndLookupTest.java @@ -0,0 +1,83 @@ +package org.openecomp.config.test; + +import org.openecomp.config.Constants; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.util.ConfigTestConstant; +import org.openecomp.config.util.TestUtil; +import org.junit.Assert; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import javax.management.JMX; +import javax.management.MBeanServerConnection; +import javax.management.ObjectName; +import java.io.IOException; +import java.lang.management.ManagementFactory; +import java.util.HashMap; +import java.util.Map; + + + +/** + * Created by sheetalm on 10/18/2016. + * Scenario 21, Scenario 23 + * 21 - Verify the CLI fetches only the current value unless the fallback option is specified + * 23 - Fetch value using CLI for a key with underlying resource + */ +public class CLIFallbackAndLookupTest { + + public final static String NAMESPACE = "CLIFallback"; + public final static String TENANT = "OPENECOMP"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + TestUtil.writeFile(data); + } + + @Test + public void testCLIFallbackAndLookup() throws Exception{ + + //Verify without fallback + Map<String, Object> input = new HashMap<>(); + input.put("ImplClass", "org.openecomp.config.type.ConfigurationQuery"); + input.put("tenant", TENANT); + input.put("namespace", NAMESPACE); + input.put("key", ConfigTestConstant.ARTIFACT_MAXSIZE); + + MBeanServerConnection mbsc = ManagementFactory.getPlatformMBeanServer(); + ObjectName mbeanName = new ObjectName(Constants.MBEAN_NAME); + ConfigurationManager conf = JMX.newMBeanProxy(mbsc, mbeanName, org.openecomp.config.api.ConfigurationManager.class, true); + String maxSizeWithNoFallback = conf.getConfigurationValue(input); + Assert.assertEquals("",maxSizeWithNoFallback); + + //Verify underlying resource without lookup switch + input.put("key", ConfigTestConstant.ARTIFACT_JSON_SCHEMA); + String jsonSchema = conf.getConfigurationValue(input); + System.out.println("jsonSchema=="+jsonSchema); + Assert.assertEquals("@"+System.getProperty("user.home")+"/TestResources/GeneratorsList.json" , jsonSchema); + + //Verify underlying resource with lookup switch + input.put("externalLookup", true); + jsonSchema = conf.getConfigurationValue(input); + System.out.println("jsonSchema=="+jsonSchema); + Assert.assertEquals("{name:\"SCM\"}" , jsonSchema); + + //Verify with fallback + Map<String, Object> fallbackInput = new HashMap<>(); + fallbackInput.put("ImplClass", "org.openecomp.config.type.ConfigurationQuery"); + fallbackInput.put("fallback", true); + fallbackInput.put("tenant", TENANT); + fallbackInput.put("namespace", NAMESPACE); + fallbackInput.put("key", ConfigTestConstant.ARTIFACT_MAXSIZE); + + String maxSizeWithFallback = conf.getConfigurationValue(fallbackInput); + Assert.assertEquals("1024",maxSizeWithFallback); + } + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/CLITest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/CLITest.java new file mode 100644 index 0000000000..ff04873b42 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/CLITest.java @@ -0,0 +1,107 @@ +package org.openecomp.config.test; + +import org.openecomp.config.Constants; +import org.openecomp.config.api.ConfigurationChangeListener; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.util.ConfigTestConstant; +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import javax.management.JMX; +import javax.management.MBeanServerConnection; +import javax.management.ObjectName; +import java.io.IOException; +import java.lang.management.ManagementFactory; +import java.util.HashMap; +import java.util.Map; + +import static org.openecomp.config.util.ConfigTestConstant.*; + +/** + * Created by sheetalm on 10/18/2016. + * Scenario 17 + * Verify Configuration Management System - Command Line Interface for query, update and list operations + */ +public class CLITest { + + public final static String NAMESPACE = "CLI"; + public final static String TENANT = "OPENECOMP"; + private String updatedValue = ""; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + TestUtil.writeFile(data); + } + + @Test + public void testCLIApi() throws Exception{ + //Verify without fallback + Map<String, Object> input = new HashMap<>(); + input.put("ImplClass", "org.openecomp.config.type.ConfigurationQuery"); + input.put("tenant", TENANT); + input.put("namespace", NAMESPACE); + input.put("key", ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH); + + MBeanServerConnection mbsc = ManagementFactory.getPlatformMBeanServer(); + ObjectName mbeanName = new ObjectName(Constants.MBEAN_NAME); + ConfigurationManager conf = JMX.newMBeanProxy(mbsc, mbeanName, org.openecomp.config.api.ConfigurationManager.class, true); + String maxLength = conf.getConfigurationValue(input); + Assert.assertEquals("14",maxLength); + + conf.addConfigurationChangeListener(TENANT,NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH, new CLIListener()); + + + //Update maxlength + input.put("ImplClass", "org.openecomp.config.type.ConfigurationUpdate"); + input.put("value", "24"); + conf.updateConfigurationValue(input); + + Thread.sleep(35000); + + Assert.assertEquals("24",updatedValue); + + //Reset value and fetch updated value again + input.put("value", ""); + input.put("ImplClass", "org.openecomp.config.type.ConfigurationQuery"); + String updatedMaxLength = conf.getConfigurationValue(input); + Assert.assertEquals("24",updatedMaxLength); + + Map<String, String> outputMap = conf.listConfiguration(input); + for(Map.Entry<String, String> entry : outputMap.entrySet()){ + System.out.println(entry.getKey()+" : "+entry.getValue()); + validateCLIListConfig(outputMap); + } + } + + private class CLIListener implements ConfigurationChangeListener { + @Override + public void notify(String key, Object oldValue, Object newValue) { + System.out.println("received notification::oldValue=="+oldValue+" newValue=="+newValue); + updatedValue = newValue.toString(); + } + } + + private void validateCLIListConfig(Map<String, String> outputMap ) { + + Assert.assertEquals("@"+System.getProperty("user.home")+"/TestResources/GeneratorsList.json" , outputMap.get(ARTIFACT_JSON_SCHEMA)); + Assert.assertEquals("appc,catalog", outputMap.get(ARTIFACT_CONSUMER)); + Assert.assertEquals("6", outputMap.get(ARTIFACT_NAME_MINLENGTH)); + Assert.assertEquals("true", outputMap.get(ARTIFACT_ENCODED)); + Assert.assertEquals("24", outputMap.get(ARTIFACT_NAME_MAXLENGTH)); + Assert.assertEquals("pdf,zip,xml,pdf,tgz,xls", outputMap.get(ARTIFACT_EXT)); + Assert.assertEquals("Base64,MD5", outputMap.get(ARTIFACT_ENC)); + Assert.assertEquals("@"+System.getenv("Path")+"/myschema.json", outputMap.get(ARTIFACT_XML_SCHEMA)); + Assert.assertEquals("a-zA-Z_0-9", outputMap.get(ARTIFACT_NAME_UPPER)); + Assert.assertEquals("/opt/spool,"+System.getProperty("user.home")+"/asdc", outputMap.get(ARTIFACT_LOC)); + Assert.assertEquals("deleted,Deleted", outputMap.get(ARTIFACT_STATUS)); + } + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ConfigSourceLocationTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ConfigSourceLocationTest.java new file mode 100644 index 0000000000..7eb591c6d2 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ConfigSourceLocationTest.java @@ -0,0 +1,53 @@ +package org.openecomp.config.test; + +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.util.ConfigTestConstant; +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.Assert; + +import java.io.File; +import java.io.IOException; +import java.util.Properties; +import java.io.OutputStream; +import java.io.FileOutputStream; + +/** + * Created by sheetalm on 10/14/2016. + * Scenario 11 + * Validate conventional and configurational source location + * + * Pre-requisite - set -Dconfig.location=${"user.home"}/TestResources/ while running test + */ +public class ConfigSourceLocationTest { + public final static String NAMESPACE = "SourceLocation"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + TestUtil.writeFile(data); + + Properties props = new Properties(); + props.setProperty("maxCachedBufferSize", "1024"); + props.setProperty("artifact.maxsize", "1024"); + File f = new File(TestUtil.jsonSchemaLoc+"config.properties"); + OutputStream out = new FileOutputStream( f ); + props.store(out, "Config Property at Conventional Resource"); + out.close(); + } + + @Test + public void testMergeStrategyInConfig() throws IOException, InterruptedException { + Configuration config = ConfigurationManager.lookup(); + Assert.assertEquals("a-zA-Z_0-9", config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_UPPER)); + Assert.assertEquals("1024", config.getAsString(ConfigTestConstant.ARTIFACT_MAXSIZE)); + } + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/DynamicConfigurationTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/DynamicConfigurationTest.java new file mode 100644 index 0000000000..1ca41f8a81 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/DynamicConfigurationTest.java @@ -0,0 +1,66 @@ +package org.openecomp.config.test; + +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.api.DynamicConfiguration; +import org.openecomp.config.util.ConfigTestConstant; +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Properties; + +/** + * Created by sheetalm on 10/17/2016. + * Pre-requisite - set -Dconfig.location=${"user.home"}/TestResources/ while running test + * Scenario 20 + * Update the central configuration and fetch the Dynamic Configuration + */ +public class DynamicConfigurationTest { + + public final static String NAMESPACE = "DynamicConfiguration"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + TestUtil.writeFile(data); + } + + @Test + public void testDynamicConfig() throws IOException, InterruptedException { + Configuration config = ConfigurationManager.lookup(); + Properties props = new Properties(); + props.setProperty(ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH, "20"); + props.setProperty("_config.namespace",NAMESPACE); + props.setProperty("_config.mergeStrategy","override"); + File f = new File(TestUtil.jsonSchemaLoc+"config.properties"); + OutputStream out = new FileOutputStream( f ); + props.store(out, "Override Config Property at Conventional Resource"); + out.close(); + + //Verify configuration with Configuration without wait. This should fetch cached value + Assert.assertEquals("14" , config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH)); + + Thread.sleep(10000); + + DynamicConfiguration dynaConfig = config.getDynamicConfiguration(NAMESPACE,ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH,String.class,"14"); + //Verify configuration with DynamicConfiguration This should fetch values from DB + Assert.assertEquals("20" , dynaConfig.get()); + + } + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + File f = new File(TestUtil.jsonSchemaLoc+"config.properties"); + if(f.exists()) { + boolean isDeleted = f.delete(); + } + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/FallbackConfigTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/FallbackConfigTest.java new file mode 100644 index 0000000000..09fca879b0 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/FallbackConfigTest.java @@ -0,0 +1,39 @@ +package org.openecomp.config.test; + +import org.openecomp.config.ConfigurationUtils; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; + +import static org.openecomp.config.util.TestUtil.validateConfiguraton; +import static org.openecomp.config.util.TestUtil.writeFile; + +/** + * Created by ARR on 10/14/2016. + * + * Validate configuration with properties,xml,json,yaml file format with mode + */ +public class FallbackConfigTest { + + public static final String NAMESPACE = "fallback"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + writeFile(data); + } + + @Test + public void testConfigurationWithFallbackFileFormat(){ + validateConfiguraton(NAMESPACE); + } + + @After + public void tearDown() throws Exception { + String data = "{name:\"SCM\"}"; + writeFile(data); + //ConfigurationUtils.executeDDLSQL("truncate dox.configuration"); + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/FallbackToGlobalNSTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/FallbackToGlobalNSTest.java new file mode 100644 index 0000000000..1efc462d4e --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/FallbackToGlobalNSTest.java @@ -0,0 +1,42 @@ +package org.openecomp.config.test; + +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.util.ConfigTestConstant; +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.Assert; + +import java.io.IOException; + +/** + * Scenario 12 + * Verify configuration value fallback to the global namespace if the configuraton property doesnot exist in the namespace configuration + * Created by sheetalm on 10/14/2016. + */ +public class FallbackToGlobalNSTest { + + public final static String NAMESPACE = "FallbackToGlobalNS"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + TestUtil.writeFile(data); + } + + @Test + public void testFallbackToGlobalNS() throws IOException, InterruptedException { + Configuration config = ConfigurationManager.lookup(); + Assert.assertEquals("14",config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH)); + Assert.assertEquals("1024",config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_MAXSIZE)); + } + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + } + + +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/GlobalAndNSConfigTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/GlobalAndNSConfigTest.java new file mode 100644 index 0000000000..87324aa35c --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/GlobalAndNSConfigTest.java @@ -0,0 +1,45 @@ +package org.openecomp.config.test; + +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.util.ConfigTestConstant; +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by sheetalm on 10/13/2016. + * Scenario 10 Verify configuration present in both global and defined namespace + */ +public class GlobalAndNSConfigTest { + + public final static String NAMESPACE = "GlobalAndNSConfig"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + TestUtil.writeFile(data); + } + + @Test + public void testNamespaceInConfig() throws IOException, InterruptedException { + Configuration config = ConfigurationManager.lookup(); + Assert.assertEquals("a-zA-Z",config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_UPPER )); + Assert.assertEquals("a-zA-Z_0-9",config.getAsString(ConfigTestConstant.ARTIFACT_NAME_UPPER )); + } + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + } + + + + +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/JAVAPropertiesConfigTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/JAVAPropertiesConfigTest.java new file mode 100644 index 0000000000..23c5fa3130 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/JAVAPropertiesConfigTest.java @@ -0,0 +1,40 @@ +package org.openecomp.config.test; + +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; + +import static org.openecomp.config.util.TestUtil.validateConfiguraton; +import static org.openecomp.config.util.TestUtil.writeFile; + +/** + * Created by ARR on 10/13/2016. + * + * Scenario 1 + * Validate configuration with Java Properties file format with mode + */ +public class JAVAPropertiesConfigTest { + + public static final String NAMESPACE = "javaProperties"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + writeFile(data); + } + + @Test + public void testConfigurationWithPropertiesFileFormat(){ + validateConfiguraton(NAMESPACE); + } + + + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/JSONConfigTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/JSONConfigTest.java new file mode 100644 index 0000000000..5f2d24e67f --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/JSONConfigTest.java @@ -0,0 +1,41 @@ +package org.openecomp.config.test; + +import org.openecomp.config.ConfigurationUtils; +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; + +import static org.openecomp.config.util.TestUtil.validateConfiguraton; +import static org.openecomp.config.util.TestUtil.writeFile; + +/** + * Created by ARR on 10/14/2016. + * + * Scenario 3 + * Validate configuration with JSON file format with mode + */ +public class JSONConfigTest { + + public static final String NAMESPACE = "JSONConfig"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + writeFile(data); + } + + @Test + public void testConfigurationWithJSONFileFormat(){ + validateConfiguraton(NAMESPACE); + } + + + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/LoadOrderMergeAndOverrideTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/LoadOrderMergeAndOverrideTest.java new file mode 100644 index 0000000000..7ce508a063 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/LoadOrderMergeAndOverrideTest.java @@ -0,0 +1,47 @@ +package org.openecomp.config.test; + +import static org.openecomp.config.util.ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH; +import static org.openecomp.config.util.TestUtil.validateConfiguraton; +import static org.openecomp.config.util.TestUtil.writeFile; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.util.TestUtil; + +import java.io.IOException; + +/** + * Scenario + * Check loadorder for merge and overide. Higher loadorder takes precedence for override + * LoWer loadorder takes precedence for merge. + */ +public class LoadOrderMergeAndOverrideTest { + + public static final String NAMESPACE = "LoadOrderConfiguration"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + writeFile(data); + } + + @Test + public void testConfigurationWithPropertiesFileFormat(){ + Configuration config = ConfigurationManager.lookup(); + + Assert.assertEquals(config.getAsString(NAMESPACE, ARTIFACT_NAME_MAXLENGTH ), "14"); + Assert.assertEquals("5", config.getAsString(NAMESPACE, "artifact.length")); + Assert.assertEquals("56", config.getAsString(NAMESPACE, "artifact.size")); + } + + + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ModeAsConfigPropTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ModeAsConfigPropTest.java new file mode 100644 index 0000000000..470694e355 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ModeAsConfigPropTest.java @@ -0,0 +1,88 @@ +package org.openecomp.config.test; + +import org.openecomp.config.ConfigurationUtils; +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.util.ConfigTestConstant; +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * Scenario 8 + * Validate configuration with mode specified as a configuration property + */ + +public class ModeAsConfigPropTest { + + String newValue = null; + + public final static String NAMESPACE = "ModeAsConfigProp"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + TestUtil.writeFile(data); + } + + @Test + public void testMergeStrategyInConfig() throws IOException, InterruptedException { + Configuration config = ConfigurationManager.lookup(); + + Assert.assertEquals("14",config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH)); + + Assert.assertEquals("1048",config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_MAXSIZE)); + + List<String> expectedExtList = new ArrayList<String>(); + expectedExtList.add("pdf"); + expectedExtList.add("zip"); + expectedExtList.add("xml"); + expectedExtList.add("pdf"); + expectedExtList.add("tgz"); + expectedExtList.add("xls"); + List<String> extList = config.getAsStringValues(NAMESPACE, ConfigTestConstant.ARTIFACT_EXT); + Assert.assertEquals(expectedExtList, extList); + + List<String> expectedEncList = new ArrayList<String>(); + expectedEncList.add("Base64"); + expectedEncList.add("MD5"); + List<String> encList = config.getAsStringValues(NAMESPACE, ConfigTestConstant.ARTIFACT_ENC); + Assert.assertEquals(expectedEncList, encList); + + String newValue = config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_JSON_SCHEMA); + Assert.assertEquals("{name:\"SCM\"}",config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_JSON_SCHEMA)); + + Assert.assertEquals("a-zA-Z_0-9",config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_UPPER )); + + Assert.assertEquals("Deleted",config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_STATUS) ); + + List<String> expectedLocList = new ArrayList<String>(); + expectedLocList.add("/opt/spool"); + expectedLocList.add(System.getProperty("user.home")+"/asdc"); + List<String> locList = config.getAsStringValues(NAMESPACE, ConfigTestConstant.ARTIFACT_LOC); + Assert.assertEquals(expectedLocList, locList); + + Assert.assertEquals("@"+System.getenv("Path")+"/myschema.json",config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_XML_SCHEMA)); + + List<String> artifactConsumer = config.getAsStringValues(NAMESPACE, ConfigTestConstant.ARTIFACT_CONSUMER ); + Assert.assertEquals(config.getAsStringValues(NAMESPACE, ConfigTestConstant.ARTIFACT_CONSUMER_APPC ), artifactConsumer); + + Assert.assertEquals(config.getAsBooleanValue(NAMESPACE, ConfigTestConstant.ARTIFACT_MANDATORY_NAME ), true); + + Assert.assertEquals(config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MINLENGTH ), "6"); + + Assert.assertEquals(config.getAsBooleanValue(NAMESPACE, ConfigTestConstant.ARTIFACT_ENCODED ), true); + } + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + } + +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/MultiTenancyConfigTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/MultiTenancyConfigTest.java new file mode 100644 index 0000000000..66feea3928 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/MultiTenancyConfigTest.java @@ -0,0 +1,55 @@ +package org.openecomp.config.test; + +import org.openecomp.config.ConfigurationUtils; +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.util.ConfigTestConstant; +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import static org.openecomp.config.util.ConfigTestConstant.*; +import static org.openecomp.config.util.ConfigTestConstant.ARTIFACT_ENCODED; +import static org.openecomp.config.util.ConfigTestConstant.ARTIFACT_MANDATORY_NAME; +import static org.openecomp.config.util.TestUtil.validateConfiguraton; +import static org.openecomp.config.util.TestUtil.writeFile; + +/** + * Created by ARR on 10/14/2016. + * + * Scenario 17 + * Verify Configuration management System - Support for Multi-Tenancy + */ +public class MultiTenancyConfigTest { + + public static final String NAMESPACE = "tenancy"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + writeFile(data); + } + + @Test + public void testConfigurationWithMultiTenancyFileFormat(){ + Configuration config = ConfigurationManager.lookup(); + + Assert.assertEquals(config.getAsString("OPENECOMP",NAMESPACE, ARTIFACT_NAME_MAXLENGTH ), "20"); + + Assert.assertEquals(config.getAsString("Telefonica",NAMESPACE, ARTIFACT_STATUS ), "Deleted"); + + Assert.assertEquals(config.getAsString("TID",NAMESPACE, ARTIFACT_NAME_MAXLENGTH ), "14"); + + } + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/NodeSpecificCLITest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/NodeSpecificCLITest.java new file mode 100644 index 0000000000..795780b83b --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/NodeSpecificCLITest.java @@ -0,0 +1,117 @@ +package org.openecomp.config.test; + +import org.openecomp.config.Constants; +import org.openecomp.config.api.ConfigurationChangeListener; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.util.ConfigTestConstant; +import org.openecomp.config.util.TestUtil; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Test; + +import javax.management.JMX; +import javax.management.MBeanServerConnection; +import javax.management.ObjectName; +import java.io.File; +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.lang.management.ManagementFactory; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +/** + * Created by sheetalm on 10/19/2016. + * Scenario 19 + * Pre-requisite - set -Dnode.config.location=${"user.home"}/TestResources/ while running test + * Verify node specific override using CLI + */ +public class NodeSpecificCLITest { + + public final static String NAMESPACE = "NodeCLI"; + private String updatedValue = ""; + + @Test + public void testCLIApi() throws Exception{ + //Verify without fallback + Map<String, Object> input = new HashMap<>(); + input.put("ImplClass", "org.openecomp.config.type.ConfigurationQuery"); + input.put("namespace", NAMESPACE); + input.put("key", ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH); + + MBeanServerConnection mbsc = ManagementFactory.getPlatformMBeanServer(); + ObjectName mbeanName = new ObjectName(Constants.MBEAN_NAME); + ConfigurationManager conf = JMX.newMBeanProxy(mbsc, mbeanName, org.openecomp.config.api.ConfigurationManager.class, true); + String maxLength = conf.getConfigurationValue(input); + + //Verify Property from Namespace configurations + Assert.assertEquals("30",maxLength); + + //Add node specific configurations + Properties props = new Properties(); + props.setProperty(ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH, "50"); + props.setProperty("_config.namespace",NAMESPACE); + File f = new File(TestUtil.jsonSchemaLoc+"config.properties"); + OutputStream out = new FileOutputStream( f ); + props.store(out, "Node Config Property"); + out.close(); + + Thread.sleep(35000); + + //Verify property from node specific configuration + input.put("nodeSpecific", true); + String nodeVal = conf.getConfigurationValue(input); + Assert.assertEquals("50", nodeVal); + + //Add Change Listener + conf.addConfigurationChangeListener(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH, new CLINodeListener()); + + //Update maxlength + input.put("ImplClass", "org.openecomp.config.type.ConfigurationUpdate"); + input.put("nodeOverride", true); + input.put("nodeSpecific", false); + input.put("value", "60"); + conf.updateConfigurationValue(input); + + Thread.sleep(35000); + + Assert.assertEquals("60",updatedValue); + + //Fetch the updated nodespecific value + input.put("nodeOverride", false); + input.put("nodeSpecific", true); + input.put("ImplClass", "org.openecomp.config.type.ConfigurationQuery"); + String updatedMaxLength = conf.getConfigurationValue(input); + Assert.assertEquals("60",updatedMaxLength); + + //Verify maxlength on other nodes by deleting node specific configuration + if(f.exists()) { + boolean isDeleted = f.delete(); + } + + Thread.sleep(35000); + + input.put("ImplClass", "org.openecomp.config.type.ConfigurationQuery"); + input.put("nodeOverride", false); + input.put("nodeSpecific", false); + System.out.println("val on other node is::"+conf.getConfigurationValue(input)); + Assert.assertEquals("30",conf.getConfigurationValue(input)); + } + + @AfterClass + public static void tearDown() throws Exception { + TestUtil.cleanUp(); + File f = new File(TestUtil.jsonSchemaLoc+"config.properties"); + if(f.exists()) { + boolean isDeleted = f.delete(); + } + } + + private class CLINodeListener implements ConfigurationChangeListener { + @Override + public void notify(String key, Object oldValue, Object newValue) { + System.out.println("received notification::oldValue=="+oldValue+" newValue=="+newValue); + updatedValue = newValue.toString(); + } + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/NotificationForNodeConfigTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/NotificationForNodeConfigTest.java new file mode 100644 index 0000000000..3d1579e25e --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/NotificationForNodeConfigTest.java @@ -0,0 +1,85 @@ +package org.openecomp.config.test; + +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationChangeListener; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.util.ConfigTestConstant; +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Properties; + +/** + * Scenario 15 + * Update and Verify Change Notifications for any change in the registered key for node specific configuration + * Pre-requisite - set -Dnode.config.location=${"user.home"}/TestResources/ while running test + * Created by sheetalm on 10/17/2016. + */ +public class NotificationForNodeConfigTest { + public final static String NAMESPACE = "NotificationForNodeConfig"; + + public String updatedValue = null; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + TestUtil.writeFile(data); + } + + @Test + public void testNotificationForNode() throws IOException, InterruptedException { + Configuration config = ConfigurationManager.lookup(); + + System.out.println(config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH)); + + Properties props = new Properties(); + props.setProperty(ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH, "30"); + props.setProperty("_config.namespace",NAMESPACE); + File f = new File(TestUtil.jsonSchemaLoc+"config.properties"); + OutputStream out = new FileOutputStream( f ); + props.store(out, "Node Config Property"); + out.close(); + + Thread.sleep(35000); + + //Verify property from node specific configuration + Assert.assertEquals("30", config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH)); + + config.addConfigurationChangeListener(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH, new NodePropValListener()); + + props.setProperty(ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH, "80"); + out = new FileOutputStream( f ); + props.store(out, "Updated Node Config Property"); + out.close(); + + Thread.sleep(35000); + + //Verify change listenere is invoked when node specific configuration is changed. + Assert.assertEquals("80", updatedValue); + + } + + private class NodePropValListener implements ConfigurationChangeListener { + @Override + public void notify(String key, Object oldValue, Object newValue) { + System.out.println("received notification::oldValue=="+oldValue+" newValue=="+newValue); + updatedValue = newValue.toString(); + } + } + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + File f = new File(TestUtil.jsonSchemaLoc+"config.properties"); + if(f.exists()) { + boolean isDeleted = f.delete(); + } + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/NotificationOnPropValTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/NotificationOnPropValTest.java new file mode 100644 index 0000000000..8a461503ae --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/NotificationOnPropValTest.java @@ -0,0 +1,76 @@ +package org.openecomp.config.test; + +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationChangeListener; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.util.ConfigTestConstant; +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.Assert; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Properties; + +/** + * Pre-requisite - set -Dconfig.location=${"user.home"}/TestResources/ while running test + * Scenario 14 - Verify Change Notifications for any change in the registered key + * Created by sheetalm on 10/14/2016. + */ +public class NotificationOnPropValTest { + + public final static String NAMESPACE = "NotificationOnPropVal"; + + public String updatedValue = null; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + TestUtil.writeFile(data); + } + + @Test + public void testNotification() throws IOException, InterruptedException { + Configuration config = ConfigurationManager.lookup(); + + System.out.println(config.getAsString(NAMESPACE,ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH)); + + config.addConfigurationChangeListener(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH, new PropValListener()); + + Properties props = new Properties(); + props.setProperty(ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH, "20"); + props.setProperty("_config.namespace",NAMESPACE); + props.setProperty("_config.mergeStrategy","override"); + File f = new File(TestUtil.jsonSchemaLoc+"config.properties"); + OutputStream out = new FileOutputStream( f ); + props.store(out, "Override Config Property at Conventional Resource"); + out.close(); + + Thread.sleep(35000); + + System.out.println(config.getAsString(NAMESPACE,ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH)); + + Assert.assertEquals("20" , updatedValue); + } + + private class PropValListener implements ConfigurationChangeListener { + @Override + public void notify(String key, Object oldValue, Object newValue) { + System.out.println("received notification::oldValue=="+oldValue+" newValue=="+newValue); + updatedValue = newValue.toString(); + } + } + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + File f = new File(TestUtil.jsonSchemaLoc+"config.properties"); + if(f.exists()) { + boolean isDeleted = f.delete(); + } + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ResourceChangeNotificationTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ResourceChangeNotificationTest.java new file mode 100644 index 0000000000..e3e4e24f28 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ResourceChangeNotificationTest.java @@ -0,0 +1,91 @@ +package org.openecomp.config.test; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.openecomp.config.ConfigurationUtils; +import org.openecomp.config.util.ConfigTestConstant; + +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationChangeListener; +import org.openecomp.config.api.ConfigurationManager; + +/** + * Scenario 7 + * Test to Validate notification on changes to the underlying source + * Resource here is GeneratorsList.json ehich is created in test itself + */ + +public class ResourceChangeNotificationTest { + + String newValue = null; + + public final static String NAMESPACE = "Notification"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + TestUtil.writeFile(data); + } + + @Test + public void testNotification() throws IOException, InterruptedException { + Configuration config = ConfigurationManager.lookup(); + config.addConfigurationChangeListener(NAMESPACE,ConfigTestConstant.ARTIFACT_JSON_SCHEMA, new MyListener()); + updateJsonInFile(); + Thread.sleep(35000); + String newValue = config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_JSON_SCHEMA); + + Assert.assertEquals("{name:\"updated SCM\"}",newValue); + + Assert.assertEquals( "14",config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH )); + + Assert.assertEquals( "a-zA-Z", config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_UPPER )); + + String artifactConsumer = config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_CONSUMER ); + Assert.assertEquals(artifactConsumer,config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_CONSUMER_APPC )); + + List<String> expectedExtList = new ArrayList<String>(); + expectedExtList.add("pdf"); expectedExtList.add("zip"); expectedExtList.add("xml"); + List<String> extList = config.getAsStringValues(NAMESPACE, ConfigTestConstant.ARTIFACT_EXT); + Assert.assertEquals(expectedExtList, extList); + + List<String> expectedEncList = new ArrayList<String>(); + expectedEncList.add("Base64"); expectedEncList.add("MD5"); + List<String> encList = config.getAsStringValues(NAMESPACE, ConfigTestConstant.ARTIFACT_ENC); + Assert.assertEquals(expectedEncList, encList); + + List<String> expectedLocList = new ArrayList<String>(); + expectedLocList.add("/opt/spool"); expectedLocList.add(System.getProperty("user.home")+"/asdc"); + List<String> locList = config.getAsStringValues(NAMESPACE, ConfigTestConstant.ARTIFACT_LOC); + Assert.assertEquals(expectedLocList, locList); + + Assert.assertEquals("@"+System.getenv("Path")+"/myschema.json",config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_XML_SCHEMA)); + } + + class MyListener implements ConfigurationChangeListener{ + @Override + public void notify(String key, Object oldValue, Object newValue) { + System.out.println("received notification::oldValue=="+oldValue+" newValue=="+newValue); + } + } + + private void updateJsonInFile() throws IOException{ + String data = "{name:\"updated SCM\"}"; + TestUtil.writeFile(data); + } + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/UnregisterNotificationTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/UnregisterNotificationTest.java new file mode 100644 index 0000000000..a53f3c2d40 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/UnregisterNotificationTest.java @@ -0,0 +1,94 @@ +package org.openecomp.config.test; + +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationChangeListener; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.util.ConfigTestConstant; +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Properties; + +/** + * Pre-requisite - set -Dconfig.location=${"user.home"}/TestResources/ while running test + * Created by sheetalm on 10/19/2016. + * Scenario 24 + * Unregister notification and verify listener + */ +public class UnregisterNotificationTest { + public final static String NAMESPACE = "UnregisterNotification"; + + public String updatedValue = null; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + TestUtil.writeFile(data); + } + + @Test + public void testNotification() throws IOException, InterruptedException { + Configuration config = ConfigurationManager.lookup(); + + System.out.println(config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH)); + + PropertyListener propListener = new PropertyListener(); + config.addConfigurationChangeListener(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH,propListener); + + updateValue("20"); + + Thread.sleep(35000); + + System.out.println(config.getAsString(NAMESPACE,ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH)); + + //Verify listener is invoked and updated value to 20 + Assert.assertEquals("20" , updatedValue); + + config.removeConfigurationChangeListener(NAMESPACE,ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH,propListener); + + updateValue("22"); + + Thread.sleep(35000); + + //When listener is unregistered updating value does not invoke any listener and value from listener should remain unchanged + Assert.assertEquals("20" , updatedValue); + + //Verify value is updated even if listener is unregistered + Assert.assertEquals("22" , config.getAsString(NAMESPACE,ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH)); + } + + private void updateValue(String newValue) throws IOException { + Properties props = new Properties(); + props.setProperty(ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH, newValue); + props.setProperty("_config.namespace",NAMESPACE); + props.setProperty("_config.mergeStrategy","override"); + File f = new File(TestUtil.jsonSchemaLoc+"config.properties"); + OutputStream out = new FileOutputStream( f ); + props.store(out, "Override Config Property at Conventional Resource"); + out.close(); + } + + private class PropertyListener implements ConfigurationChangeListener { + @Override + public void notify(String key, Object oldValue, Object newValue) { + System.out.println("received notification::oldValue=="+oldValue+" newValue=="+newValue); + updatedValue = newValue.toString(); + } + } + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + File f = new File(TestUtil.jsonSchemaLoc+"config.properties"); + if(f.exists()) { + boolean isDeleted = f.delete(); + } + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ValidateDefaultModeTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ValidateDefaultModeTest.java new file mode 100644 index 0000000000..7ae2e0a644 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ValidateDefaultModeTest.java @@ -0,0 +1,60 @@ +package org.openecomp.config.test; + +import org.openecomp.config.ConfigurationUtils; +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.util.ConfigTestConstant; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import static org.openecomp.config.util.ConfigTestConstant.*; +import static org.openecomp.config.util.TestUtil.writeFile; + +/** + * Created by ARR on 10/17/2016. + * + * Scenario 22 + * Validate the default mode if the mode is not set + */ +public class ValidateDefaultModeTest { + + public static final String NAMESPACE = "defaultmode"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + writeFile(data); + } + + @Test + public void testConfigurationWithValidateDefaultMode(){ + Configuration config = ConfigurationManager.lookup(); + + Assert.assertEquals(config.getAsString(NAMESPACE, ARTIFACT_NAME_MAXLENGTH ), "14"); + + Assert.assertEquals(config.getAsString(NAMESPACE, ARTIFACT_MAXSIZE ), "1048"); + + List<String> expectedExtList = new ArrayList<String>(); + expectedExtList.add("pdf"); + expectedExtList.add("tgz"); + expectedExtList.add("xls"); + List<String> extList = config.getAsStringValues(NAMESPACE, ConfigTestConstant.ARTIFACT_EXT); + Assert.assertEquals(expectedExtList, extList); + + Assert.assertEquals(config.getAsString(NAMESPACE, ARTIFACT_NAME_MINLENGTH ), "6"); + + } + + @After + public void tearDown() throws Exception { + String data = "{name:\"SCM\"}"; + writeFile(data); + // ConfigurationUtils.executeDDLSQL("truncate dox.configuration"); + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ValidateNodeConfigTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ValidateNodeConfigTest.java new file mode 100644 index 0000000000..03a6786275 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/ValidateNodeConfigTest.java @@ -0,0 +1,80 @@ +package org.openecomp.config.test; + +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationManager; +import org.openecomp.config.util.ConfigTestConstant; +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.Assert; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Properties; + +/** + * Scenario 13 + * Validate node specific configuration + * Pre-requisite - set -Dnode.config.location=${"user.home"}/TestResources/ while running test + * + * Created by sheetalm on 10/14/2016. + */ +public class ValidateNodeConfigTest { + + public final static String NAMESPACE = "ValidateNodeConfig"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + TestUtil.writeFile(data); + } + + @Test + public void testValidateNodeConfig() throws IOException, InterruptedException { + Configuration config = ConfigurationManager.lookup(); + + Properties props = new Properties(); + props.setProperty(ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH, "56"); + props.setProperty("_config.namespace","ValidateNodeConfig"); + File f = new File(TestUtil.jsonSchemaLoc+"config.properties"); + OutputStream out = new FileOutputStream( f ); + props.store(out, "Node Config Property"); + out.close(); + + System.out.println(System.getProperty("node.config.location")); + + Thread.sleep(35000); + + //Verify property from node specific configuration + Assert.assertEquals("56", config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH)); + + //Verify if property is not in node specific then fetch from namespace + //Assert.assertEquals("a-zA-Z",config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_UPPER)); + + //Verify if property is not in node specific and namespace then fetch from global + Assert.assertEquals("1024", config.getAsString(NAMESPACE, "maxCachedBufferSize")); + + //Deleting node configurations to test property is fetched from namespace configuration when node configuration is not present + if(f.exists()) { + boolean isDeleted = f.delete(); + System.out.println(isDeleted); + } + + Thread.sleep(35000); + + Assert.assertEquals(config.getAsString(NAMESPACE, ConfigTestConstant.ARTIFACT_NAME_MAXLENGTH), "14"); + } + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + File f = new File(TestUtil.jsonSchemaLoc+"config.properties"); + if(f.exists()) { + boolean isDeleted = f.delete(); + } + } + +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/XMLConfigTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/XMLConfigTest.java new file mode 100644 index 0000000000..8af5ebf89d --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/XMLConfigTest.java @@ -0,0 +1,41 @@ +package org.openecomp.config.test; + +import org.openecomp.config.ConfigurationUtils; +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; + +import static org.openecomp.config.util.TestUtil.validateConfiguraton; +import static org.openecomp.config.util.TestUtil.writeFile; + +/** + * Created by ARR on 10/14/2016. + * + * Scenario 2 + * Validate configuration with XML file format with mode + */ +public class XMLConfigTest { + + public static final String NAMESPACE = "XMLConfig"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + writeFile(data); + } + + @Test + public void testConfigurationWithXMLFileFormat(){ + validateConfiguraton(NAMESPACE); + } + + + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/YAMLConfigTest.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/YAMLConfigTest.java new file mode 100644 index 0000000000..bc172b0eb7 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/test/YAMLConfigTest.java @@ -0,0 +1,41 @@ +package org.openecomp.config.test; + +import org.openecomp.config.ConfigurationUtils; +import org.openecomp.config.util.TestUtil; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; + +import static org.openecomp.config.util.TestUtil.validateConfiguraton; +import static org.openecomp.config.util.TestUtil.writeFile; + +/** + * Created by ARR on 10/14/2016. + * + * Scenario 4 + * Validate configuration with YAML file format with mode + */ +public class YAMLConfigTest { + + public static final String NAMESPACE = "YAMLConfig"; + + @Before + public void setUp() throws IOException { + String data = "{name:\"SCM\"}"; + writeFile(data); + } + + @Test + public void testConfigurationWithYAMLFileFormat(){ + validateConfiguraton(NAMESPACE); + } + + + + @After + public void tearDown() throws Exception { + TestUtil.cleanUp(); + } +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/util/ConfigTestConstant.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/util/ConfigTestConstant.java new file mode 100644 index 0000000000..d639ccad42 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/util/ConfigTestConstant.java @@ -0,0 +1,23 @@ +package org.openecomp.config.util; + +public class ConfigTestConstant { + + public static final String ARTIFACT_NAME_MAXLENGTH = "artifact.name.maxlength"; + public static final String ARTIFACT_MAXSIZE = "artifact.maxsize"; + public static final String ARTIFACT_EXT = "artifact.extension"; + public static final String ARTIFACT_ENC = "artifact.supportedEncryption"; + public static final String ARTIFACT_NAME_UPPER = "artifact.name.allowedChar"; + public static final String ARTIFACT_NAME_LOWER = "artifact.name.allowedchar"; + public static final String ARTIFACT_STATUS = "artifact.status"; + public static final String ARTIFACT_LOC = "artifact.persistLocation"; + public static final String ARTIFACT_JSON_SCHEMA = "artifact.jsonSchema"; + public static final String ARTIFACT_XML_SCHEMA = "artifact.xmlSchema"; + public static final String ARTIFACT_CONSUMER_APPC = "artifact.consumerAPPC"; + public static final String ARTIFACT_CONSUMER = "artifact.consumer"; + public static final String ARTIFACT_MANDATORY_NAME = "artifact.mandatory.name"; + public static final String ARTIFACT_NAME_MINLENGTH = "artifact.name.minlength"; + public static final String ARTIFACT_ENCODED = "artifact.encoded"; + + public static final String ONBOARDING_NAMESPACE = "onboarding"; + +} diff --git a/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/util/TestUtil.java b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/util/TestUtil.java new file mode 100644 index 0000000000..a04f14cb84 --- /dev/null +++ b/common/openecomp-common-configuration-management/openecomp-configuration-management-test/src/test/java/org/openecomp/config/util/TestUtil.java @@ -0,0 +1,95 @@ +package org.openecomp.config.util; + +import org.openecomp.config.ConfigurationUtils; +import org.openecomp.config.api.Configuration; +import org.openecomp.config.api.ConfigurationManager; +import org.junit.Assert; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import static org.openecomp.config.util.ConfigTestConstant.*; +import static org.openecomp.config.util.ConfigTestConstant.ARTIFACT_ENCODED; +import static org.openecomp.config.util.ConfigTestConstant.ARTIFACT_MANDATORY_NAME; + +/** + * Created by sheetalm on 10/13/2016. + */ +public class TestUtil { + + public final static String jsonSchemaLoc = System.getProperty("user.home")+"/TestResources/"; + public static FileWriter fileWriter ; + + public static void writeFile(String data) throws IOException { + File dir = new File(jsonSchemaLoc); + File file = null; + dir.mkdirs(); + file = new File(jsonSchemaLoc+"/GeneratorsList.json"); + file.createNewFile(); + fileWriter = new FileWriter(file); + fileWriter.write(data); + fileWriter.close(); + } + + public static void cleanUp() throws Exception { + String data = "{name:\"SCM\"}"; + TestUtil.writeFile(data); + //ConfigurationUtils.executeDdlSql("truncate dox.configuration"); + try{ + ConfigurationUtils.executeDdlSql("truncate dox.configuration_change"); + } + catch(Exception e){ + e.printStackTrace(); + } + + } + + public static void validateConfiguraton(String nameSpace) { + Configuration config = ConfigurationManager.lookup(); + + Assert.assertEquals(config.getAsString(nameSpace, ARTIFACT_NAME_MAXLENGTH ), "14"); + + // First value from list is picked from Merge properties + Assert.assertEquals(config.getAsString(nameSpace, ARTIFACT_MAXSIZE ), "1048576"); + + List<String> expectedExtList = new ArrayList<String>(); + expectedExtList.add("pdf"); + expectedExtList.add("zip"); + expectedExtList.add("xml"); + expectedExtList.add("pdf"); + expectedExtList.add("tgz"); + expectedExtList.add("xls"); + List<String> extList = config.getAsStringValues(nameSpace, ConfigTestConstant.ARTIFACT_EXT); + Assert.assertEquals(expectedExtList, extList); + + List<String> expectedEncList = new ArrayList<String>(); + expectedEncList.add("Base64"); + expectedEncList.add("MD5"); + List<String> encList = config.getAsStringValues(nameSpace, ConfigTestConstant.ARTIFACT_ENC); + Assert.assertEquals(expectedEncList, encList); + + Assert.assertEquals(config.getAsString(nameSpace, ARTIFACT_NAME_UPPER ), "a-zA-Z_0-9"); + Assert.assertEquals(config.getAsString(nameSpace, ARTIFACT_NAME_LOWER ), "a-zA-Z"); + Assert.assertEquals(config.getAsString(nameSpace, ARTIFACT_STATUS ), "deleted"); + + List<String> expectedLocList = new ArrayList<String>(); + expectedLocList.add("/opt/spool"); + expectedLocList.add(System.getProperty("user.home")+"/asdc"); + List<String> locList = config.getAsStringValues(nameSpace, ConfigTestConstant.ARTIFACT_LOC); + Assert.assertEquals(expectedLocList, locList); + + Assert.assertEquals(config.getAsString(nameSpace, ARTIFACT_JSON_SCHEMA ), "@GeneratorList.json"); + + Assert.assertEquals("@"+System.getenv("Path")+"/myschema.json",config.getAsString(nameSpace, ConfigTestConstant.ARTIFACT_XML_SCHEMA)); + + List<String> artifactConsumer = config.getAsStringValues(nameSpace, ConfigTestConstant.ARTIFACT_CONSUMER ); + Assert.assertEquals(config.getAsStringValues(nameSpace, ConfigTestConstant.ARTIFACT_CONSUMER_APPC ), artifactConsumer); + + Assert.assertEquals(config.getAsString(nameSpace, ARTIFACT_NAME_MINLENGTH ), "6"); + Assert.assertEquals(config.getAsString(nameSpace, ARTIFACT_MANDATORY_NAME ), "true"); + Assert.assertEquals(config.getAsString(nameSpace, ARTIFACT_ENCODED ), "true"); + } +} |