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.LinkedList;
11 import java.util.List;
14 import java.util.function.Function;
15 import java.util.stream.Collectors;
16 import java.util.stream.Stream;
18 import org.junit.Assert;
19 import org.junit.Before;
20 import org.junit.Test;
21 import org.mockito.ArgumentMatchers;
22 import org.mockito.InjectMocks;
23 import org.mockito.Mock;
24 import org.mockito.Mockito;
25 import org.mockito.MockitoAnnotations;
26 import org.openecomp.sdc.be.components.BeConfDependentTest;
27 import org.openecomp.sdc.be.components.utils.OperationalEnvironmentBuilder;
28 import org.openecomp.sdc.be.config.DistributionEngineConfiguration;
29 import org.openecomp.sdc.be.config.DistributionEngineConfiguration.CreateTopicConfig;
30 import org.openecomp.sdc.be.config.DistributionEngineConfiguration.DistributionStatusTopicConfig;
31 import org.openecomp.sdc.be.dao.api.ActionStatus;
32 import org.openecomp.sdc.be.model.Service;
33 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
34 import org.openecomp.sdc.be.resources.data.OperationalEnvironmentEntry;
36 import mockit.Deencapsulation;
38 public class DistributionEngineTest extends BeConfDependentTest{
40 public static final String DISTRIBUTION_ID = "distId";
41 public static final String ENV_ID = "envId";
42 public static final String USER_ID = "userId";
43 public static final String MODIFIER = "modifier";
46 private DistributionEngine testInstance;
49 private EnvironmentsEngine environmentsEngine;
52 private DistributionNotificationSender distributionNotificationSender;
55 private ServiceDistributionArtifactsBuilder serviceDistributionArtifactsBuilder;
58 private DistributionEngineClusterHealth distributionEngineClusterHealth;
60 private DummyDistributionConfigurationManager distributionEngineConfigurationMock;
62 private Map<String, OperationalEnvironmentEntry> envs;
65 public void setUpMock() throws Exception {
66 MockitoAnnotations.initMocks(this);
67 distributionEngineConfigurationMock = new DummyDistributionConfigurationManager();
68 envs = getEnvs(ENV_ID);
72 public void notifyService() throws Exception {
73 NotificationDataImpl notificationData = new NotificationDataImpl();
74 Service service = new Service();
75 when(environmentsEngine.getEnvironmentById(ENV_ID)).thenReturn(envs.get(ENV_ID));
76 when(distributionEngineConfigurationMock.getConfigurationMock().getDistributionNotifTopicName())
78 when(distributionNotificationSender.sendNotification(eq("topic-ENVID"), eq(DISTRIBUTION_ID),
79 any(EnvironmentMessageBusData.class), any(NotificationDataImpl.class), any(Service.class), eq(USER_ID),
80 eq(MODIFIER))).thenReturn(ActionStatus.OK);
81 ActionStatus actionStatus = testInstance.notifyService(DISTRIBUTION_ID, service, notificationData, ENV_ID,
83 assertEquals(ActionStatus.OK, actionStatus);
87 public void notifyService_couldNotResolveEnvironment() throws Exception {
88 when(environmentsEngine.getEnvironments()).thenReturn(envs);
89 ActionStatus actionStatus = testInstance.notifyService(DISTRIBUTION_ID, new Service(),
90 new NotificationDataImpl(), "someNonExisitngEnv", USER_ID, MODIFIER);
91 assertEquals(ActionStatus.DISTRIBUTION_ENVIRONMENT_NOT_AVAILABLE, actionStatus);
92 verifyZeroInteractions(distributionNotificationSender);
96 public void notifyService_failedWhileSendingNotification() throws Exception {
97 NotificationDataImpl notificationData = new NotificationDataImpl();
98 Service service = new Service();
99 when(environmentsEngine.getEnvironmentById(ENV_ID)).thenReturn(envs.get(ENV_ID));
100 when(distributionEngineConfigurationMock.getConfigurationMock().getDistributionNotifTopicName())
101 .thenReturn("topic");
102 when(distributionNotificationSender.sendNotification(eq("topic-ENVID"), eq(DISTRIBUTION_ID),
103 any(EnvironmentMessageBusData.class), any(NotificationDataImpl.class), any(Service.class), eq(USER_ID),
104 eq(MODIFIER))).thenReturn(ActionStatus.GENERAL_ERROR);
105 ActionStatus actionStatus = testInstance.notifyService(DISTRIBUTION_ID, service, notificationData, ENV_ID,
107 assertEquals(ActionStatus.GENERAL_ERROR, actionStatus);
110 private Map<String, OperationalEnvironmentEntry> getEnvs(String... environmentIds) {
111 Set<String> uebAddress = new HashSet<>();
112 uebAddress.add("someAddress");
113 return Stream.of(environmentIds)
114 .map(id -> new OperationalEnvironmentBuilder().setEnvId(id).setDmaapUebAddress(uebAddress).build())
115 .collect(Collectors.toMap(OperationalEnvironmentEntry::getEnvironmentId, Function.identity()));
119 public void testIsActive() throws Exception {
121 testInstance.isActive();
125 public void testInitDisabled() throws Exception {
127 Deencapsulation.invoke(testInstance, "init");
131 public void testInitNotValidConfig() throws Exception {
132 DistributionEngine testSubject;
135 Mockito.when(distributionEngineConfigurationMock.getConfigurationMock().isStartDistributionEngine())
137 Mockito.when(distributionEngineConfigurationMock.configurationMock.getDistributionStatusTopic())
138 .thenReturn(new DistributionStatusTopicConfig());
139 Deencapsulation.invoke(testInstance, "init");
143 public void testInit() throws Exception {
144 DistributionEngine testSubject;
147 Mockito.when(distributionEngineConfigurationMock.getConfigurationMock().isStartDistributionEngine())
149 DistributionStatusTopicConfig value = new DistributionStatusTopicConfig();
150 value.setConsumerId("mock");
151 value.setConsumerGroup("mock");
152 value.setFetchTimeSec(0);
153 value.setPollingIntervalSec(0);
154 LinkedList<String> value2 = new LinkedList<>();
155 value2.add("uebsb91kcdc.it.att.com:3904");
156 value2.add("uebsb92kcdc.it.att.com:3904");
157 Mockito.when(distributionEngineConfigurationMock.configurationMock.getUebServers()).thenReturn(value2);
158 Mockito.when(distributionEngineConfigurationMock.configurationMock.getEnvironments()).thenReturn(value2);
159 Mockito.when(distributionEngineConfigurationMock.configurationMock.getUebPublicKey()).thenReturn("mock");
160 Mockito.when(distributionEngineConfigurationMock.configurationMock.getUebSecretKey()).thenReturn("mock");
161 Mockito.when(distributionEngineConfigurationMock.configurationMock.getDistributionNotifTopicName())
163 Mockito.when(distributionEngineConfigurationMock.configurationMock.getDistributionStatusTopicName())
165 Mockito.when(distributionEngineConfigurationMock.configurationMock.getCreateTopic())
166 .thenReturn(new CreateTopicConfig());
167 Mockito.when(distributionEngineConfigurationMock.configurationMock.getDistributionStatusTopic())
169 Deencapsulation.invoke(testInstance, "init");
173 public void testShutdown() throws Exception {
174 DistributionEngine testSubject;
177 testInstance.shutdown();
181 public void testValidateConfiguration() throws Exception {
182 DistributionEngineConfiguration deConfiguration = new DistributionEngineConfiguration();
183 deConfiguration.setDistributionStatusTopic((new DistributionStatusTopicConfig()));
187 result = Deencapsulation.invoke(testInstance, "validateConfiguration", deConfiguration);
191 public void testIsValidServers() throws Exception {
192 List<String> uebServers = null;
193 String methodName = "";
194 String paramName = "";
199 result = Deencapsulation.invoke(testInstance, "isValidServers",
200 new Object[] { List.class, methodName, paramName });
201 Assert.assertEquals(false, result);
205 public void testIsValidFqdn() throws Exception {
206 String serverFqdn = "";
210 result = Deencapsulation.invoke(testInstance, "isValidFqdn", new Object[] { serverFqdn });
214 public void testIsValidParam() throws Exception {
215 String paramValue = "";
216 String methodName = "";
217 String paramName = "";
221 result = Deencapsulation.invoke(testInstance, "isValidParam",
222 new Object[] { paramValue, methodName, paramName });
226 public void testIsValidParam_1() throws Exception {
227 List<String> paramValue = null;
228 String methodName = "";
229 String paramName = "";
233 result = Deencapsulation.invoke(testInstance, "isValidParam",
234 new Object[] { List.class, methodName, paramName });
238 public void testIsValidObject() throws Exception {
239 Object paramValue = null;
240 String methodName = "";
241 String paramName = "";
246 result = Deencapsulation.invoke(testInstance, "isValidObject",
247 new Object[] { Object.class, methodName, paramName });
248 Assert.assertEquals(false, result);
252 public void testGetEnvironmentErrorDescription() throws Exception {
253 StorageOperationStatus status = null;
257 result = Deencapsulation.invoke(testInstance, "getEnvironmentErrorDescription",
258 StorageOperationStatus.DISTR_ENVIRONMENT_NOT_AVAILABLE);
259 result = Deencapsulation.invoke(testInstance, "getEnvironmentErrorDescription",
260 StorageOperationStatus.DISTR_ENVIRONMENT_NOT_FOUND);
261 result = Deencapsulation.invoke(testInstance, "getEnvironmentErrorDescription",
262 StorageOperationStatus.DISTR_ENVIRONMENT_SENT_IS_INVALID);
263 result = Deencapsulation.invoke(testInstance, "getEnvironmentErrorDescription",
264 StorageOperationStatus.ARTIFACT_NOT_FOUND);
268 public void testIsEnvironmentAvailable() throws Exception {
269 DistributionEngine testSubject;
271 StorageOperationStatus result;
275 result = testInstance.isEnvironmentAvailable(envName);
276 Assert.assertEquals(StorageOperationStatus.DISTR_ENVIRONMENT_SENT_IS_INVALID, result);
280 result = testInstance.isEnvironmentAvailable(envName);
281 Assert.assertEquals(StorageOperationStatus.DISTR_ENVIRONMENT_NOT_FOUND, result);
285 public void testIsEnvironmentAvailable_1() throws Exception {
286 DistributionEngine testSubject;
287 StorageOperationStatus result;
289 LinkedList<String> value = new LinkedList<>();
291 Mockito.when(distributionEngineConfigurationMock.configurationMock.getEnvironments()).thenReturn(value);
292 testInstance.isEnvironmentAvailable();
296 public void testBuildTopicName() throws Exception {
301 result = Deencapsulation.invoke(testInstance, "buildTopicName", new Object[] { envName });
305 public void testIsReadyForDistribution() throws Exception {
306 Service service = null;
308 StorageOperationStatus result;
311 result = testInstance.isReadyForDistribution(service, envName);
315 public void testVerifyServiceHasDeploymentArtifactsTrue() throws Exception {
316 Service service = new Service();
317 StorageOperationStatus result;
320 when(serviceDistributionArtifactsBuilder
321 .verifyServiceContainsDeploymentArtifacts(ArgumentMatchers.any(Service.class))).thenReturn(true);
322 result = testInstance.verifyServiceHasDeploymentArtifacts(service);
326 public void testVerifyServiceHasDeploymentArtifactsFalse() throws Exception {
327 Service service = new Service();
328 StorageOperationStatus result;
331 when(serviceDistributionArtifactsBuilder
332 .verifyServiceContainsDeploymentArtifacts(ArgumentMatchers.any(Service.class))).thenReturn(false);
333 result = testInstance.verifyServiceHasDeploymentArtifacts(service);
337 public void testGetEnvironmentById() throws Exception {
338 DistributionEngine testSubject;
340 OperationalEnvironmentEntry result;
343 when(environmentsEngine.getEnvironmentById(ArgumentMatchers.anyString()))
344 .thenReturn(new OperationalEnvironmentEntry());
345 result = testInstance.getEnvironmentById(opEnvId);
349 public void testBuildServiceForDistribution() throws Exception {
350 Service service = new Service();
351 String distributionId = "";
352 String workloadContext = "";
353 INotificationData result;
356 // testSubject = createTestSubject();
357 when(serviceDistributionArtifactsBuilder.buildResourceInstanceForDistribution(ArgumentMatchers.any(),
358 ArgumentMatchers.any(), ArgumentMatchers.any())).thenReturn(new NotificationDataImpl());
359 result = testInstance.buildServiceForDistribution(service, distributionId, workloadContext);