summaryrefslogtreecommitdiffstats
path: root/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/TestNokiaSvnfmApplication.java
diff options
context:
space:
mode:
Diffstat (limited to 'nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/TestNokiaSvnfmApplication.java')
-rw-r--r--nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/TestNokiaSvnfmApplication.java179
1 files changed, 178 insertions, 1 deletions
diff --git a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/TestNokiaSvnfmApplication.java b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/TestNokiaSvnfmApplication.java
index 69a74bc3..8964c80b 100644
--- a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/TestNokiaSvnfmApplication.java
+++ b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/TestNokiaSvnfmApplication.java
@@ -96,6 +96,155 @@ public class TestNokiaSvnfmApplication extends TestBase {
assertTrue(ApplicationReadyEvent.class.isAssignableFrom(event.getClass()));
}
+ /**
+ * Assert that the self registration process is started after the servlet is up and is able to answer REST requests.
+ */
+ @Test
+ @SuppressWarnings("squid:S2925") //the execution is asynchronous no other way to wait
+ public void testRegistrationIsNotCalledIfPreparingForShutdown() throws Exception {
+ //given
+ ApplicationReadyEvent event = Mockito.mock(ApplicationReadyEvent.class);
+ useSo(event);
+ when(jobManagerForSo.isPreparingForShutDown()).thenReturn(true);
+ //when
+ selfRegistrationTriggerer.onApplicationEvent(event);
+ //verify
+ boolean success = false;
+ while (!success) {
+ try {
+ verify(logger).warn("Component is preparing for shutdown giving up component start");
+ success = true;
+ } catch (Error e) {
+
+ }
+ Thread.sleep(10);
+ }
+ verify(selfRegistrationManagerForSo, never()).register();
+ // this forces the event to be fired after the servlet is up (prevents refactor)
+ assertTrue(ApplicationReadyEvent.class.isAssignableFrom(event.getClass()));
+ }
+
+
+ /**
+ * Assert that the self registration process is started after the servlet is up and is able to answer REST requests.
+ */
+ @Test
+ @SuppressWarnings("squid:S2925") //the execution is asynchronous no other way to wait
+ public void testRegistrationIsCalledAfterComponentIsUpForSo() throws Exception {
+ //given
+ ApplicationReadyEvent event = Mockito.mock(ApplicationReadyEvent.class);
+ useSo(event);
+ //when
+ selfRegistrationTriggerer.onApplicationEvent(event);
+ //verify
+ boolean success = false;
+ while (!success) {
+ try {
+ verify(selfRegistrationManagerForSo).register();
+ verify(logger).info("Self registration started");
+ verify(logger).info("Self registration finished");
+ success = true;
+ } catch (Error e) {
+
+ }
+ Thread.sleep(10);
+ }
+ // this forces the event to be fired after the servlet is up (prevents refactor)
+ assertTrue(ApplicationReadyEvent.class.isAssignableFrom(event.getClass()));
+ }
+
+ /**
+ * Failuires in the self registration process is retried for SO
+ */
+ @Test
+ @SuppressWarnings("squid:S2925") //the execution is asynchronous no other way to wait
+ public void testFailuresInRegistrationIsRetriedForSo() throws Exception {
+ //given
+ ApplicationReadyEvent event = Mockito.mock(ApplicationReadyEvent.class);
+ RuntimeException e2 = new RuntimeException();
+ useSo(event);
+ Set<Boolean> calls = new HashSet<>();
+ doAnswer(new Answer() {
+ @Override
+ public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
+ if(calls.size() == 0){
+ calls.add(true);
+ throw e2;
+ }
+ return null;
+ }
+ }).when(selfRegistrationManagerForSo).register();
+ //when
+ selfRegistrationTriggerer.onApplicationEvent(event);
+ //verify
+ boolean success = false;
+ while (!success) {
+ try {
+ verify(logger).info("Self registration finished");
+ success = true;
+ } catch (Error e) {
+
+ }
+ Thread.sleep(10);
+ }
+ verify(selfRegistrationManagerForSo, times(2)).register();
+ verify(systemFunctions).sleep(5000);
+ verify(logger, times(2)).info("Self registration started");
+ verify(logger).error("Self registration failed", e2);
+ // this forces the event to be fired after the servlet is up (prevents refactor)
+ assertTrue(ApplicationReadyEvent.class.isAssignableFrom(event.getClass()));
+ }
+
+ /**
+ * Failuires in the self registration process is retried for VFC
+ */
+ @Test
+ @SuppressWarnings("squid:S2925") //the execution is asynchronous no other way to wait
+ public void testFailuresInRegistrationIsRetriedForVfc() throws Exception {
+ //given
+ ApplicationReadyEvent event = Mockito.mock(ApplicationReadyEvent.class);
+ RuntimeException e2 = new RuntimeException();
+ useVfc(event);
+ Set<Boolean> calls = new HashSet<>();
+ doAnswer(new Answer() {
+ @Override
+ public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
+ if(calls.size() == 0){
+ calls.add(true);
+ throw e2;
+ }
+ return null;
+ }
+ }).when(selfRegistrationManagerForVfc).register();
+ //when
+ selfRegistrationTriggerer.onApplicationEvent(event);
+ //verify
+ boolean success = false;
+ while (!success) {
+ try {
+ verify(logger).info("Self registration finished");
+ success = true;
+ } catch (Error e) {
+
+ }
+ Thread.sleep(10);
+ }
+ verify(selfRegistrationManagerForVfc, times(2)).register();
+ verify(systemFunctions).sleep(5000);
+ verify(logger, times(2)).info("Self registration started");
+ verify(logger).error("Self registration failed", e2);
+ // this forces the event to be fired after the servlet is up (prevents refactor)
+ assertTrue(ApplicationReadyEvent.class.isAssignableFrom(event.getClass()));
+ }
+
+ private void useSo(ApplicationReadyEvent event) {
+ ConfigurableApplicationContext context = Mockito.mock(ConfigurableApplicationContext.class);
+ ConfigurableEnvironment environment = Mockito.mock(ConfigurableEnvironment.class);
+ when(context.getEnvironment()).thenReturn(environment);
+ when(event.getApplicationContext()).thenReturn(context);
+ when(environment.getActiveProfiles()).thenReturn(new String[]{"direct"});
+ }
+
private void useVfc(ApplicationReadyEvent event) {
ConfigurableApplicationContext context = Mockito.mock(ConfigurableApplicationContext.class);
ConfigurableEnvironment environment = Mockito.mock(ConfigurableEnvironment.class);
@@ -111,6 +260,13 @@ public class TestNokiaSvnfmApplication extends TestBase {
when(environment.getActiveProfiles()).thenReturn(new String[]{});
}
+ private void useSo(ContextClosedEvent event) {
+ ApplicationContext context = Mockito.mock(ApplicationContext.class);
+ when(context.getEnvironment()).thenReturn(environment);
+ when(event.getApplicationContext()).thenReturn(context);
+ when(environment.getActiveProfiles()).thenReturn(new String[]{"direct"});
+ }
+
/**
* Assert that the self de-registration process is started after the servlet has been ramped down
*/
@@ -133,6 +289,27 @@ public class TestNokiaSvnfmApplication extends TestBase {
}
/**
+ * Assert that the self de-registration process is started after the servlet has been ramped down
+ */
+ @Test
+ public void testUnRegistrationIsCalledAfterComponentIsUpForSo() throws Exception {
+ //given
+ ContextClosedEvent event = Mockito.mock(ContextClosedEvent.class);
+ useSo(event);
+ //when
+ selfUnregistrationTriggerer.onApplicationEvent(event);
+ //verify
+ InOrder inOrder = Mockito.inOrder(jobManagerForVfc, jobManagerForSo, selfRegistrationManagerForSo);
+ inOrder.verify(jobManagerForVfc).prepareForShutdown();
+ inOrder.verify(jobManagerForSo).prepareForShutdown();
+ inOrder.verify(selfRegistrationManagerForSo).deRegister();
+ verify(logger).info("Self de-registration started");
+ verify(logger).info("Self de-registration finished");
+ // this forces the event to be fired after the servlet is down (prevents refactor)
+ assertTrue(ContextClosedEvent.class.isAssignableFrom(event.getClass()));
+ }
+
+ /**
* Assert that the self registration process is started after the servlet is up and is able to answer REST requests.
*/
@Test
@@ -151,9 +328,9 @@ public class TestNokiaSvnfmApplication extends TestBase {
*/
@Test
@SuppressWarnings("squid:S2925") //the execution is asynchronous no other way to wait
+
public void failedFirstRegistration() {
//given
-
Set<RuntimeException> expectedException = new HashSet<>();
doAnswer(new Answer() {
@Override