blob: d70626ccc09228a754bd1cdcbf209ee4e62221f0 [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.KafkaTelemetryConfig;
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.KAFKA;
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.DefaultKafkaTelemetryConfig.ADDRESS;
36import static org.onosproject.openstacktelemetry.config.DefaultKafkaTelemetryConfig.BATCH_SIZE;
37import static org.onosproject.openstacktelemetry.config.DefaultKafkaTelemetryConfig.CODEC;
38import static org.onosproject.openstacktelemetry.config.DefaultKafkaTelemetryConfig.KEY;
39import static org.onosproject.openstacktelemetry.config.DefaultKafkaTelemetryConfig.KEY_SERIALIZER;
40import static org.onosproject.openstacktelemetry.config.DefaultKafkaTelemetryConfig.LINGER_MS;
41import static org.onosproject.openstacktelemetry.config.DefaultKafkaTelemetryConfig.MEMORY_BUFFER;
42import static org.onosproject.openstacktelemetry.config.DefaultKafkaTelemetryConfig.PORT;
43import static org.onosproject.openstacktelemetry.config.DefaultKafkaTelemetryConfig.REQUIRED_ACKS;
44import static org.onosproject.openstacktelemetry.config.DefaultKafkaTelemetryConfig.RETRIES;
45import static org.onosproject.openstacktelemetry.config.DefaultKafkaTelemetryConfig.TOPIC;
46import static org.onosproject.openstacktelemetry.config.DefaultKafkaTelemetryConfig.VALUE_SERIALIZER;
47import static org.onosproject.openstacktelemetry.config.DefaultKafkaTelemetryConfig.fromTelemetryConfig;
Jian Li52c11222018-06-07 11:39:17 +090048
Jian Li3db90852018-06-10 22:29:16 +090049public final class DefaultKafkaTelemetryConfigTest {
Jian Li52c11222018-06-07 11:39:17 +090050
51 private static final String IP_ADDRESS_1 = "10.10.10.1";
52 private static final String IP_ADDRESS_2 = "20.20.20.1";
53
54 private static final int PORT_1 = 80;
55 private static final int PORT_2 = 8080;
56
57 private static final int RETRIES_1 = 1;
58 private static final int RETRIES_2 = 2;
59
60 private static final int BATCH_SIZE_1 = 100;
61 private static final int BATCH_SIZE_2 = 200;
62
63 private static final int MEMORY_BUFFER_1 = 1000;
64 private static final int MEMORY_BUFFER_2 = 2000;
65
66 private static final String REQUIRED_ACKS_1 = "all";
67 private static final String REQUIRED_ACKS_2 = "none";
68
69 private static final int LINGER_MS_1 = 1;
70 private static final int LINGER_MS_2 = 2;
71
72 private static final String KEY_SERIALIZER_1 = "keyserializer1";
73 private static final String KEY_SERIALIZER_2 = "keyserializer2";
74 private static final String VALUE_SERIALIZER_1 = "valueserializer1";
75 private static final String VALUE_SERIALIZER_2 = "valueserializer2";
76
Jian Li69600e02018-12-24 13:21:18 +090077 private static final String KEY_1 = "key1";
78 private static final String KEY_2 = "key2";
79
80 private static final String TOPIC_1 = "topic1";
81 private static final String TOPIC_2 = "topic2";
82
83 private static final String CODEC_1 = "codec1";
84 private static final String CODEC_2 = "codec2";
85
Jian Li52c11222018-06-07 11:39:17 +090086 private static final Map<String, Object> CONFIG_MAP_1 =
87 ImmutableMap.of("key1", "value1");
88 private static final Map<String, Object> CONFIG_MAP_2 =
89 ImmutableMap.of("key2", "value2");
90
Jian Li69600e02018-12-24 13:21:18 +090091 private static final String DUMMY = "dummy";
92
Jian Li52c11222018-06-07 11:39:17 +090093 private KafkaTelemetryConfig config1;
94 private KafkaTelemetryConfig sameAsConfig1;
95 private KafkaTelemetryConfig config2;
96
Jian Liae3fcff2018-07-30 11:55:44 +090097 /**
98 * Initial setup for this unit test.
99 */
Jian Li52c11222018-06-07 11:39:17 +0900100 @Before
101 public void setup() {
102
103 KafkaTelemetryConfig.Builder builder1 =
104 new DefaultKafkaTelemetryConfig.DefaultBuilder();
105 KafkaTelemetryConfig.Builder builder2 =
106 new DefaultKafkaTelemetryConfig.DefaultBuilder();
107 KafkaTelemetryConfig.Builder builder3 =
108 new DefaultKafkaTelemetryConfig.DefaultBuilder();
109
110 config1 = builder1
111 .withAddress(IP_ADDRESS_1)
112 .withPort(PORT_1)
113 .withRetries(RETRIES_1)
114 .withBatchSize(BATCH_SIZE_1)
115 .withMemoryBuffer(MEMORY_BUFFER_1)
116 .withRequiredAcks(REQUIRED_ACKS_1)
117 .withLingerMs(LINGER_MS_1)
118 .withKeySerializer(KEY_SERIALIZER_1)
119 .withValueSerializer(VALUE_SERIALIZER_1)
Jian Li69600e02018-12-24 13:21:18 +0900120 .withKey(KEY_1)
121 .withTopic(TOPIC_1)
122 .withCodec(CODEC_1)
Jian Li52c11222018-06-07 11:39:17 +0900123 .withConfigMap(CONFIG_MAP_1)
124 .build();
125
126 sameAsConfig1 = builder2
127 .withAddress(IP_ADDRESS_1)
128 .withPort(PORT_1)
129 .withRetries(RETRIES_1)
130 .withBatchSize(BATCH_SIZE_1)
131 .withMemoryBuffer(MEMORY_BUFFER_1)
132 .withRequiredAcks(REQUIRED_ACKS_1)
133 .withLingerMs(LINGER_MS_1)
134 .withKeySerializer(KEY_SERIALIZER_1)
135 .withValueSerializer(VALUE_SERIALIZER_1)
Jian Li69600e02018-12-24 13:21:18 +0900136 .withKey(KEY_1)
137 .withTopic(TOPIC_1)
138 .withCodec(CODEC_1)
Jian Li52c11222018-06-07 11:39:17 +0900139 .withConfigMap(CONFIG_MAP_1)
140 .build();
141
142 config2 = builder3
143 .withAddress(IP_ADDRESS_2)
144 .withPort(PORT_2)
145 .withRetries(RETRIES_2)
146 .withBatchSize(BATCH_SIZE_2)
147 .withMemoryBuffer(MEMORY_BUFFER_2)
148 .withRequiredAcks(REQUIRED_ACKS_2)
149 .withLingerMs(LINGER_MS_2)
150 .withKeySerializer(KEY_SERIALIZER_2)
151 .withValueSerializer(VALUE_SERIALIZER_2)
Jian Li69600e02018-12-24 13:21:18 +0900152 .withKey(KEY_2)
153 .withTopic(TOPIC_2)
154 .withCodec(CODEC_2)
Jian Li52c11222018-06-07 11:39:17 +0900155 .withConfigMap(CONFIG_MAP_2)
156 .build();
157 }
158
Jian Liae3fcff2018-07-30 11:55:44 +0900159 /**
160 * Tests class immutability.
161 */
162 @Test
163 public void testImmutability() {
164 assertThatClassIsImmutable(DefaultKafkaTelemetryConfig.class);
165 }
166
167 /**
168 * Tests object equality.
169 */
Jian Li52c11222018-06-07 11:39:17 +0900170 @Test
171 public void testEquality() {
172 new EqualsTester()
173 .addEqualityGroup(config1, sameAsConfig1)
174 .addEqualityGroup(config2).testEquals();
175 }
176
Jian Liae3fcff2018-07-30 11:55:44 +0900177 /**
178 * Tests object construction.
179 */
Jian Li52c11222018-06-07 11:39:17 +0900180 @Test
181 public void testConstruction() {
182 KafkaTelemetryConfig config = config1;
183
184 assertThat(config.address(), is(IP_ADDRESS_1));
185 assertThat(config.port(), is(PORT_1));
186 assertThat(config.retries(), is(RETRIES_1));
187 assertThat(config.batchSize(), is(BATCH_SIZE_1));
188 assertThat(config.memoryBuffer(), is(MEMORY_BUFFER_1));
189 assertThat(config.requiredAcks(), is(REQUIRED_ACKS_1));
190 assertThat(config.lingerMs(), is(LINGER_MS_1));
191 assertThat(config.keySerializer(), is(KEY_SERIALIZER_1));
192 assertThat(config.valueSerializer(), is(VALUE_SERIALIZER_1));
Jian Li69600e02018-12-24 13:21:18 +0900193 assertThat(config.key(), is(KEY_1));
194 assertThat(config.topic(), is(TOPIC_1));
195 assertThat(config.codec(), is(CODEC_1));
Jian Li52c11222018-06-07 11:39:17 +0900196 assertThat(config.configMap(), is(CONFIG_MAP_1));
197 }
Jian Li69600e02018-12-24 13:21:18 +0900198
199 /**
200 * Tests props extraction.
201 */
202 @Test
203 public void testPropsExtraction() {
204 Map<String, String> props = Maps.newConcurrentMap();
205 props.put(ADDRESS, IP_ADDRESS_1);
206 props.put(PORT, String.valueOf(PORT_1));
207 props.put(RETRIES, String.valueOf(RETRIES_1));
208 props.put(BATCH_SIZE, String.valueOf(BATCH_SIZE_1));
209 props.put(MEMORY_BUFFER, String.valueOf(MEMORY_BUFFER_1));
210 props.put(REQUIRED_ACKS, REQUIRED_ACKS_1);
211 props.put(LINGER_MS, String.valueOf(LINGER_MS_1));
212 props.put(KEY_SERIALIZER, KEY_SERIALIZER_1);
213 props.put(VALUE_SERIALIZER, VALUE_SERIALIZER_1);
214 props.put(KEY, KEY_1);
215 props.put(TOPIC, TOPIC_1);
216 props.put(CODEC, CODEC_1);
217
218 TelemetryConfig config = new DefaultTelemetryConfig(DUMMY, KAFKA,
Jian Li667c6eb2019-01-07 23:01:12 +0900219 ImmutableList.of(), DUMMY, DUMMY, DISABLED, props);
Jian Li69600e02018-12-24 13:21:18 +0900220
221 KafkaTelemetryConfig kafkaConfig = fromTelemetryConfig(config);
222 assertThat(kafkaConfig.address(), is(IP_ADDRESS_1));
223 assertThat(kafkaConfig.port(), is(PORT_1));
224 assertThat(kafkaConfig.retries(), is(RETRIES_1));
225 assertThat(kafkaConfig.batchSize(), is(BATCH_SIZE_1));
226 assertThat(kafkaConfig.memoryBuffer(), is(MEMORY_BUFFER_1));
227 assertThat(kafkaConfig.requiredAcks(), is(REQUIRED_ACKS_1));
228 assertThat(kafkaConfig.lingerMs(), is(LINGER_MS_1));
229 assertThat(kafkaConfig.keySerializer(), is(KEY_SERIALIZER_1));
230 assertThat(kafkaConfig.valueSerializer(), is(VALUE_SERIALIZER_1));
231 assertThat(kafkaConfig.key(), is(KEY_1));
232 assertThat(kafkaConfig.topic(), is(TOPIC_1));
233 assertThat(kafkaConfig.codec(), is(CODEC_1));
234 }
235}