summaryrefslogtreecommitdiffstats
path: root/nokiav2/driver/src/test/java/org
diff options
context:
space:
mode:
authorDenes Nemeth <denes.nemeth@nokia.com>2018-04-09 15:04:03 +0200
committerDenes Nemeth <denes.nemeth@nokia.com>2018-04-09 18:09:33 +0200
commita995e82e01a3315940051ca55133c9cb14eccc6b (patch)
tree60cfaba3195e70eee199c8ce78533397b18a1ca3 /nokiav2/driver/src/test/java/org
parent21e822781382c89f125b030c6fe96eea2a5ad087 (diff)
Fix container startup
Change-Id: I5e7f9fb4bc83b113b5d27c5cd26e19cdc42e2c57 Issue-ID: VFC-728 Signed-off-by: Denes Nemeth <denes.nemeth@nokia.com>
Diffstat (limited to 'nokiav2/driver/src/test/java/org')
-rw-r--r--nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/TestNokiaSvnfmApplication.java115
-rw-r--r--nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/util/TestSystemFunctions.java12
-rw-r--r--nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestJobManager.java2
3 files changed, 97 insertions, 32 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 444660b1..c6586c28 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
@@ -15,40 +15,46 @@
*/
package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia;
+import java.util.HashSet;
+import java.util.Set;
import junit.framework.TestCase;
import org.junit.Before;
import org.junit.Test;
import org.mockito.*;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.SelfRegistrationManager;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.SystemFunctions;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.TestUtil;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.JobManager;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.Useless;
import org.slf4j.Logger;
+import org.springframework.boot.SpringApplication;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.test.util.ReflectionTestUtils;
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertTrue;
-import static org.mockito.Mockito.verify;
+import static junit.framework.TestCase.fail;
+import static org.mockito.Mockito.*;
+import static org.springframework.test.util.ReflectionTestUtils.setField;
-public class TestNokiaSvnfmApplication {
- @Mock
- private SelfRegistrationManager selfRegistrationManager;
+public class TestNokiaSvnfmApplication extends TestBase {
@Mock
private JobManager jobManager;
- @Mock
- private Logger logger;
- @InjectMocks
+
private NokiaSvnfmApplication.SelfRegistrationTrigger selfRegistrationTriggerer;
- @InjectMocks
private NokiaSvnfmApplication.SelfDeRegistrationTrigger selfUnregistrationTriggerer;
@Before
public void initMocks() throws Exception {
- MockitoAnnotations.initMocks(this);
- ReflectionTestUtils.setField(NokiaSvnfmApplication.class, "logger", logger);
+ selfRegistrationTriggerer = new NokiaSvnfmApplication.SelfRegistrationTrigger(selfRegistrationManager, jobManager);
+ selfUnregistrationTriggerer = new NokiaSvnfmApplication.SelfDeRegistrationTrigger(selfRegistrationManager, jobManager);
+ setField(NokiaSvnfmApplication.class, "logger", logger);
}
/**
@@ -66,15 +72,27 @@ public class TestNokiaSvnfmApplication {
* 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 testRegistrationIsCalledAfterComponentIsUp() throws Exception {
//given
ApplicationReadyEvent event = Mockito.mock(ApplicationReadyEvent.class);
//when
selfRegistrationTriggerer.onApplicationEvent(event);
//verify
- verify(selfRegistrationManager).register();
- verify(logger).info("Self registration started");
- verify(logger).info("Self registration finished");
+ boolean success = false;
+ while(!success)
+ {
+ try {
+ verify(selfRegistrationManager).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()));
}
@@ -99,23 +117,55 @@ public class TestNokiaSvnfmApplication {
}
/**
+ * Assert that the self registration process is started after the servlet is up and is able to answer REST requests.
+ */
+ @Test
+ public void testPreparingForShutdownDoesNotStartRegistration() throws Exception {
+ //given
+ ApplicationReadyEvent event = Mockito.mock(ApplicationReadyEvent.class);
+ when(jobManager.isPreparingForShutDown()).thenReturn(true);
+ //when
+ selfRegistrationTriggerer.onApplicationEvent(event);
+ //verify
+ verify(selfRegistrationManager, never()).register();
+ }
+
+ /**
* Failures in registration is logged and propagated
*/
@Test
- public void failedRegistration() {
+ @SuppressWarnings("squid:S2925") //the execution is asynchronous no other way to wait
+ public void failedFirstRegistration() {
//given
- RuntimeException expectedException = new RuntimeException();
- Mockito.doThrow(expectedException).when(selfRegistrationManager).register();
+ Set<RuntimeException> expectedException = new HashSet<>();
+ doAnswer(new Answer() {
+ @Override
+ public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
+ if(expectedException.size() == 0){
+ RuntimeException e = new RuntimeException();
+ expectedException.add(e);
+ throw e;
+ }
+ return null;
+ }
+ }).when(selfRegistrationManager).register();
ApplicationReadyEvent event = Mockito.mock(ApplicationReadyEvent.class);
//when
- try {
- selfRegistrationTriggerer.onApplicationEvent(event);
- //verify
- TestCase.fail();
- } catch (RuntimeException e) {
- assertEquals(e, expectedException);
+ selfRegistrationTriggerer.onApplicationEvent(event);
+ //verify
+ //wait for the registration to succeed
+ boolean success = false;
+ while(!success){
+ try{
+ verify(logger).info("Self registration finished");
+ success = true;
+ Thread.sleep(10);
+ }
+ catch (Exception e2){}
+ catch (Error e){}
}
- verify(logger).error("Self registration failed", expectedException);
+ verify(logger, times(2)).info("Self registration started");
+ verify(logger).error("Self registration failed", expectedException.iterator().next());
}
/**
@@ -131,7 +181,7 @@ public class TestNokiaSvnfmApplication {
try {
selfUnregistrationTriggerer.onApplicationEvent(event);
//verify
- TestCase.fail();
+ fail();
} catch (RuntimeException e) {
assertEquals(e, expectedException);
}
@@ -149,16 +199,17 @@ public class TestNokiaSvnfmApplication {
}
/**
- * static entry point calling an other static entry point can not be tested
- * only using powermock
+ * test spring application bootstrapping
*/
@Test
- @Useless
public void useless() throws Exception {
- try {
- NokiaSvnfmApplication.main(null);
- } catch (Exception e) {
-
- }
+ String[] args = new String [0];
+ SpringApplication springApplicaiton = Mockito.mock(SpringApplication.class);
+ SystemFunctions systemFunctions = SystemFunctions.systemFunctions();
+ when(this.systemFunctions.newSpringApplication(NokiaSvnfmApplication.class)).thenReturn(springApplicaiton);
+ //when
+ NokiaSvnfmApplication.main(args);
+ //verify
+ verify(springApplicaiton).run(args);
}
}
diff --git a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/util/TestSystemFunctions.java b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/util/TestSystemFunctions.java
index 0b31fef5..c627bfcf 100644
--- a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/util/TestSystemFunctions.java
+++ b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/util/TestSystemFunctions.java
@@ -20,7 +20,9 @@ import java.util.Base64;
import java.util.HashSet;
import java.util.Set;
import org.junit.Test;
+import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.NokiaSvnfmApplication;
import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.Useless;
+import org.springframework.boot.SpringApplication;
import static org.junit.Assert.*;
@@ -115,4 +117,14 @@ public class TestSystemFunctions {
public void testHttp() {
assertNotNull(SystemFunctions.systemFunctions().getHttpClient());
}
+
+ /**
+ * Test spring application wrapping
+ */
+ @Test
+ public void testSpring(){
+ SpringApplication springApplication = SystemFunctions.systemFunctions().newSpringApplication(NokiaSvnfmApplication.class);
+
+ assertEquals(1, springApplication.getAllSources().size());
+ }
}
diff --git a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestJobManager.java b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestJobManager.java
index b34bc1d7..432fff6d 100644
--- a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestJobManager.java
+++ b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/TestJobManager.java
@@ -118,6 +118,7 @@ public class TestJobManager extends TestBase {
JobDetailInfo job = jobManager.getJob(VNFM_ID, jobId);
//verify
assertResult(jobId, job, JobStatus.FINISHED, "100", "Operation finished");
+ assertEquals(false, jobManager.isPreparingForShutDown());
}
/**
@@ -133,6 +134,7 @@ public class TestJobManager extends TestBase {
} catch (Exception e) {
verify(logger).error("The service is preparing to shut down");
}
+ assertEquals(true, jobManager.isPreparingForShutDown());
}
/**