...
|
...
|
@@ -32,10 +32,12 @@ import org.junit.Assert; |
32
|
32
|
import org.junit.Before;
|
33
|
33
|
import org.junit.Test;
|
34
|
34
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
35
|
+import org.thingsboard.common.util.JacksonUtil;
|
35
|
36
|
import org.thingsboard.server.common.data.Customer;
|
36
|
37
|
import org.thingsboard.server.common.data.Dashboard;
|
37
|
38
|
import org.thingsboard.server.common.data.DataConstants;
|
38
|
39
|
import org.thingsboard.server.common.data.Device;
|
|
40
|
+import org.thingsboard.server.common.data.DeviceProfile;
|
39
|
41
|
import org.thingsboard.server.common.data.EntityType;
|
40
|
42
|
import org.thingsboard.server.common.data.EntityView;
|
41
|
43
|
import org.thingsboard.server.common.data.Tenant;
|
...
|
...
|
@@ -45,6 +47,15 @@ import org.thingsboard.server.common.data.alarm.AlarmInfo; |
45
|
47
|
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
|
46
|
48
|
import org.thingsboard.server.common.data.alarm.AlarmStatus;
|
47
|
49
|
import org.thingsboard.server.common.data.asset.Asset;
|
|
50
|
+import org.thingsboard.server.common.data.device.profile.AlarmCondition;
|
|
51
|
+import org.thingsboard.server.common.data.device.profile.AlarmConditionFilter;
|
|
52
|
+import org.thingsboard.server.common.data.device.profile.AlarmConditionFilterKey;
|
|
53
|
+import org.thingsboard.server.common.data.device.profile.AlarmConditionKeyType;
|
|
54
|
+import org.thingsboard.server.common.data.device.profile.AlarmRule;
|
|
55
|
+import org.thingsboard.server.common.data.device.profile.AllowCreateNewDevicesDeviceProfileProvisionConfiguration;
|
|
56
|
+import org.thingsboard.server.common.data.device.profile.DeviceProfileAlarm;
|
|
57
|
+import org.thingsboard.server.common.data.device.profile.DeviceProfileData;
|
|
58
|
+import org.thingsboard.server.common.data.device.profile.SimpleAlarmConditionSpec;
|
48
|
59
|
import org.thingsboard.server.common.data.edge.Edge;
|
49
|
60
|
import org.thingsboard.server.common.data.edge.EdgeEvent;
|
50
|
61
|
import org.thingsboard.server.common.data.edge.EdgeEventActionType;
|
...
|
...
|
@@ -57,6 +68,9 @@ import org.thingsboard.server.common.data.id.TenantId; |
57
|
68
|
import org.thingsboard.server.common.data.id.UserId;
|
58
|
69
|
import org.thingsboard.server.common.data.page.PageData;
|
59
|
70
|
import org.thingsboard.server.common.data.page.PageLink;
|
|
71
|
+import org.thingsboard.server.common.data.query.EntityKeyValueType;
|
|
72
|
+import org.thingsboard.server.common.data.query.FilterPredicateValue;
|
|
73
|
+import org.thingsboard.server.common.data.query.NumericFilterPredicate;
|
60
|
74
|
import org.thingsboard.server.common.data.relation.EntityRelation;
|
61
|
75
|
import org.thingsboard.server.common.data.relation.RelationTypeGroup;
|
62
|
76
|
import org.thingsboard.server.common.data.rule.RuleChain;
|
...
|
...
|
@@ -71,7 +85,6 @@ import org.thingsboard.server.common.data.widget.WidgetsBundle; |
71
|
85
|
import org.thingsboard.server.common.transport.adaptor.JsonConverter;
|
72
|
86
|
import org.thingsboard.server.controller.AbstractControllerTest;
|
73
|
87
|
import org.thingsboard.server.dao.edge.EdgeEventService;
|
74
|
|
-import org.thingsboard.common.util.JacksonUtil;
|
75
|
88
|
import org.thingsboard.server.edge.imitator.EdgeImitator;
|
76
|
89
|
import org.thingsboard.server.gen.edge.AlarmUpdateMsg;
|
77
|
90
|
import org.thingsboard.server.gen.edge.AssetUpdateMsg;
|
...
|
...
|
@@ -81,6 +94,7 @@ import org.thingsboard.server.gen.edge.CustomerUpdateMsg; |
81
|
94
|
import org.thingsboard.server.gen.edge.DashboardUpdateMsg;
|
82
|
95
|
import org.thingsboard.server.gen.edge.DeviceCredentialsRequestMsg;
|
83
|
96
|
import org.thingsboard.server.gen.edge.DeviceCredentialsUpdateMsg;
|
|
97
|
+import org.thingsboard.server.gen.edge.DeviceProfileUpdateMsg;
|
84
|
98
|
import org.thingsboard.server.gen.edge.DeviceRpcCallMsg;
|
85
|
99
|
import org.thingsboard.server.gen.edge.DeviceUpdateMsg;
|
86
|
100
|
import org.thingsboard.server.gen.edge.EdgeConfiguration;
|
...
|
...
|
@@ -106,6 +120,7 @@ import java.util.List; |
106
|
120
|
import java.util.Map;
|
107
|
121
|
import java.util.Optional;
|
108
|
122
|
import java.util.Random;
|
|
123
|
+import java.util.TreeMap;
|
109
|
124
|
import java.util.UUID;
|
110
|
125
|
import java.util.concurrent.TimeUnit;
|
111
|
126
|
|
...
|
...
|
@@ -114,6 +129,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. |
114
|
129
|
@Slf4j
|
115
|
130
|
abstract public class BaseEdgeTest extends AbstractControllerTest {
|
116
|
131
|
|
|
132
|
+ private static final String CUSTOM_DEVICE_PROFILE_NAME = "Thermostat";
|
|
133
|
+
|
117
|
134
|
private Tenant savedTenant;
|
118
|
135
|
private TenantId tenantId;
|
119
|
136
|
private User tenantAdmin;
|
...
|
...
|
@@ -145,11 +162,17 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
145
|
162
|
tenantAdmin.setLastName("Downs");
|
146
|
163
|
|
147
|
164
|
tenantAdmin = createUserAndLogin(tenantAdmin, "testPassword1");
|
|
165
|
+ // sleep 1 seconds to avoid CREDENTIALS updated message for the user
|
|
166
|
+ // user credentials is going to be stored and updated event pushed to edge notification service
|
|
167
|
+ // while service will be processing this event edge could be already added and additional message will be pushed
|
|
168
|
+ Thread.sleep(1000);
|
|
169
|
+
|
148
|
170
|
installation();
|
149
|
171
|
|
150
|
172
|
edgeImitator = new EdgeImitator("localhost", 7070, edge.getRoutingKey(), edge.getSecret());
|
151
|
|
- // should be less, but events from SyncEdgeService stack with events from controller. will be fixed in next releases
|
152
|
|
- edgeImitator.expectMessageAmount(7);
|
|
173
|
+ // TODO: voba - should be less, but events from SyncEdgeService stack with events from controller. will be fixed in next releases
|
|
174
|
+ // so ideally sync process should check current edge queue and add only missing entities to the edge queue
|
|
175
|
+ edgeImitator.expectMessageAmount(10);
|
153
|
176
|
edgeImitator.connect();
|
154
|
177
|
}
|
155
|
178
|
|
...
|
...
|
@@ -163,23 +186,63 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
163
|
186
|
.andExpect(status().isOk());
|
164
|
187
|
}
|
165
|
188
|
|
166
|
|
-
|
167
|
189
|
@Test
|
168
|
190
|
public void test() throws Exception {
|
169
|
191
|
testReceivedInitialData();
|
|
192
|
+ int expectedDownlinkSize = 10;
|
|
193
|
+ Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size());
|
|
194
|
+
|
170
|
195
|
testDevices();
|
|
196
|
+ expectedDownlinkSize = expectedDownlinkSize + 4;
|
|
197
|
+ Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size());
|
|
198
|
+
|
171
|
199
|
testAssets();
|
|
200
|
+ expectedDownlinkSize = expectedDownlinkSize + 4;
|
|
201
|
+ Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size());
|
|
202
|
+
|
172
|
203
|
testRuleChains();
|
|
204
|
+ expectedDownlinkSize = expectedDownlinkSize + 3;
|
|
205
|
+ Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size());
|
|
206
|
+
|
173
|
207
|
testDashboards();
|
|
208
|
+ expectedDownlinkSize = expectedDownlinkSize + 3;
|
|
209
|
+ Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size());
|
|
210
|
+
|
174
|
211
|
testRelations();
|
|
212
|
+ expectedDownlinkSize = expectedDownlinkSize + 2;
|
|
213
|
+ Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size());
|
|
214
|
+
|
175
|
215
|
testAlarms();
|
|
216
|
+ expectedDownlinkSize = expectedDownlinkSize + 3;
|
|
217
|
+ Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size());
|
|
218
|
+
|
176
|
219
|
testEntityView();
|
|
220
|
+ expectedDownlinkSize = expectedDownlinkSize + 2;
|
|
221
|
+ Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size());
|
|
222
|
+
|
177
|
223
|
testCustomer();
|
|
224
|
+ expectedDownlinkSize = expectedDownlinkSize + 2;
|
|
225
|
+ Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size());
|
|
226
|
+
|
178
|
227
|
testWidgetsBundleAndWidgetType();
|
|
228
|
+ expectedDownlinkSize = expectedDownlinkSize + 4;
|
|
229
|
+ Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size());
|
|
230
|
+
|
179
|
231
|
testTimeseries();
|
|
232
|
+ expectedDownlinkSize = expectedDownlinkSize + 1;
|
|
233
|
+ Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size());
|
|
234
|
+
|
180
|
235
|
testAttributes();
|
|
236
|
+ expectedDownlinkSize = expectedDownlinkSize + 3;
|
|
237
|
+ Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size());
|
|
238
|
+
|
181
|
239
|
testSendMessagesToCloud();
|
|
240
|
+ expectedDownlinkSize = expectedDownlinkSize + 9;
|
|
241
|
+ Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size());
|
|
242
|
+
|
182
|
243
|
testRpcCall();
|
|
244
|
+ expectedDownlinkSize = expectedDownlinkSize + 1;
|
|
245
|
+ Assert.assertEquals(expectedDownlinkSize, edgeImitator.getDownlinkMsgs().size());
|
183
|
246
|
}
|
184
|
247
|
|
185
|
248
|
private Device findDeviceByName(String deviceName) throws Exception {
|
...
|
...
|
@@ -204,10 +267,10 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
204
|
267
|
return asset;
|
205
|
268
|
}
|
206
|
269
|
|
207
|
|
- private Device saveDevice(String deviceName) throws Exception {
|
|
270
|
+ private Device saveDevice(String deviceName, String type) throws Exception {
|
208
|
271
|
Device device = new Device();
|
209
|
272
|
device.setName(deviceName);
|
210
|
|
- device.setType("test");
|
|
273
|
+ device.setType(type);
|
211
|
274
|
return doPost("/api/device", device, Device.class);
|
212
|
275
|
}
|
213
|
276
|
|
...
|
...
|
@@ -233,7 +296,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
233
|
296
|
edgeImitator.expectMessageAmount(1);
|
234
|
297
|
edgeEventService.saveAsync(edgeEvent);
|
235
|
298
|
clusterService.onEdgeEventUpdate(tenantId, edge.getId());
|
236
|
|
- edgeImitator.waitForMessages();
|
|
299
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
237
|
300
|
|
238
|
301
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
239
|
302
|
Assert.assertTrue(latestMessage instanceof DeviceRpcCallMsg);
|
...
|
...
|
@@ -243,7 +306,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
243
|
306
|
|
244
|
307
|
private void testReceivedInitialData() throws Exception {
|
245
|
308
|
log.info("Checking received data");
|
246
|
|
- edgeImitator.waitForMessages();
|
|
309
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
247
|
310
|
|
248
|
311
|
EdgeConfiguration configuration = edgeImitator.getConfiguration();
|
249
|
312
|
Assert.assertNotNull(configuration);
|
...
|
...
|
@@ -253,9 +316,9 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
253
|
316
|
UserId userId = edgeImitator.getUserId();
|
254
|
317
|
Assert.assertNotNull(userId);
|
255
|
318
|
|
256
|
|
- Optional<DeviceUpdateMsg> optionalMsg1 = edgeImitator.findMessageByType(DeviceUpdateMsg.class);
|
257
|
|
- Assert.assertTrue(optionalMsg1.isPresent());
|
258
|
|
- DeviceUpdateMsg deviceUpdateMsg = optionalMsg1.get();
|
|
319
|
+ Optional<DeviceUpdateMsg> deviceUpdateMsgOpt = edgeImitator.findMessageByType(DeviceUpdateMsg.class);
|
|
320
|
+ Assert.assertTrue(deviceUpdateMsgOpt.isPresent());
|
|
321
|
+ DeviceUpdateMsg deviceUpdateMsg = deviceUpdateMsgOpt.get();
|
259
|
322
|
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceUpdateMsg.getMsgType());
|
260
|
323
|
UUID deviceUUID = new UUID(deviceUpdateMsg.getIdMSB(), deviceUpdateMsg.getIdLSB());
|
261
|
324
|
Device device = doGet("/api/device/" + deviceUUID.toString(), Device.class);
|
...
|
...
|
@@ -264,9 +327,25 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
264
|
327
|
new TypeReference<PageData<Device>>() {}, new PageLink(100)).getData();
|
265
|
328
|
Assert.assertTrue(edgeDevices.contains(device));
|
266
|
329
|
|
267
|
|
- Optional<AssetUpdateMsg> optionalMsg2 = edgeImitator.findMessageByType(AssetUpdateMsg.class);
|
268
|
|
- Assert.assertTrue(optionalMsg2.isPresent());
|
269
|
|
- AssetUpdateMsg assetUpdateMsg = optionalMsg2.get();
|
|
330
|
+ List<DeviceProfileUpdateMsg> deviceProfileUpdateMsgList = edgeImitator.findAllMessagesByType(DeviceProfileUpdateMsg.class);
|
|
331
|
+ Assert.assertEquals(3, deviceProfileUpdateMsgList.size());
|
|
332
|
+ Optional<DeviceProfileUpdateMsg> deviceProfileUpdateMsgOpt =
|
|
333
|
+ deviceProfileUpdateMsgList.stream().filter(dfum -> CUSTOM_DEVICE_PROFILE_NAME.equals(dfum.getName())).findAny();
|
|
334
|
+ Assert.assertTrue(deviceProfileUpdateMsgOpt.isPresent());
|
|
335
|
+ DeviceProfileUpdateMsg deviceProfileUpdateMsg = deviceProfileUpdateMsgOpt.get();
|
|
336
|
+ Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceProfileUpdateMsg.getMsgType());
|
|
337
|
+ UUID deviceProfileUUID = new UUID(deviceProfileUpdateMsg.getIdMSB(), deviceProfileUpdateMsg.getIdLSB());
|
|
338
|
+ DeviceProfile deviceProfile = doGet("/api/deviceProfile/" + deviceProfileUUID.toString(), DeviceProfile.class);
|
|
339
|
+ Assert.assertNotNull(deviceProfile);
|
|
340
|
+ Assert.assertNotNull(deviceProfile.getProfileData());
|
|
341
|
+ Assert.assertNotNull(deviceProfile.getProfileData().getAlarms());
|
|
342
|
+ Assert.assertNotNull(deviceProfile.getProfileData().getAlarms().get(0).getClearRule());
|
|
343
|
+
|
|
344
|
+ testAutoGeneratedCodeByProtobuf(deviceProfileUpdateMsg);
|
|
345
|
+
|
|
346
|
+ Optional<AssetUpdateMsg> assetUpdateMsgOpt = edgeImitator.findMessageByType(AssetUpdateMsg.class);
|
|
347
|
+ Assert.assertTrue(assetUpdateMsgOpt.isPresent());
|
|
348
|
+ AssetUpdateMsg assetUpdateMsg = assetUpdateMsgOpt.get();
|
270
|
349
|
Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, assetUpdateMsg.getMsgType());
|
271
|
350
|
UUID assetUUID = new UUID(assetUpdateMsg.getIdMSB(), assetUpdateMsg.getIdLSB());
|
272
|
351
|
Asset asset = doGet("/api/asset/" + assetUUID.toString(), Asset.class);
|
...
|
...
|
@@ -277,9 +356,9 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
277
|
356
|
|
278
|
357
|
testAutoGeneratedCodeByProtobuf(assetUpdateMsg);
|
279
|
358
|
|
280
|
|
- Optional<RuleChainUpdateMsg> optionalMsg3 = edgeImitator.findMessageByType(RuleChainUpdateMsg.class);
|
281
|
|
- Assert.assertTrue(optionalMsg3.isPresent());
|
282
|
|
- RuleChainUpdateMsg ruleChainUpdateMsg = optionalMsg3.get();
|
|
359
|
+ Optional<RuleChainUpdateMsg> ruleChainUpdateMsgOpt = edgeImitator.findMessageByType(RuleChainUpdateMsg.class);
|
|
360
|
+ Assert.assertTrue(ruleChainUpdateMsgOpt.isPresent());
|
|
361
|
+ RuleChainUpdateMsg ruleChainUpdateMsg = ruleChainUpdateMsgOpt.get();
|
283
|
362
|
Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, ruleChainUpdateMsg.getMsgType());
|
284
|
363
|
UUID ruleChainUUID = new UUID(ruleChainUpdateMsg.getIdMSB(), ruleChainUpdateMsg.getIdLSB());
|
285
|
364
|
RuleChain ruleChain = doGet("/api/ruleChain/" + ruleChainUUID.toString(), RuleChain.class);
|
...
|
...
|
@@ -296,13 +375,12 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
296
|
375
|
private void testDevices() throws Exception {
|
297
|
376
|
log.info("Testing devices");
|
298
|
377
|
|
299
|
|
- Device savedDevice = saveDevice("Edge Device 2");
|
300
|
|
-
|
|
378
|
+ // 1
|
301
|
379
|
edgeImitator.expectMessageAmount(1);
|
|
380
|
+ Device savedDevice = saveDevice("Edge Device 2", "Default");
|
302
|
381
|
doPost("/api/edge/" + edge.getId().getId().toString()
|
303
|
382
|
+ "/device/" + savedDevice.getId().getId().toString(), Device.class);
|
304
|
|
- edgeImitator.waitForMessages();
|
305
|
|
-
|
|
383
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
306
|
384
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
307
|
385
|
Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg);
|
308
|
386
|
DeviceUpdateMsg deviceUpdateMsg = (DeviceUpdateMsg) latestMessage;
|
...
|
...
|
@@ -312,11 +390,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
312
|
390
|
Assert.assertEquals(deviceUpdateMsg.getName(), savedDevice.getName());
|
313
|
391
|
Assert.assertEquals(deviceUpdateMsg.getType(), savedDevice.getType());
|
314
|
392
|
|
|
393
|
+ // 2
|
315
|
394
|
edgeImitator.expectMessageAmount(1);
|
316
|
395
|
doDelete("/api/edge/" + edge.getId().getId().toString()
|
317
|
396
|
+ "/device/" + savedDevice.getId().getId().toString(), Device.class);
|
318
|
|
- edgeImitator.waitForMessages();
|
319
|
|
-
|
|
397
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
320
|
398
|
latestMessage = edgeImitator.getLatestMessage();
|
321
|
399
|
Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg);
|
322
|
400
|
deviceUpdateMsg = (DeviceUpdateMsg) latestMessage;
|
...
|
...
|
@@ -324,11 +402,34 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
324
|
402
|
Assert.assertEquals(deviceUpdateMsg.getIdMSB(), savedDevice.getUuidId().getMostSignificantBits());
|
325
|
403
|
Assert.assertEquals(deviceUpdateMsg.getIdLSB(), savedDevice.getUuidId().getLeastSignificantBits());
|
326
|
404
|
|
|
405
|
+ // 3
|
327
|
406
|
edgeImitator.expectMessageAmount(1);
|
328
|
407
|
doDelete("/api/device/" + savedDevice.getId().getId().toString())
|
329
|
408
|
.andExpect(status().isOk());
|
330
|
|
- edgeImitator.waitForMessages();
|
|
409
|
+ // we should not get any message because device is not assigned to edge any more
|
|
410
|
+ Assert.assertFalse(edgeImitator.waitForMessages(1));
|
331
|
411
|
|
|
412
|
+ // 4
|
|
413
|
+ edgeImitator.expectMessageAmount(1);
|
|
414
|
+ savedDevice = saveDevice("Edge Device 3", "Default");
|
|
415
|
+ doPost("/api/edge/" + edge.getId().getId().toString()
|
|
416
|
+ + "/device/" + savedDevice.getId().getId().toString(), Device.class);
|
|
417
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
|
418
|
+ latestMessage = edgeImitator.getLatestMessage();
|
|
419
|
+ Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg);
|
|
420
|
+ deviceUpdateMsg = (DeviceUpdateMsg) latestMessage;
|
|
421
|
+ Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceUpdateMsg.getMsgType());
|
|
422
|
+ Assert.assertEquals(deviceUpdateMsg.getIdMSB(), savedDevice.getUuidId().getMostSignificantBits());
|
|
423
|
+ Assert.assertEquals(deviceUpdateMsg.getIdLSB(), savedDevice.getUuidId().getLeastSignificantBits());
|
|
424
|
+ Assert.assertEquals(deviceUpdateMsg.getName(), savedDevice.getName());
|
|
425
|
+ Assert.assertEquals(deviceUpdateMsg.getType(), savedDevice.getType());
|
|
426
|
+
|
|
427
|
+ // 5
|
|
428
|
+ edgeImitator.expectMessageAmount(1);
|
|
429
|
+ doDelete("/api/device/" + savedDevice.getId().getId().toString())
|
|
430
|
+ .andExpect(status().isOk());
|
|
431
|
+ // in this case we should get messages because device was assigned to edge
|
|
432
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
332
|
433
|
latestMessage = edgeImitator.getLatestMessage();
|
333
|
434
|
Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg);
|
334
|
435
|
deviceUpdateMsg = (DeviceUpdateMsg) latestMessage;
|
...
|
...
|
@@ -342,13 +443,13 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
342
|
443
|
|
343
|
444
|
private void testAssets() throws Exception {
|
344
|
445
|
log.info("Testing assets");
|
345
|
|
- Asset savedAsset = saveAsset("Edge Asset 2");
|
346
|
446
|
|
|
447
|
+ // 1
|
347
|
448
|
edgeImitator.expectMessageAmount(1);
|
|
449
|
+ Asset savedAsset = saveAsset("Edge Asset 2");
|
348
|
450
|
doPost("/api/edge/" + edge.getId().getId().toString()
|
349
|
451
|
+ "/asset/" + savedAsset.getId().getId().toString(), Asset.class);
|
350
|
|
- edgeImitator.waitForMessages();
|
351
|
|
-
|
|
452
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
352
|
453
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
353
|
454
|
Assert.assertTrue(latestMessage instanceof AssetUpdateMsg);
|
354
|
455
|
AssetUpdateMsg assetUpdateMsg = (AssetUpdateMsg) latestMessage;
|
...
|
...
|
@@ -358,11 +459,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
358
|
459
|
Assert.assertEquals(assetUpdateMsg.getName(), savedAsset.getName());
|
359
|
460
|
Assert.assertEquals(assetUpdateMsg.getType(), savedAsset.getType());
|
360
|
461
|
|
|
462
|
+ // 2
|
361
|
463
|
edgeImitator.expectMessageAmount(1);
|
362
|
464
|
doDelete("/api/edge/" + edge.getId().getId().toString()
|
363
|
465
|
+ "/asset/" + savedAsset.getId().getId().toString(), Asset.class);
|
364
|
|
- edgeImitator.waitForMessages();
|
365
|
|
-
|
|
466
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
366
|
467
|
latestMessage = edgeImitator.getLatestMessage();
|
367
|
468
|
Assert.assertTrue(latestMessage instanceof AssetUpdateMsg);
|
368
|
469
|
assetUpdateMsg = (AssetUpdateMsg) latestMessage;
|
...
|
...
|
@@ -370,11 +471,32 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
370
|
471
|
Assert.assertEquals(assetUpdateMsg.getIdMSB(), savedAsset.getUuidId().getMostSignificantBits());
|
371
|
472
|
Assert.assertEquals(assetUpdateMsg.getIdLSB(), savedAsset.getUuidId().getLeastSignificantBits());
|
372
|
473
|
|
|
474
|
+ // 3
|
373
|
475
|
edgeImitator.expectMessageAmount(1);
|
374
|
476
|
doDelete("/api/asset/" + savedAsset.getId().getId().toString())
|
375
|
477
|
.andExpect(status().isOk());
|
376
|
|
- edgeImitator.waitForMessages();
|
|
478
|
+ Assert.assertFalse(edgeImitator.waitForMessages(1));
|
377
|
479
|
|
|
480
|
+ // 4
|
|
481
|
+ edgeImitator.expectMessageAmount(1);
|
|
482
|
+ savedAsset = saveAsset("Edge Asset 3");
|
|
483
|
+ doPost("/api/edge/" + edge.getId().getId().toString()
|
|
484
|
+ + "/asset/" + savedAsset.getId().getId().toString(), Asset.class);
|
|
485
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
|
486
|
+ latestMessage = edgeImitator.getLatestMessage();
|
|
487
|
+ Assert.assertTrue(latestMessage instanceof AssetUpdateMsg);
|
|
488
|
+ assetUpdateMsg = (AssetUpdateMsg) latestMessage;
|
|
489
|
+ Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, assetUpdateMsg.getMsgType());
|
|
490
|
+ Assert.assertEquals(assetUpdateMsg.getIdMSB(), savedAsset.getUuidId().getMostSignificantBits());
|
|
491
|
+ Assert.assertEquals(assetUpdateMsg.getIdLSB(), savedAsset.getUuidId().getLeastSignificantBits());
|
|
492
|
+ Assert.assertEquals(assetUpdateMsg.getName(), savedAsset.getName());
|
|
493
|
+ Assert.assertEquals(assetUpdateMsg.getType(), savedAsset.getType());
|
|
494
|
+
|
|
495
|
+ // 5
|
|
496
|
+ edgeImitator.expectMessageAmount(1);
|
|
497
|
+ doDelete("/api/asset/" + savedAsset.getId().getId().toString())
|
|
498
|
+ .andExpect(status().isOk());
|
|
499
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
378
|
500
|
latestMessage = edgeImitator.getLatestMessage();
|
379
|
501
|
Assert.assertTrue(latestMessage instanceof AssetUpdateMsg);
|
380
|
502
|
assetUpdateMsg = (AssetUpdateMsg) latestMessage;
|
...
|
...
|
@@ -387,21 +509,21 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
387
|
509
|
|
388
|
510
|
private void testRuleChains() throws Exception {
|
389
|
511
|
log.info("Testing RuleChains");
|
|
512
|
+
|
|
513
|
+ // 1
|
|
514
|
+ edgeImitator.expectMessageAmount(1);
|
390
|
515
|
RuleChain ruleChain = new RuleChain();
|
391
|
516
|
ruleChain.setName("Edge Test Rule Chain");
|
392
|
517
|
ruleChain.setType(RuleChainType.EDGE);
|
393
|
518
|
RuleChain savedRuleChain = doPost("/api/ruleChain", ruleChain, RuleChain.class);
|
394
|
|
-
|
395
|
519
|
createRuleChainMetadata(savedRuleChain);
|
396
|
|
-
|
397
|
|
- // Wait before rule chain metadata saved to database before rule chain is assigned to edge
|
|
520
|
+ // sleep 1 seconds to avoid ENTITY_UPDATED_RPC_MESSAGE for the rule chain
|
|
521
|
+ // rule chain metadata is going to be stored and updated event pushed to edge notification service
|
|
522
|
+ // while service will be processing this event assignment rule chain to edge will be completed if bad timing
|
398
|
523
|
Thread.sleep(1000);
|
399
|
|
-
|
400
|
|
- edgeImitator.expectMessageAmount(1);
|
401
|
524
|
doPost("/api/edge/" + edge.getId().getId().toString()
|
402
|
525
|
+ "/ruleChain/" + savedRuleChain.getId().getId().toString(), RuleChain.class);
|
403
|
|
- edgeImitator.waitForMessages();
|
404
|
|
-
|
|
526
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
405
|
527
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
406
|
528
|
Assert.assertTrue(latestMessage instanceof RuleChainUpdateMsg);
|
407
|
529
|
RuleChainUpdateMsg ruleChainUpdateMsg = (RuleChainUpdateMsg) latestMessage;
|
...
|
...
|
@@ -410,13 +532,14 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
410
|
532
|
Assert.assertEquals(ruleChainUpdateMsg.getIdLSB(), savedRuleChain.getUuidId().getLeastSignificantBits());
|
411
|
533
|
Assert.assertEquals(ruleChainUpdateMsg.getName(), savedRuleChain.getName());
|
412
|
534
|
|
|
535
|
+ // 2
|
413
|
536
|
testRuleChainMetadataRequestMsg(savedRuleChain.getId());
|
414
|
537
|
|
|
538
|
+ // 3
|
415
|
539
|
edgeImitator.expectMessageAmount(1);
|
416
|
540
|
doDelete("/api/edge/" + edge.getId().getId().toString()
|
417
|
541
|
+ "/ruleChain/" + savedRuleChain.getId().getId().toString(), RuleChain.class);
|
418
|
|
- edgeImitator.waitForMessages();
|
419
|
|
-
|
|
542
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
420
|
543
|
latestMessage = edgeImitator.getLatestMessage();
|
421
|
544
|
Assert.assertTrue(latestMessage instanceof RuleChainUpdateMsg);
|
422
|
545
|
ruleChainUpdateMsg = (RuleChainUpdateMsg) latestMessage;
|
...
|
...
|
@@ -424,17 +547,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
424
|
547
|
Assert.assertEquals(ruleChainUpdateMsg.getIdMSB(), savedRuleChain.getUuidId().getMostSignificantBits());
|
425
|
548
|
Assert.assertEquals(ruleChainUpdateMsg.getIdLSB(), savedRuleChain.getUuidId().getLeastSignificantBits());
|
426
|
549
|
|
|
550
|
+ // 4
|
427
|
551
|
edgeImitator.expectMessageAmount(1);
|
428
|
552
|
doDelete("/api/ruleChain/" + savedRuleChain.getId().getId().toString())
|
429
|
553
|
.andExpect(status().isOk());
|
430
|
|
- edgeImitator.waitForMessages();
|
431
|
|
-
|
432
|
|
- latestMessage = edgeImitator.getLatestMessage();
|
433
|
|
- Assert.assertTrue(latestMessage instanceof RuleChainUpdateMsg);
|
434
|
|
- ruleChainUpdateMsg = (RuleChainUpdateMsg) latestMessage;
|
435
|
|
- Assert.assertEquals(UpdateMsgType.ENTITY_DELETED_RPC_MESSAGE, ruleChainUpdateMsg.getMsgType());
|
436
|
|
- Assert.assertEquals(ruleChainUpdateMsg.getIdMSB(), savedRuleChain.getUuidId().getMostSignificantBits());
|
437
|
|
- Assert.assertEquals(ruleChainUpdateMsg.getIdLSB(), savedRuleChain.getUuidId().getLeastSignificantBits());
|
|
554
|
+ Assert.assertFalse(edgeImitator.waitForMessages(1));
|
438
|
555
|
|
439
|
556
|
log.info("RuleChains tested successfully");
|
440
|
557
|
}
|
...
|
...
|
@@ -452,8 +569,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
452
|
569
|
edgeImitator.expectResponsesAmount(1);
|
453
|
570
|
edgeImitator.expectMessageAmount(1);
|
454
|
571
|
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
|
455
|
|
- edgeImitator.waitForResponses();
|
456
|
|
- edgeImitator.waitForMessages();
|
|
572
|
+ Assert.assertTrue(edgeImitator.waitForResponses());
|
|
573
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
457
|
574
|
|
458
|
575
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
459
|
576
|
Assert.assertTrue(latestMessage instanceof RuleChainMetadataUpdateMsg);
|
...
|
...
|
@@ -502,15 +619,15 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
502
|
619
|
|
503
|
620
|
private void testDashboards() throws Exception {
|
504
|
621
|
log.info("Testing Dashboards");
|
|
622
|
+
|
|
623
|
+ // 1
|
|
624
|
+ edgeImitator.expectMessageAmount(1);
|
505
|
625
|
Dashboard dashboard = new Dashboard();
|
506
|
626
|
dashboard.setTitle("Edge Test Dashboard");
|
507
|
627
|
Dashboard savedDashboard = doPost("/api/dashboard", dashboard, Dashboard.class);
|
508
|
|
-
|
509
|
|
- edgeImitator.expectMessageAmount(1);
|
510
|
628
|
doPost("/api/edge/" + edge.getId().getId().toString()
|
511
|
629
|
+ "/dashboard/" + savedDashboard.getId().getId().toString(), Dashboard.class);
|
512
|
|
- edgeImitator.waitForMessages();
|
513
|
|
-
|
|
630
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
514
|
631
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
515
|
632
|
Assert.assertTrue(latestMessage instanceof DashboardUpdateMsg);
|
516
|
633
|
DashboardUpdateMsg dashboardUpdateMsg = (DashboardUpdateMsg) latestMessage;
|
...
|
...
|
@@ -518,25 +635,24 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
518
|
635
|
Assert.assertEquals(dashboardUpdateMsg.getIdMSB(), savedDashboard.getUuidId().getMostSignificantBits());
|
519
|
636
|
Assert.assertEquals(dashboardUpdateMsg.getIdLSB(), savedDashboard.getUuidId().getLeastSignificantBits());
|
520
|
637
|
Assert.assertEquals(dashboardUpdateMsg.getTitle(), savedDashboard.getName());
|
521
|
|
-
|
522
|
638
|
testAutoGeneratedCodeByProtobuf(dashboardUpdateMsg);
|
523
|
639
|
|
|
640
|
+ // 2
|
524
|
641
|
edgeImitator.expectMessageAmount(1);
|
525
|
642
|
savedDashboard.setTitle("Updated Edge Test Dashboard");
|
526
|
643
|
doPost("/api/dashboard", savedDashboard, Dashboard.class);
|
527
|
|
- edgeImitator.waitForMessages();
|
528
|
|
-
|
|
644
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
529
|
645
|
latestMessage = edgeImitator.getLatestMessage();
|
530
|
646
|
Assert.assertTrue(latestMessage instanceof DashboardUpdateMsg);
|
531
|
647
|
dashboardUpdateMsg = (DashboardUpdateMsg) latestMessage;
|
532
|
648
|
Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, dashboardUpdateMsg.getMsgType());
|
533
|
649
|
Assert.assertEquals(dashboardUpdateMsg.getTitle(), savedDashboard.getName());
|
534
|
650
|
|
|
651
|
+ // 3
|
535
|
652
|
edgeImitator.expectMessageAmount(1);
|
536
|
653
|
doDelete("/api/edge/" + edge.getId().getId().toString()
|
537
|
654
|
+ "/dashboard/" + savedDashboard.getId().getId().toString(), Dashboard.class);
|
538
|
|
- edgeImitator.waitForMessages();
|
539
|
|
-
|
|
655
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
540
|
656
|
latestMessage = edgeImitator.getLatestMessage();
|
541
|
657
|
Assert.assertTrue(latestMessage instanceof DashboardUpdateMsg);
|
542
|
658
|
dashboardUpdateMsg = (DashboardUpdateMsg) latestMessage;
|
...
|
...
|
@@ -544,17 +660,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
544
|
660
|
Assert.assertEquals(dashboardUpdateMsg.getIdMSB(), savedDashboard.getUuidId().getMostSignificantBits());
|
545
|
661
|
Assert.assertEquals(dashboardUpdateMsg.getIdLSB(), savedDashboard.getUuidId().getLeastSignificantBits());
|
546
|
662
|
|
|
663
|
+ // 4
|
547
|
664
|
edgeImitator.expectMessageAmount(1);
|
548
|
665
|
doDelete("/api/dashboard/" + savedDashboard.getId().getId().toString())
|
549
|
666
|
.andExpect(status().isOk());
|
550
|
|
- edgeImitator.waitForMessages();
|
551
|
|
-
|
552
|
|
- latestMessage = edgeImitator.getLatestMessage();
|
553
|
|
- Assert.assertTrue(latestMessage instanceof DashboardUpdateMsg);
|
554
|
|
- dashboardUpdateMsg = (DashboardUpdateMsg) latestMessage;
|
555
|
|
- Assert.assertEquals(UpdateMsgType.ENTITY_DELETED_RPC_MESSAGE, dashboardUpdateMsg.getMsgType());
|
556
|
|
- Assert.assertEquals(dashboardUpdateMsg.getIdMSB(), savedDashboard.getUuidId().getMostSignificantBits());
|
557
|
|
- Assert.assertEquals(dashboardUpdateMsg.getIdLSB(), savedDashboard.getUuidId().getLeastSignificantBits());
|
|
667
|
+ Assert.assertFalse(edgeImitator.waitForMessages(1));
|
558
|
668
|
|
559
|
669
|
log.info("Dashboards tested successfully");
|
560
|
670
|
}
|
...
|
...
|
@@ -562,19 +672,17 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
562
|
672
|
private void testRelations() throws Exception {
|
563
|
673
|
log.info("Testing Relations");
|
564
|
674
|
|
|
675
|
+ // 1
|
|
676
|
+ edgeImitator.expectMessageAmount(1);
|
565
|
677
|
Device device = findDeviceByName("Edge Device 1");
|
566
|
678
|
Asset asset = findAssetByName("Edge Asset 1");
|
567
|
|
-
|
568
|
679
|
EntityRelation relation = new EntityRelation();
|
569
|
680
|
relation.setType("test");
|
570
|
681
|
relation.setFrom(device.getId());
|
571
|
682
|
relation.setTo(asset.getId());
|
572
|
683
|
relation.setTypeGroup(RelationTypeGroup.COMMON);
|
573
|
|
-
|
574
|
|
- edgeImitator.expectMessageAmount(1);
|
575
|
684
|
doPost("/api/relation", relation);
|
576
|
|
- edgeImitator.waitForMessages();
|
577
|
|
-
|
|
685
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
578
|
686
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
579
|
687
|
Assert.assertTrue(latestMessage instanceof RelationUpdateMsg);
|
580
|
688
|
RelationUpdateMsg relationUpdateMsg = (RelationUpdateMsg) latestMessage;
|
...
|
...
|
@@ -588,6 +696,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
588
|
696
|
Assert.assertEquals(relationUpdateMsg.getToEntityType(), relation.getTo().getEntityType().name());
|
589
|
697
|
Assert.assertEquals(relationUpdateMsg.getTypeGroup(), relation.getTypeGroup().name());
|
590
|
698
|
|
|
699
|
+ // 2
|
591
|
700
|
edgeImitator.expectMessageAmount(1);
|
592
|
701
|
doDelete("/api/relation?" +
|
593
|
702
|
"fromId=" + relation.getFrom().getId().toString() +
|
...
|
...
|
@@ -597,8 +706,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
597
|
706
|
"&toId=" + relation.getTo().getId().toString() +
|
598
|
707
|
"&toType=" + relation.getTo().getEntityType().name())
|
599
|
708
|
.andExpect(status().isOk());
|
600
|
|
- edgeImitator.waitForMessages();
|
601
|
|
-
|
|
709
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
602
|
710
|
latestMessage = edgeImitator.getLatestMessage();
|
603
|
711
|
Assert.assertTrue(latestMessage instanceof RelationUpdateMsg);
|
604
|
712
|
relationUpdateMsg = (RelationUpdateMsg) latestMessage;
|
...
|
...
|
@@ -617,18 +725,17 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
617
|
725
|
|
618
|
726
|
private void testAlarms() throws Exception {
|
619
|
727
|
log.info("Testing Alarms");
|
620
|
|
- Device device = findDeviceByName("Edge Device 1");
|
621
|
728
|
|
|
729
|
+ // 1
|
|
730
|
+ edgeImitator.expectMessageAmount(1);
|
|
731
|
+ Device device = findDeviceByName("Edge Device 1");
|
622
|
732
|
Alarm alarm = new Alarm();
|
623
|
733
|
alarm.setOriginator(device.getId());
|
624
|
734
|
alarm.setStatus(AlarmStatus.ACTIVE_UNACK);
|
625
|
735
|
alarm.setType("alarm");
|
626
|
736
|
alarm.setSeverity(AlarmSeverity.CRITICAL);
|
627
|
|
-
|
628
|
|
- edgeImitator.expectMessageAmount(1);
|
629
|
737
|
Alarm savedAlarm = doPost("/api/alarm", alarm, Alarm.class);
|
630
|
|
- edgeImitator.waitForMessages();
|
631
|
|
-
|
|
738
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
632
|
739
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
633
|
740
|
Assert.assertTrue(latestMessage instanceof AlarmUpdateMsg);
|
634
|
741
|
AlarmUpdateMsg alarmUpdateMsg = (AlarmUpdateMsg) latestMessage;
|
...
|
...
|
@@ -639,10 +746,10 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
639
|
746
|
Assert.assertEquals(alarmUpdateMsg.getStatus(), savedAlarm.getStatus().name());
|
640
|
747
|
Assert.assertEquals(alarmUpdateMsg.getSeverity(), savedAlarm.getSeverity().name());
|
641
|
748
|
|
|
749
|
+ // 2
|
642
|
750
|
edgeImitator.expectMessageAmount(1);
|
643
|
751
|
doPost("/api/alarm/" + savedAlarm.getId().getId().toString() + "/ack");
|
644
|
|
- edgeImitator.waitForMessages();
|
645
|
|
-
|
|
752
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
646
|
753
|
latestMessage = edgeImitator.getLatestMessage();
|
647
|
754
|
Assert.assertTrue(latestMessage instanceof AlarmUpdateMsg);
|
648
|
755
|
alarmUpdateMsg = (AlarmUpdateMsg) latestMessage;
|
...
|
...
|
@@ -652,10 +759,10 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
652
|
759
|
Assert.assertEquals(alarmUpdateMsg.getOriginatorName(), device.getName());
|
653
|
760
|
Assert.assertEquals(alarmUpdateMsg.getStatus(), AlarmStatus.ACTIVE_ACK.name());
|
654
|
761
|
|
|
762
|
+ // 3
|
655
|
763
|
edgeImitator.expectMessageAmount(1);
|
656
|
764
|
doPost("/api/alarm/" + savedAlarm.getId().getId().toString() + "/clear");
|
657
|
|
- edgeImitator.waitForMessages();
|
658
|
|
-
|
|
765
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
659
|
766
|
latestMessage = edgeImitator.getLatestMessage();
|
660
|
767
|
Assert.assertTrue(latestMessage instanceof AlarmUpdateMsg);
|
661
|
768
|
alarmUpdateMsg = (AlarmUpdateMsg) latestMessage;
|
...
|
...
|
@@ -665,26 +772,29 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
665
|
772
|
Assert.assertEquals(alarmUpdateMsg.getOriginatorName(), device.getName());
|
666
|
773
|
Assert.assertEquals(alarmUpdateMsg.getStatus(), AlarmStatus.CLEARED_ACK.name());
|
667
|
774
|
|
|
775
|
+ // 4
|
|
776
|
+ edgeImitator.expectMessageAmount(1);
|
668
|
777
|
doDelete("/api/alarm/" + savedAlarm.getId().getId().toString())
|
669
|
778
|
.andExpect(status().isOk());
|
|
779
|
+ Assert.assertFalse(edgeImitator.waitForMessages(1));
|
|
780
|
+
|
670
|
781
|
log.info("Alarms tested successfully");
|
671
|
782
|
}
|
672
|
783
|
|
673
|
784
|
private void testEntityView() throws Exception {
|
674
|
785
|
log.info("Testing EntityView");
|
675
|
|
- Device device = findDeviceByName("Edge Device 1");
|
676
|
786
|
|
|
787
|
+ // 1
|
|
788
|
+ edgeImitator.expectMessageAmount(1);
|
|
789
|
+ Device device = findDeviceByName("Edge Device 1");
|
677
|
790
|
EntityView entityView = new EntityView();
|
678
|
791
|
entityView.setName("Edge EntityView 1");
|
679
|
792
|
entityView.setType("test");
|
680
|
793
|
entityView.setEntityId(device.getId());
|
681
|
794
|
EntityView savedEntityView = doPost("/api/entityView", entityView, EntityView.class);
|
682
|
|
-
|
683
|
|
- edgeImitator.expectMessageAmount(1);
|
684
|
795
|
doPost("/api/edge/" + edge.getId().getId().toString()
|
685
|
796
|
+ "/entityView/" + savedEntityView.getId().getId().toString(), EntityView.class);
|
686
|
|
- edgeImitator.waitForMessages();
|
687
|
|
-
|
|
797
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
688
|
798
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
689
|
799
|
Assert.assertTrue(latestMessage instanceof EntityViewUpdateMsg);
|
690
|
800
|
EntityViewUpdateMsg entityViewUpdateMsg = (EntityViewUpdateMsg) latestMessage;
|
...
|
...
|
@@ -697,11 +807,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
697
|
807
|
Assert.assertEquals(entityViewUpdateMsg.getEntityIdLSB(), device.getUuidId().getLeastSignificantBits());
|
698
|
808
|
Assert.assertEquals(entityViewUpdateMsg.getEntityType().name(), device.getId().getEntityType().name());
|
699
|
809
|
|
|
810
|
+ // 2
|
700
|
811
|
edgeImitator.expectMessageAmount(1);
|
701
|
812
|
doDelete("/api/edge/" + edge.getId().getId().toString()
|
702
|
813
|
+ "/entityView/" + savedEntityView.getId().getId().toString(), EntityView.class);
|
703
|
|
- edgeImitator.waitForMessages();
|
704
|
|
-
|
|
814
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
705
|
815
|
latestMessage = edgeImitator.getLatestMessage();
|
706
|
816
|
Assert.assertTrue(latestMessage instanceof EntityViewUpdateMsg);
|
707
|
817
|
entityViewUpdateMsg = (EntityViewUpdateMsg) latestMessage;
|
...
|
...
|
@@ -709,17 +819,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
709
|
819
|
Assert.assertEquals(entityViewUpdateMsg.getIdMSB(), savedEntityView.getUuidId().getMostSignificantBits());
|
710
|
820
|
Assert.assertEquals(entityViewUpdateMsg.getIdLSB(), savedEntityView.getUuidId().getLeastSignificantBits());
|
711
|
821
|
|
|
822
|
+ // 3
|
712
|
823
|
edgeImitator.expectMessageAmount(1);
|
713
|
824
|
doDelete("/api/entityView/" + savedEntityView.getId().getId().toString())
|
714
|
825
|
.andExpect(status().isOk());
|
715
|
|
- edgeImitator.waitForMessages();
|
716
|
|
-
|
717
|
|
- latestMessage = edgeImitator.getLatestMessage();
|
718
|
|
- Assert.assertTrue(latestMessage instanceof EntityViewUpdateMsg);
|
719
|
|
- entityViewUpdateMsg = (EntityViewUpdateMsg) latestMessage;
|
720
|
|
- Assert.assertEquals(UpdateMsgType.ENTITY_DELETED_RPC_MESSAGE, entityViewUpdateMsg.getMsgType());
|
721
|
|
- Assert.assertEquals(entityViewUpdateMsg.getIdMSB(), savedEntityView.getUuidId().getMostSignificantBits());
|
722
|
|
- Assert.assertEquals(entityViewUpdateMsg.getIdLSB(), savedEntityView.getUuidId().getLeastSignificantBits());
|
|
826
|
+ Assert.assertFalse(edgeImitator.waitForMessages(1));
|
723
|
827
|
|
724
|
828
|
log.info("EntityView tested successfully");
|
725
|
829
|
}
|
...
|
...
|
@@ -727,15 +831,14 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
727
|
831
|
private void testCustomer() throws Exception {
|
728
|
832
|
log.info("Testing Customer");
|
729
|
833
|
|
|
834
|
+ // 1
|
|
835
|
+ edgeImitator.expectMessageAmount(1);
|
730
|
836
|
Customer customer = new Customer();
|
731
|
837
|
customer.setTitle("Edge Customer 1");
|
732
|
838
|
Customer savedCustomer = doPost("/api/customer", customer, Customer.class);
|
733
|
|
-
|
734
|
|
- edgeImitator.expectMessageAmount(1);
|
735
|
839
|
doPost("/api/customer/" + savedCustomer.getId().getId().toString()
|
736
|
840
|
+ "/edge/" + edge.getId().getId().toString(), Edge.class);
|
737
|
|
- edgeImitator.waitForMessages();
|
738
|
|
-
|
|
841
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
739
|
842
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
740
|
843
|
Assert.assertTrue(latestMessage instanceof CustomerUpdateMsg);
|
741
|
844
|
CustomerUpdateMsg customerUpdateMsg = (CustomerUpdateMsg) latestMessage;
|
...
|
...
|
@@ -743,13 +846,12 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
743
|
846
|
Assert.assertEquals(customerUpdateMsg.getIdMSB(), savedCustomer.getUuidId().getMostSignificantBits());
|
744
|
847
|
Assert.assertEquals(customerUpdateMsg.getIdLSB(), savedCustomer.getUuidId().getLeastSignificantBits());
|
745
|
848
|
Assert.assertEquals(customerUpdateMsg.getTitle(), savedCustomer.getTitle());
|
746
|
|
-
|
747
|
849
|
testAutoGeneratedCodeByProtobuf(customerUpdateMsg);
|
748
|
850
|
|
|
851
|
+ // 2
|
749
|
852
|
edgeImitator.expectMessageAmount(1);
|
750
|
853
|
doDelete("/api/customer/edge/" + edge.getId().getId().toString(), Edge.class);
|
751
|
|
- edgeImitator.waitForMessages();
|
752
|
|
-
|
|
854
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
753
|
855
|
latestMessage = edgeImitator.getLatestMessage();
|
754
|
856
|
Assert.assertTrue(latestMessage instanceof CustomerUpdateMsg);
|
755
|
857
|
customerUpdateMsg = (CustomerUpdateMsg) latestMessage;
|
...
|
...
|
@@ -757,17 +859,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
757
|
859
|
Assert.assertEquals(customerUpdateMsg.getIdMSB(), savedCustomer.getUuidId().getMostSignificantBits());
|
758
|
860
|
Assert.assertEquals(customerUpdateMsg.getIdLSB(), savedCustomer.getUuidId().getLeastSignificantBits());
|
759
|
861
|
|
|
862
|
+ // 3
|
760
|
863
|
edgeImitator.expectMessageAmount(1);
|
761
|
864
|
doDelete("/api/customer/" + savedCustomer.getId().getId().toString())
|
762
|
865
|
.andExpect(status().isOk());
|
763
|
|
- edgeImitator.waitForMessages();
|
764
|
|
-
|
765
|
|
- latestMessage = edgeImitator.getLatestMessage();
|
766
|
|
- Assert.assertTrue(latestMessage instanceof CustomerUpdateMsg);
|
767
|
|
- customerUpdateMsg = (CustomerUpdateMsg) latestMessage;
|
768
|
|
- Assert.assertEquals(UpdateMsgType.ENTITY_DELETED_RPC_MESSAGE, customerUpdateMsg.getMsgType());
|
769
|
|
- Assert.assertEquals(customerUpdateMsg.getIdMSB(), savedCustomer.getUuidId().getMostSignificantBits());
|
770
|
|
- Assert.assertEquals(customerUpdateMsg.getIdLSB(), savedCustomer.getUuidId().getLeastSignificantBits());
|
|
866
|
+ Assert.assertFalse(edgeImitator.waitForMessages(1));
|
771
|
867
|
|
772
|
868
|
log.info("Customer tested successfully");
|
773
|
869
|
}
|
...
|
...
|
@@ -775,13 +871,12 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
775
|
871
|
private void testWidgetsBundleAndWidgetType() throws Exception {
|
776
|
872
|
log.info("Testing WidgetsBundle and WidgetType");
|
777
|
873
|
|
|
874
|
+ // 1
|
|
875
|
+ edgeImitator.expectMessageAmount(1);
|
778
|
876
|
WidgetsBundle widgetsBundle = new WidgetsBundle();
|
779
|
877
|
widgetsBundle.setTitle("Test Widget Bundle");
|
780
|
|
-
|
781
|
|
- edgeImitator.expectMessageAmount(1);
|
782
|
878
|
WidgetsBundle savedWidgetsBundle = doPost("/api/widgetsBundle", widgetsBundle, WidgetsBundle.class);
|
783
|
|
- edgeImitator.waitForMessages();
|
784
|
|
-
|
|
879
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
785
|
880
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
786
|
881
|
Assert.assertTrue(latestMessage instanceof WidgetsBundleUpdateMsg);
|
787
|
882
|
WidgetsBundleUpdateMsg widgetsBundleUpdateMsg = (WidgetsBundleUpdateMsg) latestMessage;
|
...
|
...
|
@@ -790,20 +885,18 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
790
|
885
|
Assert.assertEquals(widgetsBundleUpdateMsg.getIdLSB(), savedWidgetsBundle.getUuidId().getLeastSignificantBits());
|
791
|
886
|
Assert.assertEquals(widgetsBundleUpdateMsg.getAlias(), savedWidgetsBundle.getAlias());
|
792
|
887
|
Assert.assertEquals(widgetsBundleUpdateMsg.getTitle(), savedWidgetsBundle.getTitle());
|
793
|
|
-
|
794
|
888
|
testAutoGeneratedCodeByProtobuf(widgetsBundleUpdateMsg);
|
795
|
889
|
|
|
890
|
+ // 2
|
|
891
|
+ edgeImitator.expectMessageAmount(1);
|
796
|
892
|
WidgetType widgetType = new WidgetType();
|
797
|
893
|
widgetType.setName("Test Widget Type");
|
798
|
894
|
widgetType.setBundleAlias(savedWidgetsBundle.getAlias());
|
799
|
895
|
ObjectNode descriptor = mapper.createObjectNode();
|
800
|
896
|
descriptor.put("key", "value");
|
801
|
897
|
widgetType.setDescriptor(descriptor);
|
802
|
|
-
|
803
|
|
- edgeImitator.expectMessageAmount(1);
|
804
|
898
|
WidgetType savedWidgetType = doPost("/api/widgetType", widgetType, WidgetType.class);
|
805
|
|
- edgeImitator.waitForMessages();
|
806
|
|
-
|
|
899
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
807
|
900
|
latestMessage = edgeImitator.getLatestMessage();
|
808
|
901
|
Assert.assertTrue(latestMessage instanceof WidgetTypeUpdateMsg);
|
809
|
902
|
WidgetTypeUpdateMsg widgetTypeUpdateMsg = (WidgetTypeUpdateMsg) latestMessage;
|
...
|
...
|
@@ -814,11 +907,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
814
|
907
|
Assert.assertEquals(widgetTypeUpdateMsg.getName(), savedWidgetType.getName());
|
815
|
908
|
Assert.assertEquals(JacksonUtil.toJsonNode(widgetTypeUpdateMsg.getDescriptorJson()), savedWidgetType.getDescriptor());
|
816
|
909
|
|
|
910
|
+ // 3
|
817
|
911
|
edgeImitator.expectMessageAmount(1);
|
818
|
912
|
doDelete("/api/widgetType/" + savedWidgetType.getId().getId().toString())
|
819
|
913
|
.andExpect(status().isOk());
|
820
|
|
- edgeImitator.waitForMessages();
|
821
|
|
-
|
|
914
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
822
|
915
|
latestMessage = edgeImitator.getLatestMessage();
|
823
|
916
|
Assert.assertTrue(latestMessage instanceof WidgetTypeUpdateMsg);
|
824
|
917
|
widgetTypeUpdateMsg = (WidgetTypeUpdateMsg) latestMessage;
|
...
|
...
|
@@ -826,11 +919,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
826
|
919
|
Assert.assertEquals(widgetTypeUpdateMsg.getIdMSB(), savedWidgetType.getUuidId().getMostSignificantBits());
|
827
|
920
|
Assert.assertEquals(widgetTypeUpdateMsg.getIdLSB(), savedWidgetType.getUuidId().getLeastSignificantBits());
|
828
|
921
|
|
|
922
|
+ // 4
|
829
|
923
|
edgeImitator.expectMessageAmount(1);
|
830
|
924
|
doDelete("/api/widgetsBundle/" + savedWidgetsBundle.getId().getId().toString())
|
831
|
925
|
.andExpect(status().isOk());
|
832
|
|
- edgeImitator.waitForMessages();
|
833
|
|
-
|
|
926
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
834
|
927
|
latestMessage = edgeImitator.getLatestMessage();
|
835
|
928
|
Assert.assertTrue(latestMessage instanceof WidgetsBundleUpdateMsg);
|
836
|
929
|
widgetsBundleUpdateMsg = (WidgetsBundleUpdateMsg) latestMessage;
|
...
|
...
|
@@ -843,15 +936,15 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
843
|
936
|
|
844
|
937
|
private void testTimeseries() throws Exception {
|
845
|
938
|
log.info("Testing timeseries");
|
846
|
|
- Device device = findDeviceByName("Edge Device 1");
|
847
|
939
|
|
|
940
|
+ edgeImitator.expectMessageAmount(1);
|
|
941
|
+ Device device = findDeviceByName("Edge Device 1");
|
848
|
942
|
String timeseriesData = "{\"data\":{\"temperature\":25},\"ts\":" + System.currentTimeMillis() + "}";
|
849
|
943
|
JsonNode timeseriesEntityData = mapper.readTree(timeseriesData);
|
850
|
|
- EdgeEvent edgeEvent1 = constructEdgeEvent(tenantId, edge.getId(), EdgeEventActionType.TIMESERIES_UPDATED, device.getId().getId(), EdgeEventType.DEVICE, timeseriesEntityData);
|
851
|
|
- edgeImitator.expectMessageAmount(1);
|
852
|
|
- edgeEventService.saveAsync(edgeEvent1);
|
|
944
|
+ EdgeEvent edgeEvent = constructEdgeEvent(tenantId, edge.getId(), EdgeEventActionType.TIMESERIES_UPDATED, device.getId().getId(), EdgeEventType.DEVICE, timeseriesEntityData);
|
|
945
|
+ edgeEventService.saveAsync(edgeEvent);
|
853
|
946
|
clusterService.onEdgeEventUpdate(tenantId, edge.getId());
|
854
|
|
- edgeImitator.waitForMessages();
|
|
947
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
855
|
948
|
|
856
|
949
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
857
|
950
|
Assert.assertTrue(latestMessage instanceof EntityDataProto);
|
...
|
...
|
@@ -890,7 +983,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
890
|
983
|
edgeImitator.expectMessageAmount(1);
|
891
|
984
|
edgeEventService.saveAsync(edgeEvent);
|
892
|
985
|
clusterService.onEdgeEventUpdate(tenantId, edge.getId());
|
893
|
|
- edgeImitator.waitForMessages();
|
|
986
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
894
|
987
|
|
895
|
988
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
896
|
989
|
Assert.assertTrue(latestMessage instanceof EntityDataProto);
|
...
|
...
|
@@ -916,7 +1009,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
916
|
1009
|
edgeImitator.expectMessageAmount(1);
|
917
|
1010
|
edgeEventService.saveAsync(edgeEvent);
|
918
|
1011
|
clusterService.onEdgeEventUpdate(tenantId, edge.getId());
|
919
|
|
- edgeImitator.waitForMessages();
|
|
1012
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
920
|
1013
|
|
921
|
1014
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
922
|
1015
|
Assert.assertTrue(latestMessage instanceof EntityDataProto);
|
...
|
...
|
@@ -941,7 +1034,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
941
|
1034
|
edgeImitator.expectMessageAmount(1);
|
942
|
1035
|
edgeEventService.saveAsync(edgeEvent1);
|
943
|
1036
|
clusterService.onEdgeEventUpdate(tenantId, edge.getId());
|
944
|
|
- edgeImitator.waitForMessages();
|
|
1037
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
945
|
1038
|
|
946
|
1039
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
947
|
1040
|
Assert.assertTrue(latestMessage instanceof EntityDataProto);
|
...
|
...
|
@@ -996,8 +1089,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
996
|
1089
|
|
997
|
1090
|
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
|
998
|
1091
|
|
999
|
|
- edgeImitator.waitForResponses();
|
1000
|
|
- edgeImitator.waitForMessages();
|
|
1092
|
+ Assert.assertTrue(edgeImitator.waitForResponses());
|
|
1093
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
1001
|
1094
|
|
1002
|
1095
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
1003
|
1096
|
Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg);
|
...
|
...
|
@@ -1013,7 +1106,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1013
|
1106
|
|
1014
|
1107
|
private void sendDeviceWithNameThatAlreadyExistsOnCloud() throws Exception {
|
1015
|
1108
|
String deviceOnCloudName = RandomStringUtils.randomAlphanumeric(15);
|
1016
|
|
- Device deviceOnCloud = saveDevice(deviceOnCloudName);
|
|
1109
|
+ Device deviceOnCloud = saveDevice(deviceOnCloudName, "Default");
|
1017
|
1110
|
|
1018
|
1111
|
UUID uuid = Uuids.timeBased();
|
1019
|
1112
|
|
...
|
...
|
@@ -1033,8 +1126,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1033
|
1126
|
|
1034
|
1127
|
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
|
1035
|
1128
|
|
1036
|
|
- edgeImitator.waitForResponses();
|
1037
|
|
- edgeImitator.waitForMessages();
|
|
1129
|
+ Assert.assertTrue(edgeImitator.waitForResponses());
|
|
1130
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
1038
|
1131
|
|
1039
|
1132
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
1040
|
1133
|
Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg);
|
...
|
...
|
@@ -1063,7 +1156,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1063
|
1156
|
|
1064
|
1157
|
edgeImitator.expectMessageAmount(1);
|
1065
|
1158
|
doPost("/api/relation", relation);
|
1066
|
|
- edgeImitator.waitForMessages();
|
|
1159
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
1067
|
1160
|
|
1068
|
1161
|
UplinkMsg.Builder uplinkMsgBuilder = UplinkMsg.newBuilder();
|
1069
|
1162
|
RelationRequestMsg.Builder relationRequestMsgBuilder = RelationRequestMsg.newBuilder();
|
...
|
...
|
@@ -1078,8 +1171,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1078
|
1171
|
edgeImitator.expectResponsesAmount(1);
|
1079
|
1172
|
edgeImitator.expectMessageAmount(1);
|
1080
|
1173
|
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
|
1081
|
|
- edgeImitator.waitForResponses();
|
1082
|
|
- edgeImitator.waitForMessages();
|
|
1174
|
+ Assert.assertTrue(edgeImitator.waitForResponses());
|
|
1175
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
1083
|
1176
|
|
1084
|
1177
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
1085
|
1178
|
Assert.assertTrue(latestMessage instanceof RelationUpdateMsg);
|
...
|
...
|
@@ -1115,7 +1208,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1115
|
1208
|
|
1116
|
1209
|
edgeImitator.expectResponsesAmount(1);
|
1117
|
1210
|
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
|
1118
|
|
- edgeImitator.waitForResponses();
|
|
1211
|
+ Assert.assertTrue(edgeImitator.waitForResponses());
|
1119
|
1212
|
|
1120
|
1213
|
|
1121
|
1214
|
List<AlarmInfo> alarms = doGetTypedWithPageLink("/api/alarm/{entityType}/{entityId}?",
|
...
|
...
|
@@ -1158,7 +1251,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1158
|
1251
|
|
1159
|
1252
|
edgeImitator.expectResponsesAmount(1);
|
1160
|
1253
|
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
|
1161
|
|
- edgeImitator.waitForResponses();
|
|
1254
|
+ Assert.assertTrue(edgeImitator.waitForResponses());
|
1162
|
1255
|
|
1163
|
1256
|
EntityRelation relation = doGet("/api/relation?" +
|
1164
|
1257
|
"&fromId=" + device2.getId().getId().toString() +
|
...
|
...
|
@@ -1212,7 +1305,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1212
|
1305
|
testAutoGeneratedCodeByProtobuf(uplinkMsgBuilder2);
|
1213
|
1306
|
|
1214
|
1307
|
edgeImitator.sendUplinkMsg(uplinkMsgBuilder2.build());
|
1215
|
|
- edgeImitator.waitForResponses();
|
|
1308
|
+ Assert.assertTrue(edgeImitator.waitForResponses());
|
1216
|
1309
|
|
1217
|
1310
|
// Wait before device attributes saved to database before requesting them from controller
|
1218
|
1311
|
Thread.sleep(1000);
|
...
|
...
|
@@ -1243,8 +1336,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1243
|
1336
|
edgeImitator.expectResponsesAmount(1);
|
1244
|
1337
|
edgeImitator.expectMessageAmount(1);
|
1245
|
1338
|
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
|
1246
|
|
- edgeImitator.waitForResponses();
|
1247
|
|
- edgeImitator.waitForMessages();
|
|
1339
|
+ Assert.assertTrue(edgeImitator.waitForResponses());
|
|
1340
|
+ Assert.assertTrue(edgeImitator.waitForMessages());;
|
1248
|
1341
|
|
1249
|
1342
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
1250
|
1343
|
Assert.assertTrue(latestMessage instanceof RuleChainMetadataUpdateMsg);
|
...
|
...
|
@@ -1270,8 +1363,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1270
|
1363
|
edgeImitator.expectResponsesAmount(1);
|
1271
|
1364
|
edgeImitator.expectMessageAmount(1);
|
1272
|
1365
|
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
|
1273
|
|
- edgeImitator.waitForResponses();
|
1274
|
|
- edgeImitator.waitForMessages();
|
|
1366
|
+ Assert.assertTrue(edgeImitator.waitForResponses());
|
|
1367
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
1275
|
1368
|
|
1276
|
1369
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
1277
|
1370
|
Assert.assertTrue(latestMessage instanceof UserCredentialsUpdateMsg);
|
...
|
...
|
@@ -1299,8 +1392,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1299
|
1392
|
edgeImitator.expectResponsesAmount(1);
|
1300
|
1393
|
edgeImitator.expectMessageAmount(1);
|
1301
|
1394
|
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
|
1302
|
|
- edgeImitator.waitForResponses();
|
1303
|
|
- edgeImitator.waitForMessages();
|
|
1395
|
+ Assert.assertTrue(edgeImitator.waitForResponses());
|
|
1396
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
1304
|
1397
|
|
1305
|
1398
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
1306
|
1399
|
Assert.assertTrue(latestMessage instanceof DeviceCredentialsUpdateMsg);
|
...
|
...
|
@@ -1327,7 +1420,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1327
|
1420
|
|
1328
|
1421
|
edgeImitator.expectResponsesAmount(1);
|
1329
|
1422
|
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
|
1330
|
|
- edgeImitator.waitForResponses();
|
|
1423
|
+ Assert.assertTrue(edgeImitator.waitForResponses());
|
1331
|
1424
|
}
|
1332
|
1425
|
|
1333
|
1426
|
private void sendDeviceRpcResponse() throws Exception {
|
...
|
...
|
@@ -1352,7 +1445,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1352
|
1445
|
|
1353
|
1446
|
edgeImitator.expectResponsesAmount(1);
|
1354
|
1447
|
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
|
1355
|
|
- edgeImitator.waitForResponses();
|
|
1448
|
+ Assert.assertTrue(edgeImitator.waitForResponses());
|
1356
|
1449
|
}
|
1357
|
1450
|
|
1358
|
1451
|
private void sendAttributesRequest() throws Exception {
|
...
|
...
|
@@ -1383,8 +1476,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1383
|
1476
|
edgeImitator.expectResponsesAmount(1);
|
1384
|
1477
|
edgeImitator.expectMessageAmount(1);
|
1385
|
1478
|
edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build());
|
1386
|
|
- edgeImitator.waitForResponses();
|
1387
|
|
- edgeImitator.waitForMessages();
|
|
1479
|
+ Assert.assertTrue(edgeImitator.waitForResponses());
|
|
1480
|
+ Assert.assertTrue(edgeImitator.waitForMessages());
|
1388
|
1481
|
|
1389
|
1482
|
AbstractMessage latestMessage = edgeImitator.getLatestMessage();
|
1390
|
1483
|
Assert.assertTrue(latestMessage instanceof EntityDataProto);
|
...
|
...
|
@@ -1416,7 +1509,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1416
|
1509
|
|
1417
|
1510
|
edgeImitator.expectResponsesAmount(1);
|
1418
|
1511
|
edgeImitator.sendUplinkMsg(upLinkMsgBuilder.build());
|
1419
|
|
- edgeImitator.waitForResponses();
|
|
1512
|
+ Assert.assertTrue(edgeImitator.waitForResponses());
|
1420
|
1513
|
device = doGet("/api/device/" + device.getId().getId().toString(), Device.class);
|
1421
|
1514
|
Assert.assertNotNull(device);
|
1422
|
1515
|
List<Device> edgeDevices = doGetTypedWithPageLink("/api/edge/" + edge.getId().getId().toString() + "/devices?",
|
...
|
...
|
@@ -1428,7 +1521,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1428
|
1521
|
private void installation() throws Exception {
|
1429
|
1522
|
edge = doPost("/api/edge", constructEdge("Test Edge", "test"), Edge.class);
|
1430
|
1523
|
|
1431
|
|
- Device savedDevice = saveDevice("Edge Device 1");
|
|
1524
|
+ DeviceProfile deviceProfile = this.createDeviceProfile(CUSTOM_DEVICE_PROFILE_NAME, null);
|
|
1525
|
+ extendDeviceProfileData(deviceProfile);
|
|
1526
|
+ doPost("/api/deviceProfile", deviceProfile, DeviceProfile.class);
|
|
1527
|
+
|
|
1528
|
+ Device savedDevice = saveDevice("Edge Device 1", CUSTOM_DEVICE_PROFILE_NAME);
|
1432
|
1529
|
doPost("/api/edge/" + edge.getId().getId().toString()
|
1433
|
1530
|
+ "/device/" + savedDevice.getId().getId().toString(), Device.class);
|
1434
|
1531
|
|
...
|
...
|
@@ -1437,6 +1534,35 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { |
1437
|
1534
|
+ "/asset/" + savedAsset.getId().getId().toString(), Asset.class);
|
1438
|
1535
|
}
|
1439
|
1536
|
|
|
1537
|
+ private void extendDeviceProfileData(DeviceProfile deviceProfile) {
|
|
1538
|
+ DeviceProfileData profileData = deviceProfile.getProfileData();
|
|
1539
|
+ List<DeviceProfileAlarm> alarms = new ArrayList<>();
|
|
1540
|
+ DeviceProfileAlarm deviceProfileAlarm = new DeviceProfileAlarm();
|
|
1541
|
+ deviceProfileAlarm.setAlarmType("High Temperature");
|
|
1542
|
+ AlarmRule alarmRule = new AlarmRule();
|
|
1543
|
+ alarmRule.setAlarmDetails("Alarm Details");
|
|
1544
|
+ AlarmCondition alarmCondition = new AlarmCondition();
|
|
1545
|
+ alarmCondition.setSpec(new SimpleAlarmConditionSpec());
|
|
1546
|
+ List<AlarmConditionFilter> condition = new ArrayList<>();
|
|
1547
|
+ AlarmConditionFilter alarmConditionFilter = new AlarmConditionFilter();
|
|
1548
|
+ alarmConditionFilter.setKey(new AlarmConditionFilterKey(AlarmConditionKeyType.ATTRIBUTE, "temperature"));
|
|
1549
|
+ NumericFilterPredicate predicate = new NumericFilterPredicate();
|
|
1550
|
+ predicate.setOperation(NumericFilterPredicate.NumericOperation.GREATER);
|
|
1551
|
+ predicate.setValue(new FilterPredicateValue<>(55.0));
|
|
1552
|
+ alarmConditionFilter.setPredicate(predicate);
|
|
1553
|
+ alarmConditionFilter.setValueType(EntityKeyValueType.NUMERIC);
|
|
1554
|
+ condition.add(alarmConditionFilter);
|
|
1555
|
+ alarmCondition.setCondition(condition);
|
|
1556
|
+ alarmRule.setCondition(alarmCondition);
|
|
1557
|
+ deviceProfileAlarm.setClearRule(alarmRule);
|
|
1558
|
+ TreeMap<AlarmSeverity, AlarmRule> createRules = new TreeMap<>();
|
|
1559
|
+ createRules.put(AlarmSeverity.CRITICAL, alarmRule);
|
|
1560
|
+ deviceProfileAlarm.setCreateRules(createRules);
|
|
1561
|
+ alarms.add(deviceProfileAlarm);
|
|
1562
|
+ profileData.setAlarms(alarms);
|
|
1563
|
+ profileData.setProvisionConfiguration(new AllowCreateNewDevicesDeviceProfileProvisionConfiguration("123"));
|
|
1564
|
+ }
|
|
1565
|
+
|
1440
|
1566
|
private EdgeEvent constructEdgeEvent(TenantId tenantId, EdgeId edgeId, EdgeEventActionType edgeEventAction, UUID entityId, EdgeEventType edgeEventType, JsonNode entityBody) {
|
1441
|
1567
|
EdgeEvent edgeEvent = new EdgeEvent();
|
1442
|
1568
|
edgeEvent.setEdgeId(edgeId);
|
...
|
...
|
|