diff options
3 files changed, 191 insertions, 40 deletions
diff --git a/feature-test-transaction/pom.xml b/feature-test-transaction/pom.xml index 693c3dc6..14ba010c 100644 --- a/feature-test-transaction/pom.xml +++ b/feature-test-transaction/pom.xml @@ -93,5 +93,10 @@ <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 diff --git a/feature-test-transaction/src/assembly/assemble_zip.xml b/feature-test-transaction/src/assembly/assemble_zip.xml index 03c0bb58..9945a1c9 100644 --- a/feature-test-transaction/src/assembly/assemble_zip.xml +++ b/feature-test-transaction/src/assembly/assemble_zip.xml @@ -34,45 +34,39 @@ <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 index 00000000..2a44e1c1 --- /dev/null +++ b/feature-test-transaction/src/test/java/org/onap/policy/drools/testtransaction/TestTransactionTest.java @@ -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); + } + } + +} |