5ab3d5a37a8b9af19529bdc953e0607efc291411
[ccsdk/oran.git] /
1 /*-
2  * ========================LICENSE_START=================================
3  * ONAP : ccsdk oran
4  * ======================================================================
5  * Copyright (C) 2022 Nordix Foundation. All rights reserved.
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.onap.ccsdk.oran.a1policymanagementservice.configuration;
22
23 import static org.assertj.core.api.Assertions.assertThat;
24
25 import io.micrometer.prometheus.PrometheusConfig;
26 import io.micrometer.prometheus.PrometheusMeterRegistry;
27
28 import java.time.Instant;
29 import java.util.Arrays;
30 import java.util.Vector;
31
32 import org.junit.jupiter.api.BeforeEach;
33 import org.junit.jupiter.api.Test;
34 import org.junit.jupiter.api.extension.ExtendWith;
35 import org.mockito.junit.jupiter.MockitoExtension;
36 import org.onap.ccsdk.oran.a1policymanagementservice.repository.Policies;
37 import org.onap.ccsdk.oran.a1policymanagementservice.repository.Policy;
38 import org.onap.ccsdk.oran.a1policymanagementservice.repository.PolicyType;
39 import org.onap.ccsdk.oran.a1policymanagementservice.repository.PolicyTypes;
40 import org.onap.ccsdk.oran.a1policymanagementservice.repository.Ric;
41 import org.onap.ccsdk.oran.a1policymanagementservice.repository.Rics;
42
43 @ExtendWith(MockitoExtension.class)
44 public class MetersTest {
45
46     private static final String POLICY_TYPE_1_NAME = "type1";
47     private static final PolicyType POLICY_TYPE_1 = PolicyType.builder().id(POLICY_TYPE_1_NAME).schema("").build();
48
49     private static final Ric RIC_1 = new Ric(RicConfig.builder().ricId("ric_1").baseUrl("baseUrl1")
50             .managedElementIds(new Vector<String>(Arrays.asList("kista_1", "kista_2"))).controllerName("controllerName")
51             .build());
52
53     private static final String POLICY_1_ID = "policyId1";
54     private static final Policy POLICY_1 = Policy.builder().id(POLICY_1_ID).json("").ownerServiceId("service")
55             .ric(RIC_1).type(POLICY_TYPE_1).lastModified(Instant.now()).isTransient(false)
56             .statusNotificationUri("statusNotificationUri").build();
57
58     private PrometheusMeterRegistry prometheusMeterRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
59     private final ApplicationConfig appConfig = new ApplicationConfig();
60
61     private PolicyTypes types;
62     private Policies policies;
63     private Rics rics = new Rics();
64
65     Meters testObject;
66
67     @BeforeEach
68     void init() {
69         types = new PolicyTypes(appConfig);
70         policies = new Policies(appConfig);
71
72         rics.clear();
73         policies.clear();
74         types.clear();
75
76         RIC_1.setState(Ric.RicState.AVAILABLE);
77         RIC_1.clearSupportedPolicyTypes();
78
79         this.testObject = createMeters();
80     }
81
82     @Test
83     void testCounters_whenNeitherChangedPoliciesNorPolicyTypes() {
84         RIC_1.setState(Ric.RicState.AVAILABLE);
85         RIC_1.addSupportedPolicyType(POLICY_TYPE_1);
86         rics.put(RIC_1);
87
88         types.put(POLICY_TYPE_1);
89
90         policies.put(POLICY_1);
91
92         createMeters();
93
94         assertThat(prometheusMeterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
95         assertThat(prometheusMeterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(1);
96         assertThat(prometheusMeterRegistry.get("total_policy_count").gauge().value()).isEqualTo(1);
97     }
98
99     @Test
100     void testCounters_whenChangedPoliciesAndNoChangedPolicyTypes() {
101         RIC_1.setState(Ric.RicState.AVAILABLE);
102         RIC_1.addSupportedPolicyType(POLICY_TYPE_1);
103         rics.put(RIC_1);
104
105         types.put(POLICY_TYPE_1);
106
107         policies.put(POLICY_1);
108
109         String POLICY_2_ID = "policyId2";
110         Policy POLICY_2 = Policy.builder() //
111                 .id(POLICY_2_ID) //
112                 .json("") //
113                 .ownerServiceId("service") //
114                 .ric(RIC_1) //
115                 .type(POLICY_TYPE_1) //
116                 .lastModified(Instant.now()) //
117                 .isTransient(false) //
118                 .statusNotificationUri("statusNotificationUri") //
119                 .build();
120
121         policies.put(POLICY_2);
122
123         assertThat(prometheusMeterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
124         assertThat(prometheusMeterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(1);
125         assertThat(prometheusMeterRegistry.get("total_policy_count").gauge().value()).isEqualTo(2);
126     }
127
128     @Test
129     void testCounters_whenNoChangedPoliciesAndChangedPolicyTypes() {
130         RIC_1.setState(Ric.RicState.AVAILABLE);
131
132         String POLICY_TYPE_2_NAME = "type2";
133         PolicyType POLICY_TYPE_2 = PolicyType.builder() //
134                 .id(POLICY_TYPE_2_NAME) //
135                 .schema("") //
136                 .build();
137
138         RIC_1.addSupportedPolicyType(POLICY_TYPE_1);
139         RIC_1.addSupportedPolicyType(POLICY_TYPE_2);
140         rics.put(RIC_1);
141
142         types.put(POLICY_TYPE_1);
143         types.put(POLICY_TYPE_2);
144
145         policies.put(POLICY_1);
146
147         assertThat(prometheusMeterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
148         assertThat(prometheusMeterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(2);
149         assertThat(prometheusMeterRegistry.get("total_policy_count").gauge().value()).isEqualTo(1);
150     }
151
152     private Meters createMeters() {
153         return new Meters(rics, types, policies, prometheusMeterRegistry);
154     }
155 }