Added junit for test-transaction feature 11/10611/2
authorMagnusen, Drew (dm741q) <dm741q@att.com>
Wed, 6 Sep 2017 17:22:33 +0000 (12:22 -0500)
committerMagnusen, Drew (dm741q) <dm741q@att.com>
Wed, 6 Sep 2017 17:52:22 +0000 (12:52 -0500)
Single junit was added for test-transaction feature.
Junit does not test full functionality of the feature,
but does test some of the peripheral methods.

Also fixed small indentation error in assemble_zip.xml.

Issue-ID: POLICY-198
Change-Id: Iad7a98be45eb8ef6701bf8381aa764d2dd1ca9c7
Signed-off-by: Magnusen, Drew (dm741q) <dm741q@att.com>
feature-test-transaction/pom.xml
feature-test-transaction/src/assembly/assemble_zip.xml
feature-test-transaction/src/test/java/org/onap/policy/drools/testtransaction/TestTransactionTest.java [new file with mode: 0644]

index 693c3dc..14ba010 100644 (file)
       <version>${project.version}</version>
       <scope>provided</scope>
     </dependency>
+       <dependency>
+               <groupId>junit</groupId>
+               <artifactId>junit</artifactId>
+               <scope>test</scope>
+       </dependency>
   </dependencies>
 </project>
\ No newline at end of file
index 03c0bb5..9945a1c 100644 (file)
      <includeBaseDirectory>false</includeBaseDirectory>
 
      <fileSets>
-          <fileSet>
-               <directory>target</directory>
-               <outputDirectory>lib/feature</outputDirectory>
-               <includes>
-                    <include>feature-test-transaction-${project.version}.jar</include>
-               </includes>
-          </fileSet>
-               <fileSet>
-                       <directory>target/assembly/lib</directory>
-                       <outputDirectory>lib/dependencies</outputDirectory>
-                       <includes>
-                               <include>*.jar</include>
-                       </includes>
-               </fileSet>
-               <fileSet>
-                       <directory>src/main/feature/config</directory>
-                       <outputDirectory>config</outputDirectory>
-                       <fileMode>0644</fileMode>
-                       <excludes/>
-               </fileSet>
-               <fileSet>
-                       <directory>src/main/feature/bin</directory>
-                       <outputDirectory>bin</outputDirectory>
-                       <fileMode>0744</fileMode>
-                       <excludes/>
-               </fileSet>
-               <fileSet>
-                       <directory>src/main/feature/db</directory>
-                       <outputDirectory>db</outputDirectory>
-                       <fileMode>0744</fileMode>
-                       <excludes/>
-               </fileSet>
-               <fileSet>
-                       <directory>src/main/feature/install</directory>
-                       <outputDirectory>install</outputDirectory>
-                       <fileMode>0744</fileMode>
-                       <excludes/>
-               </fileSet>
-
+       <fileSet>
+               <directory>target</directory>
+               <outputDirectory>lib/feature</outputDirectory>
+               <includes>
+                       <include>feature-test-transaction-${project.version}.jar</include>
+               </includes>
+               </fileSet>
+       <fileSet>
+               <directory>target/assembly/lib</directory>
+               <outputDirectory>lib/dependencies</outputDirectory>
+               <includes>
+                       <include>*.jar</include>
+               </includes>
+       </fileSet>
+       <fileSet>
+               <directory>src/main/feature/config</directory>
+               <outputDirectory>config</outputDirectory>
+               <fileMode>0644</fileMode>
+       </fileSet>
+       <fileSet>
+               <directory>src/main/feature/bin</directory>
+               <outputDirectory>bin</outputDirectory>
+               <fileMode>0744</fileMode>
+       </fileSet>
+       <fileSet>
+               <directory>src/main/feature/db</directory>
+               <outputDirectory>db</outputDirectory>
+               <fileMode>0744</fileMode>
+       </fileSet>
+       <fileSet>
+               <directory>src/main/feature/install</directory>
+               <outputDirectory>install</outputDirectory>
+               <fileMode>0744</fileMode>
+       </fileSet>
      </fileSets>
-
 </assembly>
