blob: 699f410ce15f4f711a3bd234903f5011313e5e11 [file] [log] [blame]
Jian Li52c11222018-06-07 11:39:17 +09001/*
2 * Copyright 2018-present Open Networking Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.openstacktelemetry.config;
17
Jian Li69600e02018-12-24 13:21:18 +090018import com.google.common.collect.ImmutableList;
Jian Li52c11222018-06-07 11:39:17 +090019import com.google.common.collect.ImmutableMap;
Jian Li69600e02018-12-24 13:21:18 +090020import com.google.common.collect.Maps;
Jian Li52c11222018-06-07 11:39:17 +090021import com.google.common.testing.EqualsTester;
22import org.junit.Before;
23import org.junit.Test;
24import org.onosproject.openstacktelemetry.api.config.InfluxDbTelemetryConfig;
Jian Li69600e02018-12-24 13:21:18 +090025import org.onosproject.openstacktelemetry.api.config.TelemetryConfig;
Jian Li7fe7eaf2018-12-31 17:00:33 +090026import org.onosproject.openstacktelemetry.api.DefaultTelemetryConfig;
Jian Li52c11222018-06-07 11:39:17 +090027
28import java.util.Map;
29
30import static org.hamcrest.MatcherAssert.assertThat;
31import static org.hamcrest.Matchers.is;
Jian Liae3fcff2018-07-30 11:55:44 +090032import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
Jian Li69600e02018-12-24 13:21:18 +090033import static org.onosproject.openstacktelemetry.api.config.TelemetryConfig.ConfigType.INFLUXDB;
Jian Li667c6eb2019-01-07 23:01:12 +090034import static org.onosproject.openstacktelemetry.api.config.TelemetryConfig.Status.DISABLED;
Jian Li69600e02018-12-24 13:21:18 +090035import static org.onosproject.openstacktelemetry.config.DefaultInfluxDbTelemetryConfig.ADDRESS;
36import static org.onosproject.openstacktelemetry.config.DefaultInfluxDbTelemetryConfig.DATABASE;
37import static org.onosproject.openstacktelemetry.config.DefaultInfluxDbTelemetryConfig.ENABLE_BATCH;
38import static org.onosproject.openstacktelemetry.config.DefaultInfluxDbTelemetryConfig.MEASUREMENT;
39import static org.onosproject.openstacktelemetry.config.DefaultInfluxDbTelemetryConfig.PASSWORD;
40import static org.onosproject.openstacktelemetry.config.DefaultInfluxDbTelemetryConfig.PORT;
41import static org.onosproject.openstacktelemetry.config.DefaultInfluxDbTelemetryConfig.USERNAME;
42import static org.onosproject.openstacktelemetry.config.DefaultInfluxDbTelemetryConfig.fromTelemetryConfig;
Jian Li52c11222018-06-07 11:39:17 +090043
44/**
45 * Unit tests for DefaultInfluxDbTelemetryConfig class.
46 */
Jian Li3db90852018-06-10 22:29:16 +090047public final class DefaultInfluxDbTelemetryConfigTest {
Jian Li52c11222018-06-07 11:39:17 +090048
49 private static final String IP_ADDRESS_1 = "10.10.10.1";
50 private static final String IP_ADDRESS_2 = "20.20.20.1";
51
52 private static final int PORT_1 = 80;
53 private static final int PORT_2 = 8080;
54
55 private static final String DATABASE_1 = "database1";
56 private static final String DATABASE_2 = "database2";
57
Boyoung Jeong4d1c9d12018-07-20 17:09:20 +090058 private static final String MEASUREMENT_1 = "measurement1";
59 private static final String MEASUREMENT_2 = "measurement2";
60
Jian Li52c11222018-06-07 11:39:17 +090061 private static final String USERNAME_1 = "username1";
62 private static final String USERNAME_2 = "username2";
63
64 private static final String PASSWORD_1 = "password1";
65 private static final String PASSWORD_2 = "password2";
66
67 private static final boolean ENABLE_BATCH_1 = true;
68 private static final boolean ENABLE_BATCH_2 = false;
69
70 private static final Map<String, Object> CONFIG_MAP_1 =
71 ImmutableMap.of("key1", "value1");
72 private static final Map<String, Object> CONFIG_MAP_2 =
73 ImmutableMap.of("key2", "value2");
74
Jian Li69600e02018-12-24 13:21:18 +090075 private static final String DUMMY = "dummy";
76
Jian Li52c11222018-06-07 11:39:17 +090077 private InfluxDbTelemetryConfig config1;
78 private InfluxDbTelemetryConfig sameAsConfig1;
79 private InfluxDbTelemetryConfig config2;
80
Jian Liae3fcff2018-07-30 11:55:44 +090081 /**
82 * Initial setup for this unit test.
83 */
Jian Li52c11222018-06-07 11:39:17 +090084 @Before
85 public void setup() {
86
87 InfluxDbTelemetryConfig.Builder builder1 =
88 new DefaultInfluxDbTelemetryConfig.DefaultBuilder();
89 InfluxDbTelemetryConfig.Builder builder2 =
90 new DefaultInfluxDbTelemetryConfig.DefaultBuilder();
91 InfluxDbTelemetryConfig.Builder builder3 =
92 new DefaultInfluxDbTelemetryConfig.DefaultBuilder();
93
94 config1 = builder1
95 .withAddress(IP_ADDRESS_1)
96 .withPort(PORT_1)
97 .withDatabase(DATABASE_1)
Boyoung Jeong4d1c9d12018-07-20 17:09:20 +090098 .withMeasurement(MEASUREMENT_1)
Jian Li52c11222018-06-07 11:39:17 +090099 .withUsername(USERNAME_1)
100 .withPassword(PASSWORD_1)
101 .withEnableBatch(ENABLE_BATCH_1)
102 .withConfigMap(CONFIG_MAP_1)
103 .build();
104
105 sameAsConfig1 = builder2
106 .withAddress(IP_ADDRESS_1)
107 .withPort(PORT_1)
108 .withDatabase(DATABASE_1)
Boyoung Jeong4d1c9d12018-07-20 17:09:20 +0900109 .withMeasurement(MEASUREMENT_1)
Jian Li52c11222018-06-07 11:39:17 +0900110 .withUsername(USERNAME_1)
111 .withPassword(PASSWORD_1)
112 .withEnableBatch(ENABLE_BATCH_1)
113 .withConfigMap(CONFIG_MAP_1)
114 .build();
115
116 config2 = builder3
117 .withAddress(IP_ADDRESS_2)
118 .withPort(PORT_2)
119 .withDatabase(DATABASE_2)
Boyoung Jeong4d1c9d12018-07-20 17:09:20 +0900120 .withMeasurement(MEASUREMENT_2)
Jian Li52c11222018-06-07 11:39:17 +0900121 .withUsername(USERNAME_2)
122 .withPassword(PASSWORD_2)
123 .withEnableBatch(ENABLE_BATCH_2)
124 .withConfigMap(CONFIG_MAP_2)
125 .build();
126 }
127
Jian Liae3fcff2018-07-30 11:55:44 +0900128 /**
129 * Tests class immutability.
130 */
131 @Test
132 public void testImmutability() {
133 assertThatClassIsImmutable(DefaultInfluxDbTelemetryConfig.class);
134 }
135
136 /**
137 * Tests object equality.
138 */
Jian Li52c11222018-06-07 11:39:17 +0900139 @Test
140 public void testEquality() {
141 new EqualsTester()
142 .addEqualityGroup(config1, sameAsConfig1)
143 .addEqualityGroup(config2).testEquals();
144 }
145
Jian Liae3fcff2018-07-30 11:55:44 +0900146 /**
147 * Tests object construction.
148 */
Jian Li52c11222018-06-07 11:39:17 +0900149 @Test
150 public void testConstruction() {
151 InfluxDbTelemetryConfig config = config1;
152
153 assertThat(config.address(), is(IP_ADDRESS_1));
154 assertThat(config.port(), is(PORT_1));
155 assertThat(config.database(), is(DATABASE_1));
Boyoung Jeong4d1c9d12018-07-20 17:09:20 +0900156 assertThat(config.measurement(), is(MEASUREMENT_1));
Jian Li52c11222018-06-07 11:39:17 +0900157 assertThat(config.username(), is(USERNAME_1));
158 assertThat(config.password(), is(PASSWORD_1));
159 assertThat(config.enableBatch(), is(ENABLE_BATCH_1));
160 assertThat(config.configMap(), is(CONFIG_MAP_1));
161 }
Jian Li69600e02018-12-24 13:21:18 +0900162
163 /**
164 * Tests props extraction.
165 */
166 @Test
167 public void testPropsExtraction() {
168 Map<String, String> props = Maps.newConcurrentMap();
169 props.put(ADDRESS, IP_ADDRESS_1);
170 props.put(PORT, String.valueOf(PORT_1));
171 props.put(USERNAME, USERNAME_1);
172 props.put(PASSWORD, PASSWORD_1);
173 props.put(DATABASE, DATABASE_1);
174 props.put(ENABLE_BATCH, String.valueOf(ENABLE_BATCH_1));
175 props.put(MEASUREMENT, MEASUREMENT_1);
176
177 TelemetryConfig config = new DefaultTelemetryConfig(DUMMY, INFLUXDB,
Jian Li667c6eb2019-01-07 23:01:12 +0900178 ImmutableList.of(), DUMMY, DUMMY, DISABLED, props);
Jian Li69600e02018-12-24 13:21:18 +0900179
180 InfluxDbTelemetryConfig influxDbConfig = fromTelemetryConfig(config);
181 assertThat(influxDbConfig.address(), is(IP_ADDRESS_1));
182 assertThat(influxDbConfig.port(), is(PORT_1));
183 assertThat(influxDbConfig.database(), is(DATABASE_1));
184 assertThat(influxDbConfig.measurement(), is(MEASUREMENT_1));
185 assertThat(influxDbConfig.username(), is(USERNAME_1));
186 assertThat(influxDbConfig.password(), is(PASSWORD_1));
187 assertThat(influxDbConfig.enableBatch(), is(ENABLE_BATCH_1));
188 }
189}