Add test cases for sli
[ccsdk/sli/core.git] / sli / provider / src / test / java / org / onap / ccsdk / sli / core / sli / provider / ITCaseSvcLogicGraphExecutor.java
index cdf837a..4c112ab 100644 (file)
 
 package org.onap.ccsdk.sli.core.sli.provider;
 
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import ch.vorburger.mariadb4j.DB;
+import ch.vorburger.mariadb4j.DBConfigurationBuilder;
 import java.io.BufferedReader;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -30,179 +35,215 @@ import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.Map;
 import java.util.Properties;
-
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
 import org.onap.ccsdk.sli.core.sli.SvcLogicGraph;
 import org.onap.ccsdk.sli.core.sli.SvcLogicParser;
 import org.onap.ccsdk.sli.core.sli.SvcLogicStore;
 import org.onap.ccsdk.sli.core.sli.SvcLogicStoreFactory;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceRegistration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import ch.vorburger.mariadb4j.DB;
-import ch.vorburger.mariadb4j.DBConfigurationBuilder;
-import junit.framework.TestCase;
+public class ITCaseSvcLogicGraphExecutor {
+
+    private static final Logger LOG = LoggerFactory.getLogger(SvcLogicGraph.class);
+    private static final Map<String, SvcLogicNodeExecutor> BUILTIN_NODES = new HashMap<String, SvcLogicNodeExecutor>() {
+        {
+            put("block", new BlockNodeExecutor());
+            put("call", new CallNodeExecutor());
+            put("configure", new ConfigureNodeExecutor());
+            put("delete", new DeleteNodeExecutor());
+            put("execute", new ExecuteNodeExecutor());
+            put("exists", new ExistsNodeExecutor());
+            put("for", new ForNodeExecutor());
+            put("get-resource", new GetResourceNodeExecutor());
+            put("is-available", new IsAvailableNodeExecutor());
+            put("notify", new NotifyNodeExecutor());
+            put("record", new RecordNodeExecutor());
+            put("release", new ReleaseNodeExecutor());
+            put("reserve", new ReserveNodeExecutor());
+            put("return", new ReturnNodeExecutor());
+            put("save", new SaveNodeExecutor());
+            put("set", new SetNodeExecutor());
+            put("switch", new SwitchNodeExecutor());
+            put("update", new UpdateNodeExecutor());
+
+        }
+    };
+
+    @BeforeClass
+    public static void setUpBeforeClass() throws Exception {
+
+        LOG.info("before class");
+
+        InputStream propStr = ITCaseSvcLogicGraphExecutor.class.getResourceAsStream("/svclogic.properties");
+
+        Properties svcprops = new Properties();
+        svcprops.load(propStr);
+
+        // Start MariaDB4j database
+        DBConfigurationBuilder config = DBConfigurationBuilder.newBuilder();
+        config.setPort(0); // 0 => autom. detect free port
+        DB db = DB.newEmbeddedDB(config.build());
+        db.start();
+
+        // Override jdbc URL and database name
+        svcprops.setProperty("org.onap.ccsdk.sli.jdbc.database", "test");
+        svcprops.setProperty("org.onap.ccsdk.sli.jdbc.url", config.getURL("test"));
+
+        SvcLogicStore store = SvcLogicStoreFactory.getSvcLogicStore(svcprops);
+
+        assertNotNull(store);
+
+        SvcLogicParser parser = new SvcLogicParser();
+
+        SvcLogicPropertiesProvider resourceProvider = new SvcLogicPropertiesProviderImpl();
+        SvcLogicServiceImpl svc = new SvcLogicServiceImpl(resourceProvider);
+
+        for (String nodeType : BUILTIN_NODES.keySet()) {
+            LOG.info("SLI - registering node executor for node type " + nodeType);
+            svc.registerExecutor(nodeType, BUILTIN_NODES.get(nodeType));
+        }
+
+
+
 
-public class ITCaseSvcLogicGraphExecutor extends TestCase {
-       private static final Logger LOG = LoggerFactory
-                       .getLogger(SvcLogicGraph.class);
+    }
 
-       private static final Map<String, SvcLogicNodeExecutor> BUILTIN_NODES = new HashMap<String, SvcLogicNodeExecutor>() {
-               {
-                       put("block", new BlockNodeExecutor());
-                       put("call", new CallNodeExecutor());
-                       put("configure", new ConfigureNodeExecutor());
-                       put("delete", new DeleteNodeExecutor());
-                       put("execute", new ExecuteNodeExecutor());
-                       put("exists", new ExistsNodeExecutor());
-                       put("for", new ForNodeExecutor());
-                       put("get-resource", new GetResourceNodeExecutor());
-                       put("is-available", new IsAvailableNodeExecutor());
-                       put("notify", new NotifyNodeExecutor());
-                       put("record", new RecordNodeExecutor());
-                       put("release", new ReleaseNodeExecutor());
-                       put("reserve", new ReserveNodeExecutor());
-                       put("return", new ReturnNodeExecutor());
-                       put("save", new SaveNodeExecutor());
-                       put("set", new SetNodeExecutor());
-                       put("switch", new SwitchNodeExecutor());
-                       put("update", new UpdateNodeExecutor());
-
-               }
-       };
+    @AfterClass
+    public static void tearDownAfterClass() throws Exception {
+        LOG.info("after class");
+    }
 
-       public void testExecute() {
-
-               try {
-                       InputStream testStr = getClass().getResourceAsStream("/executor.tests");
-                       BufferedReader testsReader = new BufferedReader(new InputStreamReader(testStr));
-
-                       InputStream propStr = getClass().getResourceAsStream("/svclogic.properties");
-
-                       Properties svcprops = new Properties();
-                       svcprops.load(propStr);
-
-                       // Start MariaDB4j database
-               DBConfigurationBuilder config = DBConfigurationBuilder.newBuilder();
-               config.setPort(0); // 0 => autom. detect free port
-               DB db = DB.newEmbeddedDB(config.build());
-               db.start();
-
-
-
-                       // Override jdbc URL and database name
-               svcprops.setProperty("org.onap.ccsdk.sli.jdbc.database", "test");
-                       svcprops.setProperty("org.onap.ccsdk.sli.jdbc.url", config.getURL("test"));
+    @Before
+    public void setUp() throws Exception {
+        LOG.info("before");
+    }
 
+    @After
+    public void tearDown() throws Exception {
+        LOG.info("after");
+    }
 
+    @Test
+    public void testExecute() {
 
-                       SvcLogicStore store = SvcLogicStoreFactory.getSvcLogicStore(svcprops);
+        try {
+            InputStream testStr = getClass().getResourceAsStream("/executor.tests");
+            BufferedReader testsReader = new BufferedReader(new InputStreamReader(testStr));
 
-                       assertNotNull(store);
+            InputStream propStr = getClass().getResourceAsStream("/svclogic.properties");
 
-                       store.registerNodeType("switch");
-                       store.registerNodeType("block");
-                       store.registerNodeType("get-resource");
-                       store.registerNodeType("reserve");
-                       store.registerNodeType("is-available");
-                       store.registerNodeType("exists");
-                       store.registerNodeType("configure");
-                       store.registerNodeType("return");
-                       store.registerNodeType("record");
-                       store.registerNodeType("allocate");
-                       store.registerNodeType("release");
-                       store.registerNodeType("for");
-                       store.registerNodeType("set");
-                       SvcLogicParser parser = new SvcLogicParser(store);
+            Properties svcprops = new Properties();
+            svcprops.load(propStr);
 
-                       // Loop through executor tests
+            // Start MariaDB4j database
+            DBConfigurationBuilder config = DBConfigurationBuilder.newBuilder();
+            config.setPort(0); // 0 => autom. detect free port
+            DB db = DB.newEmbeddedDB(config.build());
+            db.start();
 
-                       SvcLogicServiceImpl svc = new SvcLogicServiceImpl();
+            // Override jdbc URL and database name
+            svcprops.setProperty("org.onap.ccsdk.sli.jdbc.database", "test");
+            svcprops.setProperty("org.onap.ccsdk.sli.jdbc.url", config.getURL("test"));
 
-                       for (String nodeType : BUILTIN_NODES.keySet()) {
+            SvcLogicStore store = SvcLogicStoreFactory.getSvcLogicStore(svcprops);
 
-                               LOG.info("SLI - registering node executor for node type "+nodeType);
+            assertNotNull(store);
 
-                               svc.registerExecutor(nodeType, BUILTIN_NODES.get(nodeType));
 
-                       }
-                       String testCaseLine = null;
-                       while ((testCaseLine = testsReader.readLine()) != null) {
+            SvcLogicParser parser = new SvcLogicParser();
 
-                               String[] testCaseFields = testCaseLine.split(":");
-                               String testCaseFile = testCaseFields[0];
-                               String testCaseMethod = testCaseFields[1];
-                               String testCaseParameters = null;
+            // Loop through executor tests
+            SvcLogicPropertiesProvider resourceProvider = new SvcLogicPropertiesProviderImpl();
 
-                               if (testCaseFields.length > 2) {
-                                       testCaseParameters = testCaseFields[2];
-                               }
+            SvcLogicServiceImpl svc = new SvcLogicServiceImpl(resourceProvider);
 
-                               SvcLogicContext ctx = new SvcLogicContext();
-                               if (testCaseParameters != null) {
-                                       String[] testCaseParameterSettings = testCaseParameters.split(",");
+            for (String nodeType : BUILTIN_NODES.keySet()) {
 
-                                       for (int i = 0 ; i < testCaseParameterSettings.length ; i++) {
-                                               String[] nameValue = testCaseParameterSettings[i].split("=");
-                                               if (nameValue != null) {
-                                                       String name = nameValue[0];
-                                                       String value = "";
-                                                       if (nameValue.length > 1) {
-                                                               value = nameValue[1];
-                                                       }
+                LOG.info("SLI - registering node executor for node type {}", nodeType);
 
-                                                       ctx.setAttribute(name,  value);
-                                               }
-                                       }
-                               }
+                svc.registerExecutor(nodeType, BUILTIN_NODES.get(nodeType));
 
-                               testCaseFile = testCaseFile.trim();
+            }
+            String testCaseLine = null;
+            while ((testCaseLine = testsReader.readLine()) != null) {
 
-                               if (testCaseFile.length() > 0) {
-                                       if (!testCaseFile.startsWith("/")) {
-                                               testCaseFile = "/"+testCaseFile;
-                                       }
-                                       URL testCaseUrl = getClass().getResource(testCaseFile);
-                                       if (testCaseUrl == null) {
-                                               fail("Could not resolve test case file "+testCaseFile);
-                                       }
+                String[] testCaseFields = testCaseLine.split(":");
+                String testCaseFile = testCaseFields[0];
+                String testCaseMethod = testCaseFields[1];
+                String testCaseParameters = null;
 
-                                       LinkedList<SvcLogicGraph> graphs = parser.parse(testCaseUrl.getPath());
+                if (testCaseFields.length > 2) {
+                    testCaseParameters = testCaseFields[2];
+                }
 
+                SvcLogicContext ctx = new SvcLogicContext();
+                if (testCaseParameters != null) {
+                    String[] testCaseParameterSettings = testCaseParameters.split(",");
 
-                                       assertNotNull(graphs);
+                    for (int i = 0; i < testCaseParameterSettings.length; i++) {
+                        String[] nameValue = testCaseParameterSettings[i].split("=");
+                        if (nameValue != null) {
+                            String name = nameValue[0];
+                            String value = "";
+                            if (nameValue.length > 1) {
+                                value = nameValue[1];
+                            }
 
-                                       for (SvcLogicGraph graph: graphs) {
-                                               if (graph.getRpc().equals(testCaseMethod)) {
-                                                       Properties props = ctx.toProperties();
-                                                       LOG.info("SvcLogicContext before executing "+testCaseMethod+":");
-                                                       for (Enumeration e1 = props.propertyNames(); e1.hasMoreElements() ; ) {
-                                                               String propName = (String) e1.nextElement();
-                                                               LOG.info(propName+" = "+props.getProperty(propName));
-                                                       }
+                            ctx.setAttribute(name, value);
+                        }
+                    }
+                }
 
-                                                       svc.execute(graph, ctx);
+                testCaseFile = testCaseFile.trim();
 
-                                                       props = ctx.toProperties();
-                                                       LOG.info("SvcLogicContext after executing "+testCaseMethod+":");
-                                                       for (Enumeration e2 = props.propertyNames(); e2.hasMoreElements() ; ) {
-                                                               String propName = (String) e2.nextElement();
-                                                               LOG.info(propName+" = "+props.getProperty(propName));
-                                                       }
-                                               }
-                                       }
+                if (testCaseFile.length() > 0) {
+                    if (!testCaseFile.startsWith("/")) {
+                        testCaseFile = "/" + testCaseFile;
+                    }
+                    URL testCaseUrl = getClass().getResource(testCaseFile);
+                    if (testCaseUrl == null) {
+                        fail("Could not resolve test case file " + testCaseFile);
+                    }
 
-                               }
+                    LinkedList<SvcLogicGraph> graphs = parser.parse(testCaseUrl.getPath());
 
+                    assertNotNull(graphs);
 
-                       }
+                    for (SvcLogicGraph graph : graphs) {
+                        if (graph.getRpc().equals(testCaseMethod)) {
+                            Properties props = ctx.toProperties();
+                            LOG.info("SvcLogicContext before executing {}:", testCaseMethod);
+                            for (Enumeration e1 = props.propertyNames(); e1.hasMoreElements(); ) {
+                                String propName = (String) e1.nextElement();
+                                LOG.info(propName + " = " + props.getProperty(propName));
+                            }
 
+                            svc.execute(graph, ctx);
 
-               } catch (Exception e) {
-                       LOG.error("Caught exception executing directed graphs", e);
-                       fail("Exception executing graphs");
-               }
-       }
+                            props = ctx.toProperties();
+                            LOG.info("SvcLogicContext after executing {}:", testCaseMethod);
+                            for (Enumeration e2 = props.propertyNames(); e2.hasMoreElements(); ) {
+                                String propName = (String) e2.nextElement();
+                                LOG.info(propName + " = " + props.getProperty(propName));
+                            }
+                        }
+                    }
 
+                }
+            }
 
+        } catch (Exception e) {
+            LOG.error("Caught exception executing directed graphs", e);
+            fail("Exception executing graphs");
+        }
+    }
 }