fix dynamic schemas, tests
This commit is contained in:
parent
706fd01d76
commit
eecc6aa1a6
@ -62,7 +62,7 @@ public abstract class AbstractMqttIntegrationTest extends AbstractControllerTest
|
|||||||
|
|
||||||
private static final AtomicInteger atomicInteger = new AtomicInteger(2);
|
private static final AtomicInteger atomicInteger = new AtomicInteger(2);
|
||||||
|
|
||||||
protected static final String DEVICE_TELEMETRY_PROTO_SCHEMA = "syntax =\"proto3\";\n" +
|
public static final String DEVICE_TELEMETRY_PROTO_SCHEMA = "syntax =\"proto3\";\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"package test;\n" +
|
"package test;\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
@ -71,10 +71,19 @@ public abstract class AbstractMqttIntegrationTest extends AbstractControllerTest
|
|||||||
" bool key2 = 2;\n" +
|
" bool key2 = 2;\n" +
|
||||||
" double key3 = 3;\n" +
|
" double key3 = 3;\n" +
|
||||||
" int32 key4 = 4;\n" +
|
" int32 key4 = 4;\n" +
|
||||||
" string key5 = 5;\n" +
|
" JsonObject key5 = 5;\n" +
|
||||||
|
"\n" +
|
||||||
|
" message JsonObject {\n" +
|
||||||
|
" int32 someNumber = 6;\n" +
|
||||||
|
" repeated int32 someArray = 7;\n" +
|
||||||
|
" NestedJsonObject someNestedObject = 8;\n" +
|
||||||
|
" message NestedJsonObject {\n" +
|
||||||
|
" string key = 9;\n" +
|
||||||
|
" }\n" +
|
||||||
|
" }\n" +
|
||||||
"}";
|
"}";
|
||||||
|
|
||||||
protected static final String DEVICE_ATTRIBUTES_PROTO_SCHEMA = "syntax =\"proto3\";\n" +
|
public static final String DEVICE_ATTRIBUTES_PROTO_SCHEMA = "syntax =\"proto3\";\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"package test;\n" +
|
"package test;\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
@ -83,7 +92,16 @@ public abstract class AbstractMqttIntegrationTest extends AbstractControllerTest
|
|||||||
" bool key2 = 2;\n" +
|
" bool key2 = 2;\n" +
|
||||||
" double key3 = 3;\n" +
|
" double key3 = 3;\n" +
|
||||||
" int32 key4 = 4;\n" +
|
" int32 key4 = 4;\n" +
|
||||||
" string key5 = 5;\n" +
|
" JsonObject key5 = 5;\n" +
|
||||||
|
"\n" +
|
||||||
|
" message JsonObject {\n" +
|
||||||
|
" int32 someNumber = 6;\n" +
|
||||||
|
" repeated int32 someArray = 7;\n" +
|
||||||
|
" NestedJsonObject someNestedObject = 8;\n" +
|
||||||
|
" message NestedJsonObject {\n" +
|
||||||
|
" string key = 9;\n" +
|
||||||
|
" }\n" +
|
||||||
|
" }\n" +
|
||||||
"}";
|
"}";
|
||||||
|
|
||||||
protected Tenant savedTenant;
|
protected Tenant savedTenant;
|
||||||
|
|||||||
@ -26,13 +26,13 @@ import java.util.Arrays;
|
|||||||
|
|
||||||
@RunWith(ClasspathSuite.class)
|
@RunWith(ClasspathSuite.class)
|
||||||
@ClasspathSuite.ClassnameFilters({
|
@ClasspathSuite.ClassnameFilters({
|
||||||
// "org.thingsboard.server.mqtt.rpc.sql.*Test",
|
"org.thingsboard.server.mqtt.rpc.sql.*Test",
|
||||||
// "org.thingsboard.server.mqtt.telemetry.timeseries.sql.*Test",
|
"org.thingsboard.server.mqtt.telemetry.timeseries.sql.*Test",
|
||||||
// "org.thingsboard.server.mqtt.telemetry.attributes.sql.*Test",
|
"org.thingsboard.server.mqtt.telemetry.attributes.sql.*Test",
|
||||||
// "org.thingsboard.server.mqtt.attributes.updates.sql.*Test",
|
"org.thingsboard.server.mqtt.attributes.updates.sql.*Test",
|
||||||
"org.thingsboard.server.mqtt.attributes.request.sql.*Test",
|
"org.thingsboard.server.mqtt.attributes.request.sql.*Test",
|
||||||
// "org.thingsboard.server.mqtt.claim.sql.*Test",
|
"org.thingsboard.server.mqtt.claim.sql.*Test",
|
||||||
// "org.thingsboard.server.mqtt.provision.sql.*Test"
|
"org.thingsboard.server.mqtt.provision.sql.*Test"
|
||||||
})
|
})
|
||||||
public class MqttSqlTestSuite {
|
public class MqttSqlTestSuite {
|
||||||
|
|
||||||
|
|||||||
@ -122,7 +122,7 @@ public abstract class AbstractMqttAttributesRequestIntegrationTest extends Abstr
|
|||||||
client.publish(MqttTopics.DEVICE_ATTRIBUTES_REQUEST_TOPIC_PREFIX + "1", mqttMessage);
|
client.publish(MqttTopics.DEVICE_ATTRIBUTES_REQUEST_TOPIC_PREFIX + "1", mqttMessage);
|
||||||
latch.await(3, TimeUnit.SECONDS);
|
latch.await(3, TimeUnit.SECONDS);
|
||||||
assertEquals(MqttQoS.AT_MOST_ONCE.value(), callback.getQoS());
|
assertEquals(MqttQoS.AT_MOST_ONCE.value(), callback.getQoS());
|
||||||
String expectedRequestPayload = "{\"client\":{\"attribute5\":{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}},\"attribute4\":73,\"attribute1\":\"value1\",\"attribute3\":42.0,\"attribute2\":true},\"shared\":{\"attribute5\":{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}},\"attribute4\":73,\"attribute1\":\"value1\",\"attribute3\":42.0,\"attribute2\":true}}";
|
String expectedRequestPayload = "{\"client\":{\"attribute1\":\"value1\",\"attribute2\":true,\"attribute3\":42.0,\"attribute4\":73,\"attribute5\":{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}}},\"shared\":{\"attribute1\":\"value1\",\"attribute2\":true,\"attribute3\":42.0,\"attribute4\":73,\"attribute5\":{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}}}}";
|
||||||
assertEquals(JacksonUtil.toJsonNode(expectedRequestPayload), JacksonUtil.toJsonNode(new String(callback.getPayloadBytes(), StandardCharsets.UTF_8)));
|
assertEquals(JacksonUtil.toJsonNode(expectedRequestPayload), JacksonUtil.toJsonNode(new String(callback.getPayloadBytes(), StandardCharsets.UTF_8)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -62,7 +62,16 @@ public abstract class AbstractMqttAttributesRequestProtoIntegrationTest extends
|
|||||||
" bool attribute2 = 2;\n" +
|
" bool attribute2 = 2;\n" +
|
||||||
" double attribute3 = 3;\n" +
|
" double attribute3 = 3;\n" +
|
||||||
" int32 attribute4 = 4;\n" +
|
" int32 attribute4 = 4;\n" +
|
||||||
" string attribute5 = 5;\n" +
|
" JsonObject attribute5 = 5;\n" +
|
||||||
|
"\n" +
|
||||||
|
" message JsonObject {\n" +
|
||||||
|
" int32 someNumber = 6;\n" +
|
||||||
|
" repeated int32 someArray = 7;\n" +
|
||||||
|
" NestedJsonObject someNestedObject = 8;\n" +
|
||||||
|
" message NestedJsonObject {\n" +
|
||||||
|
" string key = 9;\n" +
|
||||||
|
" }\n" +
|
||||||
|
" }\n" +
|
||||||
"}";
|
"}";
|
||||||
|
|
||||||
@After
|
@After
|
||||||
@ -93,6 +102,23 @@ public abstract class AbstractMqttAttributesRequestProtoIntegrationTest extends
|
|||||||
ProtoTransportPayloadConfiguration protoTransportPayloadConfiguration = (ProtoTransportPayloadConfiguration) transportPayloadTypeConfiguration;
|
ProtoTransportPayloadConfiguration protoTransportPayloadConfiguration = (ProtoTransportPayloadConfiguration) transportPayloadTypeConfiguration;
|
||||||
ProtoFileElement transportProtoSchema = protoTransportPayloadConfiguration.getTransportProtoSchema(ATTRIBUTES_SCHEMA_STR);
|
ProtoFileElement transportProtoSchema = protoTransportPayloadConfiguration.getTransportProtoSchema(ATTRIBUTES_SCHEMA_STR);
|
||||||
DynamicSchema attributesSchema = protoTransportPayloadConfiguration.getDynamicSchema(transportProtoSchema, ProtoTransportPayloadConfiguration.ATTRIBUTES_PROTO_SCHEMA);
|
DynamicSchema attributesSchema = protoTransportPayloadConfiguration.getDynamicSchema(transportProtoSchema, ProtoTransportPayloadConfiguration.ATTRIBUTES_PROTO_SCHEMA);
|
||||||
|
|
||||||
|
DynamicMessage.Builder nestedJsonObjectBuilder = attributesSchema.newMessageBuilder("PostAttributes.JsonObject.NestedJsonObject");
|
||||||
|
Descriptors.Descriptor nestedJsonObjectBuilderDescriptor = nestedJsonObjectBuilder.getDescriptorForType();
|
||||||
|
assertNotNull(nestedJsonObjectBuilderDescriptor);
|
||||||
|
DynamicMessage nestedJsonObject = nestedJsonObjectBuilder.setField(nestedJsonObjectBuilderDescriptor.findFieldByName("key"), "value").build();
|
||||||
|
|
||||||
|
DynamicMessage.Builder jsonObjectBuilder = attributesSchema.newMessageBuilder("PostAttributes.JsonObject");
|
||||||
|
Descriptors.Descriptor jsonObjectBuilderDescriptor = jsonObjectBuilder.getDescriptorForType();
|
||||||
|
assertNotNull(jsonObjectBuilderDescriptor);
|
||||||
|
DynamicMessage jsonObject = jsonObjectBuilder
|
||||||
|
.setField(jsonObjectBuilderDescriptor.findFieldByName("someNumber"), 42)
|
||||||
|
.addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 1)
|
||||||
|
.addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 2)
|
||||||
|
.addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 3)
|
||||||
|
.setField(jsonObjectBuilderDescriptor.findFieldByName("someNestedObject"), nestedJsonObject)
|
||||||
|
.build();
|
||||||
|
|
||||||
DynamicMessage.Builder postAttributesBuilder = attributesSchema.newMessageBuilder("PostAttributes");
|
DynamicMessage.Builder postAttributesBuilder = attributesSchema.newMessageBuilder("PostAttributes");
|
||||||
Descriptors.Descriptor postAttributesMsgDescriptor = postAttributesBuilder.getDescriptorForType();
|
Descriptors.Descriptor postAttributesMsgDescriptor = postAttributesBuilder.getDescriptorForType();
|
||||||
assertNotNull(postAttributesMsgDescriptor);
|
assertNotNull(postAttributesMsgDescriptor);
|
||||||
@ -101,7 +127,7 @@ public abstract class AbstractMqttAttributesRequestProtoIntegrationTest extends
|
|||||||
.setField(postAttributesMsgDescriptor.findFieldByName("attribute2"), true)
|
.setField(postAttributesMsgDescriptor.findFieldByName("attribute2"), true)
|
||||||
.setField(postAttributesMsgDescriptor.findFieldByName("attribute3"), 42.0)
|
.setField(postAttributesMsgDescriptor.findFieldByName("attribute3"), 42.0)
|
||||||
.setField(postAttributesMsgDescriptor.findFieldByName("attribute4"), 73)
|
.setField(postAttributesMsgDescriptor.findFieldByName("attribute4"), 73)
|
||||||
.setField(postAttributesMsgDescriptor.findFieldByName("attribute5"), "{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}}")
|
.setField(postAttributesMsgDescriptor.findFieldByName("attribute5"), jsonObject)
|
||||||
.build();
|
.build();
|
||||||
byte[] payload = postAttributesMsg.toByteArray();
|
byte[] payload = postAttributesMsg.toByteArray();
|
||||||
client.publish(MqttTopics.DEVICE_ATTRIBUTES_TOPIC, new MqttMessage(payload));
|
client.publish(MqttTopics.DEVICE_ATTRIBUTES_TOPIC, new MqttMessage(payload));
|
||||||
|
|||||||
@ -163,16 +163,10 @@ public abstract class AbstractMqttAttributesIntegrationTest extends AbstractMqtt
|
|||||||
break;
|
break;
|
||||||
case "key5":
|
case "key5":
|
||||||
assertNotNull(value);
|
assertNotNull(value);
|
||||||
LinkedHashMap valueMap;
|
assertEquals(3, ((LinkedHashMap) value).size());
|
||||||
if (value instanceof String) {
|
assertEquals(42, ((LinkedHashMap) value).get("someNumber"));
|
||||||
valueMap = mapper.readValue((String) value, LinkedHashMap.class);
|
assertEquals(Arrays.asList(1, 2, 3), ((LinkedHashMap) value).get("someArray"));
|
||||||
} else {
|
LinkedHashMap<String, String> someNestedObject = (LinkedHashMap) ((LinkedHashMap) value).get("someNestedObject");
|
||||||
valueMap = (LinkedHashMap) value;
|
|
||||||
}
|
|
||||||
assertEquals(3, valueMap.size());
|
|
||||||
assertEquals(42, valueMap.get("someNumber"));
|
|
||||||
assertEquals(Arrays.asList(1, 2, 3), valueMap.get("someArray"));
|
|
||||||
LinkedHashMap<String, String> someNestedObject = (LinkedHashMap) valueMap.get("someNestedObject");
|
|
||||||
assertEquals("value", someNestedObject.get("key"));
|
assertEquals("value", someNestedObject.get("key"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -58,6 +58,23 @@ public abstract class AbstractMqttAttributesProtoIntegrationTest extends Abstrac
|
|||||||
ProtoTransportPayloadConfiguration protoTransportPayloadConfiguration = (ProtoTransportPayloadConfiguration) transportPayloadTypeConfiguration;
|
ProtoTransportPayloadConfiguration protoTransportPayloadConfiguration = (ProtoTransportPayloadConfiguration) transportPayloadTypeConfiguration;
|
||||||
ProtoFileElement transportProtoSchemaFile = protoTransportPayloadConfiguration.getTransportProtoSchema(DEVICE_ATTRIBUTES_PROTO_SCHEMA);
|
ProtoFileElement transportProtoSchemaFile = protoTransportPayloadConfiguration.getTransportProtoSchema(DEVICE_ATTRIBUTES_PROTO_SCHEMA);
|
||||||
DynamicSchema attributesSchema = protoTransportPayloadConfiguration.getDynamicSchema(transportProtoSchemaFile, ProtoTransportPayloadConfiguration.ATTRIBUTES_PROTO_SCHEMA);
|
DynamicSchema attributesSchema = protoTransportPayloadConfiguration.getDynamicSchema(transportProtoSchemaFile, ProtoTransportPayloadConfiguration.ATTRIBUTES_PROTO_SCHEMA);
|
||||||
|
|
||||||
|
DynamicMessage.Builder nestedJsonObjectBuilder = attributesSchema.newMessageBuilder("PostAttributes.JsonObject.NestedJsonObject");
|
||||||
|
Descriptors.Descriptor nestedJsonObjectBuilderDescriptor = nestedJsonObjectBuilder.getDescriptorForType();
|
||||||
|
assertNotNull(nestedJsonObjectBuilderDescriptor);
|
||||||
|
DynamicMessage nestedJsonObject = nestedJsonObjectBuilder.setField(nestedJsonObjectBuilderDescriptor.findFieldByName("key"), "value").build();
|
||||||
|
|
||||||
|
DynamicMessage.Builder jsonObjectBuilder = attributesSchema.newMessageBuilder("PostAttributes.JsonObject");
|
||||||
|
Descriptors.Descriptor jsonObjectBuilderDescriptor = jsonObjectBuilder.getDescriptorForType();
|
||||||
|
assertNotNull(jsonObjectBuilderDescriptor);
|
||||||
|
DynamicMessage jsonObject = jsonObjectBuilder
|
||||||
|
.setField(jsonObjectBuilderDescriptor.findFieldByName("someNumber"), 42)
|
||||||
|
.addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 1)
|
||||||
|
.addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 2)
|
||||||
|
.addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 3)
|
||||||
|
.setField(jsonObjectBuilderDescriptor.findFieldByName("someNestedObject"), nestedJsonObject)
|
||||||
|
.build();
|
||||||
|
|
||||||
DynamicMessage.Builder postAttributesBuilder = attributesSchema.newMessageBuilder("PostAttributes");
|
DynamicMessage.Builder postAttributesBuilder = attributesSchema.newMessageBuilder("PostAttributes");
|
||||||
Descriptors.Descriptor postAttributesMsgDescriptor = postAttributesBuilder.getDescriptorForType();
|
Descriptors.Descriptor postAttributesMsgDescriptor = postAttributesBuilder.getDescriptorForType();
|
||||||
assertNotNull(postAttributesMsgDescriptor);
|
assertNotNull(postAttributesMsgDescriptor);
|
||||||
@ -66,7 +83,7 @@ public abstract class AbstractMqttAttributesProtoIntegrationTest extends Abstrac
|
|||||||
.setField(postAttributesMsgDescriptor.findFieldByName("key2"), true)
|
.setField(postAttributesMsgDescriptor.findFieldByName("key2"), true)
|
||||||
.setField(postAttributesMsgDescriptor.findFieldByName("key3"), 3.0)
|
.setField(postAttributesMsgDescriptor.findFieldByName("key3"), 3.0)
|
||||||
.setField(postAttributesMsgDescriptor.findFieldByName("key4"), 4)
|
.setField(postAttributesMsgDescriptor.findFieldByName("key4"), 4)
|
||||||
.setField(postAttributesMsgDescriptor.findFieldByName("key5"), "{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}}")
|
.setField(postAttributesMsgDescriptor.findFieldByName("key5"), jsonObject)
|
||||||
.build();
|
.build();
|
||||||
processAttributesTest(POST_DATA_ATTRIBUTES_TOPIC, expectedKeys, postAttributesMsg.toByteArray());
|
processAttributesTest(POST_DATA_ATTRIBUTES_TOPIC, expectedKeys, postAttributesMsg.toByteArray());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -62,6 +62,23 @@ public abstract class AbstractMqttTimeseriesProtoIntegrationTest extends Abstrac
|
|||||||
ProtoTransportPayloadConfiguration protoTransportPayloadConfiguration = (ProtoTransportPayloadConfiguration) transportPayloadTypeConfiguration;
|
ProtoTransportPayloadConfiguration protoTransportPayloadConfiguration = (ProtoTransportPayloadConfiguration) transportPayloadTypeConfiguration;
|
||||||
ProtoFileElement transportProtoSchema = protoTransportPayloadConfiguration.getTransportProtoSchema(DEVICE_TELEMETRY_PROTO_SCHEMA);
|
ProtoFileElement transportProtoSchema = protoTransportPayloadConfiguration.getTransportProtoSchema(DEVICE_TELEMETRY_PROTO_SCHEMA);
|
||||||
DynamicSchema telemetrySchema = protoTransportPayloadConfiguration.getDynamicSchema(transportProtoSchema, "telemetrySchema");
|
DynamicSchema telemetrySchema = protoTransportPayloadConfiguration.getDynamicSchema(transportProtoSchema, "telemetrySchema");
|
||||||
|
|
||||||
|
DynamicMessage.Builder nestedJsonObjectBuilder = telemetrySchema.newMessageBuilder("PostTelemetry.JsonObject.NestedJsonObject");
|
||||||
|
Descriptors.Descriptor nestedJsonObjectBuilderDescriptor = nestedJsonObjectBuilder.getDescriptorForType();
|
||||||
|
assertNotNull(nestedJsonObjectBuilderDescriptor);
|
||||||
|
DynamicMessage nestedJsonObject = nestedJsonObjectBuilder.setField(nestedJsonObjectBuilderDescriptor.findFieldByName("key"), "value").build();
|
||||||
|
|
||||||
|
DynamicMessage.Builder jsonObjectBuilder = telemetrySchema.newMessageBuilder("PostTelemetry.JsonObject");
|
||||||
|
Descriptors.Descriptor jsonObjectBuilderDescriptor = jsonObjectBuilder.getDescriptorForType();
|
||||||
|
assertNotNull(jsonObjectBuilderDescriptor);
|
||||||
|
DynamicMessage jsonObject = jsonObjectBuilder
|
||||||
|
.setField(jsonObjectBuilderDescriptor.findFieldByName("someNumber"), 42)
|
||||||
|
.addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 1)
|
||||||
|
.addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 2)
|
||||||
|
.addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 3)
|
||||||
|
.setField(jsonObjectBuilderDescriptor.findFieldByName("someNestedObject"), nestedJsonObject)
|
||||||
|
.build();
|
||||||
|
|
||||||
DynamicMessage.Builder postTelemetryBuilder = telemetrySchema.newMessageBuilder("PostTelemetry");
|
DynamicMessage.Builder postTelemetryBuilder = telemetrySchema.newMessageBuilder("PostTelemetry");
|
||||||
Descriptors.Descriptor postTelemetryMsgDescriptor = postTelemetryBuilder.getDescriptorForType();
|
Descriptors.Descriptor postTelemetryMsgDescriptor = postTelemetryBuilder.getDescriptorForType();
|
||||||
assertNotNull(postTelemetryMsgDescriptor);
|
assertNotNull(postTelemetryMsgDescriptor);
|
||||||
@ -70,7 +87,7 @@ public abstract class AbstractMqttTimeseriesProtoIntegrationTest extends Abstrac
|
|||||||
.setField(postTelemetryMsgDescriptor.findFieldByName("key2"), true)
|
.setField(postTelemetryMsgDescriptor.findFieldByName("key2"), true)
|
||||||
.setField(postTelemetryMsgDescriptor.findFieldByName("key3"), 3.0)
|
.setField(postTelemetryMsgDescriptor.findFieldByName("key3"), 3.0)
|
||||||
.setField(postTelemetryMsgDescriptor.findFieldByName("key4"), 4)
|
.setField(postTelemetryMsgDescriptor.findFieldByName("key4"), 4)
|
||||||
.setField(postTelemetryMsgDescriptor.findFieldByName("key5"), "{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}}")
|
.setField(postTelemetryMsgDescriptor.findFieldByName("key5"), jsonObject)
|
||||||
.build();
|
.build();
|
||||||
processTelemetryTest(POST_DATA_TELEMETRY_TOPIC, expectedKeys, postTelemetryMsg.toByteArray(), false);
|
processTelemetryTest(POST_DATA_TELEMETRY_TOPIC, expectedKeys, postTelemetryMsg.toByteArray(), false);
|
||||||
}
|
}
|
||||||
@ -82,17 +99,25 @@ public abstract class AbstractMqttTimeseriesProtoIntegrationTest extends Abstrac
|
|||||||
"package test;\n" +
|
"package test;\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"message PostTelemetry {\n" +
|
"message PostTelemetry {\n" +
|
||||||
"\n" +
|
|
||||||
" message Values {\n" +
|
|
||||||
" string key1 = 1;\n" +
|
|
||||||
" bool key2 = 2;\n" +
|
|
||||||
" double key3 = 3;\n" +
|
|
||||||
" int32 key4 = 4;\n" +
|
|
||||||
" string key5 = 5;\n" +
|
|
||||||
" }\n" +
|
|
||||||
"\n" +
|
|
||||||
" int64 ts = 1;\n" +
|
" int64 ts = 1;\n" +
|
||||||
" Values values = 2;\n" +
|
" Values values = 2;\n" +
|
||||||
|
" \n" +
|
||||||
|
" message Values {\n" +
|
||||||
|
" string key1 = 3;\n" +
|
||||||
|
" bool key2 = 4;\n" +
|
||||||
|
" double key3 = 5;\n" +
|
||||||
|
" int32 key4 = 6;\n" +
|
||||||
|
" JsonObject key5 = 7;\n" +
|
||||||
|
" }\n" +
|
||||||
|
" \n" +
|
||||||
|
" message JsonObject {\n" +
|
||||||
|
" int32 someNumber = 8;\n" +
|
||||||
|
" repeated int32 someArray = 9;\n" +
|
||||||
|
" NestedJsonObject someNestedObject = 10;\n" +
|
||||||
|
" message NestedJsonObject {\n" +
|
||||||
|
" string key = 11;\n" +
|
||||||
|
" }\n" +
|
||||||
|
" }\n" +
|
||||||
"}";
|
"}";
|
||||||
super.processBeforeTest("Test Post Telemetry device proto payload", "Test Post Telemetry gateway proto payload", TransportPayloadType.PROTOBUF, POST_DATA_TELEMETRY_TOPIC, null, schemaStr, null, DeviceProfileProvisionType.DISABLED, null, null);
|
super.processBeforeTest("Test Post Telemetry device proto payload", "Test Post Telemetry gateway proto payload", TransportPayloadType.PROTOBUF, POST_DATA_TELEMETRY_TOPIC, null, schemaStr, null, DeviceProfileProvisionType.DISABLED, null, null);
|
||||||
List<String> expectedKeys = Arrays.asList("key1", "key2", "key3", "key4", "key5");
|
List<String> expectedKeys = Arrays.asList("key1", "key2", "key3", "key4", "key5");
|
||||||
@ -105,6 +130,23 @@ public abstract class AbstractMqttTimeseriesProtoIntegrationTest extends Abstrac
|
|||||||
ProtoFileElement transportProtoSchema = protoTransportPayloadConfiguration.getTransportProtoSchema(schemaStr);
|
ProtoFileElement transportProtoSchema = protoTransportPayloadConfiguration.getTransportProtoSchema(schemaStr);
|
||||||
DynamicSchema telemetrySchema = protoTransportPayloadConfiguration.getDynamicSchema(transportProtoSchema, "telemetrySchema");
|
DynamicSchema telemetrySchema = protoTransportPayloadConfiguration.getDynamicSchema(transportProtoSchema, "telemetrySchema");
|
||||||
|
|
||||||
|
DynamicMessage.Builder nestedJsonObjectBuilder = telemetrySchema.newMessageBuilder("PostTelemetry.JsonObject.NestedJsonObject");
|
||||||
|
Descriptors.Descriptor nestedJsonObjectBuilderDescriptor = nestedJsonObjectBuilder.getDescriptorForType();
|
||||||
|
assertNotNull(nestedJsonObjectBuilderDescriptor);
|
||||||
|
DynamicMessage nestedJsonObject = nestedJsonObjectBuilder.setField(nestedJsonObjectBuilderDescriptor.findFieldByName("key"), "value").build();
|
||||||
|
|
||||||
|
DynamicMessage.Builder jsonObjectBuilder = telemetrySchema.newMessageBuilder("PostTelemetry.JsonObject");
|
||||||
|
Descriptors.Descriptor jsonObjectBuilderDescriptor = jsonObjectBuilder.getDescriptorForType();
|
||||||
|
assertNotNull(jsonObjectBuilderDescriptor);
|
||||||
|
DynamicMessage jsonObject = jsonObjectBuilder
|
||||||
|
.setField(jsonObjectBuilderDescriptor.findFieldByName("someNumber"), 42)
|
||||||
|
.addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 1)
|
||||||
|
.addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 2)
|
||||||
|
.addRepeatedField(jsonObjectBuilderDescriptor.findFieldByName("someArray"), 3)
|
||||||
|
.setField(jsonObjectBuilderDescriptor.findFieldByName("someNestedObject"), nestedJsonObject)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
|
||||||
DynamicMessage.Builder valuesBuilder = telemetrySchema.newMessageBuilder("PostTelemetry.Values");
|
DynamicMessage.Builder valuesBuilder = telemetrySchema.newMessageBuilder("PostTelemetry.Values");
|
||||||
Descriptors.Descriptor valuesDescriptor = valuesBuilder.getDescriptorForType();
|
Descriptors.Descriptor valuesDescriptor = valuesBuilder.getDescriptorForType();
|
||||||
assertNotNull(valuesDescriptor);
|
assertNotNull(valuesDescriptor);
|
||||||
@ -114,7 +156,7 @@ public abstract class AbstractMqttTimeseriesProtoIntegrationTest extends Abstrac
|
|||||||
.setField(valuesDescriptor.findFieldByName("key2"), true)
|
.setField(valuesDescriptor.findFieldByName("key2"), true)
|
||||||
.setField(valuesDescriptor.findFieldByName("key3"), 3.0)
|
.setField(valuesDescriptor.findFieldByName("key3"), 3.0)
|
||||||
.setField(valuesDescriptor.findFieldByName("key4"), 4)
|
.setField(valuesDescriptor.findFieldByName("key4"), 4)
|
||||||
.setField(valuesDescriptor.findFieldByName("key5"), "{\"someNumber\":42,\"someArray\":[1,2,3],\"someNestedObject\":{\"key\":\"value\"}}")
|
.setField(valuesDescriptor.findFieldByName("key5"), jsonObject)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
DynamicMessage.Builder postTelemetryBuilder = telemetrySchema.newMessageBuilder("PostTelemetry");
|
DynamicMessage.Builder postTelemetryBuilder = telemetrySchema.newMessageBuilder("PostTelemetry");
|
||||||
|
|||||||
@ -128,19 +128,8 @@ public class ProtoTransportPayloadConfiguration implements TransportPayloadTypeC
|
|||||||
List<MessageDefinition> messageDefinitions = new ArrayList<>();
|
List<MessageDefinition> messageDefinitions = new ArrayList<>();
|
||||||
messageElementsList.forEach(messageElement -> {
|
messageElementsList.forEach(messageElement -> {
|
||||||
MessageDefinition.Builder messageDefinitionBuilder = MessageDefinition.newBuilder(messageElement.getName());
|
MessageDefinition.Builder messageDefinitionBuilder = MessageDefinition.newBuilder(messageElement.getName());
|
||||||
List<FieldElement> messageElementFields = messageElement.getFields();
|
|
||||||
List<OneOfElement> oneOfs = messageElement.getOneOfs();
|
|
||||||
|
|
||||||
List<TypeElement> nestedTypes = messageElement.getNestedTypes();
|
List<TypeElement> nestedTypes = messageElement.getNestedTypes();
|
||||||
if (!messageElementFields.isEmpty()) {
|
|
||||||
addMessageFieldsToTheMessageDefinition(messageElementFields, messageDefinitionBuilder);
|
|
||||||
}
|
|
||||||
if (!oneOfs.isEmpty()) {
|
|
||||||
for (OneOfElement oneOfelement : oneOfs) {
|
|
||||||
MessageDefinition.OneofBuilder oneofBuilder = messageDefinitionBuilder.addOneof(oneOfelement.getName());
|
|
||||||
addMessageFieldsToTheOneOfDefinition(oneOfelement.getFields(), oneofBuilder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!nestedTypes.isEmpty()) {
|
if (!nestedTypes.isEmpty()) {
|
||||||
List<EnumElement> nestedEnumTypes = getEnumElements(nestedTypes);
|
List<EnumElement> nestedEnumTypes = getEnumElements(nestedTypes);
|
||||||
if (!nestedEnumTypes.isEmpty()) {
|
if (!nestedEnumTypes.isEmpty()) {
|
||||||
@ -153,6 +142,17 @@ public class ProtoTransportPayloadConfiguration implements TransportPayloadTypeC
|
|||||||
List<MessageDefinition> nestedMessageDefinitions = getMessageDefinitions(nestedMessageTypes);
|
List<MessageDefinition> nestedMessageDefinitions = getMessageDefinitions(nestedMessageTypes);
|
||||||
nestedMessageDefinitions.forEach(messageDefinitionBuilder::addMessageDefinition);
|
nestedMessageDefinitions.forEach(messageDefinitionBuilder::addMessageDefinition);
|
||||||
}
|
}
|
||||||
|
List<FieldElement> messageElementFields = messageElement.getFields();
|
||||||
|
List<OneOfElement> oneOfs = messageElement.getOneOfs();
|
||||||
|
if (!oneOfs.isEmpty()) {
|
||||||
|
for (OneOfElement oneOfelement : oneOfs) {
|
||||||
|
MessageDefinition.OneofBuilder oneofBuilder = messageDefinitionBuilder.addOneof(oneOfelement.getName());
|
||||||
|
addMessageFieldsToTheOneOfDefinition(oneOfelement.getFields(), oneofBuilder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!messageElementFields.isEmpty()) {
|
||||||
|
addMessageFieldsToTheMessageDefinition(messageElementFields, messageDefinitionBuilder);
|
||||||
|
}
|
||||||
messageDefinitions.add(messageDefinitionBuilder.build());
|
messageDefinitions.add(messageDefinitionBuilder.build());
|
||||||
});
|
});
|
||||||
return messageDefinitions;
|
return messageDefinitions;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user