1 package org.openecomp.sdc.be.components.distribution.engine;
3 import mockit.Deencapsulation;
4 import java.util.LinkedList;
5 import org.junit.Assert;
6 import org.junit.Before;
8 import org.mockito.ArgumentMatchers;
9 import org.mockito.InjectMocks;
10 import org.mockito.Mock;
11 import org.mockito.Mockito;
12 import org.mockito.MockitoAnnotations;
13 import org.openecomp.sdc.be.components.BeConfDependentTest;
14 import org.openecomp.sdc.be.components.utils.OperationalEnvironmentBuilder;
15 import org.openecomp.sdc.be.config.DistributionEngineConfiguration;
16 import org.openecomp.sdc.be.config.DistributionEngineConfiguration.CreateTopicConfig;
17 import org.openecomp.sdc.be.config.DistributionEngineConfiguration.DistributionStatusTopicConfig;
18 import org.openecomp.sdc.be.dao.api.ActionStatus;
19 import org.openecomp.sdc.be.model.Service;
20 import org.openecomp.sdc.be.model.User;
21 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
22 import org.openecomp.sdc.be.resources.data.OperationalEnvironmentEntry;
24 import java.util.HashSet;
25 import java.util.List;
28 import java.util.function.Function;
29 import java.util.stream.Collectors;
30 import java.util.stream.Stream;
32 import static org.junit.Assert.assertEquals;
33 import static org.mockito.ArgumentMatchers.any;
34 import static org.mockito.ArgumentMatchers.eq;
35 import static org.mockito.Mockito.verifyZeroInteractions;
36 import static org.mockito.Mockito.when;
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;
64 private User modifier = new User();
67 public void setUpMock() throws Exception {
68 MockitoAnnotations.initMocks(this);
69 distributionEngineConfigurationMock = new DummyDistributionConfigurationManager();
70 envs = getEnvs(ENV_ID);
71 modifier.setUserId(USER_ID);
72 modifier.setFirstName(MODIFIER);
73 modifier.setLastName(MODIFIER);
77 public void notifyService() throws Exception {
78 NotificationDataImpl notificationData = new NotificationDataImpl();
79 Service service = new Service();
80 when(environmentsEngine.getEnvironmentById(ENV_ID)).thenReturn(envs.get(ENV_ID));
81 when(distributionEngineConfigurationMock.getConfigurationMock().getDistributionNotifTopicName()).thenReturn("topic");
82 when(distributionNotificationSender.sendNotification(eq("topic-ENVID"), eq(DISTRIBUTION_ID), any(EnvironmentMessageBusData.class),
83 any(NotificationDataImpl.class), any(Service.class), any(User.class)))
84 .thenReturn(ActionStatus.OK);
85 ActionStatus actionStatus = testInstance.notifyService(DISTRIBUTION_ID, service, notificationData, ENV_ID, modifier);
86 assertEquals(ActionStatus.OK, actionStatus);
90 public void notifyService_couldNotResolveEnvironment() throws Exception {
91 when(environmentsEngine.getEnvironments()).thenReturn(envs);
92 ActionStatus actionStatus = testInstance.notifyService(DISTRIBUTION_ID, new Service(), new NotificationDataImpl(), "someNonExisitngEnv", modifier);
93 assertEquals(ActionStatus.DISTRIBUTION_ENVIRONMENT_NOT_AVAILABLE, actionStatus);
94 verifyZeroInteractions(distributionNotificationSender);
98 public void notifyService_failedWhileSendingNotification() throws Exception {
99 NotificationDataImpl notificationData = new NotificationDataImpl();
100 Service service = new Service();
101 when(environmentsEngine.getEnvironmentById(ENV_ID)).thenReturn(envs.get(ENV_ID));
102 when(distributionEngineConfigurationMock.getConfigurationMock().getDistributionNotifTopicName()).thenReturn("topic");
103 when(distributionNotificationSender.sendNotification(eq("topic-ENVID"), eq(DISTRIBUTION_ID), any(EnvironmentMessageBusData.class),
104 any(NotificationDataImpl.class), any(Service.class), any(User.class)))
105 .thenReturn(ActionStatus.GENERAL_ERROR);
106 ActionStatus actionStatus = testInstance.notifyService(DISTRIBUTION_ID, service, notificationData, ENV_ID, modifier);
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 });
307 public void testGetEnvironmentById() throws Exception {
308 DistributionEngine testSubject;
310 OperationalEnvironmentEntry result;
313 when(environmentsEngine.getEnvironmentById(ArgumentMatchers.anyString()))
314 .thenReturn(new OperationalEnvironmentEntry());
315 result = testInstance.getEnvironmentById(opEnvId);
319 public void testBuildServiceForDistribution() throws Exception {
320 Service service = new Service();
321 String distributionId = "";
322 String workloadContext = "";
323 INotificationData result;
326 // testSubject = createTestSubject();
327 when(serviceDistributionArtifactsBuilder.buildResourceInstanceForDistribution(ArgumentMatchers.any(),
328 ArgumentMatchers.any(), ArgumentMatchers.any())).thenReturn(new NotificationDataImpl());
329 result = testInstance.buildServiceForDistribution(service, distributionId, workloadContext);