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