From 81edfdbaffd9c450f37d2418bb444473ee3bbe77 Mon Sep 17 00:00:00 2001 From: tangpeng Date: Fri, 22 Feb 2019 17:47:23 +0800 Subject: [PATCH] Added some codes for UT Change-Id: Iaf47ab320511538618c031913dc349679b4ed6b8 Issue-ID: HOLMES-203 Signed-off-by: tangpeng --- .../common/dcae/entity/DcaeConfigurations.java | 1 - .../org/onap/holmes/common/dmaap/DmaapService.java | 16 +--- .../dcae/utils/DcaeConfigurationParserTest.java | 20 +++++ .../onap/holmes/common/dmaap/DmaapServiceTest.java | 100 ++++++++++++++++++++- 4 files changed, 120 insertions(+), 17 deletions(-) diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/dcae/entity/DcaeConfigurations.java b/holmes-actions/src/main/java/org/onap/holmes/common/dcae/entity/DcaeConfigurations.java index a8045ec..4b90dd7 100644 --- a/holmes-actions/src/main/java/org/onap/holmes/common/dcae/entity/DcaeConfigurations.java +++ b/holmes-actions/src/main/java/org/onap/holmes/common/dcae/entity/DcaeConfigurations.java @@ -21,7 +21,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; -import lombok.NoArgsConstructor; public class DcaeConfigurations extends HashMap{ diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/dmaap/DmaapService.java b/holmes-actions/src/main/java/org/onap/holmes/common/dmaap/DmaapService.java index e3f6e58..ba52262 100644 --- a/holmes-actions/src/main/java/org/onap/holmes/common/dmaap/DmaapService.java +++ b/holmes-actions/src/main/java/org/onap/holmes/common/dmaap/DmaapService.java @@ -70,19 +70,9 @@ public class DmaapService { if (rootAlarm.getAlarmIsCleared() == PolicyMassgeConstant.POLICY_MESSAGE_ONSET) { enrichVnfInfo(vmEntity, childAlarm, policyMsg); policyMsg.setClosedLoopEventStatus(EVENT_STATUS.ONSET); - try { - policyMsg.getAai().put("vserver.in-maint", vmEntity.getInMaint()); - } catch (Exception e) { - log.error("Failed to parse the field \"in-maint\". A boolean string (\"true\"/\"false\")" - + " is expected but the actual value is " + vmEntity.getInMaint() + ".", e); - } - try { - policyMsg.getAai().put("vserver.is-closed-loop-disabled", + policyMsg.getAai().put("vserver.in-maint", vmEntity.getInMaint()); + policyMsg.getAai().put("vserver.is-closed-loop-disabled", vmEntity.getClosedLoopDisable()); - } catch (Exception e) { - log.error("Failed to parse the field \"is-closed-loop-disabled\". A boolean string (\"true\"/\"false\")" - + " is expected but the actual value is " + vmEntity.getClosedLoopDisable() + ".", e); - } policyMsg.getAai().put("vserver.prov-status", vmEntity.getProvStatus()); policyMsg.getAai().put("vserver.resource-version", vmEntity.getResourceVersion()); } else { @@ -196,7 +186,7 @@ public class DmaapService { break; } } - log.info("Clear alarm, requestId deleted successful"); + log.info("An alarm is cleared and the corresponding requestId is deleted successfully"); } } } diff --git a/holmes-actions/src/test/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParserTest.java b/holmes-actions/src/test/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParserTest.java index 827220c..c441942 100644 --- a/holmes-actions/src/test/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParserTest.java +++ b/holmes-actions/src/test/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParserTest.java @@ -27,12 +27,19 @@ import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; + +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.onap.holmes.common.dcae.entity.DcaeConfigurations; import org.onap.holmes.common.dcae.entity.SecurityInfo; +import org.onap.holmes.common.exception.CorrelationException; public class DcaeConfigurationParserTest { + @Rule + public ExpectedException thrown = ExpectedException.none(); + @Test public void parse() throws Exception { DcaeConfigurations obj = DcaeConfigurationParser.parse(readConfigurationsFromFile("dcae.config.json")); @@ -43,6 +50,19 @@ public class DcaeConfigurationParserTest { assertThat(((SecurityInfo) obj.getPubSecInfo("sec_measurement")).getDmaapInfo().getLocation(), equalTo("mtl5")); } + @Test + public void parse_with_empty_contents_excption() throws CorrelationException { + thrown.expect(CorrelationException.class); + thrown.expectMessage("Can not resolve configurations from DCAE. The configuration string is empty."); + DcaeConfigurationParser.parse(""); + } + + @Test + public void parse_with_illegal_dcae_response_excption() throws CorrelationException { + thrown.expect(CorrelationException.class); + DcaeConfigurationParser.parse("This is an ordinary string."); + } + private String readConfigurationsFromFile(String fileName) throws URISyntaxException, FileNotFoundException { URL url = DcaeConfigurationParserTest.class.getClassLoader().getResource(fileName); File configFile = new File(new URI(url.toString()).getPath()); diff --git a/holmes-actions/src/test/java/org/onap/holmes/common/dmaap/DmaapServiceTest.java b/holmes-actions/src/test/java/org/onap/holmes/common/dmaap/DmaapServiceTest.java index b47a16f..6494cd8 100644 --- a/holmes-actions/src/test/java/org/onap/holmes/common/dmaap/DmaapServiceTest.java +++ b/holmes-actions/src/test/java/org/onap/holmes/common/dmaap/DmaapServiceTest.java @@ -18,11 +18,18 @@ package org.onap.holmes.common.dmaap; import static org.easymock.EasyMock.anyObject; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.notNullValue; +import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; +import java.io.*; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; import java.util.ArrayList; import java.util.List; + +import org.easymock.EasyMock; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -34,6 +41,8 @@ import org.onap.holmes.common.aai.entity.RelationshipList.RelationshipData; import org.onap.holmes.common.aai.entity.VmEntity; import org.onap.holmes.common.aai.entity.VnfEntity; import org.onap.holmes.common.api.stat.VesAlarm; +import org.onap.holmes.common.dcae.DcaeConfigurationsCache; +import org.onap.holmes.common.dcae.utils.DcaeConfigurationParser; import org.onap.holmes.common.dmaap.entity.PolicyMsg; import org.onap.holmes.common.dmaap.entity.PolicyMsg.EVENT_STATUS; import org.onap.holmes.common.exception.CorrelationException; @@ -183,7 +192,7 @@ public class DmaapServiceTest { } @Test - public void testDmaapService_getEnrichedPolicyMsg_ok() throws Exception { + public void testDmaapService_getEnrichedPolicyMsg_onset() throws Exception { PowerMock.resetAll(); VmEntity vmEntity = new VmEntity(); vmEntity.setInMaint(false); @@ -204,9 +213,94 @@ public class DmaapServiceTest { .invokeMethod(dmaapService, "getEnrichedPolicyMsg", vmEntity, vesAlarm, vesAlarm, "loopName"); PowerMock.verifyAll(); - assertThat(actual.getClosedLoopControlName(), equalTo(null)); + assertThat(actual.getClosedLoopControlName(), nullValue()); assertThat(actual.getAai().get("vserver.prov-status"), equalTo("prov")); - assertThat(actual.getAai().get("vserver.vserver-name2") == null, equalTo(true)); + assertThat(actual.getAai().get("vserver.vserver-name2"), nullValue()); assertThat(actual.getAai().get("generic-vnf.service-instance-id"), equalTo("")); } + + @Test + public void testDmaapService_getEnrichedPolicyMsg_abated() throws Exception { + PowerMock.resetAll(); + VmEntity vmEntity = new VmEntity(); + vmEntity.setInMaint(false); + vmEntity.setClosedLoopDisable(true); + vmEntity.setProvStatus("prov"); + vmEntity.setResourceVersion("kkkk"); + VesAlarm vesAlarm = new VesAlarm(); + vesAlarm.setEventId("11111"); + vesAlarm.setEventName("3333"); + vesAlarm.setSourceId("111"); + vesAlarm.setStartEpochMicrosec(11111L); + vesAlarm.setLastEpochMicrosec(21111L); + vesAlarm.setAlarmIsCleared(PolicyMassgeConstant.POLICY_MESSAGE_ABATED); + + PowerMock.expectPrivate(dmaapService, "getVnfEntity", anyObject(String.class), + anyObject(String.class)).andReturn(null).anyTimes(); + + PowerMock.replayAll(); + PolicyMsg actual = Whitebox + .invokeMethod(dmaapService, "getEnrichedPolicyMsg", vmEntity, vesAlarm, vesAlarm, "loopName"); + PowerMock.verifyAll(); + + assertThat(actual.getClosedLoopControlName(), nullValue()); + assertThat(actual.getAai().get("vserver.prov-status"), nullValue()); + assertThat(actual.getAai().get("vserver.vserver-name2"), nullValue()); + assertThat(actual.getAai().get("generic-vnf.service-instance-id"), nullValue()); + } + + @Test + public void testPublishPolicyMsg_onset() throws Exception { + PowerMock.resetAll(); + Publisher publisher = PowerMock.createPartialMock(Publisher.class, "publish", PolicyMsg.class); + PolicyMsg policyMsg = new PolicyMsg(); + policyMsg.setClosedLoopEventStatus(EVENT_STATUS.ONSET); + PowerMock.expectNew(Publisher.class).andReturn(publisher); + EasyMock.expect(publisher.publish(policyMsg)).andReturn(true); + + DcaeConfigurationsCache.setDcaeConfigurations( + DcaeConfigurationParser.parse(readConfigurationsFromFile("dcae.config.json"))); + + PowerMock.replayAll(); + dmaapService.publishPolicyMsg(policyMsg, "sec_fault_unsecure"); + PowerMock.verifyAll(); + + } + + @Test + public void testPublishPolicyMsg_abated() throws Exception { + PowerMock.resetAll(); + Publisher publisher = PowerMock.createPartialMock(Publisher.class, "publish", PolicyMsg.class); + PolicyMsg policyMsg = new PolicyMsg(); + policyMsg.setClosedLoopEventStatus(EVENT_STATUS.ABATED); + policyMsg.setRequestID("testRequestid"); + DmaapService.alarmUniqueRequestID.put("testAlarmId", "testRequestid"); + PowerMock.expectNew(Publisher.class).andReturn(publisher); + EasyMock.expect(publisher.publish(policyMsg)).andReturn(true); + + DcaeConfigurationsCache.setDcaeConfigurations( + DcaeConfigurationParser.parse(readConfigurationsFromFile("dcae.config.json"))); + + PowerMock.replayAll(); + dmaapService.publishPolicyMsg(policyMsg, "sec_fault_unsecure"); + PowerMock.verifyAll(); + + } + + private String readConfigurationsFromFile(String fileName) throws URISyntaxException, FileNotFoundException { + URL url = DmaapServiceTest.class.getClassLoader().getResource(fileName); + File configFile = new File(new URI(url.toString()).getPath()); + BufferedReader br = new BufferedReader(new FileReader(configFile)); + + final StringBuilder sb = new StringBuilder(); + br.lines().forEach(line -> { + sb.append(line); + }); + try { + br.close(); + } catch (IOException e) { + // Do nothing + } + return sb.toString(); + } } \ No newline at end of file -- 2.16.6