Improve Test coverage of InfluxLogger
[nonrtric/plt/ranpm.git] / influxlogger / src / test / java / org / oran / pmlog / configuration / ConsumerJobInfoTest.java
1 /*-
2  * ========================LICENSE_START=================================
3  * O-RAN-SC
4  * %%
5  * Copyright (C) 2023 Nordix Foundation
6  * %%
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ========================LICENSE_END===================================
19  */
20
21 package org.oran.pmlog.configuration;
22
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.junit.jupiter.api.Assertions.assertEquals;
25 import static org.junit.jupiter.api.Assertions.assertNotNull;
26
27 import com.google.gson.Gson;
28 import java.util.Arrays;
29 import java.util.HashSet;
30 import java.util.Set;
31 import org.junit.jupiter.api.Test;
32
33 class ConsumerJobInfoTest {
34
35     @Test
36     void testConstructorAndGetters() {
37         // Create test data
38         String infoTypeId = "123";
39         String owner = "John";
40         ConsumerJobInfo.PmFilterData filterData = new ConsumerJobInfo.PmFilterData();
41         ConsumerJobInfo.KafkaDeliveryInfo deliveryInfo = new ConsumerJobInfo.KafkaDeliveryInfo("topic", "servers");
42
43         // Create a ConsumerJobInfo instance
44         ConsumerJobInfo jobInfo = new ConsumerJobInfo(infoTypeId, new ConsumerJobInfo.PmJobParameters("pmdata", filterData, deliveryInfo), owner);
45
46         // Test constructor and getters
47         assertEquals(infoTypeId, jobInfo.getInfoTypeId());
48         assertEquals(owner, jobInfo.getOwner());
49         assertNotNull(jobInfo.getJobDefinition());
50
51         // Test jobDefinition getters
52         assertEquals("pmdata", jobInfo.getJobDefinition().getFilterType());
53         assertEquals(filterData, jobInfo.getJobDefinition().getFilter());
54         assertEquals(deliveryInfo, jobInfo.getJobDefinition().getDeliveryInfo());
55     }
56
57     @Test
58     void testSerializationDeserialization() {
59         // Create test data
60         String infoTypeId = "123";
61         String owner = "John";
62         ConsumerJobInfo.PmFilterData filterData = new ConsumerJobInfo.PmFilterData();
63         ConsumerJobInfo.KafkaDeliveryInfo deliveryInfo = new ConsumerJobInfo.KafkaDeliveryInfo("topic", "servers");
64
65         // Create a ConsumerJobInfo instance
66         ConsumerJobInfo jobInfo = new ConsumerJobInfo(infoTypeId, new ConsumerJobInfo.PmJobParameters("pmdata", filterData, deliveryInfo), owner);
67
68
69         // Serialize to JSON
70         Gson gson = new Gson();
71         String json = gson.toJson(jobInfo);
72
73         // Deserialize from JSON
74         ConsumerJobInfo deserializedJobInfo = gson.fromJson(json, ConsumerJobInfo.class);
75
76         // Verify deserialized object
77         assertEquals(jobInfo.getInfoTypeId(), deserializedJobInfo.getInfoTypeId());
78         assertEquals(jobInfo.getOwner(), deserializedJobInfo.getOwner());
79         assertNotNull(deserializedJobInfo.getJobDefinition());
80     }
81
82     @Test
83     void testMeasTypeSpec() {
84         ConsumerJobInfo.PmFilterData.MeasTypeSpec measTypeSpec = new ConsumerJobInfo.PmFilterData.MeasTypeSpec();
85         measTypeSpec.setMeasuredObjClass("Class1");
86
87         Set<String> measTypes = new HashSet<>();
88         measTypes.add("Type1");
89         measTypes.add("Type2");
90         measTypeSpec.getMeasTypes().addAll(measTypes);
91
92         assertThat(measTypeSpec.getMeasuredObjClass()).isEqualTo("Class1");
93         assertThat(measTypeSpec.getMeasTypes()).containsExactlyInAnyOrder("Type1", "Type2");
94     }
95
96     @Test
97     void testKafkaDeliveryInfo() {
98         ConsumerJobInfo.KafkaDeliveryInfo kafkaDeliveryInfo = ConsumerJobInfo.KafkaDeliveryInfo.builder()
99             .topic("TestTopic")
100             .bootStrapServers("localhost:9092")
101             .build();
102
103         assertThat(kafkaDeliveryInfo.getTopic()).isEqualTo("TestTopic");
104         assertThat(kafkaDeliveryInfo.getBootStrapServers()).isEqualTo("localhost:9092");
105     }
106
107     @Test
108     void testPmFilterData() {
109         ConsumerJobInfo.PmFilterData pmFilterData = new ConsumerJobInfo.PmFilterData();
110
111         // Test sourceNames
112         Set<String> sourceNames = new HashSet<>(Arrays.asList("Source1", "Source2"));
113         pmFilterData.sourceNames.addAll(sourceNames);
114         assertThat(pmFilterData.sourceNames).containsExactlyInAnyOrder("Source1", "Source2");
115
116         // Test measObjInstIds
117         Set<String> measObjInstIds = new HashSet<>(Arrays.asList("Id1", "Id2"));
118         pmFilterData.measObjInstIds.addAll(measObjInstIds);
119         assertThat(pmFilterData.measObjInstIds).containsExactlyInAnyOrder("Id1", "Id2");
120
121         // Test measTypeSpecs
122         ConsumerJobInfo.PmFilterData.MeasTypeSpec measTypeSpec1 = new ConsumerJobInfo.PmFilterData.MeasTypeSpec();
123         measTypeSpec1.setMeasuredObjClass("Class1");
124         measTypeSpec1.getMeasTypes().addAll(Arrays.asList("Type1", "Type2"));
125
126         ConsumerJobInfo.PmFilterData.MeasTypeSpec measTypeSpec2 = new ConsumerJobInfo.PmFilterData.MeasTypeSpec();
127         measTypeSpec2.setMeasuredObjClass("Class2");
128         measTypeSpec2.getMeasTypes().addAll(Arrays.asList("Type3", "Type4"));
129
130         pmFilterData.measTypeSpecs.add(measTypeSpec1);
131         pmFilterData.measTypeSpecs.add(measTypeSpec2);
132
133         assertThat(pmFilterData.measTypeSpecs).hasSize(2);
134         assertThat(pmFilterData.measTypeSpecs).extracting("measuredObjClass").containsExactly("Class1", "Class2");
135
136         // Test measuredEntityDns
137         Set<String> measuredEntityDns = new HashSet<>(Arrays.asList("Entity1", "Entity2"));
138         pmFilterData.measuredEntityDns.addAll(measuredEntityDns);
139         assertThat(pmFilterData.measuredEntityDns).containsExactlyInAnyOrder("Entity1", "Entity2");
140     }
141 }
142