aboutsummaryrefslogtreecommitdiffstats
path: root/integrity-monitor/src/test/java/org/onap/policy/common/im/IntegrityMonitorTest.java
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2018-06-21 15:43:32 -0400
committerJim Hahn <jrh3@att.com>2018-06-21 16:13:19 -0400
commit37b7d29aa5b61127a794d356eaa3db87c9348a69 (patch)
tree115022fbb5c02e99aeaf2a96e0eb8060ab2531d9 /integrity-monitor/src/test/java/org/onap/policy/common/im/IntegrityMonitorTest.java
parent88116de291b4200b0d4dfbdfce492d009293dad8 (diff)
IntegrityMonitor: remove sleep from junit tests
Modified the code to use a CurrentTime object for its "time" operations (e.g., sleep(), currentTimeInMillis()). Modified junit tests to replace the CurrentTime object with TestTime objects so they don't actually do any sleeping. Update license date. Remove unneeded dependency from pom. Don't start FpManager thread within its own constructor. toMillis() should handle -1 as an input. Fix comment in test base superclass. Change time units in test base from DAYS to MILLISECONDS. Change-Id: Id6a4edb1747ca1a683e5d37522872b781294532d Issue-ID: POLICY-908 Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'integrity-monitor/src/test/java/org/onap/policy/common/im/IntegrityMonitorTest.java')
-rw-r--r--integrity-monitor/src/test/java/org/onap/policy/common/im/IntegrityMonitorTest.java72
1 files changed, 41 insertions, 31 deletions
diff --git a/integrity-monitor/src/test/java/org/onap/policy/common/im/IntegrityMonitorTest.java b/integrity-monitor/src/test/java/org/onap/policy/common/im/IntegrityMonitorTest.java
index 091dcc91..f7ffa217 100644
--- a/integrity-monitor/src/test/java/org/onap/policy/common/im/IntegrityMonitorTest.java
+++ b/integrity-monitor/src/test/java/org/onap/policy/common/im/IntegrityMonitorTest.java
@@ -21,11 +21,13 @@
package org.onap.policy.common.im;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import javax.persistence.TemporalType;
@@ -38,6 +40,7 @@ import org.onap.policy.common.im.IntegrityMonitor.Factory;
import org.onap.policy.common.im.jpa.ForwardProgressEntity;
import org.onap.policy.common.im.jpa.ResourceRegistrationEntity;
import org.onap.policy.common.im.jpa.StateManagementEntity;
+import org.powermock.reflect.Whitebox;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,6 +51,11 @@ import org.slf4j.LoggerFactory;
*/
public class IntegrityMonitorTest extends IntegrityMonitorTestBase {
private static Logger logger = LoggerFactory.getLogger(IntegrityMonitorTest.class);
+
+ /**
+ * Number of monitor cycles it takes between dependency health checks.
+ */
+ private static final int DEPENDENCY_CHECK_CYCLES = 6;
private static Properties myProp;
private static EntityTransaction et;
@@ -101,6 +109,11 @@ public class IntegrityMonitorTest extends IntegrityMonitorTestBase {
super.tearDownTest();
}
+
+ @Test
+ public void testFactory() {
+ assertNotNull(getSavedFactory());
+ }
/*
* The following test verifies the following test cases: New Install New Install - Bad
@@ -164,8 +177,11 @@ public class IntegrityMonitorTest extends IntegrityMonitorTestBase {
// commit transaction
et.commit();
- // wait for the FPManager to check dependency health
- waitStep();
+ /*
+ * wait for FPManager to perform dependency health check. Once that's done, it
+ * should now be stale and the sanity check should fail
+ */
+ waitCycles(DEPENDENCY_CHECK_CYCLES);
assertException(im, imx -> {
imx.evaluateSanity();
@@ -271,7 +287,7 @@ public class IntegrityMonitorTest extends IntegrityMonitorTestBase {
im.getStateManager().getAdminState(), im.getStateManager().getOpState(),
im.getStateManager().getAvailStatus(), im.getStateManager().getStandbyStatus());
- waitStep();
+ waitCycles(1);
// test evaluate sanity
assertNoException(im, imx -> {
@@ -465,7 +481,7 @@ public class IntegrityMonitorTest extends IntegrityMonitorTestBase {
final IntegrityMonitor im = makeMonitor(resourceName, myProp);
- waitStep();
+ waitCycles(1);
// Add a group1 dependent resources to put an entry in the forward
// progress table
@@ -524,7 +540,7 @@ public class IntegrityMonitorTest extends IntegrityMonitorTestBase {
final IntegrityMonitor im = makeMonitor(resourceName, myProp);
- waitStep();
+ waitCycles(1);
// the state here is unlocked, enabled, null, null
StateManagementEntity sme = null;
@@ -651,10 +667,11 @@ public class IntegrityMonitorTest extends IntegrityMonitorTestBase {
imx.evaluateSanity();
});
- // wait for FPManager to perform dependency health check. Once that's
- // done,
- // it should now be stale and the sanity check should fail
- waitStep();
+ /*
+ * wait for FPManager to perform dependency health check. Once that's done, it
+ * should now be stale and the sanity check should fail
+ */
+ waitCycles(DEPENDENCY_CHECK_CYCLES);
assertException(im, imx -> {
imx.evaluateSanity();
@@ -683,7 +700,7 @@ public class IntegrityMonitorTest extends IntegrityMonitorTestBase {
myProp.put(IntegrityMonitorProperties.WRITE_FPC_INTERVAL, "-1");
final IntegrityMonitor im = makeMonitor(resourceName, myProp);
- waitStep();
+ waitCycles(1);
logger.debug("\nIntegrityMonitorTest: Creating ForwardProgressEntity entries\n\n");
// Add resource entries in the forward progress table
@@ -739,7 +756,7 @@ public class IntegrityMonitorTest extends IntegrityMonitorTestBase {
myProp.put(IntegrityMonitorProperties.MAX_FPC_UPDATE_INTERVAL, "120");
final IntegrityMonitor im = makeMonitor(resourceName, myProp);
- waitStep();
+ waitCycles(1);
logger.debug("\nIntegrityMonitorTest: Creating ForwardProgressEntity entries\n\n");
// Add resources to put an entry in the forward progress table
@@ -860,9 +877,9 @@ public class IntegrityMonitorTest extends IntegrityMonitorTestBase {
// Give it a chance to write the DB and run the audit
logger.debug("IntegrityMonitorTest:testStateAudit: (restart4) Running State Audit");
- waitStep();
+ waitCycles(1);
im.executeStateAudit();
- waitStep();
+ waitCycles(1);
logger.debug("IntegrityMonitorTest:testStateAudit: (restart4) State Audit complete");
// Now check its state
@@ -900,16 +917,7 @@ public class IntegrityMonitorTest extends IntegrityMonitorTestBase {
monitorSem = new Semaphore(0);
junitSem = new Semaphore(0);
- Factory factory = new IntegrityMonitor.Factory() {
-
- @Override
- public void doSleep(long sleepMs) throws InterruptedException {
- /*
- * No need to sleep, as the thread won't progress until the
- * semaphore is released.
- */
- }
-
+ Factory factory = new TestFactory() {
@Override
public void runStarted() throws InterruptedException {
monitorSem.acquire();
@@ -922,25 +930,27 @@ public class IntegrityMonitorTest extends IntegrityMonitorTestBase {
public void monitorCompleted() throws InterruptedException {
junitSem.release();
monitorSem.acquire();
- }
-
+ }
};
+
+ Whitebox.setInternalState(IntegrityMonitor.class, FACTORY_FIELD, factory);
- IntegrityMonitor im = IntegrityMonitor.getInstance(resourceName, myProp, factory);
+ IntegrityMonitor im = IntegrityMonitor.getInstance(resourceName, myProp);
// wait for the monitor thread to start
- waitStep();
+ waitCycles(1);
return im;
}
/**
- * Waits for the FPManager to complete another cycle.
+ * Waits for several monitor cycles to complete.
+ * @param ncycles number of cycles to wait
*
* @throws InterruptedException if the thread is interrupted
*/
- private void waitStep() throws InterruptedException {
- monitorSem.release();
- waitSem(junitSem);
+ private void waitCycles(int ncycles) throws InterruptedException {
+ monitorSem.release(ncycles);
+ junitSem.tryAcquire(ncycles, WAIT_MS, TimeUnit.MILLISECONDS);
}
}