diff --git a/feature-test-transaction/src/test/java/org/onap/policy/drools/testtransaction/TestTransactionTest.java b/feature-test-transaction/src/test/java/org/onap/policy/drools/testtransaction/TestTransactionTest.java
new file mode 100644 (file)
index 0000000..2a44e1c
--- /dev/null
@@ -0,0 +1,152 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * feature-test-transaction
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.drools.testtransaction;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Properties;
+import java.util.Set;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.policy.drools.persistence.SystemPersistence;
+import org.onap.policy.drools.properties.PolicyProperties;
+import org.onap.policy.drools.system.PolicyController;
+import org.onap.policy.drools.system.PolicyEngine;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TestTransactionTest {
+       /**
+        * Test JUnit Controller Name
+        */
+       public static final String TEST_CONTROLLER_NAME = "unnamed";
+       /**
+        * Controller Configuration File
+        */
+       public static final String TEST_CONTROLLER_FILE = TEST_CONTROLLER_NAME + "-controller.properties";
+       
+       /**
+        * Controller Configuration Backup File
+        */
+       public static final String TEST_CONTROLLER_FILE_BAK = TEST_CONTROLLER_NAME + "-controller.properties.bak";
+       
+       
+       /**
+        * logger
+        */
+       private static Logger logger = LoggerFactory.getLogger(TestTransactionTest.class);
+       
+       
+
+       @BeforeClass
+       public static void startUp() throws IOException {
+               logger.info("enter");
+               
+               cleanUpWorkingDir();
+               
+               /* ensure presence of config directory */
+               Path configDir = Paths.get(SystemPersistence.CONFIG_DIR_NAME);
+               if (Files.notExists(configDir))
+                       Files.createDirectories(configDir);
+       }
+       
+       @Test
+       public void registerUnregisterTest() {
+               Properties controllerProperties = new Properties();
+               controllerProperties.put(PolicyProperties.PROPERTY_CONTROLLER_NAME, TEST_CONTROLLER_NAME);
+               PolicyController controller = PolicyEngine.manager.createPolicyController(TEST_CONTROLLER_NAME, controllerProperties);
+               Thread ttThread = null;
+               
+               TestTransaction.manager.register(controller);
+               assertNotNull(TestTransaction.manager);
+               
+                       /* 
+                        * If the controller was successfully registered
+                        * it will have a thread created. 
+                        */
+               ttThread = getThread("tt-controller-task-" + TEST_CONTROLLER_NAME);
+               assertNotNull(ttThread);
+
+                       /* 
+                        * Unregistering the controller should
+                        * terminate its TestTransaction thread
+                        * if it hasn't already been terminated
+                        */
+               TestTransaction.manager.unregister(controller);
+               
+                       /*
+                        * Put this thread to sleep so the TestTransaction
+                        * thread has enough time to terminate before
+                        * we check.
+                        */
+               try {
+                       Thread.sleep(2000);
+               } catch (InterruptedException e) {
+                       
+               }
+               ttThread = getThread("tt-controller-task-" + TEST_CONTROLLER_NAME);
+               assertEquals(null, ttThread);
+               
+               
+       }
+
+               /*
+                * Returns thread object based on
+                * String name
+                */
+       public Thread getThread(String threadName) {
+               
+               Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
+               for (Thread thread : threadSet) {
+                       if (thread.getName().equals(threadName)) {
+                               return thread;
+                       }
+                       
+               }
+               return null;
+       }
+       
+       /**
+        * clean up working directory
+        */
+       protected static void cleanUpWorkingDir() {
+               Path testControllerPath = Paths.get(SystemPersistence.CONFIG_DIR_NAME, TEST_CONTROLLER_FILE);
+               try {
+                       Files.deleteIfExists(testControllerPath);
+               } catch (Exception e) {
+                       logger.info("Problem cleaning {}", testControllerPath, e);
+               }
+               
+               Path testControllerBakPath = Paths.get(SystemPersistence.CONFIG_DIR_NAME, TEST_CONTROLLER_FILE_BAK);
+               try {
+                       Files.deleteIfExists(testControllerBakPath);
+               } catch (Exception e) {
+                       logger.info("Problem cleaning {}", testControllerBakPath, e);
+               }
+       }
+       
+}