* ================================================================================
* Copyright (C) 2018 Huawei. All rights reserved.
* ================================================================================
- * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved
- * Modifications Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved
+ * Modifications Copyright (C) 2019-2020 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
package org.onap.policy.sdnc;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
+import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyMap;
import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.ArgumentMatchers.endsWith;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.startsWith;
-
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import java.util.ArrayList;
-import java.util.List;
import java.util.UUID;
-
-import org.drools.core.WorkingMemory;
-import org.junit.After;
-import org.junit.AfterClass;
+import org.apache.commons.lang3.tuple.Pair;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
-import org.onap.policy.drools.system.PolicyEngine;
import org.onap.policy.rest.RestManager;
-import org.onap.policy.rest.RestManager.Pair;
+import org.onap.policy.sdnc.SdncManager.SdncCallback;
import org.onap.policy.sdnc.util.Serialization;
-public class SdncManagerTest {
- private static WorkingMemory mockedWorkingMemory;
+public class SdncManagerTest implements SdncCallback {
+ private static final String SOMEWHERE_OVER_THE_RAINBOW = "http://somewhere.over.the.rainbow";
+
+ private static final String DOROTHY = "Dorothy";
private RestManager mockedRestManager;
private Pair<Integer, String> httpResponsePutOk;
- private Pair<Integer, String> httpResponseGetOk;
private Pair<Integer, String> httpResponseBadResponse;
private Pair<Integer, String> httpResponseErr;
private SdncRequest request;
private SdncResponse response;
- @BeforeClass
- public static void beforeTestSdncManager() {
- mockedWorkingMemory = mock(WorkingMemory.class);
- }
-
/**
* Set up the mocked REST manager.
*/
@Before
public void setupMockedRest() {
mockedRestManager = mock(RestManager.class);
-
- httpResponsePutOk = mockedRestManager.new Pair<>(202, Serialization.gsonPretty.toJson(response));
- httpResponseGetOk = mockedRestManager.new Pair<>(200, Serialization.gsonPretty.toJson(response));
- httpResponseBadResponse = mockedRestManager.new Pair<>(202, Serialization.gsonPretty.toJson(null));
- httpResponseErr = mockedRestManager.new Pair<>(200, null);
+
+ httpResponsePutOk = Pair.of(202, Serialization.gsonPretty.toJson(response));
+ httpResponseBadResponse = Pair.of(202, Serialization.gsonPretty.toJson(null));
+ httpResponseErr = Pair.of(200, null);
}
-
+
/**
* Create the request and response before.
*/
SdncHealRequestHeaderInfo additionalParams = new SdncHealRequestHeaderInfo();
additionalParams.setSvcAction("Go Home");
additionalParams.setSvcRequestId("My Request");
-
+
SdncHealRequest healRequest = new SdncHealRequest();
healRequest.setRequestHeaderInfo(additionalParams);
healRequest.setServiceInfo(serviceInfo);
request = new SdncRequest();
request.setRequestId(requestId);
request.setHealRequest(healRequest);
- request.setNsInstanceId("Dorothy");
+ request.setNsInstanceId(DOROTHY);
SdncResponseOutput responseDescriptor = new SdncResponseOutput();
responseDescriptor.setSvcRequestId("1234");
response.setRequestId(request.getRequestId().toString());
response.setResponseOutput(responseDescriptor);
}
-
- /**
- * After Test clean up.
- */
- @After
- public void afterTestSdncManager() throws InterruptedException {
- PolicyEngine.manager.getEnvironment().remove("sdnc.password");
- PolicyEngine.manager.getEnvironment().remove("sdnc.username");
- PolicyEngine.manager.getEnvironment().remove("sdnc.url");
- }
@Test
- public void testSdncInitiation() throws InterruptedException {
- try {
- new SdncManager(null, null);
- fail("test should throw an exception here");
- }
- catch (IllegalArgumentException e) {
- assertEquals(
- "the parameters \"wm\" and \"request\" on the SdncManager constructor may not be null",
- e.getMessage()
- );
- }
-
- try {
- new SdncManager(mockedWorkingMemory, null);
- fail("test should throw an exception here");
- }
- catch (IllegalArgumentException e) {
- assertEquals(
- "the parameters \"wm\" and \"request\" on the SdncManager constructor may not be null",
- e.getMessage()
- );
- }
-
- try {
- new SdncManager(mockedWorkingMemory, request);
- fail("test should throw an exception here");
- }
- catch (IllegalArgumentException e) {
- assertEquals(
- "The value of policy engine manager environment property \"sdnc.url\" may not be null",
- e.getMessage()
- );
- }
-
- PolicyEngine.manager.getEnvironment().put("sdnc.url", "http://somewhere.over.the.rainbow");
- try {
- new SdncManager(mockedWorkingMemory, request);
- fail("test should throw an exception here");
- }
- catch (IllegalArgumentException e) {
- assertEquals(
- "The value of policy engine manager environment property \"sdnc.username\" may not be null",
- e.getMessage()
- );
- }
-
- PolicyEngine.manager.getEnvironment().put("sdnc.username", "Dorothy");
- try {
- new SdncManager(mockedWorkingMemory, request);
- fail("test should throw an exception here");
- }
- catch (IllegalArgumentException e) {
- assertEquals(
- "The value of policy engine manager environment property \"sdnc.password\" may not be null",
- e.getMessage()
- );
- }
-
- PolicyEngine.manager.getEnvironment().put("sdnc.password", "Toto");
- new SdncManager(mockedWorkingMemory, request);
+ public void testSdncInitiation() {
+
+ assertThatIllegalArgumentException().isThrownBy(() -> new SdncManager(null, null, null, null, null))
+ .withMessage("the parameters \"callback\" and \"request\" on the SdncManager constructor may not be null");
+
+ assertThatIllegalArgumentException().isThrownBy(() -> new SdncManager(this, null, null, null, null))
+ .withMessage("the parameters \"callback\" and \"request\" on the SdncManager constructor may not be null");
+
+ assertThatIllegalArgumentException().isThrownBy(() -> new SdncManager(this, request, null, null, null))
+ .withMessage("the \"url\" parameter on the SdncManager constructor may not be null");
+
+ new SdncManager(this, request, SOMEWHERE_OVER_THE_RAINBOW, DOROTHY, "Toto");
}
@Test
public void testSdncExecutionException() throws InterruptedException {
- PolicyEngine.manager.getEnvironment().put("sdnc.url", "http://somewhere.over.the.rainbow");
- PolicyEngine.manager.getEnvironment().put("sdnc.username", "Dorothy");
- PolicyEngine.manager.getEnvironment().put("sdnc.password", "Exception");
-
- SdncManager manager = new SdncManager(mockedWorkingMemory, request);
+ SdncManager manager = new SdncManager(this, request, SOMEWHERE_OVER_THE_RAINBOW, DOROTHY, "Exception");
manager.setRestManager(mockedRestManager);
+ when(mockedRestManager.post(startsWith(SOMEWHERE_OVER_THE_RAINBOW), eq(DOROTHY), eq("Exception"), anyMap(),
+ anyString(), anyString())).thenThrow(new RuntimeException("OzException"));
+
Thread managerThread = new Thread(manager);
managerThread.start();
- when(mockedRestManager.post(startsWith("http://somewhere.over.the.rainbow"), eq("Dorothy"), eq("Exception"), anyMap(), anyString(), anyString()))
- .thenThrow(new RuntimeException("OzException"));
-
+ managerThread.join(1000);
- managerThread.join(100);
+ verify(mockedRestManager).post(any(), any(), any(), any(), any(), any());
}
-
+
@Test
public void testSdncExecutionNull() throws InterruptedException {
- PolicyEngine.manager.getEnvironment().put("sdnc.url", "http://somewhere.over.the.rainbow");
- PolicyEngine.manager.getEnvironment().put("sdnc.username", "Dorothy");
- PolicyEngine.manager.getEnvironment().put("sdnc.password", "Null");
-
- SdncManager manager = new SdncManager(mockedWorkingMemory, request);
+ SdncManager manager = new SdncManager(this, request, SOMEWHERE_OVER_THE_RAINBOW, DOROTHY, "Null");
manager.setRestManager(mockedRestManager);
- Thread managerThread = new Thread(manager);
- managerThread.start();
-
- when(mockedRestManager.post(startsWith("http://somewhere.over.the.rainbow"), eq("Dorothy"), eq("Null"), anyMap(), anyString(), anyString()))
- .thenReturn(null);
-
- managerThread.join(100);
+ when(mockedRestManager.post(startsWith(SOMEWHERE_OVER_THE_RAINBOW), eq(DOROTHY), eq("Null"), anyMap(),
+ anyString(), anyString())).thenReturn(null);
+
+ manager.run();
+
+ verify(mockedRestManager).post(any(), any(), any(), any(), any(), any());
}
@Test
public void testSdncExecutionError0() throws InterruptedException {
- PolicyEngine.manager.getEnvironment().put("sdnc.url", "http://somewhere.over.the.rainbow");
- PolicyEngine.manager.getEnvironment().put("sdnc.username", "Dorothy");
- PolicyEngine.manager.getEnvironment().put("sdnc.password", "Error0");
-
- SdncManager manager = new SdncManager(mockedWorkingMemory, request);
+ SdncManager manager = new SdncManager(this, request, SOMEWHERE_OVER_THE_RAINBOW, DOROTHY, "Error0");
manager.setRestManager(mockedRestManager);
-
- Thread managerThread = new Thread(manager);
- managerThread.start();
-
- when(mockedRestManager.post(startsWith("http://somewhere.over.the.rainbow"), eq("Dorothy"), eq("Error0"), anyMap(), anyString(), anyString()))
- .thenReturn(httpResponseErr);
-
- managerThread.join(100);
+
+ when(mockedRestManager.post(startsWith(SOMEWHERE_OVER_THE_RAINBOW), eq(DOROTHY), eq("Error0"), anyMap(),
+ anyString(), anyString())).thenReturn(httpResponseErr);
+
+ manager.run();
+
+ verify(mockedRestManager).post(any(), any(), any(), any(), any(), any());
}
@Test
public void testSdncExecutionBadResponse() throws InterruptedException {
- PolicyEngine.manager.getEnvironment().put("sdnc.url", "http://somewhere.over.the.rainbow");
- PolicyEngine.manager.getEnvironment().put("sdnc.username", "Dorothy");
- PolicyEngine.manager.getEnvironment().put("sdnc.password", "BadResponse");
-
- SdncManager manager = new SdncManager(mockedWorkingMemory, request);
+ SdncManager manager = new SdncManager(this, request, SOMEWHERE_OVER_THE_RAINBOW, DOROTHY, "BadResponse");
manager.setRestManager(mockedRestManager);
-
- Thread managerThread = new Thread(manager);
- managerThread.start();
-
- when(mockedRestManager.post(startsWith("http://somewhere.over.the.rainbow"), eq("Dorothy"), eq("OK"), anyMap(), anyString(), anyString()))
- .thenReturn(httpResponseBadResponse);
-
- managerThread.join(100);
+
+ when(mockedRestManager.post(startsWith(SOMEWHERE_OVER_THE_RAINBOW), eq(DOROTHY), eq("OK"), anyMap(),
+ anyString(), anyString())).thenReturn(httpResponseBadResponse);
+
+ manager.run();
+
+ verify(mockedRestManager).post(any(), any(), any(), any(), any(), any());
}
-
+
@Test
public void testSdncExecutionOk() throws InterruptedException {
- PolicyEngine.manager.getEnvironment().put("sdnc.url", "http://somewhere.over.the.rainbow");
- PolicyEngine.manager.getEnvironment().put("sdnc.username", "Dorothy");
- PolicyEngine.manager.getEnvironment().put("sdnc.password", "OK");
-
- SdncManager manager = new SdncManager(mockedWorkingMemory, request);
+ SdncManager manager = new SdncManager(this, request, SOMEWHERE_OVER_THE_RAINBOW, DOROTHY, "OOK");
manager.setRestManager(mockedRestManager);
-
- Thread managerThread = new Thread(manager);
- managerThread.start();
- when(mockedRestManager.post(startsWith("http://somewhere.over.the.rainbow"), eq("Dorothy"), eq("OK"), anyMap(), anyString(), anyString()))
- .thenReturn(httpResponsePutOk);
-
- when(mockedRestManager.get(endsWith("1234"), eq("Dorothy"), eq("OK"), anyMap()))
- .thenReturn(httpResponseGetOk);
-
+ when(mockedRestManager.post(startsWith(SOMEWHERE_OVER_THE_RAINBOW), eq(DOROTHY), eq("OK"), anyMap(),
+ anyString(), anyString())).thenReturn(httpResponsePutOk);
+
+ manager.run();
+
+ verify(mockedRestManager).post(any(), any(), any(), any(), any(), any());
+ }
- managerThread.join(100);
+ @Override
+ public void onCallback(SdncResponse response) {
+ //
+ // Nothing really to do
+ //
}
}