Incr State Mgmt Code Coverage 39/14739/6
authorKevin McKiou <km097d@att.com>
Fri, 22 Sep 2017 22:08:15 +0000 (17:08 -0500)
committerKevin McKiou <km097d@att.com>
Mon, 25 Sep 2017 17:23:16 +0000 (12:23 -0500)
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 <km097d@att.com>
feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/DbAudit.java
feature-state-management/src/main/java/org/onap/policy/drools/statemanagement/RepositoryAudit.java
feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/Audit.java [new file with mode: 0644]
feature-state-management/src/test/java/org/onap/policy/drools/statemanagement/test/StateManagementTest.java
feature-state-management/src/test/resources/META-INF/persistence.xml
feature-state-management/src/test/resources/feature-state-management.properties

index a86ac8e..8de170c 100644 (file)
@@ -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()){
index 6171572..94464cd 100644 (file)
@@ -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 (file)
index 0000000..b33171b
--- /dev/null
@@ -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
+       }
+}
index e458dce..8adb946 100644 (file)
@@ -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");
        }       
        
index d26ab44..0214b7f 100644 (file)
@@ -28,6 +28,7 @@
                <class>org.onap.policy.common.im.jpa.StateManagementEntity</class>
                <class>org.onap.policy.common.im.jpa.ForwardProgressEntity</class>
                <class>org.onap.policy.common.im.jpa.ResourceRegistrationEntity</class>
+               <class>org.onap.policy.drools.statemanagement.test.Audit</class>
                <properties>
                        <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
                        <property name="javax.persistence.schema-generation.scripts.action" value="drop-and-create"/> 
index 7b4a697..64c7c66 100644 (file)
@@ -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