From 2b2d21fd2761ceab9faa50f224b1d136f3b36d34 Mon Sep 17 00:00:00 2001 From: Kevin McKiou Date: Fri, 22 Sep 2017 17:08:15 -0500 Subject: Incr State Mgmt Code Coverage Patch 1: Added JUnit tests to feature-state-management to increase coverage. Estimated coverage is now 48%. Patch 2: Trivial change to force a rebuild. Patch 3: Tweaking the JUnit to try and account for the difference between the LF environment and my local environment. Patch 4: Something caused the policy endpoints JUnits to fail - unrelated to these changes. Made a trival change to force a rebuild. Patch 5: Trivial change to force rebuild. Patch 6: Minor changes in response to Jorge Hernandez comments. Issue-ID; POLICY-266 Change-Id: I7979c200ab18d5861ba20e0d5f23bd0083193daa Signed-off-by: Kevin McKiou --- .../policy/drools/statemanagement/DbAudit.java | 7 ++- .../drools/statemanagement/RepositoryAudit.java | 2 +- .../policy/drools/statemanagement/test/Audit.java | 43 +++++++++++++ .../statemanagement/test/StateManagementTest.java | 71 +++++++++++++++------- .../src/test/resources/META-INF/persistence.xml | 1 + .../resources/feature-state-management.properties | 14 +++-- 6 files changed, 111 insertions(+), 27 deletions(-) create mode 100644 feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/Audit.java diff --git a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DbAudit.java b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DbAudit.java index a86ac8ef..8de170c7 100644 --- a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DbAudit.java +++ b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DbAudit.java @@ -43,11 +43,13 @@ public class DbAudit extends DroolsPDPIntegrityMonitor.AuditBase // This indicates if 'CREATE TABLE IF NOT EXISTS Audit ...' should be // invoked -- doing this avoids the need to create the table in advance. static private boolean createTableNeeded = true; + + static public boolean isJunit = false; /** * @return the single 'DbAudit' instance */ - static DroolsPDPIntegrityMonitor.AuditBase getInstance() + public static DroolsPDPIntegrityMonitor.AuditBase getInstance() { return(instance); } @@ -71,6 +73,9 @@ public class DbAudit extends DroolsPDPIntegrityMonitor.AuditBase if(logger.isDebugEnabled()){ logger.debug("Running 'DbAudit.invoke'"); } + if(isJunit){ + createTableNeeded = false; + } boolean isActive = true; String dbAuditIsActive = StateManagementProperties.getProperty("db.audit.is.active"); if(logger.isDebugEnabled()){ diff --git a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/RepositoryAudit.java b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/RepositoryAudit.java index 6171572a..94464cd4 100644 --- a/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/RepositoryAudit.java +++ b/feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/RepositoryAudit.java @@ -51,7 +51,7 @@ public class RepositoryAudit extends DroolsPDPIntegrityMonitor.AuditBase /** * @return the single 'RepositoryAudit' instance */ - static DroolsPDPIntegrityMonitor.AuditBase getInstance() + public static DroolsPDPIntegrityMonitor.AuditBase getInstance() { return(instance); } diff --git a/feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/Audit.java b/feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/Audit.java new file mode 100644 index 00000000..b33171bb --- /dev/null +++ b/feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/Audit.java @@ -0,0 +1,43 @@ +/*- + * ============LICENSE_START======================================================= + * Integrity Monitor + * ================================================================================ + * 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.statemanagement.test; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name="Audit") + +public class Audit implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + @Column(name="name", length=64, unique=true) + private String name; + + public Audit() { + //default constructor + } +} diff --git a/feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/StateManagementTest.java b/feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/StateManagementTest.java index e458dcea..8adb9462 100644 --- a/feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/StateManagementTest.java +++ b/feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/StateManagementTest.java @@ -24,23 +24,27 @@ import static org.junit.Assert.assertTrue; import java.io.File; import java.io.FileInputStream; +import java.io.IOException; import java.util.Properties; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; +import javax.ws.rs.core.Response; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; -import org.junit.Ignore; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.onap.policy.common.im.StateManagement; import org.onap.policy.drools.core.PolicySessionFeatureAPI; +import org.onap.policy.drools.statemanagement.DbAudit; +import org.onap.policy.drools.statemanagement.IntegrityMonitorRestManager; +import org.onap.policy.drools.statemanagement.RepositoryAudit; import org.onap.policy.drools.statemanagement.StateManagementFeatureAPI; import org.onap.policy.drools.statemanagement.StateManagementProperties; @@ -50,10 +54,10 @@ public class StateManagementTest { private static Logger logger = LoggerFactory.getLogger(StateManagementTest.class); /* - * Sleep 5 seconds after each test to allow interrupt (shutdown) recovery. + * Sleep after each test to allow interrupt (shutdown) recovery. */ - private long interruptRecoveryTime = 1000; + private long interruptRecoveryTime = 1500L; StateManagementFeatureAPI stateManagementFeature; @@ -91,7 +95,6 @@ public class StateManagementTest { public void tearDown() throws Exception { } - /* * Verifies that StateManagementFeature starts and runs successfully. @@ -107,6 +110,8 @@ public class StateManagementTest { String configDir = "src/test/resources"; + DbAudit.isJunit = true; + Properties fsmProperties = new Properties(); fsmProperties.load(new FileInputStream(new File( configDir + "/feature-state-management.properties"))); @@ -137,13 +142,9 @@ public class StateManagementTest { String standby = stateManagementFeature.getStandbyStatus(); logger.debug("admin = {}", admin); - System.out.println("admin = " + admin); logger.debug("oper = {}", oper); - System.out.println("oper = " + oper); logger.debug("avail = {}", avail); - System.out.println("avail = " + avail); logger.debug("standby = {}", standby); - System.out.println("standby = " + standby); assertTrue("Admin state not unlocked after initialization", admin.equals(StateManagement.UNLOCKED)); assertTrue("Operational state not enabled after initialization", oper.equals(StateManagement.ENABLED)); @@ -152,7 +153,6 @@ public class StateManagementTest { stateManagementFeature.disableFailed(); }catch(Exception e){ logger.error(e.getMessage()); - System.out.println(e.getMessage()); assertTrue(e.getMessage(), false); } @@ -164,15 +164,10 @@ public class StateManagementTest { standby = stateManagementFeature.getStandbyStatus(); logger.debug("after disableFailed()"); - System.out.println("after disableFailed()"); logger.debug("admin = {}", admin); - System.out.println("admin = " + admin); logger.debug("oper = {}", oper); - System.out.println("oper = " + oper); logger.debug("avail = {}", avail); - System.out.println("avail = " + avail); logger.debug("standby = {}", standby); - System.out.println("standby = " + standby); assertTrue("Operational state not disabled after disableFailed()", oper.equals(StateManagement.DISABLED)); assertTrue("Availability status not failed after disableFailed()", avail.equals(StateManagement.FAILED)); @@ -182,7 +177,6 @@ public class StateManagementTest { stateManagementFeature.promote(); }catch(Exception e){ logger.debug(e.getMessage()); - System.out.println(e.getMessage()); } Thread.sleep(interruptRecoveryTime); @@ -193,18 +187,53 @@ public class StateManagementTest { standby = stateManagementFeature.getStandbyStatus(); logger.debug("after promote()"); - System.out.println("after promote()"); logger.debug("admin = {}", admin); - System.out.println("admin = " + admin); logger.debug("oper = {}", oper); - System.out.println("oper = " + oper); logger.debug("avail = {}", avail); - System.out.println("avail = " + avail); logger.debug("standby = {}", standby); - System.out.println("standby = " + standby); assertTrue("Standby status not coldstandby after promote()", standby.equals(StateManagement.COLD_STANDBY)); - + + /**************Repository Audit Test**************/ + logger.debug("\n\ntestStateManagementOperation: Repository Audit\n\n"); + try{ + RepositoryAudit repositoryAudit = (RepositoryAudit) RepositoryAudit.getInstance(); + repositoryAudit.invoke(fsmProperties); + + //Should not throw an IOException in Linux Foundation env + assertTrue(true); + }catch(IOException e){ + //Note: this catch is here because in a local environment mvn will not run in + //in the temp directory + logger.debug("testSubsytemTest RepositoryAudit IOException", e); + }catch(InterruptedException e){ + assertTrue(false); + logger.debug("testSubsytemTest RepositoryAudit InterruptedException", e); + } + + /*****************Db Audit Test***************/ + logger.debug("\n\ntestStateManagementOperation: DB Audit\n\n"); + + try{ + DbAudit dbAudit = (DbAudit) DbAudit.getInstance(); + dbAudit.invoke(fsmProperties); + + assertTrue(true); + }catch(Exception e){ + assertTrue(false); + logger.debug("testSubsytemTest DbAudit exception", e); + } + + /*************IntegrityMonitorRestManager Test*************/ + logger.debug("\n\ntestStateManagementOperation: IntegrityMonitorRestManager\n\n"); + IntegrityMonitorRestManager integrityMonitorRestManager = new IntegrityMonitorRestManager(); + + Response response = integrityMonitorRestManager.test(); + logger.debug("\n\nIntegrityMonitorRestManager response: " + response.toString()); + + assertTrue(response.toString().contains("status=500")); + + //All done logger.debug("\n\ntestStateManagementOperation: Exiting\n\n"); } diff --git a/feature-state-management/src/test/resources/META-INF/persistence.xml b/feature-state-management/src/test/resources/META-INF/persistence.xml index d26ab443..0214b7f5 100644 --- a/feature-state-management/src/test/resources/META-INF/persistence.xml +++ b/feature-state-management/src/test/resources/META-INF/persistence.xml @@ -28,6 +28,7 @@ org.onap.policy.common.im.jpa.StateManagementEntity org.onap.policy.common.im.jpa.ForwardProgressEntity org.onap.policy.common.im.jpa.ResourceRegistrationEntity + org.onap.policy.drools.statemanagement.test.Audit diff --git a/feature-state-management/src/test/resources/feature-state-management.properties b/feature-state-management/src/test/resources/feature-state-management.properties index 7b4a697e..64c7c660 100644 --- a/feature-state-management/src/test/resources/feature-state-management.properties +++ b/feature-state-management/src/test/resources/feature-state-management.properties @@ -56,19 +56,25 @@ max_fpc_update_interval=120 # forwardprogressentity table and marks the node as disabled/failed in the statemanagemententity # table. NOTE! It will only run on nodes that have a standbystatus = providingservice. # A value of <= 0 will turn off the state audit. -state_audit_interval_ms=60000 +state_audit_interval_ms=-1000 # The refresh state audit is run every (default) 10 minutes (600000 ms) to clean up any state corruption in the # DB statemanagemententity table. It only refreshes the DB state entry for the local node. That is, it does not # refresh the state of any other nodes. A value <= 0 will turn the audit off. Any other value will override # the default of 600000 ms. -refresh_state_audit_interval_ms=600000 +refresh_state_audit_interval_ms=-1000 # Repository audit properties # Flag to control the execution of the subsystemTest for the Nexus Maven repository -repository.audit.is.active=false +repository.audit.is.active=true repository.audit.ignore.errors=true +# Timeout in seconds +repository.audit.timeout=5 +repository.audit.id=statemanagement +repository.audit.url=jdbc:h2:file:./sql/statemanagement +repository.audit.username=sa +repository.audit.password= # DB Audit Properties # Flag to control the execution of the subsystemTest for the Database -db.audit.is.active=false +db.audit.is.active=true -- cgit 1.2.3-korg