diff options
3 files changed, 205 insertions, 13 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilder.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilder.java new file mode 100644 index 0000000000..54047b497b --- /dev/null +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilder.java @@ -0,0 +1,109 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Samsung Electronics Co., Ltd. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.openecomp.sdc.be.components.distribution.engine; + +import org.openecomp.sdc.be.model.Service; +import org.openecomp.sdc.be.model.User; + +public class AuditDistributionNotificationBuilder { + + private String topicName; + private String distributionId; + private CambriaErrorResponse status; + private Service service; + private String envId; + private User modifier; + private String workloadContext; + private String tenant; + + public AuditDistributionNotificationBuilder() {} + + public String getTopicName() { + return topicName; + } + + public AuditDistributionNotificationBuilder setTopicName(String topicName) { + this.topicName = topicName; + return this; + } + + public String getDistributionId() { + return distributionId; + } + + public AuditDistributionNotificationBuilder setDistributionId(String distributionId) { + this.distributionId = distributionId; + return this; + } + + public CambriaErrorResponse getStatus() { + return status; + } + + public AuditDistributionNotificationBuilder setStatus(CambriaErrorResponse status) { + this.status = status; + return this; + } + + public Service getService() { + return service; + } + + public AuditDistributionNotificationBuilder setService(Service service) { + this.service = service; + return this; + } + + public String getEnvId() { + return envId; + } + + public AuditDistributionNotificationBuilder setEnvId(String envId) { + this.envId = envId; + return this; + } + + public User getModifier() { + return modifier; + } + + public AuditDistributionNotificationBuilder setModifier(User modifier) { + this.modifier = modifier; + return this; + } + + public String getWorkloadContext() { + return workloadContext; + } + + public AuditDistributionNotificationBuilder setWorkloadContext(String workloadContext) { + this.workloadContext = workloadContext; + return this; + } + + public String getTenant() { + return tenant; + } + + public AuditDistributionNotificationBuilder setTenant(String tenant) { + this.tenant = tenant; + return this; + } +} diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/DistributionNotificationSender.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/DistributionNotificationSender.java index 80518c2da4..1c6afe5a98 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/DistributionNotificationSender.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/DistributionNotificationSender.java @@ -40,29 +40,47 @@ public class DistributionNotificationSender { @javax.annotation.Resource protected ComponentsUtils componentUtils; private CambriaHandler cambriaHandler = new CambriaHandler(); - private DistributionEngineConfiguration deConfiguration = ConfigurationManager.getConfigurationManager().getDistributionEngineConfiguration(); + private DistributionEngineConfiguration deConfiguration = + ConfigurationManager.getConfigurationManager().getDistributionEngineConfiguration(); - public ActionStatus sendNotification(String topicName, String distributionId, EnvironmentMessageBusData messageBusData, INotificationData notificationData, Service service, User modifier) { + public ActionStatus sendNotification(String topicName, String distributionId, + EnvironmentMessageBusData messageBusData, INotificationData notificationData, Service service, + User modifier) { long startTime = System.currentTimeMillis(); - CambriaErrorResponse status = cambriaHandler.sendNotificationAndClose(topicName, messageBusData.getUebPublicKey(), messageBusData.getUebPrivateKey(), messageBusData.getDmaaPuebEndpoints(), notificationData, - deConfiguration.getDistributionNotificationTopic().getMaxWaitingAfterSendingSeconds()); - logger.info("After publishing service {} of version {}. Status is {}", service.getName(), service.getVersion(), status.getHttpCode()); - auditDistributionNotification(topicName, distributionId, status, service, messageBusData.getEnvId(), modifier, notificationData.getWorkloadContext(), messageBusData.getTenant()); + CambriaErrorResponse status = + cambriaHandler.sendNotificationAndClose(topicName, messageBusData.getUebPublicKey(), + messageBusData.getUebPrivateKey(), messageBusData.getDmaaPuebEndpoints(), notificationData, + deConfiguration.getDistributionNotificationTopic().getMaxWaitingAfterSendingSeconds()); + + logger.info("After publishing service {} of version {}. Status is {}", service.getName(), service.getVersion(), + status.getHttpCode()); + + auditDistributionNotification(new AuditDistributionNotificationBuilder().setTopicName(topicName) + .setDistributionId(distributionId).setStatus(status).setService(service) + .setEnvId(messageBusData.getEnvId()).setModifier(modifier) + .setWorkloadContext(notificationData.getWorkloadContext()).setTenant(messageBusData.getTenant())); + long endTime = System.currentTimeMillis(); - logger.debug("After building and publishing artifacts object. Total took {} milliseconds", (endTime - startTime)); + + if (logger.isDebugEnabled()) { + logger.debug("After building and publishing artifacts object. Total took {} milliseconds", + endTime - startTime); + } + return convertCambriaResponse(status); } - private void auditDistributionNotification(String topicName, String distributionId, CambriaErrorResponse status, Service service, String envId, User modifier - , String workloadContext, String tenant) { + private void auditDistributionNotification(AuditDistributionNotificationBuilder builder) { if (this.componentUtils != null) { - Integer httpCode = status.getHttpCode(); + Integer httpCode = builder.getStatus().getHttpCode(); String httpCodeStr = String.valueOf(httpCode); - String desc = getDescriptionFromErrorResponse(status); + String desc = getDescriptionFromErrorResponse(builder.getStatus()); - this.componentUtils.auditDistributionNotification(service.getUUID(), service.getName(), "Service", service.getVersion(), modifier, envId, service.getLifecycleState().name(), topicName, - distributionId, desc, httpCodeStr, workloadContext, tenant); + this.componentUtils.auditDistributionNotification(builder.getService().getUUID(), + builder.getService().getName(), "Service", builder.getService().getVersion(), builder.getModifier(), + builder.getEnvId(), builder.getService().getLifecycleState().name(), builder.getTopicName(), + builder.getDistributionId(), desc, httpCodeStr, builder.getWorkloadContext(), builder.getTenant()); } } diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilderTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilderTest.java new file mode 100644 index 0000000000..f3d901c456 --- /dev/null +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/distribution/engine/AuditDistributionNotificationBuilderTest.java @@ -0,0 +1,65 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Samsung Electronics Co., Ltd. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.openecomp.sdc.be.components.distribution.engine; + +import static org.mockito.Mockito.RETURNS_DEFAULTS; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import org.junit.Test; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; +import org.openecomp.sdc.be.model.Service; +import org.openecomp.sdc.be.model.User; + +public class AuditDistributionNotificationBuilderTest { + + + public class SelfReturningAnswer implements Answer<Object>{ + + public Object answer(InvocationOnMock invocation) throws Throwable { + Object mock = invocation.getMock(); + if( invocation.getMethod().getReturnType().isInstance( mock )){ + return mock; + } + else{ + return RETURNS_DEFAULTS.answer(invocation); + } + } + } + + + private CambriaErrorResponse status; + private Service service; + private User modifier; + + @Test + public void testBuilder() { + + AuditDistributionNotificationBuilder mockBuilder = + mock(AuditDistributionNotificationBuilder.class, new SelfReturningAnswer()); + + when(mockBuilder.setTopicName("topicName").setDistributionId("distributionId").setStatus(status) + .setService(service).setEnvId("envId").setModifier(modifier).setWorkloadContext("workloadContext") + .setTenant("tenant")).thenReturn(mockBuilder); + assert mockBuilder.setTopicName("topicName").setDistributionId("distributionId").setStatus(status) + .setService(service).setEnvId("envId").setModifier(modifier).setWorkloadContext("workloadContext") + .setTenant("tenant") == mockBuilder; + } +} |