From ad83319991bdd6a25416eff9f0adde148e2eee35 Mon Sep 17 00:00:00 2001 From: Pamela Dragosh Date: Thu, 13 Sep 2018 20:37:15 -0400 Subject: Fix checkstyle for features submodules. These are the remaining submodules that have checkstyle. Pretty clean compile after this. There were a couple of sonar fixes in there also. Issue-ID: POLICY-882 Change-Id: I8191ea1aa261f4a7b9d3d21c108572fd31db1b8c Signed-off-by: Pamela Dragosh --- .../drools/testtransaction/TestTransaction.java | 347 +++++++++++---------- .../testtransaction/TestTransactionFeature.java | 53 ++-- .../testtransaction/TestTransactionTest.java | 172 +++++----- 3 files changed, 289 insertions(+), 283 deletions(-) (limited to 'feature-test-transaction/src') diff --git a/feature-test-transaction/src/main/java/org/onap/policy/drools/testtransaction/TestTransaction.java b/feature-test-transaction/src/main/java/org/onap/policy/drools/testtransaction/TestTransaction.java index 5e209faa..3adecddc 100644 --- a/feature-test-transaction/src/main/java/org/onap/policy/drools/testtransaction/TestTransaction.java +++ b/feature-test-transaction/src/main/java/org/onap/policy/drools/testtransaction/TestTransaction.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * feature-test-transaction * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2018 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. @@ -17,6 +17,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.drools.testtransaction; import java.util.EventObject; @@ -29,203 +30,219 @@ import org.onap.policy.drools.system.PolicyController; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** - * TestTransaction interface - * - */ +/** TestTransaction interface. */ public interface TestTransaction { - public static final String TT_FPC = "TT.FPC"; - public static final String TT_COUNTER = "$ttc"; - public static final String TT_UUID = "43868e59-d1f3-43c2-bd6f-86f89a61eea5"; - public static long DEFAULT_TT_TASK_SLEEP = 20000; - - public static final TestTransaction manager = new TTImpl(); - - /** - * register a controller for monitoring test transactions - * - * @param controller policy controller - */ - public void register(PolicyController controller); - - /** - * unregisters a controller for monitoring test transactions - * - * @param controller policy controller - */ - public void unregister(PolicyController controller); + public static final String TT_FPC = "TT.FPC"; + public static final String TT_COUNTER = "$ttc"; + public static final String TT_UUID = "43868e59-d1f3-43c2-bd6f-86f89a61eea5"; + public static long DEFAULT_TT_TASK_SLEEP = 20000; + + public static final TestTransaction manager = new TTImpl(); + + /** + * register a controller for monitoring test transactions. + * + * @param controller policy controller + */ + public void register(PolicyController controller); + + /** + * unregisters a controller for monitoring test transactions. + * + * @param controller policy controller + */ + public void unregister(PolicyController controller); } - /** * Implementation of TestTransaction interface. Controls the registering/unregistering of * PolicyController objects and the management of their related TTControllerTask threads. */ class TTImpl implements TestTransaction { - protected final Map controllers = new HashMap<>(); + protected final Map controllers = new HashMap<>(); - @Override - public synchronized void register(PolicyController controller) { - if (this.controllers.containsValue(controller)) { - final TTControllerTask controllerTask = this.controllers.get(controller.getName()); - if (controllerTask.isAlive()) - return; + @Override + public synchronized void register(PolicyController controller) { + if (this.controllers.containsValue(controller)) { + final TTControllerTask controllerTask = this.controllers.get(controller.getName()); + if (controllerTask.isAlive()) { + return; + } - // continue : unregister, register operation - } + // continue : unregister, register operation + } - final TTControllerTask controllerTask = new TTControllerTask(controller); - this.controllers.put(controller.getName(), controllerTask); - } + final TTControllerTask controllerTask = new TTControllerTask(controller); + this.controllers.put(controller.getName(), controllerTask); + } - @Override - public synchronized void unregister(PolicyController controller) { - if (!this.controllers.containsValue(controller)) - return; + @Override + public synchronized void unregister(PolicyController controller) { + if (!this.controllers.containsValue(controller)) { + return; + } - final TTControllerTask controllerTask = this.controllers.get(controller.getName()); - controllerTask.stop(); + final TTControllerTask controllerTask = this.controllers.get(controller.getName()); + controllerTask.stop(); - this.controllers.remove(controller.getName()); - } + this.controllers.remove(controller.getName()); + } } - /** * TTControllerTask implements the Runnabale interface Carries out the injection of an event into a * drools session and subsequent query of a counter to ensure that forward progress is occuring. - * */ class TTControllerTask implements Runnable { - // get an instance of logger - private static final Logger logger = LoggerFactory.getLogger(TTControllerTask.class); - - protected final PolicyController controller; + // get an instance of logger + private static final Logger logger = LoggerFactory.getLogger(TTControllerTask.class); - protected volatile boolean alive = true; - protected final Thread thread = new Thread(this); + protected final PolicyController controller; - public TTControllerTask(PolicyController controller) { - this.controller = controller; - this.thread.setName("tt-controller-task-" + controller.getName()); - this.thread.start(); - } + protected volatile boolean alive = true; + protected final Thread thread = new Thread(this); - public PolicyController getController() { - return this.controller; - } + public TTControllerTask(PolicyController controller) { + this.controller = controller; + this.thread.setName("tt-controller-task-" + controller.getName()); + this.thread.start(); + } - public synchronized boolean isAlive() { - return this.alive; - } + public PolicyController getController() { + return this.controller; + } - public synchronized void stop() { - this.alive = false; - this.thread.interrupt(); - try { - this.thread.join(1000); - } catch (final InterruptedException e) { - logger.error("TestTransaction thread threw", e); - this.thread.interrupt(); + public synchronized boolean isAlive() { + return this.alive; } - } - public Thread getThread() { - return this.thread; - } + public synchronized void stop() { + this.alive = false; + this.thread.interrupt(); + try { + this.thread.join(1000); + } catch (final InterruptedException e) { + logger.error("TestTransaction thread threw", e); + this.thread.interrupt(); + } + } - @Override - public void run() { - try { - final List sessions = this.controller.getDrools().getSessionNames(); + public Thread getThread() { + return this.thread; + } - if (!(this.controller.getDrools().isBrained())) { - this.alive = false; - logger.error(this + ": unknown drools controller"); - return; - } - - final DroolsController drools = this.controller.getDrools(); - - final HashMap fpcs = new HashMap<>(); - for (final String session : sessions) { - fpcs.put(session, -1L); - } - - while (this.controller.isAlive() && !this.controller.isLocked() && drools.isBrained() - && this.alive) { - - injectTxIntoSessions(sessions, fpcs, drools); - - if (!this.alive) - return; - - if (!Thread.currentThread().isInterrupted()) - Thread.sleep(TestTransaction.DEFAULT_TT_TASK_SLEEP); - } - } catch (final InterruptedException e) { - logger.info("{}: stopping ...", this, e); - Thread.currentThread().interrupt(); - } catch (final IllegalArgumentException e) { - logger.error("{}: controller {} has not been enabled for testing: ", this, - this.controller.getName(), e.getMessage(), e); - } catch (final Exception e) { - logger.error("Controller: {} is not testable - TestTransaction caught exception: {} ", - this.controller.getName(), e.getMessage()); - logger.error("TestTransaction thread threw", e); - } finally { - logger.info("Exiting: {}", this); - this.alive = false; + @Override + public void run() { + try { + final List sessions = this.controller.getDrools().getSessionNames(); + + if (!(this.controller.getDrools().isBrained())) { + this.alive = false; + logger.error(this + ": unknown drools controller"); + return; + } + + final DroolsController drools = this.controller.getDrools(); + + final HashMap fpcs = new HashMap<>(); + for (final String session : sessions) { + fpcs.put(session, -1L); + } + + while (this.controller.isAlive() + && !this.controller.isLocked() + && drools.isBrained() + && this.alive) { + + injectTxIntoSessions(sessions, fpcs, drools); + + if (!this.alive) { + return; + } + + if (!Thread.currentThread().isInterrupted()) { + Thread.sleep(TestTransaction.DEFAULT_TT_TASK_SLEEP); + } + } + } catch (final InterruptedException e) { + logger.info("{}: stopping ...", this, e); + Thread.currentThread().interrupt(); + } catch (final IllegalArgumentException e) { + logger.error( + "{}: controller {} has not been enabled for testing: ", + this, + this.controller.getName(), + e.getMessage(), + e); + } catch (final Exception e) { + logger.error( + "Controller: {} is not testable - TestTransaction caught exception: {} ", + this.controller.getName(), + e.getMessage()); + logger.error("TestTransaction thread threw", e); + } finally { + logger.info("Exiting: {}", this); + this.alive = false; + } } - } - - private void injectTxIntoSessions(List sessions, HashMap fpcs, DroolsController drools) { - - for (final String session : sessions) { - final List facts = this.controller.getDrools().factQuery(session, - TestTransaction.TT_FPC, TestTransaction.TT_COUNTER, false); - if (facts == null || facts.size() != 1) { - /* - * unexpected something wrong here, can't expect to recover note this exception is - * caught right below at the exit of run() - */ - logger.error( - "Controller: {}, with rules artifact: (group) {}, (artifact) {}, (version) {} - FPC query failed after EventObject insertion! ", - this.controller.getName(), this.controller.getDrools().getGroupId(), - this.controller.getDrools().getArtifactId(), - this.controller.getDrools().getVersion()); - break; + + private void injectTxIntoSessions( + List sessions, HashMap fpcs, DroolsController drools) { + + for (final String session : sessions) { + final List facts = + this.controller + .getDrools() + .factQuery(session, TestTransaction.TT_FPC, TestTransaction.TT_COUNTER, false); + if (facts == null || facts.size() != 1) { + /* + * unexpected something wrong here, can't expect to recover note this exception is + * caught right below at the exit of run() + */ + logger.error( + "Controller: {}, with rules artifact: (group) {}, (artifact) {}, (version) {} " + + "- FPC query failed after EventObject insertion! ", + this.controller.getName(), + this.controller.getDrools().getGroupId(), + this.controller.getDrools().getArtifactId(), + this.controller.getDrools().getVersion()); + break; + } + logger.debug("Facts: {}", facts); + + final long fpc = (Long) facts.get(0); + if (fpc != fpcs.get(session)) { + logger.info( + "Controller: {} , session {} - Forward progress successful: {} -> {}", + this.controller.getName(), + session, + fpcs.get(session), + fpc); + } else { + logger.error( + "Controller: {}, session {} - Forward progress failure: {}", + this.controller.getName(), + session, + fpc); + } + fpcs.put(session, fpc); + drools.getContainer().insert(session, new EventObject(TestTransaction.TT_UUID)); } - logger.debug("Facts: {}", facts); - - final long fpc = (Long) facts.get(0); - if (fpc != fpcs.get(session)) - logger.info("Controller: {} , session {} - Forward progress successful: {} -> {}", - this.controller.getName(), session, fpcs.get(session), fpc); - else - logger.error("Controller: {}, session {} - Forward progress failure: {}", - this.controller.getName(), session, fpc); - - fpcs.put(session, fpc); - drools.getContainer().insert(session, new EventObject(TestTransaction.TT_UUID)); - } - - } - - - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("TTControllerTask [controller="); - builder.append(this.controller); - builder.append(", alive="); - builder.append(this.alive); - builder.append(", thread="); - builder.append(this.thread.getName()); - builder.append("]"); - return builder.toString(); - } + } + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append("TTControllerTask [controller="); + builder.append(this.controller); + builder.append(", alive="); + builder.append(this.alive); + builder.append(", thread="); + builder.append(this.thread.getName()); + builder.append("]"); + return builder.toString(); + } } diff --git a/feature-test-transaction/src/main/java/org/onap/policy/drools/testtransaction/TestTransactionFeature.java b/feature-test-transaction/src/main/java/org/onap/policy/drools/testtransaction/TestTransactionFeature.java index e78668ab..956304b9 100644 --- a/feature-test-transaction/src/main/java/org/onap/policy/drools/testtransaction/TestTransactionFeature.java +++ b/feature-test-transaction/src/main/java/org/onap/policy/drools/testtransaction/TestTransactionFeature.java @@ -2,14 +2,14 @@ * ============LICENSE_START======================================================= * feature-test-transaction * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2018 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. @@ -24,55 +24,52 @@ import org.onap.policy.drools.features.PolicyControllerFeatureAPI; import org.onap.policy.drools.system.PolicyController; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + /** - * TestTransactionFeature implements the PolicyControllerFeatureAPI. - * TestTransactionFeature is the interface to the TestTransaction feature logic. - * + * TestTransactionFeature implements the PolicyControllerFeatureAPI. TestTransactionFeature is the + * interface to the TestTransaction feature logic. */ public class TestTransactionFeature implements PolicyControllerFeatureAPI { - // get an instance of logger - private static final Logger logger = LoggerFactory.getLogger(TestTransactionFeature.class); - + // get an instance of logger + private static final Logger logger = LoggerFactory.getLogger(TestTransactionFeature.class); + @Override - public boolean afterStart(PolicyController controller){ - + public boolean afterStart(PolicyController controller) { + logger.info("TEST_TRANSACTION FEATURE LOADED"); - - if (controller.isAlive() && - !controller.isLocked() && - controller.getDrools().isBrained()) - TestTransaction.manager.register(controller); - + + if (controller.isAlive() && !controller.isLocked() && controller.getDrools().isBrained()) { + TestTransaction.manager.register(controller); + } return false; } - + @Override public boolean afterLock(PolicyController controller) { logger.info("controller {} locked", controller.getName()); - + TestTransaction.manager.unregister(controller); return false; } - + @Override public boolean afterUnlock(PolicyController controller) { logger.info("controller {} unlocked", controller.getName()); - - if (controller.isAlive() && - !controller.isLocked() && - controller.getDrools().isBrained()) - TestTransaction.manager.register(controller); - + + if (controller.isAlive() && !controller.isLocked() && controller.getDrools().isBrained()) { + TestTransaction.manager.register(controller); + } + return false; } @Override public boolean beforeStop(PolicyController controller) { logger.info("controller {} stopping", controller.getName()); - + TestTransaction.manager.unregister(controller); - + return false; } 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 fd373a1d..09be93f9 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 @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * feature-test-transaction * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2018 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. @@ -40,101 +40,93 @@ 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 */ - SystemPersistence.manager.setConfigurationDir(null); - } - - @Test - public void registerUnregisterTest() throws InterruptedException { - final Properties controllerProperties = new Properties(); - controllerProperties.put(DroolsProperties.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); - - /* - * Unregistering the controller should terminate its TestTransaction thread if it hasn't already - * been terminated + /** 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); + + /** + * Start up. + * + * @throws IOException exception */ - TestTransaction.manager.unregister(controller); - - ttThread = this.getThread("tt-controller-task-" + TEST_CONTROLLER_NAME); - assertEquals(null, ttThread); - - - } + @BeforeClass + public static void startUp() throws IOException { + logger.info("enter"); - /* - * Returns thread object based on String name - */ - 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) { - if (thread.getName().equals(threadName)) { - return thread; - } + cleanUpWorkingDir(); + /* ensure presence of config directory */ + SystemPersistence.manager.setConfigurationDir(null); } - return null; - } - - /** - * clean up working directory - */ - protected static void cleanUpWorkingDir() { - final Path testControllerPath = Paths - .get(SystemPersistence.manager.getConfigurationPath().toString(), TEST_CONTROLLER_FILE); - try { - Files.deleteIfExists(testControllerPath); - } catch (final Exception e) { - logger.info("Problem cleaning {}", testControllerPath, e); + + @Test + public void registerUnregisterTest() throws InterruptedException { + final Properties controllerProperties = new Properties(); + controllerProperties.put(DroolsProperties.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()); + + TestTransaction.manager.register(controller); + assertNotNull(TestTransaction.manager); + + /* + * Unregistering the controller should terminate its TestTransaction thread if it hasn't already + * been terminated + */ + TestTransaction.manager.unregister(controller); + + Thread ttThread = this.getThread("tt-controller-task-" + TEST_CONTROLLER_NAME); + assertEquals(null, ttThread); } - final Path testControllerBakPath = Paths - .get(SystemPersistence.manager.getConfigurationPath().toString(), TEST_CONTROLLER_FILE_BAK); - try { - Files.deleteIfExists(testControllerBakPath); - } catch (final Exception e) { - logger.info("Problem cleaning {}", testControllerBakPath, e); + /** + * Returns thread object based on String name. + * + * @param threadName thread name + * @return the thread + * @throws InterruptedException exception + */ + 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) { + if (thread.getName().equals(threadName)) { + return thread; + } + } + return null; } - } + /** clean up working directory. */ + protected static void cleanUpWorkingDir() { + final Path testControllerPath = + Paths.get( + SystemPersistence.manager.getConfigurationPath().toString(), TEST_CONTROLLER_FILE); + try { + Files.deleteIfExists(testControllerPath); + } catch (final Exception e) { + logger.info("Problem cleaning {}", testControllerPath, e); + } + + final Path testControllerBakPath = + Paths.get( + SystemPersistence.manager.getConfigurationPath().toString(), TEST_CONTROLLER_FILE_BAK); + try { + Files.deleteIfExists(testControllerBakPath); + } catch (final Exception e) { + logger.info("Problem cleaning {}", testControllerBakPath, e); + } + } } -- cgit 1.2.3-korg