diff options
Diffstat (limited to 'integrity-monitor')
-rw-r--r-- | integrity-monitor/src/test/java/org/onap/policy/common/im/StateManagementTest.java | 266 |
1 files changed, 134 insertions, 132 deletions
diff --git a/integrity-monitor/src/test/java/org/onap/policy/common/im/StateManagementTest.java b/integrity-monitor/src/test/java/org/onap/policy/common/im/StateManagementTest.java index 12671ec3..fb1df8c7 100644 --- a/integrity-monitor/src/test/java/org/onap/policy/common/im/StateManagementTest.java +++ b/integrity-monitor/src/test/java/org/onap/policy/common/im/StateManagementTest.java @@ -3,6 +3,7 @@ * Integrity Monitor * ================================================================================ * Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2020 Bell Canada. 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. @@ -83,141 +84,12 @@ public class StateManagementTest extends IntegrityMonitorTestBase { @Test public void test() throws Exception { logger.info("\n\nlogger.infor StateManagementTest: Entering\n\n"); - String resourceName = TEST_RESOURCE_NAME; // These parameters are in a properties file try { - final StateManagement sm = new StateManagement(emf, resourceName); - - logger.info("\n??? initial state"); - assertEquals(UNLOCKED_ENABLED_NULL_NULL, makeString(sm)); - - logger.info("\n??? test lock()"); - sm.lock(); - assertEquals("locked,enabled,null,null", makeString(sm)); - - logger.info("\n??? test unlock()"); - sm.unlock(); - assertEquals(UNLOCKED_ENABLED_NULL_NULL, makeString(sm)); - - logger.info("\n??? test enableNotFailed()"); - sm.enableNotFailed(); - assertEquals(UNLOCKED_ENABLED_NULL_NULL, makeString(sm)); - - logger.info("\n??? test disableFailed()"); - sm.disableFailed(); - assertEquals("unlocked,disabled,failed,null", makeString(sm)); - - // P4 If promote() is called while either the opState is disabled or - // the adminState is locked, - // the standbystatus shall transition to coldstandby and a - // StandbyStatusException shall be thrown - logger.info("\n??? promote() test case P4"); - sm.disableFailed(); - sm.lock(); - assertThatThrownBy(sm::promote).isInstanceOf(IntegrityMonitorException.class); - - assertEquals(LOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(sm)); - - // P3 If promote() is called while standbyStatus is coldstandby, the - // state shall not transition - // and a StandbyStatusException shall be thrown - logger.info("\n??? promote() test case P3"); - assertThatThrownBy(sm::promote).isInstanceOf(IntegrityMonitorException.class); - assertEquals(LOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(sm)); - - // P2 If promote() is called while the standbyStatus is null and the - // opState is enabled and adminState is unlocked, - // the state shall transition to providingservice - logger.info("\n??? promote() test case P2"); - resourceName = "test_resource2"; - final StateManagement sm2 = new StateManagement(emf, resourceName); - sm2.enableNotFailed(); - sm2.unlock(); - assertEquals(UNLOCKED_ENABLED_NULL_NULL, makeString(sm2)); - sm2.promote(); - assertEquals(UNLOCKED_ENABLED_NULL_PROVIDINGSERVICE, makeString(sm2)); - - // P5 If promote() is called while standbyStatus is - // providingservice, no action is taken - logger.info("\n??? promote() test case P5"); - sm2.promote(); - assertEquals(UNLOCKED_ENABLED_NULL_PROVIDINGSERVICE, makeString(sm2)); - - // D1 If demote() is called while standbyStatus is providingservice, - // the state shall transition to hotstandby - logger.info("\n??? demote() test case D1"); - sm2.demote(); - assertEquals(UNLOCKED_ENABLED_NULL_HOTSTANDBY, makeString(sm2)); - - // D4 If demote() is called while standbyStatus is hotstandby, no - // action is taken - logger.info("\n??? demote() test case D4"); - sm2.demote(); - assertEquals(UNLOCKED_ENABLED_NULL_HOTSTANDBY, makeString(sm2)); - - // D3 If demote() is called while standbyStatus is null and - // adminState is locked or opState is disabled, - // the state shall transition to coldstandby - logger.info("\n??? demote() test case D3"); - resourceName = "test_resource3"; - final StateManagement sm3 = new StateManagement(emf, resourceName); - sm3.lock(); - sm3.disableFailed(); - sm3.demote(); - assertEquals(LOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(sm3)); - - // D5 If demote() is called while standbyStatus is coldstandby, no - // action is taken - logger.info("\n??? demote() test case D5"); - sm3.demote(); - assertEquals(LOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(sm3)); - - // D2 If demote() is called while standbyStatus is null and - // adminState is unlocked and opState is enabled, - // the state shall transition to hotstandby - logger.info("\n??? demote() test case D2"); - resourceName = "test_resource4"; - final StateManagement sm4 = new StateManagement(emf, resourceName); - sm4.unlock(); - sm4.enableNotFailed(); - assertEquals(UNLOCKED_ENABLED_NULL_NULL, makeString(sm4)); - sm4.demote(); - assertEquals(UNLOCKED_ENABLED_NULL_HOTSTANDBY, makeString(sm4)); - - // P1 If promote() is called while standbyStatus is hotstandby, the - // state shall transition to providingservice. - logger.info("\n??? promote() test case P1"); - sm4.promote(); - assertEquals(UNLOCKED_ENABLED_NULL_PROVIDINGSERVICE, makeString(sm4)); - - // State change notification - logger.info("\n??? State change notification test case 1 - lock()"); - final StateChangeNotifier stateChangeNotifier = new StateChangeNotifier(); - sm.addObserver(stateChangeNotifier); - sm.lock(); - assertEquals(LOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(stateChangeNotifier.getStateManagement())); - - logger.info("\n??? State change notification test case 2 - unlock()"); - sm.unlock(); - assertEquals(UNLOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(stateChangeNotifier.getStateManagement())); - - logger.info("\n??? State change notification test case 3 - enabled()"); - sm.enableNotFailed(); - assertEquals(UNLOCKED_ENABLED_NULL_HOTSTANDBY, makeString(stateChangeNotifier.getStateManagement())); - - logger.info("\n??? State change notification test case 4 - disableFailed()"); - sm.disableFailed(); - assertEquals(UNLOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(stateChangeNotifier.getStateManagement())); - - logger.info("\n??? State change notification test case 5 - demote()"); - sm.demote(); - assertEquals(UNLOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(stateChangeNotifier.getStateManagement())); - - logger.info("\n??? State change notification test case 6 - promote()"); - assertThatThrownBy(sm::promote).isInstanceOf(IntegrityMonitorException.class); - assertEquals(UNLOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(sm)); - + final StateManagement sm = new StateManagement(emf, TEST_RESOURCE_NAME); + test_1(sm); + test_2(sm); } catch (final Exception ex) { logger.error("Exception: {}", ex.toString()); throw ex; @@ -226,6 +98,136 @@ public class StateManagementTest extends IntegrityMonitorTestBase { logger.info("\n\nStateManagementTest: Exit\n\n"); } + private void test_1(final StateManagement sm) throws StateManagementException, IntegrityMonitorException { + logger.info("\n??? initial state"); + assertEquals(UNLOCKED_ENABLED_NULL_NULL, makeString(sm)); + + logger.info("\n??? test lock()"); + sm.lock(); + assertEquals("locked,enabled,null,null", makeString(sm)); + + logger.info("\n??? test unlock()"); + sm.unlock(); + assertEquals(UNLOCKED_ENABLED_NULL_NULL, makeString(sm)); + + logger.info("\n??? test enableNotFailed()"); + sm.enableNotFailed(); + assertEquals(UNLOCKED_ENABLED_NULL_NULL, makeString(sm)); + + logger.info("\n??? test disableFailed()"); + sm.disableFailed(); + assertEquals("unlocked,disabled,failed,null", makeString(sm)); + + // P4 If promote() is called while either the opState is disabled or + // the adminState is locked, + // the standbystatus shall transition to coldstandby and a + // StandbyStatusException shall be thrown + logger.info("\n??? promote() test case P4"); + sm.disableFailed(); + sm.lock(); + assertThatThrownBy(sm::promote).isInstanceOf(IntegrityMonitorException.class); + + assertEquals(LOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(sm)); + + // P3 If promote() is called while standbyStatus is coldstandby, the + // state shall not transition + // and a StandbyStatusException shall be thrown + logger.info("\n??? promote() test case P3"); + assertThatThrownBy(sm::promote).isInstanceOf(IntegrityMonitorException.class); + assertEquals(LOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(sm)); + + // P2 If promote() is called while the standbyStatus is null and the + // opState is enabled and adminState is unlocked, + // the state shall transition to providingservice + logger.info("\n??? promote() test case P2"); + final StateManagement sm2 = new StateManagement(emf, "test_resource2"); + sm2.enableNotFailed(); + sm2.unlock(); + assertEquals(UNLOCKED_ENABLED_NULL_NULL, makeString(sm2)); + sm2.promote(); + assertEquals(UNLOCKED_ENABLED_NULL_PROVIDINGSERVICE, makeString(sm2)); + + // P5 If promote() is called while standbyStatus is + // providingservice, no action is taken + logger.info("\n??? promote() test case P5"); + sm2.promote(); + assertEquals(UNLOCKED_ENABLED_NULL_PROVIDINGSERVICE, makeString(sm2)); + + // D1 If demote() is called while standbyStatus is providingservice, + // the state shall transition to hotstandby + logger.info("\n??? demote() test case D1"); + sm2.demote(); + assertEquals(UNLOCKED_ENABLED_NULL_HOTSTANDBY, makeString(sm2)); + + // D4 If demote() is called while standbyStatus is hotstandby, no + // action is taken + logger.info("\n??? demote() test case D4"); + sm2.demote(); + assertEquals(UNLOCKED_ENABLED_NULL_HOTSTANDBY, makeString(sm2)); + } + + private void test_2(final StateManagement sm) throws StateManagementException, IntegrityMonitorException { + // D3 If demote() is called while standbyStatus is null and + // adminState is locked or opState is disabled, + // the state shall transition to coldstandby + logger.info("\n??? demote() test case D3"); + final StateManagement sm3 = new StateManagement(emf, "test_resource3"); + sm3.lock(); + sm3.disableFailed(); + sm3.demote(); + assertEquals(LOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(sm3)); + + // D5 If demote() is called while standbyStatus is coldstandby, no + // action is taken + logger.info("\n??? demote() test case D5"); + sm3.demote(); + assertEquals(LOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(sm3)); + + // D2 If demote() is called while standbyStatus is null and + // adminState is unlocked and opState is enabled, + // the state shall transition to hotstandby + logger.info("\n??? demote() test case D2"); + final StateManagement sm4 = new StateManagement(emf, "test_resource4"); + sm4.unlock(); + sm4.enableNotFailed(); + assertEquals(UNLOCKED_ENABLED_NULL_NULL, makeString(sm4)); + sm4.demote(); + assertEquals(UNLOCKED_ENABLED_NULL_HOTSTANDBY, makeString(sm4)); + + // P1 If promote() is called while standbyStatus is hotstandby, the + // state shall transition to providingservice. + logger.info("\n??? promote() test case P1"); + sm4.promote(); + assertEquals(UNLOCKED_ENABLED_NULL_PROVIDINGSERVICE, makeString(sm4)); + + // State change notification + logger.info("\n??? State change notification test case 1 - lock()"); + final StateChangeNotifier stateChangeNotifier = new StateChangeNotifier(); + sm.addObserver(stateChangeNotifier); + sm.lock(); + assertEquals(LOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(stateChangeNotifier.getStateManagement())); + + logger.info("\n??? State change notification test case 2 - unlock()"); + sm.unlock(); + assertEquals(UNLOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(stateChangeNotifier.getStateManagement())); + + logger.info("\n??? State change notification test case 3 - enabled()"); + sm.enableNotFailed(); + assertEquals(UNLOCKED_ENABLED_NULL_HOTSTANDBY, makeString(stateChangeNotifier.getStateManagement())); + + logger.info("\n??? State change notification test case 4 - disableFailed()"); + sm.disableFailed(); + assertEquals(UNLOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(stateChangeNotifier.getStateManagement())); + + logger.info("\n??? State change notification test case 5 - demote()"); + sm.demote(); + assertEquals(UNLOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(stateChangeNotifier.getStateManagement())); + + logger.info("\n??? State change notification test case 6 - promote()"); + assertThatThrownBy(sm::promote).isInstanceOf(IntegrityMonitorException.class); + assertEquals(UNLOCKED_DISABLED_FAILED_COLDSTANDBY, makeString(sm)); + } + @Test(expected = StateManagementException.class) @SuppressWarnings("unchecked") public void test_StateManagementInitialization_ThrowException_ifEntityManagerCreateQuerythrowsAnyException() |