Improve test for KvProtoUtil
This commit is contained in:
parent
ee1209b19f
commit
7edb18673c
@ -16,6 +16,10 @@
|
|||||||
package org.thingsboard.server.common.util;
|
package org.thingsboard.server.common.util;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
|
import org.junit.jupiter.params.provider.EnumSource;
|
||||||
|
import org.junit.jupiter.params.provider.MethodSource;
|
||||||
|
import org.junit.jupiter.params.provider.ValueSource;
|
||||||
import org.thingsboard.server.common.data.kv.AggTsKvEntry;
|
import org.thingsboard.server.common.data.kv.AggTsKvEntry;
|
||||||
import org.thingsboard.server.common.data.kv.AttributeKvEntry;
|
import org.thingsboard.server.common.data.kv.AttributeKvEntry;
|
||||||
import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry;
|
import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry;
|
||||||
@ -30,102 +34,81 @@ import org.thingsboard.server.common.data.kv.StringDataEntry;
|
|||||||
import org.thingsboard.server.common.data.kv.TsKvEntry;
|
import org.thingsboard.server.common.data.kv.TsKvEntry;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
class KvProtoUtilTest {
|
class KvProtoUtilTest {
|
||||||
|
|
||||||
@Test
|
private static final long TS = System.currentTimeMillis();
|
||||||
void protoDataTypeSerialization() {
|
|
||||||
for (DataType dataType : DataType.values()) {
|
private static Stream<KvEntry> kvEntryData() {
|
||||||
|
String key = "key";
|
||||||
|
return Stream.of(
|
||||||
|
new BooleanDataEntry(key, true),
|
||||||
|
new LongDataEntry(key, 23L),
|
||||||
|
new DoubleDataEntry(key, 23.0),
|
||||||
|
new StringDataEntry(key, "stringValue"),
|
||||||
|
new JsonDataEntry(key, "jsonValue")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Stream<KvEntry> basicTsKvEntryData() {
|
||||||
|
return kvEntryData().map(kvEntry -> new BasicTsKvEntry(TS, kvEntry));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Stream<AttributeKvEntry> attributeKvEntryData() {
|
||||||
|
return kvEntryData().map(kvEntry -> new BaseAttributeKvEntry(TS, kvEntry));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<TsKvEntry> createTsKvEntryList(boolean withAggregation) {
|
||||||
|
return kvEntryData().map(kvEntry -> {
|
||||||
|
if (withAggregation) {
|
||||||
|
return new AggTsKvEntry(TS, kvEntry, 0);
|
||||||
|
} else {
|
||||||
|
return new BasicTsKvEntry(TS, kvEntry);
|
||||||
|
}
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
@ParameterizedTest
|
||||||
|
@EnumSource(DataType.class)
|
||||||
|
void protoDataTypeSerialization(DataType dataType) {
|
||||||
assertThat(KvProtoUtil.fromProto(KvProtoUtil.toProto(dataType))).as(dataType.name()).isEqualTo(dataType);
|
assertThat(KvProtoUtil.fromProto(KvProtoUtil.toProto(dataType))).as(dataType.name()).isEqualTo(dataType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ParameterizedTest
|
||||||
|
@MethodSource("kvEntryData")
|
||||||
|
void protoKeyValueProtoSerialization(KvEntry kvEntry) {
|
||||||
|
assertThat(KvProtoUtil.fromProto(KvProtoUtil.toProto(kvEntry)))
|
||||||
|
.as("deserialized")
|
||||||
|
.isEqualTo(kvEntry);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@ParameterizedTest
|
||||||
void protoKeyValueProtoSerialization() {
|
@MethodSource("basicTsKvEntryData")
|
||||||
String key = "key";
|
void protoTsKvEntrySerialization(KvEntry kvEntry) {
|
||||||
KvEntry kvEntry = new BooleanDataEntry(key, true);
|
assertThat(KvProtoUtil.fromProto(KvProtoUtil.toProto(TS, kvEntry)))
|
||||||
assertThat(KvProtoUtil.fromProto(KvProtoUtil.toProto(kvEntry))).as("deserialized").isEqualTo(kvEntry);
|
.as("deserialized")
|
||||||
|
.isEqualTo(kvEntry);
|
||||||
kvEntry = new LongDataEntry(key, 23L);
|
|
||||||
assertThat(KvProtoUtil.fromProto(KvProtoUtil.toProto(kvEntry))).as("deserialized").isEqualTo(kvEntry);
|
|
||||||
|
|
||||||
kvEntry = new DoubleDataEntry(key, 23.0);
|
|
||||||
assertThat(KvProtoUtil.fromProto(KvProtoUtil.toProto(kvEntry))).as("deserialized").isEqualTo(kvEntry);
|
|
||||||
|
|
||||||
kvEntry = new StringDataEntry(key, "stringValue");
|
|
||||||
assertThat(KvProtoUtil.fromProto(KvProtoUtil.toProto(kvEntry))).as("deserialized").isEqualTo(kvEntry);
|
|
||||||
|
|
||||||
kvEntry = new JsonDataEntry(key, "jsonValue");
|
|
||||||
assertThat(KvProtoUtil.fromProto(KvProtoUtil.toProto(kvEntry))).as("deserialized").isEqualTo(kvEntry);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@ParameterizedTest
|
||||||
void protoTsKvEntrySerialization() {
|
@ValueSource(booleans = {true, false})
|
||||||
String key = "key";
|
void protoListTsKvEntrySerialization(boolean withAggregation) {
|
||||||
long ts = System.currentTimeMillis();
|
List<TsKvEntry> tsKvEntries = createTsKvEntryList(withAggregation);
|
||||||
KvEntry kvEntry = new BasicTsKvEntry(ts, new BooleanDataEntry(key, true));
|
assertThat(KvProtoUtil.fromProtoList(KvProtoUtil.toProtoList(tsKvEntries)))
|
||||||
assertThat(KvProtoUtil.fromProto(KvProtoUtil.toProto(ts, kvEntry))).as("deserialized").isEqualTo(kvEntry);
|
.as("deserialized")
|
||||||
|
.isEqualTo(tsKvEntries);
|
||||||
kvEntry = new BasicTsKvEntry(ts, new LongDataEntry(key, 23L));
|
|
||||||
assertThat(KvProtoUtil.fromProto(KvProtoUtil.toProto(ts, kvEntry))).as("deserialized").isEqualTo(kvEntry);
|
|
||||||
|
|
||||||
kvEntry = new BasicTsKvEntry(ts, new DoubleDataEntry(key, 23.0));
|
|
||||||
assertThat(KvProtoUtil.fromProto(KvProtoUtil.toProto(ts, kvEntry))).as("deserialized").isEqualTo(kvEntry);
|
|
||||||
|
|
||||||
kvEntry = new BasicTsKvEntry(ts, new StringDataEntry(key, "stringValue"));
|
|
||||||
assertThat(KvProtoUtil.fromProto(KvProtoUtil.toProto(ts, kvEntry))).as("deserialized").isEqualTo(kvEntry);
|
|
||||||
|
|
||||||
kvEntry = new BasicTsKvEntry(ts, new JsonDataEntry(key, "jsonValue"));
|
|
||||||
assertThat(KvProtoUtil.fromProto(KvProtoUtil.toProto(ts, kvEntry))).as("deserialized").isEqualTo(kvEntry);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void protoListTsKvEntrySerialization() {
|
|
||||||
String key = "key";
|
|
||||||
long ts = System.currentTimeMillis();
|
|
||||||
KvEntry booleanDataEntry = new BooleanDataEntry(key, true);
|
|
||||||
KvEntry longDataEntry = new LongDataEntry(key, 23L);
|
|
||||||
KvEntry doubleDataEntry = new DoubleDataEntry(key, 23.0);
|
|
||||||
KvEntry stringDataEntry = new StringDataEntry(key, "stringValue");
|
|
||||||
KvEntry jsonDataEntry = new JsonDataEntry(key, "jsonValue");
|
|
||||||
List<TsKvEntry> protoList = List.of(
|
|
||||||
new BasicTsKvEntry(ts, booleanDataEntry),
|
|
||||||
new BasicTsKvEntry(ts, longDataEntry),
|
|
||||||
new BasicTsKvEntry(ts, doubleDataEntry),
|
|
||||||
new BasicTsKvEntry(ts, stringDataEntry),
|
|
||||||
new BasicTsKvEntry(ts, jsonDataEntry)
|
|
||||||
);
|
|
||||||
assertThat(KvProtoUtil.fromProtoList(KvProtoUtil.toProtoList(protoList))).as("deserialized").isEqualTo(protoList);
|
|
||||||
|
|
||||||
protoList = List.of(
|
|
||||||
new AggTsKvEntry(ts, booleanDataEntry, 3),
|
|
||||||
new AggTsKvEntry(ts, longDataEntry, 5),
|
|
||||||
new AggTsKvEntry(ts, doubleDataEntry, 2),
|
|
||||||
new AggTsKvEntry(ts, stringDataEntry, 1),
|
|
||||||
new AggTsKvEntry(ts, jsonDataEntry, 0)
|
|
||||||
);
|
|
||||||
assertThat(KvProtoUtil.fromProtoList(KvProtoUtil.toProtoList(protoList))).as("deserialized").isEqualTo(protoList);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void protoListAttributeKvSerialization() {
|
void protoListAttributeKvSerialization() {
|
||||||
String key = "key";
|
List<AttributeKvEntry> protoList = attributeKvEntryData().toList();
|
||||||
long ts = System.currentTimeMillis();
|
assertThat(KvProtoUtil.toAttributeKvList(KvProtoUtil.attrToTsKvProtos(protoList)))
|
||||||
KvEntry booleanDataEntry = new BooleanDataEntry(key, true);
|
.as("deserialized")
|
||||||
KvEntry longDataEntry = new LongDataEntry(key, 23L);
|
.isEqualTo(protoList);
|
||||||
KvEntry doubleDataEntry = new DoubleDataEntry(key, 23.0);
|
|
||||||
KvEntry stringDataEntry = new StringDataEntry(key, "stringValue");
|
|
||||||
KvEntry jsonDataEntry = new JsonDataEntry(key, "jsonValue");
|
|
||||||
List<AttributeKvEntry> protoList = List.of(
|
|
||||||
new BaseAttributeKvEntry(ts, booleanDataEntry),
|
|
||||||
new BaseAttributeKvEntry(ts, longDataEntry),
|
|
||||||
new BaseAttributeKvEntry(ts, doubleDataEntry),
|
|
||||||
new BaseAttributeKvEntry(ts, stringDataEntry),
|
|
||||||
new BaseAttributeKvEntry(ts, jsonDataEntry)
|
|
||||||
);
|
|
||||||
assertThat(KvProtoUtil.toAttributeKvList(KvProtoUtil.attrToTsKvProtos(protoList))).as("deserialized").isEqualTo(protoList);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user