459eb801ae03cf28935cd1a3667a49f3e715af44
[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 public 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"))).controllerName("controllerName")
52             .build());
53
54     private static final String POLICY_1_ID = "policyId1";
55     private static final Policy POLICY_1 = Policy.builder().id(POLICY_1_ID).json("").ownerServiceId("service")
56             .ric(RIC_1).type(POLICY_TYPE_1).lastModified(Instant.now()).isTransient(false)
57             .statusNotificationUri("statusNotificationUri").build();
58
59     private PrometheusMeterRegistry prometheusMeterRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
60     private final ApplicationConfig appConfig = new ApplicationConfig();
61
62     private PolicyTypes types;
63     private Policies policies;
64     private Rics rics = new Rics();
65
66     Meters testObject;
67
68     @BeforeEach
69     void init() {
70         types = new PolicyTypes(appConfig);
71         policies = new Policies(appConfig);
72
73         rics.clear();
74         policies.clear();
75         types.clear();
76
77         RIC_1.setState(Ric.RicState.AVAILABLE);
78         RIC_1.clearSupportedPolicyTypes();
79
80         this.testObject = createMeters();
81     }
82
83     @Test
84     @DisplayName("test Counters when Neither Changed Policies Nor Policy Types")
85     void testCounters_whenNeitherChangedPoliciesNorPolicyTypes() {
86         RIC_1.setState(Ric.RicState.AVAILABLE);
87         RIC_1.addSupportedPolicyType(POLICY_TYPE_1);
88         rics.put(RIC_1);
89
90         types.put(POLICY_TYPE_1);
91
92         policies.put(POLICY_1);
93
94         createMeters();
95
96         assertThat(prometheusMeterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
97         assertThat(prometheusMeterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(1);
98         assertThat(prometheusMeterRegistry.get("total_policy_count").gauge().value()).isEqualTo(1);
99     }
100
101     @Test
102     @DisplayName("test Counters when Changed Policies And No Changed Policy Types")
103     void testCounters_whenChangedPoliciesAndNoChangedPolicyTypes() {
104         RIC_1.setState(Ric.RicState.AVAILABLE);
105         RIC_1.addSupportedPolicyType(POLICY_TYPE_1);
106         rics.put(RIC_1);
107
108         types.put(POLICY_TYPE_1);
109
110         policies.put(POLICY_1);
111
112         String POLICY_2_ID = "policyId2";
113         Policy POLICY_2 = Policy.builder() //
114                 .id(POLICY_2_ID) //
115                 .json("") //
116                 .ownerServiceId("service") //
117                 .ric(RIC_1) //
118                 .type(POLICY_TYPE_1) //
119                 .lastModified(Instant.now()) //
120                 .isTransient(false) //
121                 .statusNotificationUri("statusNotificationUri") //
122                 .build();
123
124         policies.put(POLICY_2);
125
126         assertThat(prometheusMeterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
127         assertThat(prometheusMeterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(1);
128         assertThat(prometheusMeterRegistry.get("total_policy_count").gauge().value()).isEqualTo(2);
129     }
130
131     @Test
132     @DisplayName("test Counters when No Changed Policies And Changed Policy Types")
133     void testCounters_whenNoChangedPoliciesAndChangedPolicyTypes() {
134         RIC_1.setState(Ric.RicState.AVAILABLE);
135
136         String POLICY_TYPE_2_NAME = "type2";
137         PolicyType POLICY_TYPE_2 = PolicyType.builder() //
138                 .id(POLICY_TYPE_2_NAME) //
139                 .schema("") //
140                 .build();
141
142         RIC_1.addSupportedPolicyType(POLICY_TYPE_1);
143         RIC_1.addSupportedPolicyType(POLICY_TYPE_2);
144         rics.put(RIC_1);
145
146         types.put(POLICY_TYPE_1);
147         types.put(POLICY_TYPE_2);
148
149         policies.put(POLICY_1);
150
151         assertThat(prometheusMeterRegistry.get("total_ric_count").gauge().value()).isEqualTo(1);
152         assertThat(prometheusMeterRegistry.get("total_policy_type_count").gauge().value()).isEqualTo(2);
153         assertThat(prometheusMeterRegistry.get("total_policy_count").gauge().value()).isEqualTo(1);
154     }
155
156     private Meters createMeters() {
157         return new Meters(rics, types, policies, prometheusMeterRegistry);
158     }
159 }