summaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
authoremartin <ephraim.martin@est.tech>2019-03-14 15:50:49 +0000
committeremartin <ephraim.martin@est.tech>2019-03-14 15:50:49 +0000
commit91cd8af37a7d5c285ac02ddcbd022bb14312106c (patch)
tree6890e0b5c9bc3a76d92c133ea957cc9388b16f05 /src/test
parentf4e3a4319568de5bcadaaa2e9f5ed668ae80db80 (diff)
Integrate split and filter in main App
Change-Id: I9da0852072409854118e46aba63c491bdd53fd28 Issue-ID: DCAEGEN2-1038 Signed-off-by: emartin <ephraim.martin@est.tech>
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/org/onap/dcaegen2/services/pmmapper/AppTest.java96
-rw-r--r--src/test/java/org/onap/dcaegen2/services/pmmapper/filtering/MeasFilterHandlerTest.java134
-rw-r--r--src/test/java/org/onap/dcaegen2/services/pmmapper/mapping/MapperTest.java12
-rw-r--r--src/test/java/org/onap/dcaegen2/services/pmmapper/utils/MeasSplitterTest.java21
-rw-r--r--src/test/resources/split_test/no_measdata.xml10
5 files changed, 242 insertions, 31 deletions
diff --git a/src/test/java/org/onap/dcaegen2/services/pmmapper/AppTest.java b/src/test/java/org/onap/dcaegen2/services/pmmapper/AppTest.java
index 82650f3..e82d90f 100644
--- a/src/test/java/org/onap/dcaegen2/services/pmmapper/AppTest.java
+++ b/src/test/java/org/onap/dcaegen2/services/pmmapper/AppTest.java
@@ -20,22 +20,58 @@
package org.onap.dcaegen2.services.pmmapper;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
+import static org.mockserver.integration.ClientAndServer.startClientAndServer;
+import static org.mockserver.model.HttpResponse.response;
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
import io.undertow.util.StatusCodes;
+import reactor.core.publisher.Flux;
+
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
+import org.mockserver.client.server.MockServerClient;
+import org.mockserver.integration.ClientAndServer;
+import org.mockserver.model.HttpRequest;
+import org.onap.dcaegen2.services.pmmapper.filtering.MeasFilterHandler;
+import org.onap.dcaegen2.services.pmmapper.mapping.Mapper;
import org.onap.dcaegen2.services.pmmapper.model.Event;
import org.onap.dcaegen2.services.pmmapper.model.EventMetadata;
+import org.onap.dcaegen2.services.pmmapper.model.MapperConfig;
+import org.onap.dcaegen2.services.pmmapper.utils.MeasConverter;
+import org.onap.dcaegen2.services.pmmapper.utils.MeasSplitter;
@ExtendWith(MockitoExtension.class)
class AppTest {
+ static ClientAndServer mockServer;
+ static MockServerClient client;
+
+ @BeforeAll
+ public static void setup() {
+ mockServer = startClientAndServer(1080);
+ client = new MockServerClient("127.0.0.1", 1080);
+ }
+
+ @AfterAll
+ public static void teardown() {
+ mockServer.stop();
+ }
+
@Test
void testHandleBackPressureNullValue() {
assertThrows(NullPointerException.class, () -> App.handleBackPressure(null));
@@ -62,5 +98,65 @@ class AppTest {
verify(event.getHttpServerExchange(), times(1)).unDispatch();
}
+ @Test
+ public void testFilter_success() {
+ Event mockEvent = Mockito.mock(Event.class);
+ List<Event> mockEvents = Arrays.asList(mockEvent);
+ MapperConfig mockConfig = Mockito.mock(MapperConfig.class);
+ boolean result = App.filter(new MeasFilterHandler(new MeasConverter()), mockEvents, mockConfig);
+ assertTrue(result);
+ }
+
+ @Test
+ public void testFilter_throwException() {
+ HttpRequest req = HttpRequest.request();
+ client.when(req).respond( response().withStatusCode(200));
+
+ Event mockEvent = Mockito.mock(Event.class);
+ List<Event> mockEvents = Arrays.asList(mockEvent);
+ MeasFilterHandler mockFilter = Mockito.mock(MeasFilterHandler.class);
+ MapperConfig mockConfig = Mockito.mock(MapperConfig.class);
+
+ Mockito.when(mockConfig.getDmaapDRDeleteEndpoint()).thenReturn("http://127.0.0.1:1080");
+ Mockito.when(mockConfig.getSubscriberIdentity()).thenReturn("sid");
+ Mockito.when(mockEvent.getPublishIdentity()).thenReturn("pid");
+ Mockito.when(mockFilter.filterByMeasType(mockEvent)).thenThrow(RuntimeException.class);
+
+ boolean x = App.filter(mockFilter, mockEvents, mockConfig);
+ assertFalse(x);
+
+ client.clear(req);
+ }
+
+ @Test
+ public void testSplit_empty_success() {
+ Event mockEvent = Mockito.mock(Event.class);
+ MapperConfig mockConfig = Mockito.mock(MapperConfig.class);
+ Flux<List<Event>> splitResult = App.split(new MeasSplitter(new MeasConverter()), mockEvent, mockConfig);
+ splitResult.equals(Flux.<List<Event>>empty());
+ }
+
+ @Test
+ public void testSplit_success() {
+ Event mockEvent = Mockito.mock(Event.class);
+ List<Event> mockEvents = Arrays.asList(mockEvent,mockEvent);
+ MapperConfig mockConfig = Mockito.mock(MapperConfig.class);
+ MeasSplitter mockSplitter = Mockito.mock(MeasSplitter.class);
+ Mockito.when(mockSplitter.split(mockEvent)).thenReturn(mockEvents);
+
+ Flux<List<Event>> splitResult = App.split(mockSplitter, mockEvent, mockConfig);
+
+ splitResult.equals(Flux.just(mockEvents));
+ }
+
+ @Test
+ public void testMapping_empty_success() {
+ Event mockEvent = Mockito.mock(Event.class);
+ List<Event> mockEvents = Arrays.asList(mockEvent);
+ MapperConfig mockConfig = Mockito.mock(MapperConfig.class);
+ Path mappingTemplate = Paths.get("src/main/resources/mapping.ftl");
+ Flux<List<Event>> mappingResult = App.map(new Mapper(mappingTemplate), mockEvents, mockConfig);
+ mappingResult.equals(Flux.<List<Event>>empty());
+ }
}
diff --git a/src/test/java/org/onap/dcaegen2/services/pmmapper/filtering/MeasFilterHandlerTest.java b/src/test/java/org/onap/dcaegen2/services/pmmapper/filtering/MeasFilterHandlerTest.java
index 8b1f8aa..436984e 100644
--- a/src/test/java/org/onap/dcaegen2/services/pmmapper/filtering/MeasFilterHandlerTest.java
+++ b/src/test/java/org/onap/dcaegen2/services/pmmapper/filtering/MeasFilterHandlerTest.java
@@ -22,10 +22,14 @@ package org.onap.dcaegen2.services.pmmapper.filtering;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -51,11 +55,9 @@ import utils.EventUtils;
@ExtendWith(MockitoExtension.class)
class MeasFilterHandlerTest {
- private static MeasFilterConfig filterConfig;
private static final String baseDir = "src/test/resources/filter_test/";
private static final Path dataDirectory = Paths.get("src/test/resources/mapper_test/mapping_data/");
- private static List<String> counters = Arrays.asList("a", "b");
- private static MeasConverter converter = new MeasConverter();
+ private static MeasConverter converter = new MeasConverter();
private MeasFilterHandler objUnderTest;
@Mock
private HttpServerExchange exchange;
@@ -64,23 +66,14 @@ class MeasFilterHandlerTest {
@BeforeEach
void setup() {
- filterConfig = new MeasFilterConfig();
- Filter filter = filterConfig.new Filter();
- filter.setDictionaryVersion("");
- filter.setMeasTypes(counters);
- filterConfig.setFilters(Arrays.asList(filter));
objUnderTest = new MeasFilterHandler(new MeasConverter());
- objUnderTest.setFilter(filterConfig.getFilters()
- .get(0));
}
@Test
void measTypes_byCommaSeparation() throws IOException {
String inputPath = baseDir + "meas_results";
- String inputXml = EventUtils.fileContentsToString(Paths.get(inputPath + ".xml"));
String expected = EventUtils.fileContentsToString(Paths.get(inputPath + "_filtered.xml"));
- Event event = new Event(exchange, inputXml, metaData, new HashMap<String, String>(), "");
- event.setMeasCollecFile(converter.convert(inputXml));
+ Event event = generateEvent(inputPath, generateValidFilter());
objUnderTest.filterByMeasType(event);
@@ -91,12 +84,11 @@ class MeasFilterHandlerTest {
@Test
void measType_byID() throws IOException {
String inputPath = baseDir + "meas_type_and_r";
- String inputXml = EventUtils.fileContentsToString(Paths.get(inputPath + ".xml"));
String filteredString = EventUtils.fileContentsToString(Paths.get(inputPath + "_filtered.xml"));
- Event event = new Event(exchange, inputXml, metaData, new HashMap<String, String>(), "");
- event.setMeasCollecFile(converter.convert(inputXml));
+ Event event = generateEvent(inputPath, generateValidFilter());
MeasCollecFile f = converter.convert(filteredString);
String expected = converter.convert(f);
+
objUnderTest.filterByMeasType(event);
String actual = converter.convert(event.getMeasCollecFile());
@@ -104,26 +96,70 @@ class MeasFilterHandlerTest {
}
@Test
- void no_Filters_match() {
+ void skip_mapping_when_no_Filters_match() {
String inputPath = baseDir + "meas_results";
- String inputXml = EventUtils.fileContentsToString(Paths.get(inputPath + ".xml"));
-
- Filter noMatchFilter = filterConfig.new Filter();
+ Filter noMatchFilter = new MeasFilterConfig().new Filter();
noMatchFilter.setMeasTypes(Arrays.asList("nomatch1", "nomatch2"));
- objUnderTest.setFilter(noMatchFilter);
+ Event event = generateEvent(inputPath, noMatchFilter);
+ List<Event> events = new ArrayList<>();
+ events.add(event);
+ events.add(event);
+
+ assertFalse(objUnderTest.filterByMeasType(event));
+ assertFalse(objUnderTest.filterByMeasType(events));
+ }
+
+ @Test
+ void remove_events_that_does_not_match_filter() {
+ String inputPath = baseDir + "meas_type_and_r_manyInfo";
+
+ Filter matchFilter = new MeasFilterConfig().new Filter();
+ matchFilter.setMeasTypes(Arrays.asList("a", "b"));
+ Event eventMatch = generateEvent(inputPath, matchFilter);
+ Filter noMatchFilter = new MeasFilterConfig().new Filter();
+ noMatchFilter.setMeasTypes(Arrays.asList("ad", "bs"));
+ Event eventNoMatch = generateEvent(inputPath, noMatchFilter);
+
+ List<Event> events = new ArrayList<>();
+ events.add(eventMatch);
+ events.add(eventNoMatch);
+ assertTrue(objUnderTest.filterByMeasType(events));
+ assertEquals(1, events.size());
+ }
+
+ @Test
+ void skip_mapping_when_MeasData_isEmpty() {
+ String inputPath = baseDir + "meas_results";
+ Event event = generateEvent(inputPath, generateValidFilter());
+ event.getMeasCollecFile().replaceMeasData(Arrays.asList());
- Event event = new Event(exchange, inputXml, metaData, new HashMap<String, String>(), "");
- event.setMeasCollecFile(converter.convert(inputXml));
assertFalse(objUnderTest.filterByMeasType(event));
}
@Test
+ void skip_filtering_if_filter_or_meastypes_isEmpty() {
+ String inputPath = baseDir + "meas_results";
+
+ Filter emptyMeastypesFilter = new MeasFilterConfig().new Filter();
+ emptyMeastypesFilter.setMeasTypes(Arrays.asList());
+
+ Event event = generateEvent(inputPath, emptyMeastypesFilter);
+ MeasCollecFile originalMeasCollec = event.getMeasCollecFile();
+
+ assertTrue(objUnderTest.filterByMeasType(event));
+ assertEquals(originalMeasCollec,event.getMeasCollecFile());
+
+ event.setFilter(null);
+ assertTrue(objUnderTest.filterByMeasType(event));
+ assertEquals(originalMeasCollec,event.getMeasCollecFile());
+ }
+
+ @Test
void multiple_measInfos_measResults() {
String inputPath = baseDir + "meas_results_manyInfo";
- String inputXml = EventUtils.fileContentsToString(Paths.get(inputPath + ".xml"));
String filteredString = EventUtils.fileContentsToString(Paths.get(inputPath + "_filtered.xml"));
- Event event = new Event(exchange, inputXml, metaData, new HashMap<String, String>(), "");
- event.setMeasCollecFile(converter.convert(inputXml));
+ Event event = generateEvent(inputPath, generateValidFilter());
+
MeasCollecFile f = converter.convert(filteredString);
String expected = converter.convert(f);
objUnderTest.filterByMeasType(event);
@@ -135,10 +171,9 @@ class MeasFilterHandlerTest {
@Test
void multiple_measInfos_measTypeAndR() {
String inputPath = baseDir + "meas_type_and_r_manyInfo";
- String inputXml = EventUtils.fileContentsToString(Paths.get(inputPath + ".xml"));
String filteredString = EventUtils.fileContentsToString(Paths.get(inputPath + "_filtered.xml"));
- Event event = new Event(exchange, inputXml, metaData, new HashMap<String, String>(), "");
- event.setMeasCollecFile(converter.convert(inputXml));
+ Event event = generateEvent(inputPath, generateValidFilter());
+
MeasCollecFile f = converter.convert(filteredString);
String expected = converter.convert(f);
objUnderTest.filterByMeasType(event);
@@ -147,21 +182,58 @@ class MeasFilterHandlerTest {
assertEquals(expected, actual);
}
+ @Test
+ void valid_fileType() {
+ Event event = mock(Event.class);
+ when(event.getHttpServerExchange()).thenReturn(exchange);
+ when(exchange.getRequestPath()).thenReturn("Apm.xml","Cpm.xml");
+ assertTrue(objUnderTest.filterByFileType(event));
+ assertTrue(objUnderTest.filterByFileType(event));
+ }
+
+ @Test
+ void invalid_fileType() {
+ Event event = mock(Event.class);
+ List<String> invalidFiletypes = Arrays.asList("Bpm.xml","Dpm.xml","asdf","bsdf");
+ when(event.getHttpServerExchange()).thenReturn(exchange);
+ when(exchange.getRequestPath())
+ .thenReturn(invalidFiletypes.toString());
+
+ invalidFiletypes.forEach(c -> {
+ assertFalse(objUnderTest.filterByFileType(event));
+ });
+ }
+
+
@ParameterizedTest
@MethodSource("getValidMeas")
void applyFilterToValidMeasurements(Event testEvent) {
objUnderTest.filterByMeasType(testEvent);
}
+ private Event generateEvent(String inputPath, Filter filter) {
+ String inputXml = EventUtils.fileContentsToString(Paths.get(inputPath + ".xml"));
+ Event event = new Event(exchange, inputXml, metaData, new HashMap<String, String>(), "");
+ event.setMeasCollecFile(converter.convert(inputXml));
+ event.setFilter(filter);
+ return event;
+ }
+
+ private Filter generateValidFilter() {
+ Filter filter;
+ filter = new MeasFilterConfig().new Filter();
+ filter.setDictionaryVersion("1.0");
+ filter.setMeasTypes(Arrays.asList("a", "b"));
+ return filter;
+ }
+
static List<Event> getValidMeas() throws IOException {
final Path metadata = Paths.get("src/test/resources/valid_metadata.json");
List<Event> events = EventUtils
.eventsFromDirectory(Paths.get(dataDirectory.toString() + "/valid_data/"), metadata)
.stream()
.map(e -> {
- System.out.println(e.getBody());
MeasCollecFile m = converter.convert(e.getBody());
- System.out.println(m.getMeasData());
e.setMeasCollecFile(m);
return e;
})
diff --git a/src/test/java/org/onap/dcaegen2/services/pmmapper/mapping/MapperTest.java b/src/test/java/org/onap/dcaegen2/services/pmmapper/mapping/MapperTest.java
index eeaa39e..e7c8f3a 100644
--- a/src/test/java/org/onap/dcaegen2/services/pmmapper/mapping/MapperTest.java
+++ b/src/test/java/org/onap/dcaegen2/services/pmmapper/mapping/MapperTest.java
@@ -20,6 +20,7 @@
package org.onap.dcaegen2.services.pmmapper.mapping;
+import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
@@ -35,6 +36,7 @@ import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.ArrayList;
import java.util.List;
import org.everit.json.schema.Schema;
@@ -46,6 +48,7 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
+import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import org.onap.dcaegen2.services.pmmapper.exceptions.MappingException;
import org.onap.dcaegen2.services.pmmapper.exceptions.XMLParseException;
@@ -133,6 +136,15 @@ class MapperTest {
assertThrows(NullPointerException.class, () -> objUnderTest.map(mock(Event.class)));
}
+ @Test
+ void testMapEvents() throws IOException {
+ List<Event> events = getValidEvents();
+ List<Event> expectedEvents = objUnderTest.mapEvents(events);
+ expectedEvents.forEach(event->{
+ assertTrue(event.getVes() != null);
+ });
+ }
+
static List<Event> getValidEvents() throws IOException {
return EventUtils.eventsFromDirectory(Paths.get(dataDirectory.toString() + "/valid_data/"), metadata);
}
diff --git a/src/test/java/org/onap/dcaegen2/services/pmmapper/utils/MeasSplitterTest.java b/src/test/java/org/onap/dcaegen2/services/pmmapper/utils/MeasSplitterTest.java
index 962303c..54c5091 100644
--- a/src/test/java/org/onap/dcaegen2/services/pmmapper/utils/MeasSplitterTest.java
+++ b/src/test/java/org/onap/dcaegen2/services/pmmapper/utils/MeasSplitterTest.java
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertEquals;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.List;
+import java.util.NoSuchElementException;
import javax.xml.bind.JAXBException;
@@ -35,6 +36,7 @@ import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import org.onap.dcaegen2.services.pmmapper.model.Event;
import org.onap.dcaegen2.services.pmmapper.model.EventMetadata;
+import org.onap.dcaegen2.services.pmmapper.model.MapperConfig;
import org.onap.dcaegen2.services.pmmapper.model.MeasCollecFile;
import io.undertow.server.HttpServerExchange;
@@ -51,11 +53,16 @@ public class MeasSplitterTest {
EventMetadata meta;
@Mock
Event event;
+ @Mock
+ MapperConfig config;
@BeforeEach
public void setup() {
converter = new MeasConverter();
objUnderTest = new MeasSplitter(converter);
+ }
+
+ public void setupBaseEvent() {
Mockito.when(event.getHttpServerExchange()).thenReturn(exchange);
Mockito.when(event.getMetadata()).thenReturn(meta);
Mockito.when(event.getMdc()).thenReturn(new HashMap<String, String>());
@@ -63,11 +70,24 @@ public class MeasSplitterTest {
Mockito.when(event.getPublishIdentity()).thenReturn("");
}
+
+ @Test
+ public void no_measData() {
+ String inputPath = baseDir + "no_measdata";
+ String inputXml = EventUtils.fileContentsToString(Paths.get(inputPath + ".xml"));
+ Mockito.when(event.getBody()).thenReturn(inputXml);
+
+ Assertions.assertThrows(NoSuchElementException.class, ()->{
+ objUnderTest.split(event);
+ });
+ }
+
@Test
public void typeA_returns_only_one_event() throws JAXBException {
String inputPath = baseDir + "meas_results_typeA";
String inputXml = EventUtils.fileContentsToString(Paths.get(inputPath + ".xml"));
MeasCollecFile measToBeSplit = converter.convert(inputXml);
+ setupBaseEvent();
Mockito.when(event.getBody()).thenReturn(inputXml);
Mockito.when(event.getMeasCollecFile()).thenReturn(measToBeSplit);
@@ -80,6 +100,7 @@ public class MeasSplitterTest {
public void typeC_returns_multiple_events() throws JAXBException {
String inputPath = baseDir + "meas_results_typeC";
String inputXml = EventUtils.fileContentsToString(Paths.get(inputPath + ".xml"));
+ setupBaseEvent();
Mockito.when(event.getBody()).thenReturn(inputXml);
MeasCollecFile measToBeSplit = converter.convert(inputXml);
Mockito.when(event.getMeasCollecFile()).thenReturn(measToBeSplit);
diff --git a/src/test/resources/split_test/no_measdata.xml b/src/test/resources/split_test/no_measdata.xml
new file mode 100644
index 0000000..5b8eb5a
--- /dev/null
+++ b/src/test/resources/split_test/no_measdata.xml
@@ -0,0 +1,10 @@
+<measCollecFile xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec">
+ <fileHeader dnPrefix="some dnPrefix" vendorName="FooBar Ltd"
+ fileFormatVersion="32.435 V10.0">
+ <fileSender localDn="Dublin"/>
+ <measCollec beginTime="2018-10-02T12:00:00+01:00"/>
+ </fileHeader>
+ <fileFooter>
+ <measCollec endTime="2018-10-02T12:15:00+01:00"/>
+ </fileFooter>
+</measCollecFile>