922d139dc127cb605c0d7bb3198f8d2ff31c62b6
[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.DisplayName;
34 import org.junit.jupiter.api.Test;
35 import org.junit.jupiter.api.extension.ExtendWith;
36 import org.mockito.junit.jupiter.MockitoExtension;
37 import org.onap.ccsdk.oran.a1policymanagementservice.repository.Policies;
38 import org.onap.ccsdk.oran.a1policymanagementservice.repository.Policy;
39 import org.onap.ccsdk.oran.a1policymanagementservice.repository.PolicyType;
40 import org.onap.ccsdk.oran.a1policymanagementservice.repository.PolicyTypes;
41 import org.onap.ccsdk.oran.a1policymanagementservice.repository.Ric;
42 import org.onap.ccsdk.oran.a1policymanagementservice.repository.Rics;
43
44 @ExtendWith(MockitoExtension.class)
45 class MetersTest {
46
47     private static final String POLICY_TYPE_1_NAME = "type1";
48     private static final PolicyType POLICY_TYPE_1 = PolicyType.builder().id(POLICY_TYPE_1_NAME).schema("").build();
49
50     private static final Ric RIC_1 = new Ric(RicConfig.builder().ricId("ric_1").baseUrl("baseUrl1")
51             .managedElementIds(new Vector<String>(Arrays.asList("kista_1", "kista_2"))).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     @DisplayName("test Counters when Neither Changed Policies Nor Policy Types")
84     void testCounters_whenNeitherChangedPoliciesNorPolicyTypes() {
85         RIC_1.setState(Ric.RicState.AVAILABLE);
86         RIC_1.addSupportedPolicyType(POLICY_TYPE_1);
87         rics.put(RIC_1);
88
89         types.put(POLICY_TYPE_1);
90
91         policies.put(POLICY_1);
92
93         createMeters();
94
95         assertThat(prometheusMeterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
96         assertThat(prometheusMeterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(1);
97         assertThat(prometheusMeterRegistry.get("total_policy_count").gauge().value()).isEqualTo(1);
98     }
99
100     @Test
101     @DisplayName("test Counters when Changed Policies And No Changed Policy Types")
102     void testCounters_whenChangedPoliciesAndNoChangedPolicyTypes() {
103         RIC_1.setState(Ric.RicState.AVAILABLE);
104         RIC_1.addSupportedPolicyType(POLICY_TYPE_1);
105         rics.put(RIC_1);
106
107         types.put(POLICY_TYPE_1);
108
109         policies.put(POLICY_1);
110
111         String POLICY_2_ID = "policyId2";
112         Policy POLICY_2 = Policy.builder() //
113                 .id(POLICY_2_ID) //
114                 .json("") //
115                 .ownerServiceId("service") //
116                 .ric(RIC_1) //
117                 .type(POLICY_TYPE_1) //
118                 .lastModified(Instant.now()) //
119                 .isTransient(false) //
120                 .statusNotificationUri("statusNotificationUri") //
121                 .build();
122
123         policies.put(POLICY_2);
124
125         assertThat(prometheusMeterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
126         assertThat(prometheusMeterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(1);
127         assertThat(prometheusMeterRegistry.get("total_policy_count").gauge().value()).isEqualTo(2);
128     }
129
130     @Test
131     @DisplayName("test Counters when No Changed Policies And Changed Policy Types")
132     void testCounters_whenNoChangedPoliciesAndChangedPolicyTypes() {
133         RIC_1.setState(Ric.RicState.AVAILABLE);
134
135         String POLICY_TYPE_2_NAME = "type2";
136         PolicyType POLICY_TYPE_2 = PolicyType.builder() //
137                 .id(POLICY_TYPE_2_NAME) //
138                 .schema("") //
139                 .build();
140
141         RIC_1.addSupportedPolicyType(POLICY_TYPE_1);
142         RIC_1.addSupportedPolicyType(POLICY_TYPE_2);
143         rics.put(RIC_1);
144
145         types.put(POLICY_TYPE_1);
146         types.put(POLICY_TYPE_2);
147
148         policies.put(POLICY_1);
149
150         assertThat(prometheusMeterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
151         assertThat(prometheusMeterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(2);
152         assertThat(prometheusMeterRegistry.get("total_policy_count").gauge().value()).isEqualTo(1);
153     }
154
155     private Meters createMeters() {
156         return new Meters(rics, types, policies, prometheusMeterRegistry);
157     }
158 }