2 * ===============================LICENSE_START======================================
\r
4 * ================================================================================
\r
5 * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ============================LICENSE_END===========================================
\r
21 package org.openecomp.dcae.apod.analytics.cdap.tca.worker;
\r
23 import co.cask.cdap.api.TxRunnable;
\r
24 import co.cask.cdap.api.metrics.Metrics;
\r
25 import co.cask.cdap.api.worker.WorkerContext;
\r
26 import org.junit.Before;
\r
27 import org.junit.Test;
\r
28 import org.mockito.ArgumentMatchers;
\r
29 import org.openecomp.dcae.apod.analytics.cdap.common.CDAPMetricsConstants;
\r
30 import org.openecomp.dcae.apod.analytics.cdap.common.persistance.tca.TCAVESAlertEntity;
\r
31 import org.openecomp.dcae.apod.analytics.cdap.tca.BaseAnalyticsCDAPTCAUnitTest;
\r
32 import org.openecomp.dcae.apod.analytics.common.AnalyticsConstants;
\r
33 import org.openecomp.dcae.apod.analytics.dmaap.domain.response.DMaaPMRPublisherResponse;
\r
34 import org.openecomp.dcae.apod.analytics.dmaap.service.publisher.DMaaPMRPublisher;
\r
35 import org.quartz.JobDataMap;
\r
36 import org.quartz.JobExecutionContext;
\r
38 import java.util.HashMap;
\r
39 import java.util.Map;
\r
40 import java.util.Set;
\r
42 import static org.mockito.ArgumentMatchers.any;
\r
43 import static org.mockito.ArgumentMatchers.anyInt;
\r
44 import static org.mockito.ArgumentMatchers.anyString;
\r
45 import static org.mockito.ArgumentMatchers.eq;
\r
46 import static org.mockito.Mockito.doNothing;
\r
47 import static org.mockito.Mockito.mock;
\r
48 import static org.mockito.Mockito.times;
\r
49 import static org.mockito.Mockito.verify;
\r
50 import static org.mockito.Mockito.when;
\r
53 * @author Rajiv Singla . Creation Date: 12/20/2016.
\r
55 public class TCADMaaPMRPublisherJobTest extends BaseAnalyticsCDAPTCAUnitTest {
\r
57 private JobExecutionContext jobExecutionContext;
\r
58 private TCADMaaPMRPublisherJob publisherJob;
\r
59 private JobDataMap jobDataMap;
\r
60 private WorkerContext workerContext;
\r
61 private DMaaPMRPublisher publisher;
\r
62 private Metrics metrics;
\r
64 private class TCATestDMaaPMRPublisherJob extends TCADMaaPMRPublisherJob {
\r
66 private Map<String, TCAVESAlertEntity> alertEntityMap;
\r
68 public TCATestDMaaPMRPublisherJob(Map<String, TCAVESAlertEntity> alertEntityMap) {
\r
69 this.alertEntityMap = alertEntityMap;
\r
73 protected Map<String, TCAVESAlertEntity> getNewAlertsMap(
\r
74 String cdapAlertsTableName, WorkerContext workerContext) {
\r
75 return alertEntityMap;
\r
79 protected void deleteAlertsByKey(String cdapAlertsTableName, WorkerContext workerContext,
\r
80 Set<String> rowKeys, Metrics metrics) {
\r
86 public void before() throws Exception {
\r
88 jobExecutionContext = mock(JobExecutionContext.class);
\r
89 workerContext = mock(WorkerContext.class);
\r
91 metrics = mock(Metrics.class);
\r
92 doNothing().when(metrics).count(anyString(), anyInt());
\r
93 publisher = mock(DMaaPMRPublisher.class);
\r
95 jobDataMap = mock(JobDataMap.class);
\r
96 when(jobDataMap.getString(eq(AnalyticsConstants.CDAP_ALERTS_TABLE_VARIABLE_NAME))).thenReturn
\r
97 ("testAlertTableName");
\r
98 when(jobDataMap.get(eq(AnalyticsConstants.WORKER_CONTEXT_VARIABLE_NAME))).thenReturn(workerContext);
\r
99 when(jobDataMap.get(eq(AnalyticsConstants.DMAAP_PUBLISHER_VARIABLE_NAME))).thenReturn(publisher);
\r
100 when(jobDataMap.get(AnalyticsConstants.DMAAP_METRICS_VARIABLE_NAME)).thenReturn(metrics);
\r
101 when(jobExecutionContext.getMergedJobDataMap()).thenReturn(jobDataMap);
\r
104 publisherJob = new TCADMaaPMRPublisherJob();
\r
108 public void testExecuteWhenNoAlertsFoundInAlertsTable() throws Exception {
\r
109 doNothing().when(workerContext).execute(any(TxRunnable.class));
\r
110 publisherJob.execute(jobExecutionContext);
\r
111 verify(metrics, times(1))
\r
112 .count(eq(CDAPMetricsConstants.TCA_PUBLISHER_NO_NEW_ALERTS_LOOKUP_METRIC), eq(1));
\r
116 public void testExecuteWhenAlertsWereFoundInAlertsTable() throws Exception {
\r
118 final DMaaPMRPublisherResponse publisherResponse = mock(DMaaPMRPublisherResponse.class);
\r
119 when(publisherResponse.getResponseCode()).thenReturn(200);
\r
120 when(publisherResponse.getResponseMessage()).thenReturn("success");
\r
121 when(publisherResponse.getPendingMessagesCount()).thenReturn(0);
\r
122 when(publisher.publish(ArgumentMatchers.<String>anyList())).thenReturn(publisherResponse);
\r
124 final TCAVESAlertEntity tcavesAlertEntity = mock(TCAVESAlertEntity.class);
\r
125 when(tcavesAlertEntity.getAlertMessage()).thenReturn("testAlertMessage");
\r
126 Map<String, TCAVESAlertEntity> alertEntityMap = new HashMap<>();
\r
127 alertEntityMap.put("key1", tcavesAlertEntity);
\r
128 final TCATestDMaaPMRPublisherJob testPublisherJob = new TCATestDMaaPMRPublisherJob(alertEntityMap);
\r
129 testPublisherJob.execute(jobExecutionContext);
\r
130 verify(metrics, times(1))
\r
131 .count(eq(CDAPMetricsConstants.TCA_PUBLISHER_NEW_ALERTS_METRIC), eq(1));
\r
132 verify(metrics, times(1))
\r
133 .count(eq(CDAPMetricsConstants.TCA_PUBLISHER_SUCCESSFUL_DMAAP_RESPONSE_METRIC), eq(1));
\r
137 public void testExecuteWhenAlertsWereFoundButPublisherReturnedNon200ResponseCode() throws Exception {
\r
139 final DMaaPMRPublisherResponse publisherResponse = mock(DMaaPMRPublisherResponse.class);
\r
140 when(publisherResponse.getResponseCode()).thenReturn(500);
\r
141 when(publisherResponse.getResponseMessage()).thenReturn("failed");
\r
142 when(publisherResponse.getPendingMessagesCount()).thenReturn(0);
\r
143 when(publisher.publish(ArgumentMatchers.<String>anyList())).thenReturn(publisherResponse);
\r
145 final TCAVESAlertEntity tcavesAlertEntity = mock(TCAVESAlertEntity.class);
\r
146 when(tcavesAlertEntity.getAlertMessage()).thenReturn("testAlertMessage");
\r
147 Map<String, TCAVESAlertEntity> alertEntityMap = new HashMap<>();
\r
148 alertEntityMap.put("key1", tcavesAlertEntity);
\r
149 final TCATestDMaaPMRPublisherJob testPublisherJob = new TCATestDMaaPMRPublisherJob(alertEntityMap);
\r
150 testPublisherJob.execute(jobExecutionContext);
\r
151 verify(metrics, times(1))
\r
152 .count(eq(CDAPMetricsConstants.TCA_PUBLISHER_NEW_ALERTS_METRIC), eq(1));
\r
153 verify(metrics, times(1))
\r
154 .count(eq(CDAPMetricsConstants.TCA_PUBLISHER_UNSUCCESSFUL_DMAAP_RESPONSE_METRIC), eq(1));
\r