From 0360eed8a9ed1a6f83f88971fc4fc5ab2e9a81b2 Mon Sep 17 00:00:00 2001 From: Jorge Hernandez Date: Mon, 25 Sep 2017 21:49:31 -0500 Subject: junits fixes I found multiple issues from latest junit submissions when I built in my local that I tried to fix. 1. feature-test-transaction - prone to race conditions as we have experienced in some jenkins builds. There is an assert that checks if the thread is alive that monitors a policy controller kiesession sanity. The thread is very short-lived as it will exit right away since it detects that the underlying "drools session" does not have an attached rules artifact (brainless). Removed that check to fix the race condition. 2. With the increment of junits in the PolicyEngine.manager for multiple packages, it seems that the static instance is reused across junits (which surprised me), so configuration files that are not supposed to be read in junits for a package are read, and for example the lock state could propagate across junits. I tried to clean all that up to make sure that each junit deals with what is has created and state does not propagate to other junits. 3. feature-active-standy-management had a missing "junit" dependency. I generated the effective pom, and indeed did not show, some junits failed to compile in the test phase. Adding the test dependency fixed the problem. As a note, the feature-active-standy-management junits, take over 20 minutes to run. This time is excessive (see below): logs$ head -1 debug.log 2017-09-25 21:24:21.630 [main] DEBUG o.o.p.d.c.t.StandbyStateManagementTest.setUpClass(111) - setUpClass: userDir=/media/sf_jh1730/dev/open/LF/git/master/policy/drools-pdp/feature-active-standby-management logs$ tail -1 debug.log 2017-09-25 21:46:29.801 [Timer-46] DEBUG o.o.p.d.a.DroolsPdpsElectionHandler.run(919) - TimerUpdateClass.run.exit Change-Id: Ie3167e5f784f35f98fa08997e624c51f976b6501 Issue-ID: POLICY-109 Signed-off-by: Jorge Hernandez --- .../testtransaction/TestTransactionTest.java | 24 +++++++--------------- 1 file changed, 7 insertions(+), 17 deletions(-) (limited to 'feature-test-transaction/src/test/java/org') 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 index 6c60c5ac..5dd630e1 100644 --- 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 @@ -74,37 +74,25 @@ public class TestTransactionTest { } @Test - public void registerUnregisterTest() { + public void registerUnregisterTest() throws InterruptedException { final Properties controllerProperties = new Properties(); controllerProperties.put(PolicyProperties.PROPERTY_CONTROLLER_NAME, TEST_CONTROLLER_NAME); final PolicyController controller = PolicyEngine.manager.createPolicyController(TEST_CONTROLLER_NAME, controllerProperties); + assertNotNull(PolicyController.factory.get(TEST_CONTROLLER_NAME)); + logger.info(controller.toString()); + Thread ttThread = null; TestTransaction.manager.register(controller); assertNotNull(TestTransaction.manager); - /* - * If the controller was successfully registered it will have a thread created. - */ - ttThread = this.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 (final InterruptedException e) { - - } ttThread = this.getThread("tt-controller-task-" + TEST_CONTROLLER_NAME); assertEquals(null, ttThread); @@ -114,7 +102,9 @@ public class TestTransactionTest { /* * Returns thread object based on String name */ - public Thread getThread(String threadName) { + public Thread getThread(String threadName) throws InterruptedException { + // give a chance to the transaction thread to be spawned/destroyed + Thread.sleep(5000L); final Set threadSet = Thread.getAllStackTraces().keySet(); for (final Thread thread : threadSet) { -- cgit 1.2.3-korg