31c23101d0435dcf473b6a4779fc50f2aaf207e5
[appc.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
4  * ================================================================================
5  * Copyright (C) 2019 Ericsson
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  *
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.appc.metricservice.policy.impl;
23
24 import java.util.Properties;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28 import org.mockito.Mockito;
29 import org.onap.appc.configuration.Configuration;
30 import org.onap.appc.configuration.ConfigurationFactory;
31 import org.onap.appc.metricservice.Publisher;
32 import org.onap.appc.metricservice.metric.Metric;
33 import org.onap.appc.metricservice.metric.impl.DmaapRequestCounterMetricImpl;
34 import org.powermock.api.mockito.PowerMockito;
35 import org.powermock.core.classloader.annotations.PrepareForTest;
36 import org.powermock.modules.junit4.PowerMockRunner;
37 import org.powermock.reflect.Whitebox;
38 import com.att.eelf.configuration.EELFLogger;
39 import org.junit.Assert;
40
41 @RunWith(PowerMockRunner.class)
42 @PrepareForTest(ConfigurationFactory.class)
43 public class ScheduledPublishingPolicyImplTest {
44
45     private Configuration configuration = Mockito.mock(Configuration.class);
46
47     @Before
48     public void setup() {
49         PowerMockito.mockStatic(ConfigurationFactory.class);
50         PowerMockito.when(ConfigurationFactory.getConfiguration()).thenReturn(configuration);
51     }
52
53     @Test
54     public void testWithPeriodAndStartTime() {
55         Properties properties = new Properties();
56         properties.setProperty("schedule.policy.metric.period", "1000");
57         properties.setProperty("schedule.policy.metric.start.time", "1000");
58         Mockito.when(configuration.getProperties()).thenReturn(properties);
59         PolicyBuilderFactoryImpl builderFactory = new PolicyBuilderFactoryImpl();
60         ScheduledPolicyBuilderImpl policyBuilder = (ScheduledPolicyBuilderImpl) builderFactory.scheduledPolicyBuilder();
61         Metric[] metrics = new Metric[0];
62         policyBuilder.withMetrics(metrics);
63         ScheduledPublishingPolicyImpl publishingPolicy = (ScheduledPublishingPolicyImpl) policyBuilder.build();
64         Assert.assertEquals(0, publishingPolicy.metrics().length);
65     }
66
67     @Test
68     public void testWithPeriod() {
69         Properties properties = new Properties();
70         properties.setProperty("schedule.policy.metric.period", "1000");
71         Mockito.when(configuration.getProperties()).thenReturn(properties);
72         PolicyBuilderFactoryImpl builderFactory = new PolicyBuilderFactoryImpl();
73         ScheduledPolicyBuilderImpl policyBuilder = (ScheduledPolicyBuilderImpl) builderFactory.scheduledPolicyBuilder();
74         Metric[] metrics = new Metric[0];
75         policyBuilder.withMetrics(metrics);
76         ScheduledPublishingPolicyImpl publishingPolicy = (ScheduledPublishingPolicyImpl) policyBuilder.build();
77         Assert.assertEquals(0, publishingPolicy.metrics().length);
78     }
79
80     @Test
81     public void testWithNeither() {
82         Properties properties = new Properties();
83         Mockito.when(configuration.getProperties()).thenReturn(properties);
84         PolicyBuilderFactoryImpl builderFactory = new PolicyBuilderFactoryImpl();
85         ScheduledPolicyBuilderImpl policyBuilder = (ScheduledPolicyBuilderImpl) builderFactory.scheduledPolicyBuilder();
86         Metric[] metrics = new Metric[0];
87         policyBuilder.withMetrics(metrics);
88         policyBuilder.withPublishers(null);
89         ScheduledPublishingPolicyImpl publishingPolicy = (ScheduledPublishingPolicyImpl) policyBuilder.build();
90         Assert.assertEquals(0, publishingPolicy.metrics().length);
91
92     }
93
94     @Test
95     public void testWithNullProperties() {
96         Mockito.when(configuration.getProperties()).thenReturn(null);
97         PolicyBuilderFactoryImpl builderFactory = new PolicyBuilderFactoryImpl();
98         ScheduledPolicyBuilderImpl policyBuilder = (ScheduledPolicyBuilderImpl) builderFactory.scheduledPolicyBuilder();
99         Metric[] metrics = new Metric[0];
100         policyBuilder.withMetrics(metrics);
101         policyBuilder.withPeriod(100000);
102         policyBuilder.withStartTime(1);
103         ScheduledPublishingPolicyImpl publishingPolicy = (ScheduledPublishingPolicyImpl) policyBuilder.build();
104         Assert.assertEquals(0, publishingPolicy.metrics().length);
105         Assert.assertEquals(100000, publishingPolicy.getPeriod());
106         Assert.assertEquals(1, publishingPolicy.getStartTime());
107     }
108
109     @Test
110     public void testConstructorAndInit() {
111         Properties properties = new Properties();
112         properties.setProperty("schedule.policy.metric.period", "1000");
113         properties.setProperty("schedule.policy.metric.start.time", "1000");
114         properties.setProperty("metric.enabled" , "true");
115         Publisher publisherMock = Mockito.mock(Publisher.class);
116         Publisher[] publisherArray = new Publisher[1];
117         publisherArray[0] = publisherMock;
118         Mockito.when(configuration.getProperties()).thenReturn(properties);
119         ScheduledPublishingPolicyImpl publishingPolicy = new ScheduledPublishingPolicyImpl(1000, 1000, publisherArray, new Metric[0]);
120         Whitebox.setInternalState(publishingPolicy, "configuration", configuration);
121         publishingPolicy.init();
122         Assert.assertEquals(1, publishingPolicy.getPublishers().length);
123     }
124
125 }