1 package org.openecomp.sdc.be.components.distribution.engine;
3 import static org.junit.Assert.assertEquals;
4 import static org.mockito.ArgumentMatchers.any;
5 import static org.mockito.ArgumentMatchers.eq;
6 import static org.mockito.Mockito.verifyZeroInteractions;
7 import static org.mockito.Mockito.when;
9 import java.util.HashSet;
10 import java.util.List;
13 import java.util.function.Function;
14 import java.util.stream.Collectors;
15 import java.util.stream.Stream;
17 import org.junit.Assert;
18 import org.junit.Before;
19 import org.junit.Test;
20 import org.mockito.ArgumentMatchers;
21 import org.mockito.InjectMocks;
22 import org.mockito.Mock;
23 import org.mockito.MockitoAnnotations;
24 import org.openecomp.sdc.be.components.utils.OperationalEnvironmentBuilder;
25 import org.openecomp.sdc.be.config.DistributionEngineConfiguration;
26 import org.openecomp.sdc.be.config.DistributionEngineConfiguration.DistributionStatusTopicConfig;
27 import org.openecomp.sdc.be.dao.api.ActionStatus;
28 import org.openecomp.sdc.be.model.Service;
29 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
30 import org.openecomp.sdc.be.resources.data.OperationalEnvironmentEntry;
32 import mockit.Deencapsulation;
34 public class DistributionEngineTest{
36 public static final String DISTRIBUTION_ID = "distId";
37 public static final String ENV_ID = "envId";
38 public static final String USER_ID = "userId";
39 public static final String MODIFIER = "modifier";
42 private DistributionEngine testInstance;
45 private EnvironmentsEngine environmentsEngine;
48 private DistributionNotificationSender distributionNotificationSender;
51 private ServiceDistributionArtifactsBuilder serviceDistributionArtifactsBuilder;
53 private DummyDistributionConfigurationManager distributionEngineConfigurationMock;
55 private Map<String, OperationalEnvironmentEntry> envs;
58 public void setUpMock() throws Exception {
59 MockitoAnnotations.initMocks(this);
60 distributionEngineConfigurationMock = new DummyDistributionConfigurationManager();
61 envs = getEnvs(ENV_ID);
65 public void notifyService() throws Exception {
66 NotificationDataImpl notificationData = new NotificationDataImpl();
67 Service service = new Service();
68 when(environmentsEngine.getEnvironmentById(ENV_ID)).thenReturn(envs.get(ENV_ID));
69 when(distributionEngineConfigurationMock.getConfigurationMock().getDistributionNotifTopicName())
71 when(distributionNotificationSender.sendNotification(eq("topic-ENVID"), eq(DISTRIBUTION_ID),
72 any(EnvironmentMessageBusData.class), any(NotificationDataImpl.class), any(Service.class), eq(USER_ID),
73 eq(MODIFIER))).thenReturn(ActionStatus.OK);
74 ActionStatus actionStatus = testInstance.notifyService(DISTRIBUTION_ID, service, notificationData, ENV_ID,
76 assertEquals(ActionStatus.OK, actionStatus);
80 public void notifyService_couldNotResolveEnvironment() throws Exception {
81 when(environmentsEngine.getEnvironments()).thenReturn(envs);
82 ActionStatus actionStatus = testInstance.notifyService(DISTRIBUTION_ID, new Service(),
83 new NotificationDataImpl(), "someNonExisitngEnv", USER_ID, MODIFIER);
84 assertEquals(ActionStatus.DISTRIBUTION_ENVIRONMENT_NOT_AVAILABLE, actionStatus);
85 verifyZeroInteractions(distributionNotificationSender);
89 public void notifyService_failedWhileSendingNotification() throws Exception {
90 NotificationDataImpl notificationData = new NotificationDataImpl();
91 Service service = new Service();
92 when(environmentsEngine.getEnvironmentById(ENV_ID)).thenReturn(envs.get(ENV_ID));
93 when(distributionEngineConfigurationMock.getConfigurationMock().getDistributionNotifTopicName())
95 when(distributionNotificationSender.sendNotification(eq("topic-ENVID"), eq(DISTRIBUTION_ID),
96 any(EnvironmentMessageBusData.class), any(NotificationDataImpl.class), any(Service.class), eq(USER_ID),
97 eq(MODIFIER))).thenReturn(ActionStatus.GENERAL_ERROR);
98 ActionStatus actionStatus = testInstance.notifyService(DISTRIBUTION_ID, service, notificationData, ENV_ID,
100 assertEquals(ActionStatus.GENERAL_ERROR, actionStatus);
103 private Map<String, OperationalEnvironmentEntry> getEnvs(String... environmentIds) {
104 Set<String> uebAddress = new HashSet<>();
105 uebAddress.add("someAddress");
106 return Stream.of(environmentIds)
107 .map(id -> new OperationalEnvironmentBuilder().setEnvId(id).setDmaapUebAddress(uebAddress).build())
108 .collect(Collectors.toMap(OperationalEnvironmentEntry::getEnvironmentId, Function.identity()));
111 private DistributionEngine createTestSubject() {
112 return new DistributionEngine();
115 @Test(expected=NullPointerException.class)
116 public void testInit() throws Exception {
117 DistributionEngine testSubject;
120 testSubject = createTestSubject();
121 Deencapsulation.invoke(testSubject, "init");
125 public void testShutdown() throws Exception {
126 DistributionEngine testSubject;
129 testSubject = createTestSubject();
130 testSubject.shutdown();
134 public void testValidateConfiguration() throws Exception {
135 DistributionEngine testSubject;
136 DistributionEngineConfiguration deConfiguration = new DistributionEngineConfiguration();
137 deConfiguration.setDistributionStatusTopic((new DistributionStatusTopicConfig()));
141 testSubject = createTestSubject();
142 result = Deencapsulation.invoke(testSubject, "validateConfiguration", deConfiguration);
146 public void testIsValidServers() throws Exception {
147 DistributionEngine testSubject;
148 List<String> uebServers = null;
149 String methodName = "";
150 String paramName = "";
154 testSubject = createTestSubject();
156 result = Deencapsulation.invoke(testSubject, "isValidServers",
157 new Object[] { List.class, methodName, paramName });
158 Assert.assertEquals(false, result);
162 public void testIsValidFqdn() throws Exception {
163 DistributionEngine testSubject;
164 String serverFqdn = "";
168 testSubject = createTestSubject();
169 result = Deencapsulation.invoke(testSubject, "isValidFqdn", new Object[] { serverFqdn });
173 public void testIsValidParam() throws Exception {
174 DistributionEngine testSubject;
175 String paramValue = "";
176 String methodName = "";
177 String paramName = "";
181 testSubject = createTestSubject();
182 result = Deencapsulation.invoke(testSubject, "isValidParam",
183 new Object[] { paramValue, methodName, paramName });
187 public void testIsValidParam_1() throws Exception {
188 DistributionEngine testSubject;
189 List<String> paramValue = null;
190 String methodName = "";
191 String paramName = "";
195 testSubject = createTestSubject();
196 result = Deencapsulation.invoke(testSubject, "isValidParam",
197 new Object[] { List.class, methodName, paramName });
201 public void testIsValidObject() throws Exception {
202 DistributionEngine testSubject;
203 Object paramValue = null;
204 String methodName = "";
205 String paramName = "";
209 testSubject = createTestSubject();
211 result = Deencapsulation.invoke(testSubject, "isValidObject",
212 new Object[] { Object.class, methodName, paramName });
213 Assert.assertEquals(false, result);
217 public void testGetEnvironmentErrorDescription() throws Exception {
218 DistributionEngine testSubject;
219 StorageOperationStatus status = null;
223 testSubject = createTestSubject();
224 result = Deencapsulation.invoke(testSubject, "getEnvironmentErrorDescription",
225 StorageOperationStatus.DISTR_ENVIRONMENT_NOT_AVAILABLE);
226 result = Deencapsulation.invoke(testSubject, "getEnvironmentErrorDescription",
227 StorageOperationStatus.DISTR_ENVIRONMENT_NOT_FOUND);
228 result = Deencapsulation.invoke(testSubject, "getEnvironmentErrorDescription",
229 StorageOperationStatus.DISTR_ENVIRONMENT_SENT_IS_INVALID);
230 result = Deencapsulation.invoke(testSubject, "getEnvironmentErrorDescription",
231 StorageOperationStatus.ARTIFACT_NOT_FOUND);
235 public void testIsEnvironmentAvailable() throws Exception {
236 DistributionEngine testSubject;
238 StorageOperationStatus result;
241 testSubject = createTestSubject();
243 result = testSubject.isEnvironmentAvailable(envName);
244 Assert.assertEquals(StorageOperationStatus.DISTR_ENVIRONMENT_SENT_IS_INVALID, result);
247 testSubject = createTestSubject();
249 result = testSubject.isEnvironmentAvailable(envName);
250 Assert.assertEquals(StorageOperationStatus.DISTR_ENVIRONMENT_NOT_FOUND, result);
253 //TODO Create test coverage for this method
255 public void testIsEnvironmentAvailable_1() throws Exception {
256 DistributionEngine testSubject;
257 StorageOperationStatus result;
260 testSubject = createTestSubject();
261 result = testInstance.isEnvironmentAvailable();
264 @Test(expected=NullPointerException.class)
265 public void testDisableEnvironment() throws Exception {
266 DistributionEngine testSubject;
270 testSubject = createTestSubject();
271 testSubject.disableEnvironment(envName);
275 public void testBuildTopicName() throws Exception {
276 DistributionEngine testSubject;
281 testSubject = createTestSubject();
282 result = Deencapsulation.invoke(testSubject, "buildTopicName", new Object[] { envName });
286 public void testIsReadyForDistribution() throws Exception {
287 DistributionEngine testSubject;
288 Service service = null;
290 StorageOperationStatus result;
293 testSubject = createTestSubject();
294 result = testSubject.isReadyForDistribution(service, envName);
298 public void testVerifyServiceHasDeploymentArtifactsTrue() throws Exception {
299 Service service = new Service();
300 StorageOperationStatus result;
303 when(serviceDistributionArtifactsBuilder.verifyServiceContainsDeploymentArtifacts(ArgumentMatchers.any(Service.class))).thenReturn(true);
304 result = testInstance.verifyServiceHasDeploymentArtifacts(service);
308 public void testVerifyServiceHasDeploymentArtifactsFalse() throws Exception {
309 Service service = new Service();
310 StorageOperationStatus result;
313 when(serviceDistributionArtifactsBuilder.verifyServiceContainsDeploymentArtifacts(ArgumentMatchers.any(Service.class))).thenReturn(false);
314 result = testInstance.verifyServiceHasDeploymentArtifacts(service);
318 public void testGetEnvironmentById() throws Exception {
319 DistributionEngine testSubject;
321 OperationalEnvironmentEntry result;
324 when(environmentsEngine.getEnvironmentById(ArgumentMatchers.anyString())).thenReturn(new OperationalEnvironmentEntry());
325 result = testInstance.getEnvironmentById(opEnvId);
329 public void testBuildServiceForDistribution() throws Exception {
330 Service service = new Service();
331 String distributionId = "";
332 String workloadContext = "";
333 INotificationData result;
336 //testSubject = createTestSubject();
337 when(serviceDistributionArtifactsBuilder.buildResourceInstanceForDistribution(ArgumentMatchers.any(), ArgumentMatchers.any(), ArgumentMatchers.any())).thenReturn(new NotificationDataImpl());
338 result = testInstance.buildServiceForDistribution(service, distributionId, workloadContext);