Commit ba1aa7a579edd79e7b66dcc9157fae3339af6399
1 parent
206a3d38
Base Edge test - refactoring and stability fixes. Device Profile processor null …
…pointer exception fix is provision is not set
Showing
3 changed files
with
319 additions
and
178 deletions
@@ -40,8 +40,6 @@ public class DeviceProfileMsgConstructor { | @@ -40,8 +40,6 @@ public class DeviceProfileMsgConstructor { | ||
40 | .setName(deviceProfile.getName()) | 40 | .setName(deviceProfile.getName()) |
41 | .setDefault(deviceProfile.isDefault()) | 41 | .setDefault(deviceProfile.isDefault()) |
42 | .setType(deviceProfile.getType().name()) | 42 | .setType(deviceProfile.getType().name()) |
43 | - .setTransportType(deviceProfile.getTransportType().name()) | ||
44 | - .setProvisionType(deviceProfile.getProvisionType().name()) | ||
45 | .setProfileDataBytes(ByteString.copyFrom(dataDecodingEncodingService.encode(deviceProfile.getProfileData()))); | 43 | .setProfileDataBytes(ByteString.copyFrom(dataDecodingEncodingService.encode(deviceProfile.getProfileData()))); |
46 | // TODO: voba - should this be always null at the moment?? | 44 | // TODO: voba - should this be always null at the moment?? |
47 | // if (deviceProfile.getDefaultRuleChainId() != null) { | 45 | // if (deviceProfile.getDefaultRuleChainId() != null) { |
@@ -54,6 +52,12 @@ public class DeviceProfileMsgConstructor { | @@ -54,6 +52,12 @@ public class DeviceProfileMsgConstructor { | ||
54 | if (deviceProfile.getDescription() != null) { | 52 | if (deviceProfile.getDescription() != null) { |
55 | builder.setDescription(deviceProfile.getDescription()); | 53 | builder.setDescription(deviceProfile.getDescription()); |
56 | } | 54 | } |
55 | + if (deviceProfile.getTransportType() != null) { | ||
56 | + builder.setTransportType(deviceProfile.getTransportType().name()); | ||
57 | + } | ||
58 | + if (deviceProfile.getProvisionType() != null) { | ||
59 | + builder.setProvisionType(deviceProfile.getProvisionType().name()); | ||
60 | + } | ||
57 | if (deviceProfile.getProvisionDeviceKey() != null) { | 61 | if (deviceProfile.getProvisionDeviceKey() != null) { |
58 | builder.setProvisionDeviceKey(deviceProfile.getProvisionDeviceKey()); | 62 | builder.setProvisionDeviceKey(deviceProfile.getProvisionDeviceKey()); |
59 | } | 63 | } |
@@ -32,10 +32,12 @@ import org.junit.Assert; | @@ -32,10 +32,12 @@ import org.junit.Assert; | ||
32 | import org.junit.Before; | 32 | import org.junit.Before; |
33 | import org.junit.Test; | 33 | import org.junit.Test; |
34 | import org.springframework.beans.factory.annotation.Autowired; | 34 | import org.springframework.beans.factory.annotation.Autowired; |
35 | +import org.thingsboard.common.util.JacksonUtil; | ||
35 | import org.thingsboard.server.common.data.Customer; | 36 | import org.thingsboard.server.common.data.Customer; |
36 | import org.thingsboard.server.common.data.Dashboard; | 37 | import org.thingsboard.server.common.data.Dashboard; |
37 | import org.thingsboard.server.common.data.DataConstants; | 38 | import org.thingsboard.server.common.data.DataConstants; |
38 | import org.thingsboard.server.common.data.Device; | 39 | import org.thingsboard.server.common.data.Device; |
40 | +import org.thingsboard.server.common.data.DeviceProfile; | ||
39 | import org.thingsboard.server.common.data.EntityType; | 41 | import org.thingsboard.server.common.data.EntityType; |
40 | import org.thingsboard.server.common.data.EntityView; | 42 | import org.thingsboard.server.common.data.EntityView; |
41 | import org.thingsboard.server.common.data.Tenant; | 43 | import org.thingsboard.server.common.data.Tenant; |
@@ -45,6 +47,15 @@ import org.thingsboard.server.common.data.alarm.AlarmInfo; | @@ -45,6 +47,15 @@ import org.thingsboard.server.common.data.alarm.AlarmInfo; | ||
45 | import org.thingsboard.server.common.data.alarm.AlarmSeverity; | 47 | import org.thingsboard.server.common.data.alarm.AlarmSeverity; |
46 | import org.thingsboard.server.common.data.alarm.AlarmStatus; | 48 | import org.thingsboard.server.common.data.alarm.AlarmStatus; |
47 | import org.thingsboard.server.common.data.asset.Asset; | 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 | import org.thingsboard.server.common.data.edge.Edge; | 59 | import org.thingsboard.server.common.data.edge.Edge; |
49 | import org.thingsboard.server.common.data.edge.EdgeEvent; | 60 | import org.thingsboard.server.common.data.edge.EdgeEvent; |
50 | import org.thingsboard.server.common.data.edge.EdgeEventActionType; | 61 | import org.thingsboard.server.common.data.edge.EdgeEventActionType; |
@@ -57,6 +68,9 @@ import org.thingsboard.server.common.data.id.TenantId; | @@ -57,6 +68,9 @@ import org.thingsboard.server.common.data.id.TenantId; | ||
57 | import org.thingsboard.server.common.data.id.UserId; | 68 | import org.thingsboard.server.common.data.id.UserId; |
58 | import org.thingsboard.server.common.data.page.PageData; | 69 | import org.thingsboard.server.common.data.page.PageData; |
59 | import org.thingsboard.server.common.data.page.PageLink; | 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 | import org.thingsboard.server.common.data.relation.EntityRelation; | 74 | import org.thingsboard.server.common.data.relation.EntityRelation; |
61 | import org.thingsboard.server.common.data.relation.RelationTypeGroup; | 75 | import org.thingsboard.server.common.data.relation.RelationTypeGroup; |
62 | import org.thingsboard.server.common.data.rule.RuleChain; | 76 | import org.thingsboard.server.common.data.rule.RuleChain; |
@@ -71,7 +85,6 @@ import org.thingsboard.server.common.data.widget.WidgetsBundle; | @@ -71,7 +85,6 @@ import org.thingsboard.server.common.data.widget.WidgetsBundle; | ||
71 | import org.thingsboard.server.common.transport.adaptor.JsonConverter; | 85 | import org.thingsboard.server.common.transport.adaptor.JsonConverter; |
72 | import org.thingsboard.server.controller.AbstractControllerTest; | 86 | import org.thingsboard.server.controller.AbstractControllerTest; |
73 | import org.thingsboard.server.dao.edge.EdgeEventService; | 87 | import org.thingsboard.server.dao.edge.EdgeEventService; |
74 | -import org.thingsboard.common.util.JacksonUtil; | ||
75 | import org.thingsboard.server.edge.imitator.EdgeImitator; | 88 | import org.thingsboard.server.edge.imitator.EdgeImitator; |
76 | import org.thingsboard.server.gen.edge.AlarmUpdateMsg; | 89 | import org.thingsboard.server.gen.edge.AlarmUpdateMsg; |
77 | import org.thingsboard.server.gen.edge.AssetUpdateMsg; | 90 | import org.thingsboard.server.gen.edge.AssetUpdateMsg; |
@@ -81,6 +94,7 @@ import org.thingsboard.server.gen.edge.CustomerUpdateMsg; | @@ -81,6 +94,7 @@ import org.thingsboard.server.gen.edge.CustomerUpdateMsg; | ||
81 | import org.thingsboard.server.gen.edge.DashboardUpdateMsg; | 94 | import org.thingsboard.server.gen.edge.DashboardUpdateMsg; |
82 | import org.thingsboard.server.gen.edge.DeviceCredentialsRequestMsg; | 95 | import org.thingsboard.server.gen.edge.DeviceCredentialsRequestMsg; |
83 | import org.thingsboard.server.gen.edge.DeviceCredentialsUpdateMsg; | 96 | import org.thingsboard.server.gen.edge.DeviceCredentialsUpdateMsg; |
97 | +import org.thingsboard.server.gen.edge.DeviceProfileUpdateMsg; | ||
84 | import org.thingsboard.server.gen.edge.DeviceRpcCallMsg; | 98 | import org.thingsboard.server.gen.edge.DeviceRpcCallMsg; |
85 | import org.thingsboard.server.gen.edge.DeviceUpdateMsg; | 99 | import org.thingsboard.server.gen.edge.DeviceUpdateMsg; |
86 | import org.thingsboard.server.gen.edge.EdgeConfiguration; | 100 | import org.thingsboard.server.gen.edge.EdgeConfiguration; |
@@ -106,6 +120,7 @@ import java.util.List; | @@ -106,6 +120,7 @@ import java.util.List; | ||
106 | import java.util.Map; | 120 | import java.util.Map; |
107 | import java.util.Optional; | 121 | import java.util.Optional; |
108 | import java.util.Random; | 122 | import java.util.Random; |
123 | +import java.util.TreeMap; | ||
109 | import java.util.UUID; | 124 | import java.util.UUID; |
110 | import java.util.concurrent.TimeUnit; | 125 | import java.util.concurrent.TimeUnit; |
111 | 126 | ||
@@ -114,6 +129,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. | @@ -114,6 +129,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. | ||
114 | @Slf4j | 129 | @Slf4j |
115 | abstract public class BaseEdgeTest extends AbstractControllerTest { | 130 | abstract public class BaseEdgeTest extends AbstractControllerTest { |
116 | 131 | ||
132 | + private static final String CUSTOM_DEVICE_PROFILE_NAME = "Thermostat"; | ||
133 | + | ||
117 | private Tenant savedTenant; | 134 | private Tenant savedTenant; |
118 | private TenantId tenantId; | 135 | private TenantId tenantId; |
119 | private User tenantAdmin; | 136 | private User tenantAdmin; |
@@ -145,11 +162,17 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -145,11 +162,17 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
145 | tenantAdmin.setLastName("Downs"); | 162 | tenantAdmin.setLastName("Downs"); |
146 | 163 | ||
147 | tenantAdmin = createUserAndLogin(tenantAdmin, "testPassword1"); | 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 | installation(); | 170 | installation(); |
149 | 171 | ||
150 | edgeImitator = new EdgeImitator("localhost", 7070, edge.getRoutingKey(), edge.getSecret()); | 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 | edgeImitator.connect(); | 176 | edgeImitator.connect(); |
154 | } | 177 | } |
155 | 178 | ||
@@ -163,23 +186,49 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -163,23 +186,49 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
163 | .andExpect(status().isOk()); | 186 | .andExpect(status().isOk()); |
164 | } | 187 | } |
165 | 188 | ||
166 | - | ||
167 | @Test | 189 | @Test |
168 | public void test() throws Exception { | 190 | public void test() throws Exception { |
169 | testReceivedInitialData(); | 191 | testReceivedInitialData(); |
192 | + Assert.assertEquals(10, edgeImitator.getDownlinkMsgs().size()); | ||
193 | + | ||
170 | testDevices(); | 194 | testDevices(); |
195 | + Assert.assertEquals(14, edgeImitator.getDownlinkMsgs().size()); | ||
196 | + | ||
171 | testAssets(); | 197 | testAssets(); |
198 | + Assert.assertEquals(18, edgeImitator.getDownlinkMsgs().size()); | ||
199 | + | ||
172 | testRuleChains(); | 200 | testRuleChains(); |
201 | + Assert.assertEquals(21, edgeImitator.getDownlinkMsgs().size()); | ||
202 | + | ||
173 | testDashboards(); | 203 | testDashboards(); |
204 | + Assert.assertEquals(24, edgeImitator.getDownlinkMsgs().size()); | ||
205 | + | ||
174 | testRelations(); | 206 | testRelations(); |
207 | + Assert.assertEquals(26, edgeImitator.getDownlinkMsgs().size()); | ||
208 | + | ||
175 | testAlarms(); | 209 | testAlarms(); |
210 | + Assert.assertEquals(29, edgeImitator.getDownlinkMsgs().size()); | ||
211 | + | ||
176 | testEntityView(); | 212 | testEntityView(); |
213 | + Assert.assertEquals(31, edgeImitator.getDownlinkMsgs().size()); | ||
214 | + | ||
177 | testCustomer(); | 215 | testCustomer(); |
216 | + Assert.assertEquals(33, edgeImitator.getDownlinkMsgs().size()); | ||
217 | + | ||
178 | testWidgetsBundleAndWidgetType(); | 218 | testWidgetsBundleAndWidgetType(); |
219 | + Assert.assertEquals(37, edgeImitator.getDownlinkMsgs().size()); | ||
220 | + | ||
179 | testTimeseries(); | 221 | testTimeseries(); |
222 | + Assert.assertEquals(38, edgeImitator.getDownlinkMsgs().size()); | ||
223 | + | ||
180 | testAttributes(); | 224 | testAttributes(); |
225 | + Assert.assertEquals(41, edgeImitator.getDownlinkMsgs().size()); | ||
226 | + | ||
181 | testSendMessagesToCloud(); | 227 | testSendMessagesToCloud(); |
228 | + Assert.assertEquals(50, edgeImitator.getDownlinkMsgs().size()); | ||
229 | + | ||
182 | testRpcCall(); | 230 | testRpcCall(); |
231 | + Assert.assertEquals(51, edgeImitator.getDownlinkMsgs().size()); | ||
183 | } | 232 | } |
184 | 233 | ||
185 | private Device findDeviceByName(String deviceName) throws Exception { | 234 | private Device findDeviceByName(String deviceName) throws Exception { |
@@ -204,10 +253,10 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -204,10 +253,10 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
204 | return asset; | 253 | return asset; |
205 | } | 254 | } |
206 | 255 | ||
207 | - private Device saveDevice(String deviceName) throws Exception { | 256 | + private Device saveDevice(String deviceName, String type) throws Exception { |
208 | Device device = new Device(); | 257 | Device device = new Device(); |
209 | device.setName(deviceName); | 258 | device.setName(deviceName); |
210 | - device.setType("test"); | 259 | + device.setType(type); |
211 | return doPost("/api/device", device, Device.class); | 260 | return doPost("/api/device", device, Device.class); |
212 | } | 261 | } |
213 | 262 | ||
@@ -233,7 +282,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -233,7 +282,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
233 | edgeImitator.expectMessageAmount(1); | 282 | edgeImitator.expectMessageAmount(1); |
234 | edgeEventService.saveAsync(edgeEvent); | 283 | edgeEventService.saveAsync(edgeEvent); |
235 | clusterService.onEdgeEventUpdate(tenantId, edge.getId()); | 284 | clusterService.onEdgeEventUpdate(tenantId, edge.getId()); |
236 | - edgeImitator.waitForMessages(); | 285 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
237 | 286 | ||
238 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 287 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
239 | Assert.assertTrue(latestMessage instanceof DeviceRpcCallMsg); | 288 | Assert.assertTrue(latestMessage instanceof DeviceRpcCallMsg); |
@@ -243,7 +292,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -243,7 +292,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
243 | 292 | ||
244 | private void testReceivedInitialData() throws Exception { | 293 | private void testReceivedInitialData() throws Exception { |
245 | log.info("Checking received data"); | 294 | log.info("Checking received data"); |
246 | - edgeImitator.waitForMessages(); | 295 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
247 | 296 | ||
248 | EdgeConfiguration configuration = edgeImitator.getConfiguration(); | 297 | EdgeConfiguration configuration = edgeImitator.getConfiguration(); |
249 | Assert.assertNotNull(configuration); | 298 | Assert.assertNotNull(configuration); |
@@ -253,9 +302,9 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -253,9 +302,9 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
253 | UserId userId = edgeImitator.getUserId(); | 302 | UserId userId = edgeImitator.getUserId(); |
254 | Assert.assertNotNull(userId); | 303 | Assert.assertNotNull(userId); |
255 | 304 | ||
256 | - Optional<DeviceUpdateMsg> optionalMsg1 = edgeImitator.findMessageByType(DeviceUpdateMsg.class); | ||
257 | - Assert.assertTrue(optionalMsg1.isPresent()); | ||
258 | - DeviceUpdateMsg deviceUpdateMsg = optionalMsg1.get(); | 305 | + Optional<DeviceUpdateMsg> deviceUpdateMsgOpt = edgeImitator.findMessageByType(DeviceUpdateMsg.class); |
306 | + Assert.assertTrue(deviceUpdateMsgOpt.isPresent()); | ||
307 | + DeviceUpdateMsg deviceUpdateMsg = deviceUpdateMsgOpt.get(); | ||
259 | Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceUpdateMsg.getMsgType()); | 308 | Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceUpdateMsg.getMsgType()); |
260 | UUID deviceUUID = new UUID(deviceUpdateMsg.getIdMSB(), deviceUpdateMsg.getIdLSB()); | 309 | UUID deviceUUID = new UUID(deviceUpdateMsg.getIdMSB(), deviceUpdateMsg.getIdLSB()); |
261 | Device device = doGet("/api/device/" + deviceUUID.toString(), Device.class); | 310 | Device device = doGet("/api/device/" + deviceUUID.toString(), Device.class); |
@@ -264,9 +313,25 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -264,9 +313,25 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
264 | new TypeReference<PageData<Device>>() {}, new PageLink(100)).getData(); | 313 | new TypeReference<PageData<Device>>() {}, new PageLink(100)).getData(); |
265 | Assert.assertTrue(edgeDevices.contains(device)); | 314 | Assert.assertTrue(edgeDevices.contains(device)); |
266 | 315 | ||
267 | - Optional<AssetUpdateMsg> optionalMsg2 = edgeImitator.findMessageByType(AssetUpdateMsg.class); | ||
268 | - Assert.assertTrue(optionalMsg2.isPresent()); | ||
269 | - AssetUpdateMsg assetUpdateMsg = optionalMsg2.get(); | 316 | + List<DeviceProfileUpdateMsg> deviceProfileUpdateMsgList = edgeImitator.findAllMessagesByType(DeviceProfileUpdateMsg.class); |
317 | + Assert.assertEquals(3, deviceProfileUpdateMsgList.size()); | ||
318 | + Optional<DeviceProfileUpdateMsg> deviceProfileUpdateMsgOpt = | ||
319 | + deviceProfileUpdateMsgList.stream().filter(dfum -> CUSTOM_DEVICE_PROFILE_NAME.equals(dfum.getName())).findAny(); | ||
320 | + Assert.assertTrue(deviceProfileUpdateMsgOpt.isPresent()); | ||
321 | + DeviceProfileUpdateMsg deviceProfileUpdateMsg = deviceProfileUpdateMsgOpt.get(); | ||
322 | + Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceProfileUpdateMsg.getMsgType()); | ||
323 | + UUID deviceProfileUUID = new UUID(deviceProfileUpdateMsg.getIdMSB(), deviceProfileUpdateMsg.getIdLSB()); | ||
324 | + DeviceProfile deviceProfile = doGet("/api/deviceProfile/" + deviceProfileUUID.toString(), DeviceProfile.class); | ||
325 | + Assert.assertNotNull(deviceProfile); | ||
326 | + Assert.assertNotNull(deviceProfile.getProfileData()); | ||
327 | + Assert.assertNotNull(deviceProfile.getProfileData().getAlarms()); | ||
328 | + Assert.assertNotNull(deviceProfile.getProfileData().getAlarms().get(0).getClearRule()); | ||
329 | + | ||
330 | + testAutoGeneratedCodeByProtobuf(deviceProfileUpdateMsg); | ||
331 | + | ||
332 | + Optional<AssetUpdateMsg> assetUpdateMsgOpt = edgeImitator.findMessageByType(AssetUpdateMsg.class); | ||
333 | + Assert.assertTrue(assetUpdateMsgOpt.isPresent()); | ||
334 | + AssetUpdateMsg assetUpdateMsg = assetUpdateMsgOpt.get(); | ||
270 | Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, assetUpdateMsg.getMsgType()); | 335 | Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, assetUpdateMsg.getMsgType()); |
271 | UUID assetUUID = new UUID(assetUpdateMsg.getIdMSB(), assetUpdateMsg.getIdLSB()); | 336 | UUID assetUUID = new UUID(assetUpdateMsg.getIdMSB(), assetUpdateMsg.getIdLSB()); |
272 | Asset asset = doGet("/api/asset/" + assetUUID.toString(), Asset.class); | 337 | Asset asset = doGet("/api/asset/" + assetUUID.toString(), Asset.class); |
@@ -277,9 +342,9 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -277,9 +342,9 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
277 | 342 | ||
278 | testAutoGeneratedCodeByProtobuf(assetUpdateMsg); | 343 | testAutoGeneratedCodeByProtobuf(assetUpdateMsg); |
279 | 344 | ||
280 | - Optional<RuleChainUpdateMsg> optionalMsg3 = edgeImitator.findMessageByType(RuleChainUpdateMsg.class); | ||
281 | - Assert.assertTrue(optionalMsg3.isPresent()); | ||
282 | - RuleChainUpdateMsg ruleChainUpdateMsg = optionalMsg3.get(); | 345 | + Optional<RuleChainUpdateMsg> ruleChainUpdateMsgOpt = edgeImitator.findMessageByType(RuleChainUpdateMsg.class); |
346 | + Assert.assertTrue(ruleChainUpdateMsgOpt.isPresent()); | ||
347 | + RuleChainUpdateMsg ruleChainUpdateMsg = ruleChainUpdateMsgOpt.get(); | ||
283 | Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, ruleChainUpdateMsg.getMsgType()); | 348 | Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, ruleChainUpdateMsg.getMsgType()); |
284 | UUID ruleChainUUID = new UUID(ruleChainUpdateMsg.getIdMSB(), ruleChainUpdateMsg.getIdLSB()); | 349 | UUID ruleChainUUID = new UUID(ruleChainUpdateMsg.getIdMSB(), ruleChainUpdateMsg.getIdLSB()); |
285 | RuleChain ruleChain = doGet("/api/ruleChain/" + ruleChainUUID.toString(), RuleChain.class); | 350 | RuleChain ruleChain = doGet("/api/ruleChain/" + ruleChainUUID.toString(), RuleChain.class); |
@@ -296,13 +361,12 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -296,13 +361,12 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
296 | private void testDevices() throws Exception { | 361 | private void testDevices() throws Exception { |
297 | log.info("Testing devices"); | 362 | log.info("Testing devices"); |
298 | 363 | ||
299 | - Device savedDevice = saveDevice("Edge Device 2"); | ||
300 | - | 364 | + // 1 |
301 | edgeImitator.expectMessageAmount(1); | 365 | edgeImitator.expectMessageAmount(1); |
366 | + Device savedDevice = saveDevice("Edge Device 2", "Default"); | ||
302 | doPost("/api/edge/" + edge.getId().getId().toString() | 367 | doPost("/api/edge/" + edge.getId().getId().toString() |
303 | + "/device/" + savedDevice.getId().getId().toString(), Device.class); | 368 | + "/device/" + savedDevice.getId().getId().toString(), Device.class); |
304 | - edgeImitator.waitForMessages(); | ||
305 | - | 369 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
306 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 370 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
307 | Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg); | 371 | Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg); |
308 | DeviceUpdateMsg deviceUpdateMsg = (DeviceUpdateMsg) latestMessage; | 372 | DeviceUpdateMsg deviceUpdateMsg = (DeviceUpdateMsg) latestMessage; |
@@ -312,11 +376,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -312,11 +376,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
312 | Assert.assertEquals(deviceUpdateMsg.getName(), savedDevice.getName()); | 376 | Assert.assertEquals(deviceUpdateMsg.getName(), savedDevice.getName()); |
313 | Assert.assertEquals(deviceUpdateMsg.getType(), savedDevice.getType()); | 377 | Assert.assertEquals(deviceUpdateMsg.getType(), savedDevice.getType()); |
314 | 378 | ||
379 | + // 2 | ||
315 | edgeImitator.expectMessageAmount(1); | 380 | edgeImitator.expectMessageAmount(1); |
316 | doDelete("/api/edge/" + edge.getId().getId().toString() | 381 | doDelete("/api/edge/" + edge.getId().getId().toString() |
317 | + "/device/" + savedDevice.getId().getId().toString(), Device.class); | 382 | + "/device/" + savedDevice.getId().getId().toString(), Device.class); |
318 | - edgeImitator.waitForMessages(); | ||
319 | - | 383 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
320 | latestMessage = edgeImitator.getLatestMessage(); | 384 | latestMessage = edgeImitator.getLatestMessage(); |
321 | Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg); | 385 | Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg); |
322 | deviceUpdateMsg = (DeviceUpdateMsg) latestMessage; | 386 | deviceUpdateMsg = (DeviceUpdateMsg) latestMessage; |
@@ -324,11 +388,34 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -324,11 +388,34 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
324 | Assert.assertEquals(deviceUpdateMsg.getIdMSB(), savedDevice.getUuidId().getMostSignificantBits()); | 388 | Assert.assertEquals(deviceUpdateMsg.getIdMSB(), savedDevice.getUuidId().getMostSignificantBits()); |
325 | Assert.assertEquals(deviceUpdateMsg.getIdLSB(), savedDevice.getUuidId().getLeastSignificantBits()); | 389 | Assert.assertEquals(deviceUpdateMsg.getIdLSB(), savedDevice.getUuidId().getLeastSignificantBits()); |
326 | 390 | ||
391 | + // 3 | ||
327 | edgeImitator.expectMessageAmount(1); | 392 | edgeImitator.expectMessageAmount(1); |
328 | doDelete("/api/device/" + savedDevice.getId().getId().toString()) | 393 | doDelete("/api/device/" + savedDevice.getId().getId().toString()) |
329 | .andExpect(status().isOk()); | 394 | .andExpect(status().isOk()); |
330 | - edgeImitator.waitForMessages(); | 395 | + // we should not get any message because device is not assigned to edge any more |
396 | + Assert.assertFalse(edgeImitator.waitForMessages(1)); | ||
331 | 397 | ||
398 | + // 4 | ||
399 | + edgeImitator.expectMessageAmount(1); | ||
400 | + savedDevice = saveDevice("Edge Device 3", "Default"); | ||
401 | + doPost("/api/edge/" + edge.getId().getId().toString() | ||
402 | + + "/device/" + savedDevice.getId().getId().toString(), Device.class); | ||
403 | + Assert.assertTrue(edgeImitator.waitForMessages()); | ||
404 | + latestMessage = edgeImitator.getLatestMessage(); | ||
405 | + Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg); | ||
406 | + deviceUpdateMsg = (DeviceUpdateMsg) latestMessage; | ||
407 | + Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, deviceUpdateMsg.getMsgType()); | ||
408 | + Assert.assertEquals(deviceUpdateMsg.getIdMSB(), savedDevice.getUuidId().getMostSignificantBits()); | ||
409 | + Assert.assertEquals(deviceUpdateMsg.getIdLSB(), savedDevice.getUuidId().getLeastSignificantBits()); | ||
410 | + Assert.assertEquals(deviceUpdateMsg.getName(), savedDevice.getName()); | ||
411 | + Assert.assertEquals(deviceUpdateMsg.getType(), savedDevice.getType()); | ||
412 | + | ||
413 | + // 5 | ||
414 | + edgeImitator.expectMessageAmount(1); | ||
415 | + doDelete("/api/device/" + savedDevice.getId().getId().toString()) | ||
416 | + .andExpect(status().isOk()); | ||
417 | + // in this case we should get messages because device was assigned to edge | ||
418 | + Assert.assertTrue(edgeImitator.waitForMessages()); | ||
332 | latestMessage = edgeImitator.getLatestMessage(); | 419 | latestMessage = edgeImitator.getLatestMessage(); |
333 | Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg); | 420 | Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg); |
334 | deviceUpdateMsg = (DeviceUpdateMsg) latestMessage; | 421 | deviceUpdateMsg = (DeviceUpdateMsg) latestMessage; |
@@ -342,13 +429,13 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -342,13 +429,13 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
342 | 429 | ||
343 | private void testAssets() throws Exception { | 430 | private void testAssets() throws Exception { |
344 | log.info("Testing assets"); | 431 | log.info("Testing assets"); |
345 | - Asset savedAsset = saveAsset("Edge Asset 2"); | ||
346 | 432 | ||
433 | + // 1 | ||
347 | edgeImitator.expectMessageAmount(1); | 434 | edgeImitator.expectMessageAmount(1); |
435 | + Asset savedAsset = saveAsset("Edge Asset 2"); | ||
348 | doPost("/api/edge/" + edge.getId().getId().toString() | 436 | doPost("/api/edge/" + edge.getId().getId().toString() |
349 | + "/asset/" + savedAsset.getId().getId().toString(), Asset.class); | 437 | + "/asset/" + savedAsset.getId().getId().toString(), Asset.class); |
350 | - edgeImitator.waitForMessages(); | ||
351 | - | 438 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
352 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 439 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
353 | Assert.assertTrue(latestMessage instanceof AssetUpdateMsg); | 440 | Assert.assertTrue(latestMessage instanceof AssetUpdateMsg); |
354 | AssetUpdateMsg assetUpdateMsg = (AssetUpdateMsg) latestMessage; | 441 | AssetUpdateMsg assetUpdateMsg = (AssetUpdateMsg) latestMessage; |
@@ -358,11 +445,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -358,11 +445,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
358 | Assert.assertEquals(assetUpdateMsg.getName(), savedAsset.getName()); | 445 | Assert.assertEquals(assetUpdateMsg.getName(), savedAsset.getName()); |
359 | Assert.assertEquals(assetUpdateMsg.getType(), savedAsset.getType()); | 446 | Assert.assertEquals(assetUpdateMsg.getType(), savedAsset.getType()); |
360 | 447 | ||
448 | + // 2 | ||
361 | edgeImitator.expectMessageAmount(1); | 449 | edgeImitator.expectMessageAmount(1); |
362 | doDelete("/api/edge/" + edge.getId().getId().toString() | 450 | doDelete("/api/edge/" + edge.getId().getId().toString() |
363 | + "/asset/" + savedAsset.getId().getId().toString(), Asset.class); | 451 | + "/asset/" + savedAsset.getId().getId().toString(), Asset.class); |
364 | - edgeImitator.waitForMessages(); | ||
365 | - | 452 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
366 | latestMessage = edgeImitator.getLatestMessage(); | 453 | latestMessage = edgeImitator.getLatestMessage(); |
367 | Assert.assertTrue(latestMessage instanceof AssetUpdateMsg); | 454 | Assert.assertTrue(latestMessage instanceof AssetUpdateMsg); |
368 | assetUpdateMsg = (AssetUpdateMsg) latestMessage; | 455 | assetUpdateMsg = (AssetUpdateMsg) latestMessage; |
@@ -370,11 +457,32 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -370,11 +457,32 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
370 | Assert.assertEquals(assetUpdateMsg.getIdMSB(), savedAsset.getUuidId().getMostSignificantBits()); | 457 | Assert.assertEquals(assetUpdateMsg.getIdMSB(), savedAsset.getUuidId().getMostSignificantBits()); |
371 | Assert.assertEquals(assetUpdateMsg.getIdLSB(), savedAsset.getUuidId().getLeastSignificantBits()); | 458 | Assert.assertEquals(assetUpdateMsg.getIdLSB(), savedAsset.getUuidId().getLeastSignificantBits()); |
372 | 459 | ||
460 | + // 3 | ||
373 | edgeImitator.expectMessageAmount(1); | 461 | edgeImitator.expectMessageAmount(1); |
374 | doDelete("/api/asset/" + savedAsset.getId().getId().toString()) | 462 | doDelete("/api/asset/" + savedAsset.getId().getId().toString()) |
375 | .andExpect(status().isOk()); | 463 | .andExpect(status().isOk()); |
376 | - edgeImitator.waitForMessages(); | 464 | + Assert.assertFalse(edgeImitator.waitForMessages(1)); |
377 | 465 | ||
466 | + // 4 | ||
467 | + edgeImitator.expectMessageAmount(1); | ||
468 | + savedAsset = saveAsset("Edge Asset 3"); | ||
469 | + doPost("/api/edge/" + edge.getId().getId().toString() | ||
470 | + + "/asset/" + savedAsset.getId().getId().toString(), Asset.class); | ||
471 | + Assert.assertTrue(edgeImitator.waitForMessages()); | ||
472 | + latestMessage = edgeImitator.getLatestMessage(); | ||
473 | + Assert.assertTrue(latestMessage instanceof AssetUpdateMsg); | ||
474 | + assetUpdateMsg = (AssetUpdateMsg) latestMessage; | ||
475 | + Assert.assertEquals(UpdateMsgType.ENTITY_CREATED_RPC_MESSAGE, assetUpdateMsg.getMsgType()); | ||
476 | + Assert.assertEquals(assetUpdateMsg.getIdMSB(), savedAsset.getUuidId().getMostSignificantBits()); | ||
477 | + Assert.assertEquals(assetUpdateMsg.getIdLSB(), savedAsset.getUuidId().getLeastSignificantBits()); | ||
478 | + Assert.assertEquals(assetUpdateMsg.getName(), savedAsset.getName()); | ||
479 | + Assert.assertEquals(assetUpdateMsg.getType(), savedAsset.getType()); | ||
480 | + | ||
481 | + // 5 | ||
482 | + edgeImitator.expectMessageAmount(1); | ||
483 | + doDelete("/api/asset/" + savedAsset.getId().getId().toString()) | ||
484 | + .andExpect(status().isOk()); | ||
485 | + Assert.assertTrue(edgeImitator.waitForMessages()); | ||
378 | latestMessage = edgeImitator.getLatestMessage(); | 486 | latestMessage = edgeImitator.getLatestMessage(); |
379 | Assert.assertTrue(latestMessage instanceof AssetUpdateMsg); | 487 | Assert.assertTrue(latestMessage instanceof AssetUpdateMsg); |
380 | assetUpdateMsg = (AssetUpdateMsg) latestMessage; | 488 | assetUpdateMsg = (AssetUpdateMsg) latestMessage; |
@@ -387,21 +495,21 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -387,21 +495,21 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
387 | 495 | ||
388 | private void testRuleChains() throws Exception { | 496 | private void testRuleChains() throws Exception { |
389 | log.info("Testing RuleChains"); | 497 | log.info("Testing RuleChains"); |
498 | + | ||
499 | + // 1 | ||
500 | + edgeImitator.expectMessageAmount(1); | ||
390 | RuleChain ruleChain = new RuleChain(); | 501 | RuleChain ruleChain = new RuleChain(); |
391 | ruleChain.setName("Edge Test Rule Chain"); | 502 | ruleChain.setName("Edge Test Rule Chain"); |
392 | ruleChain.setType(RuleChainType.EDGE); | 503 | ruleChain.setType(RuleChainType.EDGE); |
393 | RuleChain savedRuleChain = doPost("/api/ruleChain", ruleChain, RuleChain.class); | 504 | RuleChain savedRuleChain = doPost("/api/ruleChain", ruleChain, RuleChain.class); |
394 | - | ||
395 | createRuleChainMetadata(savedRuleChain); | 505 | createRuleChainMetadata(savedRuleChain); |
396 | - | ||
397 | - // Wait before rule chain metadata saved to database before rule chain is assigned to edge | 506 | + // sleep 1 seconds to avoid ENTITY_UPDATED_RPC_MESSAGE for the rule chain |
507 | + // rule chain metadata is going to be stored and updated event pushed to edge notification service | ||
508 | + // while service will be processing this event assignment rule chain to edge will be completed if bad timing | ||
398 | Thread.sleep(1000); | 509 | Thread.sleep(1000); |
399 | - | ||
400 | - edgeImitator.expectMessageAmount(1); | ||
401 | doPost("/api/edge/" + edge.getId().getId().toString() | 510 | doPost("/api/edge/" + edge.getId().getId().toString() |
402 | + "/ruleChain/" + savedRuleChain.getId().getId().toString(), RuleChain.class); | 511 | + "/ruleChain/" + savedRuleChain.getId().getId().toString(), RuleChain.class); |
403 | - edgeImitator.waitForMessages(); | ||
404 | - | 512 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
405 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 513 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
406 | Assert.assertTrue(latestMessage instanceof RuleChainUpdateMsg); | 514 | Assert.assertTrue(latestMessage instanceof RuleChainUpdateMsg); |
407 | RuleChainUpdateMsg ruleChainUpdateMsg = (RuleChainUpdateMsg) latestMessage; | 515 | RuleChainUpdateMsg ruleChainUpdateMsg = (RuleChainUpdateMsg) latestMessage; |
@@ -410,13 +518,14 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -410,13 +518,14 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
410 | Assert.assertEquals(ruleChainUpdateMsg.getIdLSB(), savedRuleChain.getUuidId().getLeastSignificantBits()); | 518 | Assert.assertEquals(ruleChainUpdateMsg.getIdLSB(), savedRuleChain.getUuidId().getLeastSignificantBits()); |
411 | Assert.assertEquals(ruleChainUpdateMsg.getName(), savedRuleChain.getName()); | 519 | Assert.assertEquals(ruleChainUpdateMsg.getName(), savedRuleChain.getName()); |
412 | 520 | ||
521 | + // 2 | ||
413 | testRuleChainMetadataRequestMsg(savedRuleChain.getId()); | 522 | testRuleChainMetadataRequestMsg(savedRuleChain.getId()); |
414 | 523 | ||
524 | + // 3 | ||
415 | edgeImitator.expectMessageAmount(1); | 525 | edgeImitator.expectMessageAmount(1); |
416 | doDelete("/api/edge/" + edge.getId().getId().toString() | 526 | doDelete("/api/edge/" + edge.getId().getId().toString() |
417 | + "/ruleChain/" + savedRuleChain.getId().getId().toString(), RuleChain.class); | 527 | + "/ruleChain/" + savedRuleChain.getId().getId().toString(), RuleChain.class); |
418 | - edgeImitator.waitForMessages(); | ||
419 | - | 528 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
420 | latestMessage = edgeImitator.getLatestMessage(); | 529 | latestMessage = edgeImitator.getLatestMessage(); |
421 | Assert.assertTrue(latestMessage instanceof RuleChainUpdateMsg); | 530 | Assert.assertTrue(latestMessage instanceof RuleChainUpdateMsg); |
422 | ruleChainUpdateMsg = (RuleChainUpdateMsg) latestMessage; | 531 | ruleChainUpdateMsg = (RuleChainUpdateMsg) latestMessage; |
@@ -424,17 +533,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -424,17 +533,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
424 | Assert.assertEquals(ruleChainUpdateMsg.getIdMSB(), savedRuleChain.getUuidId().getMostSignificantBits()); | 533 | Assert.assertEquals(ruleChainUpdateMsg.getIdMSB(), savedRuleChain.getUuidId().getMostSignificantBits()); |
425 | Assert.assertEquals(ruleChainUpdateMsg.getIdLSB(), savedRuleChain.getUuidId().getLeastSignificantBits()); | 534 | Assert.assertEquals(ruleChainUpdateMsg.getIdLSB(), savedRuleChain.getUuidId().getLeastSignificantBits()); |
426 | 535 | ||
536 | + // 4 | ||
427 | edgeImitator.expectMessageAmount(1); | 537 | edgeImitator.expectMessageAmount(1); |
428 | doDelete("/api/ruleChain/" + savedRuleChain.getId().getId().toString()) | 538 | doDelete("/api/ruleChain/" + savedRuleChain.getId().getId().toString()) |
429 | .andExpect(status().isOk()); | 539 | .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()); | 540 | + Assert.assertFalse(edgeImitator.waitForMessages(1)); |
438 | 541 | ||
439 | log.info("RuleChains tested successfully"); | 542 | log.info("RuleChains tested successfully"); |
440 | } | 543 | } |
@@ -452,8 +555,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -452,8 +555,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
452 | edgeImitator.expectResponsesAmount(1); | 555 | edgeImitator.expectResponsesAmount(1); |
453 | edgeImitator.expectMessageAmount(1); | 556 | edgeImitator.expectMessageAmount(1); |
454 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); | 557 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); |
455 | - edgeImitator.waitForResponses(); | ||
456 | - edgeImitator.waitForMessages(); | 558 | + Assert.assertTrue(edgeImitator.waitForResponses()); |
559 | + Assert.assertTrue(edgeImitator.waitForMessages()); | ||
457 | 560 | ||
458 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 561 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
459 | Assert.assertTrue(latestMessage instanceof RuleChainMetadataUpdateMsg); | 562 | Assert.assertTrue(latestMessage instanceof RuleChainMetadataUpdateMsg); |
@@ -502,15 +605,15 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -502,15 +605,15 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
502 | 605 | ||
503 | private void testDashboards() throws Exception { | 606 | private void testDashboards() throws Exception { |
504 | log.info("Testing Dashboards"); | 607 | log.info("Testing Dashboards"); |
608 | + | ||
609 | + // 1 | ||
610 | + edgeImitator.expectMessageAmount(1); | ||
505 | Dashboard dashboard = new Dashboard(); | 611 | Dashboard dashboard = new Dashboard(); |
506 | dashboard.setTitle("Edge Test Dashboard"); | 612 | dashboard.setTitle("Edge Test Dashboard"); |
507 | Dashboard savedDashboard = doPost("/api/dashboard", dashboard, Dashboard.class); | 613 | Dashboard savedDashboard = doPost("/api/dashboard", dashboard, Dashboard.class); |
508 | - | ||
509 | - edgeImitator.expectMessageAmount(1); | ||
510 | doPost("/api/edge/" + edge.getId().getId().toString() | 614 | doPost("/api/edge/" + edge.getId().getId().toString() |
511 | + "/dashboard/" + savedDashboard.getId().getId().toString(), Dashboard.class); | 615 | + "/dashboard/" + savedDashboard.getId().getId().toString(), Dashboard.class); |
512 | - edgeImitator.waitForMessages(); | ||
513 | - | 616 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
514 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 617 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
515 | Assert.assertTrue(latestMessage instanceof DashboardUpdateMsg); | 618 | Assert.assertTrue(latestMessage instanceof DashboardUpdateMsg); |
516 | DashboardUpdateMsg dashboardUpdateMsg = (DashboardUpdateMsg) latestMessage; | 619 | DashboardUpdateMsg dashboardUpdateMsg = (DashboardUpdateMsg) latestMessage; |
@@ -518,25 +621,24 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -518,25 +621,24 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
518 | Assert.assertEquals(dashboardUpdateMsg.getIdMSB(), savedDashboard.getUuidId().getMostSignificantBits()); | 621 | Assert.assertEquals(dashboardUpdateMsg.getIdMSB(), savedDashboard.getUuidId().getMostSignificantBits()); |
519 | Assert.assertEquals(dashboardUpdateMsg.getIdLSB(), savedDashboard.getUuidId().getLeastSignificantBits()); | 622 | Assert.assertEquals(dashboardUpdateMsg.getIdLSB(), savedDashboard.getUuidId().getLeastSignificantBits()); |
520 | Assert.assertEquals(dashboardUpdateMsg.getTitle(), savedDashboard.getName()); | 623 | Assert.assertEquals(dashboardUpdateMsg.getTitle(), savedDashboard.getName()); |
521 | - | ||
522 | testAutoGeneratedCodeByProtobuf(dashboardUpdateMsg); | 624 | testAutoGeneratedCodeByProtobuf(dashboardUpdateMsg); |
523 | 625 | ||
626 | + // 2 | ||
524 | edgeImitator.expectMessageAmount(1); | 627 | edgeImitator.expectMessageAmount(1); |
525 | savedDashboard.setTitle("Updated Edge Test Dashboard"); | 628 | savedDashboard.setTitle("Updated Edge Test Dashboard"); |
526 | doPost("/api/dashboard", savedDashboard, Dashboard.class); | 629 | doPost("/api/dashboard", savedDashboard, Dashboard.class); |
527 | - edgeImitator.waitForMessages(); | ||
528 | - | 630 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
529 | latestMessage = edgeImitator.getLatestMessage(); | 631 | latestMessage = edgeImitator.getLatestMessage(); |
530 | Assert.assertTrue(latestMessage instanceof DashboardUpdateMsg); | 632 | Assert.assertTrue(latestMessage instanceof DashboardUpdateMsg); |
531 | dashboardUpdateMsg = (DashboardUpdateMsg) latestMessage; | 633 | dashboardUpdateMsg = (DashboardUpdateMsg) latestMessage; |
532 | Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, dashboardUpdateMsg.getMsgType()); | 634 | Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, dashboardUpdateMsg.getMsgType()); |
533 | Assert.assertEquals(dashboardUpdateMsg.getTitle(), savedDashboard.getName()); | 635 | Assert.assertEquals(dashboardUpdateMsg.getTitle(), savedDashboard.getName()); |
534 | 636 | ||
637 | + // 3 | ||
535 | edgeImitator.expectMessageAmount(1); | 638 | edgeImitator.expectMessageAmount(1); |
536 | doDelete("/api/edge/" + edge.getId().getId().toString() | 639 | doDelete("/api/edge/" + edge.getId().getId().toString() |
537 | + "/dashboard/" + savedDashboard.getId().getId().toString(), Dashboard.class); | 640 | + "/dashboard/" + savedDashboard.getId().getId().toString(), Dashboard.class); |
538 | - edgeImitator.waitForMessages(); | ||
539 | - | 641 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
540 | latestMessage = edgeImitator.getLatestMessage(); | 642 | latestMessage = edgeImitator.getLatestMessage(); |
541 | Assert.assertTrue(latestMessage instanceof DashboardUpdateMsg); | 643 | Assert.assertTrue(latestMessage instanceof DashboardUpdateMsg); |
542 | dashboardUpdateMsg = (DashboardUpdateMsg) latestMessage; | 644 | dashboardUpdateMsg = (DashboardUpdateMsg) latestMessage; |
@@ -544,17 +646,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -544,17 +646,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
544 | Assert.assertEquals(dashboardUpdateMsg.getIdMSB(), savedDashboard.getUuidId().getMostSignificantBits()); | 646 | Assert.assertEquals(dashboardUpdateMsg.getIdMSB(), savedDashboard.getUuidId().getMostSignificantBits()); |
545 | Assert.assertEquals(dashboardUpdateMsg.getIdLSB(), savedDashboard.getUuidId().getLeastSignificantBits()); | 647 | Assert.assertEquals(dashboardUpdateMsg.getIdLSB(), savedDashboard.getUuidId().getLeastSignificantBits()); |
546 | 648 | ||
649 | + // 4 | ||
547 | edgeImitator.expectMessageAmount(1); | 650 | edgeImitator.expectMessageAmount(1); |
548 | doDelete("/api/dashboard/" + savedDashboard.getId().getId().toString()) | 651 | doDelete("/api/dashboard/" + savedDashboard.getId().getId().toString()) |
549 | .andExpect(status().isOk()); | 652 | .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()); | 653 | + Assert.assertFalse(edgeImitator.waitForMessages(1)); |
558 | 654 | ||
559 | log.info("Dashboards tested successfully"); | 655 | log.info("Dashboards tested successfully"); |
560 | } | 656 | } |
@@ -562,19 +658,17 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -562,19 +658,17 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
562 | private void testRelations() throws Exception { | 658 | private void testRelations() throws Exception { |
563 | log.info("Testing Relations"); | 659 | log.info("Testing Relations"); |
564 | 660 | ||
661 | + // 1 | ||
662 | + edgeImitator.expectMessageAmount(1); | ||
565 | Device device = findDeviceByName("Edge Device 1"); | 663 | Device device = findDeviceByName("Edge Device 1"); |
566 | Asset asset = findAssetByName("Edge Asset 1"); | 664 | Asset asset = findAssetByName("Edge Asset 1"); |
567 | - | ||
568 | EntityRelation relation = new EntityRelation(); | 665 | EntityRelation relation = new EntityRelation(); |
569 | relation.setType("test"); | 666 | relation.setType("test"); |
570 | relation.setFrom(device.getId()); | 667 | relation.setFrom(device.getId()); |
571 | relation.setTo(asset.getId()); | 668 | relation.setTo(asset.getId()); |
572 | relation.setTypeGroup(RelationTypeGroup.COMMON); | 669 | relation.setTypeGroup(RelationTypeGroup.COMMON); |
573 | - | ||
574 | - edgeImitator.expectMessageAmount(1); | ||
575 | doPost("/api/relation", relation); | 670 | doPost("/api/relation", relation); |
576 | - edgeImitator.waitForMessages(); | ||
577 | - | 671 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
578 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 672 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
579 | Assert.assertTrue(latestMessage instanceof RelationUpdateMsg); | 673 | Assert.assertTrue(latestMessage instanceof RelationUpdateMsg); |
580 | RelationUpdateMsg relationUpdateMsg = (RelationUpdateMsg) latestMessage; | 674 | RelationUpdateMsg relationUpdateMsg = (RelationUpdateMsg) latestMessage; |
@@ -588,6 +682,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -588,6 +682,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
588 | Assert.assertEquals(relationUpdateMsg.getToEntityType(), relation.getTo().getEntityType().name()); | 682 | Assert.assertEquals(relationUpdateMsg.getToEntityType(), relation.getTo().getEntityType().name()); |
589 | Assert.assertEquals(relationUpdateMsg.getTypeGroup(), relation.getTypeGroup().name()); | 683 | Assert.assertEquals(relationUpdateMsg.getTypeGroup(), relation.getTypeGroup().name()); |
590 | 684 | ||
685 | + // 2 | ||
591 | edgeImitator.expectMessageAmount(1); | 686 | edgeImitator.expectMessageAmount(1); |
592 | doDelete("/api/relation?" + | 687 | doDelete("/api/relation?" + |
593 | "fromId=" + relation.getFrom().getId().toString() + | 688 | "fromId=" + relation.getFrom().getId().toString() + |
@@ -597,8 +692,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -597,8 +692,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
597 | "&toId=" + relation.getTo().getId().toString() + | 692 | "&toId=" + relation.getTo().getId().toString() + |
598 | "&toType=" + relation.getTo().getEntityType().name()) | 693 | "&toType=" + relation.getTo().getEntityType().name()) |
599 | .andExpect(status().isOk()); | 694 | .andExpect(status().isOk()); |
600 | - edgeImitator.waitForMessages(); | ||
601 | - | 695 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
602 | latestMessage = edgeImitator.getLatestMessage(); | 696 | latestMessage = edgeImitator.getLatestMessage(); |
603 | Assert.assertTrue(latestMessage instanceof RelationUpdateMsg); | 697 | Assert.assertTrue(latestMessage instanceof RelationUpdateMsg); |
604 | relationUpdateMsg = (RelationUpdateMsg) latestMessage; | 698 | relationUpdateMsg = (RelationUpdateMsg) latestMessage; |
@@ -617,18 +711,17 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -617,18 +711,17 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
617 | 711 | ||
618 | private void testAlarms() throws Exception { | 712 | private void testAlarms() throws Exception { |
619 | log.info("Testing Alarms"); | 713 | log.info("Testing Alarms"); |
620 | - Device device = findDeviceByName("Edge Device 1"); | ||
621 | 714 | ||
715 | + // 1 | ||
716 | + edgeImitator.expectMessageAmount(1); | ||
717 | + Device device = findDeviceByName("Edge Device 1"); | ||
622 | Alarm alarm = new Alarm(); | 718 | Alarm alarm = new Alarm(); |
623 | alarm.setOriginator(device.getId()); | 719 | alarm.setOriginator(device.getId()); |
624 | alarm.setStatus(AlarmStatus.ACTIVE_UNACK); | 720 | alarm.setStatus(AlarmStatus.ACTIVE_UNACK); |
625 | alarm.setType("alarm"); | 721 | alarm.setType("alarm"); |
626 | alarm.setSeverity(AlarmSeverity.CRITICAL); | 722 | alarm.setSeverity(AlarmSeverity.CRITICAL); |
627 | - | ||
628 | - edgeImitator.expectMessageAmount(1); | ||
629 | Alarm savedAlarm = doPost("/api/alarm", alarm, Alarm.class); | 723 | Alarm savedAlarm = doPost("/api/alarm", alarm, Alarm.class); |
630 | - edgeImitator.waitForMessages(); | ||
631 | - | 724 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
632 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 725 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
633 | Assert.assertTrue(latestMessage instanceof AlarmUpdateMsg); | 726 | Assert.assertTrue(latestMessage instanceof AlarmUpdateMsg); |
634 | AlarmUpdateMsg alarmUpdateMsg = (AlarmUpdateMsg) latestMessage; | 727 | AlarmUpdateMsg alarmUpdateMsg = (AlarmUpdateMsg) latestMessage; |
@@ -639,10 +732,10 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -639,10 +732,10 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
639 | Assert.assertEquals(alarmUpdateMsg.getStatus(), savedAlarm.getStatus().name()); | 732 | Assert.assertEquals(alarmUpdateMsg.getStatus(), savedAlarm.getStatus().name()); |
640 | Assert.assertEquals(alarmUpdateMsg.getSeverity(), savedAlarm.getSeverity().name()); | 733 | Assert.assertEquals(alarmUpdateMsg.getSeverity(), savedAlarm.getSeverity().name()); |
641 | 734 | ||
735 | + // 2 | ||
642 | edgeImitator.expectMessageAmount(1); | 736 | edgeImitator.expectMessageAmount(1); |
643 | doPost("/api/alarm/" + savedAlarm.getId().getId().toString() + "/ack"); | 737 | doPost("/api/alarm/" + savedAlarm.getId().getId().toString() + "/ack"); |
644 | - edgeImitator.waitForMessages(); | ||
645 | - | 738 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
646 | latestMessage = edgeImitator.getLatestMessage(); | 739 | latestMessage = edgeImitator.getLatestMessage(); |
647 | Assert.assertTrue(latestMessage instanceof AlarmUpdateMsg); | 740 | Assert.assertTrue(latestMessage instanceof AlarmUpdateMsg); |
648 | alarmUpdateMsg = (AlarmUpdateMsg) latestMessage; | 741 | alarmUpdateMsg = (AlarmUpdateMsg) latestMessage; |
@@ -652,10 +745,10 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -652,10 +745,10 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
652 | Assert.assertEquals(alarmUpdateMsg.getOriginatorName(), device.getName()); | 745 | Assert.assertEquals(alarmUpdateMsg.getOriginatorName(), device.getName()); |
653 | Assert.assertEquals(alarmUpdateMsg.getStatus(), AlarmStatus.ACTIVE_ACK.name()); | 746 | Assert.assertEquals(alarmUpdateMsg.getStatus(), AlarmStatus.ACTIVE_ACK.name()); |
654 | 747 | ||
748 | + // 3 | ||
655 | edgeImitator.expectMessageAmount(1); | 749 | edgeImitator.expectMessageAmount(1); |
656 | doPost("/api/alarm/" + savedAlarm.getId().getId().toString() + "/clear"); | 750 | doPost("/api/alarm/" + savedAlarm.getId().getId().toString() + "/clear"); |
657 | - edgeImitator.waitForMessages(); | ||
658 | - | 751 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
659 | latestMessage = edgeImitator.getLatestMessage(); | 752 | latestMessage = edgeImitator.getLatestMessage(); |
660 | Assert.assertTrue(latestMessage instanceof AlarmUpdateMsg); | 753 | Assert.assertTrue(latestMessage instanceof AlarmUpdateMsg); |
661 | alarmUpdateMsg = (AlarmUpdateMsg) latestMessage; | 754 | alarmUpdateMsg = (AlarmUpdateMsg) latestMessage; |
@@ -665,26 +758,29 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -665,26 +758,29 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
665 | Assert.assertEquals(alarmUpdateMsg.getOriginatorName(), device.getName()); | 758 | Assert.assertEquals(alarmUpdateMsg.getOriginatorName(), device.getName()); |
666 | Assert.assertEquals(alarmUpdateMsg.getStatus(), AlarmStatus.CLEARED_ACK.name()); | 759 | Assert.assertEquals(alarmUpdateMsg.getStatus(), AlarmStatus.CLEARED_ACK.name()); |
667 | 760 | ||
761 | + // 4 | ||
762 | + edgeImitator.expectMessageAmount(1); | ||
668 | doDelete("/api/alarm/" + savedAlarm.getId().getId().toString()) | 763 | doDelete("/api/alarm/" + savedAlarm.getId().getId().toString()) |
669 | .andExpect(status().isOk()); | 764 | .andExpect(status().isOk()); |
765 | + Assert.assertFalse(edgeImitator.waitForMessages(1)); | ||
766 | + | ||
670 | log.info("Alarms tested successfully"); | 767 | log.info("Alarms tested successfully"); |
671 | } | 768 | } |
672 | 769 | ||
673 | private void testEntityView() throws Exception { | 770 | private void testEntityView() throws Exception { |
674 | log.info("Testing EntityView"); | 771 | log.info("Testing EntityView"); |
675 | - Device device = findDeviceByName("Edge Device 1"); | ||
676 | 772 | ||
773 | + // 1 | ||
774 | + edgeImitator.expectMessageAmount(1); | ||
775 | + Device device = findDeviceByName("Edge Device 1"); | ||
677 | EntityView entityView = new EntityView(); | 776 | EntityView entityView = new EntityView(); |
678 | entityView.setName("Edge EntityView 1"); | 777 | entityView.setName("Edge EntityView 1"); |
679 | entityView.setType("test"); | 778 | entityView.setType("test"); |
680 | entityView.setEntityId(device.getId()); | 779 | entityView.setEntityId(device.getId()); |
681 | EntityView savedEntityView = doPost("/api/entityView", entityView, EntityView.class); | 780 | EntityView savedEntityView = doPost("/api/entityView", entityView, EntityView.class); |
682 | - | ||
683 | - edgeImitator.expectMessageAmount(1); | ||
684 | doPost("/api/edge/" + edge.getId().getId().toString() | 781 | doPost("/api/edge/" + edge.getId().getId().toString() |
685 | + "/entityView/" + savedEntityView.getId().getId().toString(), EntityView.class); | 782 | + "/entityView/" + savedEntityView.getId().getId().toString(), EntityView.class); |
686 | - edgeImitator.waitForMessages(); | ||
687 | - | 783 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
688 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 784 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
689 | Assert.assertTrue(latestMessage instanceof EntityViewUpdateMsg); | 785 | Assert.assertTrue(latestMessage instanceof EntityViewUpdateMsg); |
690 | EntityViewUpdateMsg entityViewUpdateMsg = (EntityViewUpdateMsg) latestMessage; | 786 | EntityViewUpdateMsg entityViewUpdateMsg = (EntityViewUpdateMsg) latestMessage; |
@@ -697,11 +793,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -697,11 +793,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
697 | Assert.assertEquals(entityViewUpdateMsg.getEntityIdLSB(), device.getUuidId().getLeastSignificantBits()); | 793 | Assert.assertEquals(entityViewUpdateMsg.getEntityIdLSB(), device.getUuidId().getLeastSignificantBits()); |
698 | Assert.assertEquals(entityViewUpdateMsg.getEntityType().name(), device.getId().getEntityType().name()); | 794 | Assert.assertEquals(entityViewUpdateMsg.getEntityType().name(), device.getId().getEntityType().name()); |
699 | 795 | ||
796 | + // 2 | ||
700 | edgeImitator.expectMessageAmount(1); | 797 | edgeImitator.expectMessageAmount(1); |
701 | doDelete("/api/edge/" + edge.getId().getId().toString() | 798 | doDelete("/api/edge/" + edge.getId().getId().toString() |
702 | + "/entityView/" + savedEntityView.getId().getId().toString(), EntityView.class); | 799 | + "/entityView/" + savedEntityView.getId().getId().toString(), EntityView.class); |
703 | - edgeImitator.waitForMessages(); | ||
704 | - | 800 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
705 | latestMessage = edgeImitator.getLatestMessage(); | 801 | latestMessage = edgeImitator.getLatestMessage(); |
706 | Assert.assertTrue(latestMessage instanceof EntityViewUpdateMsg); | 802 | Assert.assertTrue(latestMessage instanceof EntityViewUpdateMsg); |
707 | entityViewUpdateMsg = (EntityViewUpdateMsg) latestMessage; | 803 | entityViewUpdateMsg = (EntityViewUpdateMsg) latestMessage; |
@@ -709,17 +805,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -709,17 +805,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
709 | Assert.assertEquals(entityViewUpdateMsg.getIdMSB(), savedEntityView.getUuidId().getMostSignificantBits()); | 805 | Assert.assertEquals(entityViewUpdateMsg.getIdMSB(), savedEntityView.getUuidId().getMostSignificantBits()); |
710 | Assert.assertEquals(entityViewUpdateMsg.getIdLSB(), savedEntityView.getUuidId().getLeastSignificantBits()); | 806 | Assert.assertEquals(entityViewUpdateMsg.getIdLSB(), savedEntityView.getUuidId().getLeastSignificantBits()); |
711 | 807 | ||
808 | + // 3 | ||
712 | edgeImitator.expectMessageAmount(1); | 809 | edgeImitator.expectMessageAmount(1); |
713 | doDelete("/api/entityView/" + savedEntityView.getId().getId().toString()) | 810 | doDelete("/api/entityView/" + savedEntityView.getId().getId().toString()) |
714 | .andExpect(status().isOk()); | 811 | .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()); | 812 | + Assert.assertFalse(edgeImitator.waitForMessages(1)); |
723 | 813 | ||
724 | log.info("EntityView tested successfully"); | 814 | log.info("EntityView tested successfully"); |
725 | } | 815 | } |
@@ -727,15 +817,14 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -727,15 +817,14 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
727 | private void testCustomer() throws Exception { | 817 | private void testCustomer() throws Exception { |
728 | log.info("Testing Customer"); | 818 | log.info("Testing Customer"); |
729 | 819 | ||
820 | + // 1 | ||
821 | + edgeImitator.expectMessageAmount(1); | ||
730 | Customer customer = new Customer(); | 822 | Customer customer = new Customer(); |
731 | customer.setTitle("Edge Customer 1"); | 823 | customer.setTitle("Edge Customer 1"); |
732 | Customer savedCustomer = doPost("/api/customer", customer, Customer.class); | 824 | Customer savedCustomer = doPost("/api/customer", customer, Customer.class); |
733 | - | ||
734 | - edgeImitator.expectMessageAmount(1); | ||
735 | doPost("/api/customer/" + savedCustomer.getId().getId().toString() | 825 | doPost("/api/customer/" + savedCustomer.getId().getId().toString() |
736 | + "/edge/" + edge.getId().getId().toString(), Edge.class); | 826 | + "/edge/" + edge.getId().getId().toString(), Edge.class); |
737 | - edgeImitator.waitForMessages(); | ||
738 | - | 827 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
739 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 828 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
740 | Assert.assertTrue(latestMessage instanceof CustomerUpdateMsg); | 829 | Assert.assertTrue(latestMessage instanceof CustomerUpdateMsg); |
741 | CustomerUpdateMsg customerUpdateMsg = (CustomerUpdateMsg) latestMessage; | 830 | CustomerUpdateMsg customerUpdateMsg = (CustomerUpdateMsg) latestMessage; |
@@ -743,13 +832,12 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -743,13 +832,12 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
743 | Assert.assertEquals(customerUpdateMsg.getIdMSB(), savedCustomer.getUuidId().getMostSignificantBits()); | 832 | Assert.assertEquals(customerUpdateMsg.getIdMSB(), savedCustomer.getUuidId().getMostSignificantBits()); |
744 | Assert.assertEquals(customerUpdateMsg.getIdLSB(), savedCustomer.getUuidId().getLeastSignificantBits()); | 833 | Assert.assertEquals(customerUpdateMsg.getIdLSB(), savedCustomer.getUuidId().getLeastSignificantBits()); |
745 | Assert.assertEquals(customerUpdateMsg.getTitle(), savedCustomer.getTitle()); | 834 | Assert.assertEquals(customerUpdateMsg.getTitle(), savedCustomer.getTitle()); |
746 | - | ||
747 | testAutoGeneratedCodeByProtobuf(customerUpdateMsg); | 835 | testAutoGeneratedCodeByProtobuf(customerUpdateMsg); |
748 | 836 | ||
837 | + // 2 | ||
749 | edgeImitator.expectMessageAmount(1); | 838 | edgeImitator.expectMessageAmount(1); |
750 | doDelete("/api/customer/edge/" + edge.getId().getId().toString(), Edge.class); | 839 | doDelete("/api/customer/edge/" + edge.getId().getId().toString(), Edge.class); |
751 | - edgeImitator.waitForMessages(); | ||
752 | - | 840 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
753 | latestMessage = edgeImitator.getLatestMessage(); | 841 | latestMessage = edgeImitator.getLatestMessage(); |
754 | Assert.assertTrue(latestMessage instanceof CustomerUpdateMsg); | 842 | Assert.assertTrue(latestMessage instanceof CustomerUpdateMsg); |
755 | customerUpdateMsg = (CustomerUpdateMsg) latestMessage; | 843 | customerUpdateMsg = (CustomerUpdateMsg) latestMessage; |
@@ -757,17 +845,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -757,17 +845,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
757 | Assert.assertEquals(customerUpdateMsg.getIdMSB(), savedCustomer.getUuidId().getMostSignificantBits()); | 845 | Assert.assertEquals(customerUpdateMsg.getIdMSB(), savedCustomer.getUuidId().getMostSignificantBits()); |
758 | Assert.assertEquals(customerUpdateMsg.getIdLSB(), savedCustomer.getUuidId().getLeastSignificantBits()); | 846 | Assert.assertEquals(customerUpdateMsg.getIdLSB(), savedCustomer.getUuidId().getLeastSignificantBits()); |
759 | 847 | ||
848 | + // 3 | ||
760 | edgeImitator.expectMessageAmount(1); | 849 | edgeImitator.expectMessageAmount(1); |
761 | doDelete("/api/customer/" + savedCustomer.getId().getId().toString()) | 850 | doDelete("/api/customer/" + savedCustomer.getId().getId().toString()) |
762 | .andExpect(status().isOk()); | 851 | .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()); | 852 | + Assert.assertFalse(edgeImitator.waitForMessages(1)); |
771 | 853 | ||
772 | log.info("Customer tested successfully"); | 854 | log.info("Customer tested successfully"); |
773 | } | 855 | } |
@@ -775,13 +857,12 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -775,13 +857,12 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
775 | private void testWidgetsBundleAndWidgetType() throws Exception { | 857 | private void testWidgetsBundleAndWidgetType() throws Exception { |
776 | log.info("Testing WidgetsBundle and WidgetType"); | 858 | log.info("Testing WidgetsBundle and WidgetType"); |
777 | 859 | ||
860 | + // 1 | ||
861 | + edgeImitator.expectMessageAmount(1); | ||
778 | WidgetsBundle widgetsBundle = new WidgetsBundle(); | 862 | WidgetsBundle widgetsBundle = new WidgetsBundle(); |
779 | widgetsBundle.setTitle("Test Widget Bundle"); | 863 | widgetsBundle.setTitle("Test Widget Bundle"); |
780 | - | ||
781 | - edgeImitator.expectMessageAmount(1); | ||
782 | WidgetsBundle savedWidgetsBundle = doPost("/api/widgetsBundle", widgetsBundle, WidgetsBundle.class); | 864 | WidgetsBundle savedWidgetsBundle = doPost("/api/widgetsBundle", widgetsBundle, WidgetsBundle.class); |
783 | - edgeImitator.waitForMessages(); | ||
784 | - | 865 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
785 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 866 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
786 | Assert.assertTrue(latestMessage instanceof WidgetsBundleUpdateMsg); | 867 | Assert.assertTrue(latestMessage instanceof WidgetsBundleUpdateMsg); |
787 | WidgetsBundleUpdateMsg widgetsBundleUpdateMsg = (WidgetsBundleUpdateMsg) latestMessage; | 868 | WidgetsBundleUpdateMsg widgetsBundleUpdateMsg = (WidgetsBundleUpdateMsg) latestMessage; |
@@ -790,20 +871,18 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -790,20 +871,18 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
790 | Assert.assertEquals(widgetsBundleUpdateMsg.getIdLSB(), savedWidgetsBundle.getUuidId().getLeastSignificantBits()); | 871 | Assert.assertEquals(widgetsBundleUpdateMsg.getIdLSB(), savedWidgetsBundle.getUuidId().getLeastSignificantBits()); |
791 | Assert.assertEquals(widgetsBundleUpdateMsg.getAlias(), savedWidgetsBundle.getAlias()); | 872 | Assert.assertEquals(widgetsBundleUpdateMsg.getAlias(), savedWidgetsBundle.getAlias()); |
792 | Assert.assertEquals(widgetsBundleUpdateMsg.getTitle(), savedWidgetsBundle.getTitle()); | 873 | Assert.assertEquals(widgetsBundleUpdateMsg.getTitle(), savedWidgetsBundle.getTitle()); |
793 | - | ||
794 | testAutoGeneratedCodeByProtobuf(widgetsBundleUpdateMsg); | 874 | testAutoGeneratedCodeByProtobuf(widgetsBundleUpdateMsg); |
795 | 875 | ||
876 | + // 2 | ||
877 | + edgeImitator.expectMessageAmount(1); | ||
796 | WidgetType widgetType = new WidgetType(); | 878 | WidgetType widgetType = new WidgetType(); |
797 | widgetType.setName("Test Widget Type"); | 879 | widgetType.setName("Test Widget Type"); |
798 | widgetType.setBundleAlias(savedWidgetsBundle.getAlias()); | 880 | widgetType.setBundleAlias(savedWidgetsBundle.getAlias()); |
799 | ObjectNode descriptor = mapper.createObjectNode(); | 881 | ObjectNode descriptor = mapper.createObjectNode(); |
800 | descriptor.put("key", "value"); | 882 | descriptor.put("key", "value"); |
801 | widgetType.setDescriptor(descriptor); | 883 | widgetType.setDescriptor(descriptor); |
802 | - | ||
803 | - edgeImitator.expectMessageAmount(1); | ||
804 | WidgetType savedWidgetType = doPost("/api/widgetType", widgetType, WidgetType.class); | 884 | WidgetType savedWidgetType = doPost("/api/widgetType", widgetType, WidgetType.class); |
805 | - edgeImitator.waitForMessages(); | ||
806 | - | 885 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
807 | latestMessage = edgeImitator.getLatestMessage(); | 886 | latestMessage = edgeImitator.getLatestMessage(); |
808 | Assert.assertTrue(latestMessage instanceof WidgetTypeUpdateMsg); | 887 | Assert.assertTrue(latestMessage instanceof WidgetTypeUpdateMsg); |
809 | WidgetTypeUpdateMsg widgetTypeUpdateMsg = (WidgetTypeUpdateMsg) latestMessage; | 888 | WidgetTypeUpdateMsg widgetTypeUpdateMsg = (WidgetTypeUpdateMsg) latestMessage; |
@@ -814,11 +893,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -814,11 +893,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
814 | Assert.assertEquals(widgetTypeUpdateMsg.getName(), savedWidgetType.getName()); | 893 | Assert.assertEquals(widgetTypeUpdateMsg.getName(), savedWidgetType.getName()); |
815 | Assert.assertEquals(JacksonUtil.toJsonNode(widgetTypeUpdateMsg.getDescriptorJson()), savedWidgetType.getDescriptor()); | 894 | Assert.assertEquals(JacksonUtil.toJsonNode(widgetTypeUpdateMsg.getDescriptorJson()), savedWidgetType.getDescriptor()); |
816 | 895 | ||
896 | + // 3 | ||
817 | edgeImitator.expectMessageAmount(1); | 897 | edgeImitator.expectMessageAmount(1); |
818 | doDelete("/api/widgetType/" + savedWidgetType.getId().getId().toString()) | 898 | doDelete("/api/widgetType/" + savedWidgetType.getId().getId().toString()) |
819 | .andExpect(status().isOk()); | 899 | .andExpect(status().isOk()); |
820 | - edgeImitator.waitForMessages(); | ||
821 | - | 900 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
822 | latestMessage = edgeImitator.getLatestMessage(); | 901 | latestMessage = edgeImitator.getLatestMessage(); |
823 | Assert.assertTrue(latestMessage instanceof WidgetTypeUpdateMsg); | 902 | Assert.assertTrue(latestMessage instanceof WidgetTypeUpdateMsg); |
824 | widgetTypeUpdateMsg = (WidgetTypeUpdateMsg) latestMessage; | 903 | widgetTypeUpdateMsg = (WidgetTypeUpdateMsg) latestMessage; |
@@ -826,11 +905,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -826,11 +905,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
826 | Assert.assertEquals(widgetTypeUpdateMsg.getIdMSB(), savedWidgetType.getUuidId().getMostSignificantBits()); | 905 | Assert.assertEquals(widgetTypeUpdateMsg.getIdMSB(), savedWidgetType.getUuidId().getMostSignificantBits()); |
827 | Assert.assertEquals(widgetTypeUpdateMsg.getIdLSB(), savedWidgetType.getUuidId().getLeastSignificantBits()); | 906 | Assert.assertEquals(widgetTypeUpdateMsg.getIdLSB(), savedWidgetType.getUuidId().getLeastSignificantBits()); |
828 | 907 | ||
908 | + // 4 | ||
829 | edgeImitator.expectMessageAmount(1); | 909 | edgeImitator.expectMessageAmount(1); |
830 | doDelete("/api/widgetsBundle/" + savedWidgetsBundle.getId().getId().toString()) | 910 | doDelete("/api/widgetsBundle/" + savedWidgetsBundle.getId().getId().toString()) |
831 | .andExpect(status().isOk()); | 911 | .andExpect(status().isOk()); |
832 | - edgeImitator.waitForMessages(); | ||
833 | - | 912 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
834 | latestMessage = edgeImitator.getLatestMessage(); | 913 | latestMessage = edgeImitator.getLatestMessage(); |
835 | Assert.assertTrue(latestMessage instanceof WidgetsBundleUpdateMsg); | 914 | Assert.assertTrue(latestMessage instanceof WidgetsBundleUpdateMsg); |
836 | widgetsBundleUpdateMsg = (WidgetsBundleUpdateMsg) latestMessage; | 915 | widgetsBundleUpdateMsg = (WidgetsBundleUpdateMsg) latestMessage; |
@@ -843,15 +922,15 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -843,15 +922,15 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
843 | 922 | ||
844 | private void testTimeseries() throws Exception { | 923 | private void testTimeseries() throws Exception { |
845 | log.info("Testing timeseries"); | 924 | log.info("Testing timeseries"); |
846 | - Device device = findDeviceByName("Edge Device 1"); | ||
847 | 925 | ||
926 | + edgeImitator.expectMessageAmount(1); | ||
927 | + Device device = findDeviceByName("Edge Device 1"); | ||
848 | String timeseriesData = "{\"data\":{\"temperature\":25},\"ts\":" + System.currentTimeMillis() + "}"; | 928 | String timeseriesData = "{\"data\":{\"temperature\":25},\"ts\":" + System.currentTimeMillis() + "}"; |
849 | JsonNode timeseriesEntityData = mapper.readTree(timeseriesData); | 929 | 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); | 930 | + EdgeEvent edgeEvent = constructEdgeEvent(tenantId, edge.getId(), EdgeEventActionType.TIMESERIES_UPDATED, device.getId().getId(), EdgeEventType.DEVICE, timeseriesEntityData); |
931 | + edgeEventService.saveAsync(edgeEvent); | ||
853 | clusterService.onEdgeEventUpdate(tenantId, edge.getId()); | 932 | clusterService.onEdgeEventUpdate(tenantId, edge.getId()); |
854 | - edgeImitator.waitForMessages(); | 933 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
855 | 934 | ||
856 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 935 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
857 | Assert.assertTrue(latestMessage instanceof EntityDataProto); | 936 | Assert.assertTrue(latestMessage instanceof EntityDataProto); |
@@ -890,7 +969,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -890,7 +969,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
890 | edgeImitator.expectMessageAmount(1); | 969 | edgeImitator.expectMessageAmount(1); |
891 | edgeEventService.saveAsync(edgeEvent); | 970 | edgeEventService.saveAsync(edgeEvent); |
892 | clusterService.onEdgeEventUpdate(tenantId, edge.getId()); | 971 | clusterService.onEdgeEventUpdate(tenantId, edge.getId()); |
893 | - edgeImitator.waitForMessages(); | 972 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
894 | 973 | ||
895 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 974 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
896 | Assert.assertTrue(latestMessage instanceof EntityDataProto); | 975 | Assert.assertTrue(latestMessage instanceof EntityDataProto); |
@@ -916,7 +995,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -916,7 +995,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
916 | edgeImitator.expectMessageAmount(1); | 995 | edgeImitator.expectMessageAmount(1); |
917 | edgeEventService.saveAsync(edgeEvent); | 996 | edgeEventService.saveAsync(edgeEvent); |
918 | clusterService.onEdgeEventUpdate(tenantId, edge.getId()); | 997 | clusterService.onEdgeEventUpdate(tenantId, edge.getId()); |
919 | - edgeImitator.waitForMessages(); | 998 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
920 | 999 | ||
921 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 1000 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
922 | Assert.assertTrue(latestMessage instanceof EntityDataProto); | 1001 | Assert.assertTrue(latestMessage instanceof EntityDataProto); |
@@ -941,7 +1020,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -941,7 +1020,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
941 | edgeImitator.expectMessageAmount(1); | 1020 | edgeImitator.expectMessageAmount(1); |
942 | edgeEventService.saveAsync(edgeEvent1); | 1021 | edgeEventService.saveAsync(edgeEvent1); |
943 | clusterService.onEdgeEventUpdate(tenantId, edge.getId()); | 1022 | clusterService.onEdgeEventUpdate(tenantId, edge.getId()); |
944 | - edgeImitator.waitForMessages(); | 1023 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
945 | 1024 | ||
946 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 1025 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
947 | Assert.assertTrue(latestMessage instanceof EntityDataProto); | 1026 | Assert.assertTrue(latestMessage instanceof EntityDataProto); |
@@ -996,8 +1075,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -996,8 +1075,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
996 | 1075 | ||
997 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); | 1076 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); |
998 | 1077 | ||
999 | - edgeImitator.waitForResponses(); | ||
1000 | - edgeImitator.waitForMessages(); | 1078 | + Assert.assertTrue(edgeImitator.waitForResponses()); |
1079 | + Assert.assertTrue(edgeImitator.waitForMessages()); | ||
1001 | 1080 | ||
1002 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 1081 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
1003 | Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg); | 1082 | Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg); |
@@ -1013,7 +1092,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1013,7 +1092,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1013 | 1092 | ||
1014 | private void sendDeviceWithNameThatAlreadyExistsOnCloud() throws Exception { | 1093 | private void sendDeviceWithNameThatAlreadyExistsOnCloud() throws Exception { |
1015 | String deviceOnCloudName = RandomStringUtils.randomAlphanumeric(15); | 1094 | String deviceOnCloudName = RandomStringUtils.randomAlphanumeric(15); |
1016 | - Device deviceOnCloud = saveDevice(deviceOnCloudName); | 1095 | + Device deviceOnCloud = saveDevice(deviceOnCloudName, "Default"); |
1017 | 1096 | ||
1018 | UUID uuid = Uuids.timeBased(); | 1097 | UUID uuid = Uuids.timeBased(); |
1019 | 1098 | ||
@@ -1033,8 +1112,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1033,8 +1112,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1033 | 1112 | ||
1034 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); | 1113 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); |
1035 | 1114 | ||
1036 | - edgeImitator.waitForResponses(); | ||
1037 | - edgeImitator.waitForMessages(); | 1115 | + Assert.assertTrue(edgeImitator.waitForResponses()); |
1116 | + Assert.assertTrue(edgeImitator.waitForMessages()); | ||
1038 | 1117 | ||
1039 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 1118 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
1040 | Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg); | 1119 | Assert.assertTrue(latestMessage instanceof DeviceUpdateMsg); |
@@ -1063,7 +1142,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1063,7 +1142,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1063 | 1142 | ||
1064 | edgeImitator.expectMessageAmount(1); | 1143 | edgeImitator.expectMessageAmount(1); |
1065 | doPost("/api/relation", relation); | 1144 | doPost("/api/relation", relation); |
1066 | - edgeImitator.waitForMessages(); | 1145 | + Assert.assertTrue(edgeImitator.waitForMessages()); |
1067 | 1146 | ||
1068 | UplinkMsg.Builder uplinkMsgBuilder = UplinkMsg.newBuilder(); | 1147 | UplinkMsg.Builder uplinkMsgBuilder = UplinkMsg.newBuilder(); |
1069 | RelationRequestMsg.Builder relationRequestMsgBuilder = RelationRequestMsg.newBuilder(); | 1148 | RelationRequestMsg.Builder relationRequestMsgBuilder = RelationRequestMsg.newBuilder(); |
@@ -1078,8 +1157,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1078,8 +1157,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1078 | edgeImitator.expectResponsesAmount(1); | 1157 | edgeImitator.expectResponsesAmount(1); |
1079 | edgeImitator.expectMessageAmount(1); | 1158 | edgeImitator.expectMessageAmount(1); |
1080 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); | 1159 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); |
1081 | - edgeImitator.waitForResponses(); | ||
1082 | - edgeImitator.waitForMessages(); | 1160 | + Assert.assertTrue(edgeImitator.waitForResponses()); |
1161 | + Assert.assertTrue(edgeImitator.waitForMessages()); | ||
1083 | 1162 | ||
1084 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 1163 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
1085 | Assert.assertTrue(latestMessage instanceof RelationUpdateMsg); | 1164 | Assert.assertTrue(latestMessage instanceof RelationUpdateMsg); |
@@ -1115,7 +1194,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1115,7 +1194,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1115 | 1194 | ||
1116 | edgeImitator.expectResponsesAmount(1); | 1195 | edgeImitator.expectResponsesAmount(1); |
1117 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); | 1196 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); |
1118 | - edgeImitator.waitForResponses(); | 1197 | + Assert.assertTrue(edgeImitator.waitForResponses()); |
1119 | 1198 | ||
1120 | 1199 | ||
1121 | List<AlarmInfo> alarms = doGetTypedWithPageLink("/api/alarm/{entityType}/{entityId}?", | 1200 | List<AlarmInfo> alarms = doGetTypedWithPageLink("/api/alarm/{entityType}/{entityId}?", |
@@ -1158,7 +1237,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1158,7 +1237,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1158 | 1237 | ||
1159 | edgeImitator.expectResponsesAmount(1); | 1238 | edgeImitator.expectResponsesAmount(1); |
1160 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); | 1239 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); |
1161 | - edgeImitator.waitForResponses(); | 1240 | + Assert.assertTrue(edgeImitator.waitForResponses()); |
1162 | 1241 | ||
1163 | EntityRelation relation = doGet("/api/relation?" + | 1242 | EntityRelation relation = doGet("/api/relation?" + |
1164 | "&fromId=" + device2.getId().getId().toString() + | 1243 | "&fromId=" + device2.getId().getId().toString() + |
@@ -1212,7 +1291,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1212,7 +1291,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1212 | testAutoGeneratedCodeByProtobuf(uplinkMsgBuilder2); | 1291 | testAutoGeneratedCodeByProtobuf(uplinkMsgBuilder2); |
1213 | 1292 | ||
1214 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder2.build()); | 1293 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder2.build()); |
1215 | - edgeImitator.waitForResponses(); | 1294 | + Assert.assertTrue(edgeImitator.waitForResponses()); |
1216 | 1295 | ||
1217 | // Wait before device attributes saved to database before requesting them from controller | 1296 | // Wait before device attributes saved to database before requesting them from controller |
1218 | Thread.sleep(1000); | 1297 | Thread.sleep(1000); |
@@ -1243,8 +1322,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1243,8 +1322,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1243 | edgeImitator.expectResponsesAmount(1); | 1322 | edgeImitator.expectResponsesAmount(1); |
1244 | edgeImitator.expectMessageAmount(1); | 1323 | edgeImitator.expectMessageAmount(1); |
1245 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); | 1324 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); |
1246 | - edgeImitator.waitForResponses(); | ||
1247 | - edgeImitator.waitForMessages(); | 1325 | + Assert.assertTrue(edgeImitator.waitForResponses()); |
1326 | + Assert.assertTrue(edgeImitator.waitForMessages());; | ||
1248 | 1327 | ||
1249 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 1328 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
1250 | Assert.assertTrue(latestMessage instanceof RuleChainMetadataUpdateMsg); | 1329 | Assert.assertTrue(latestMessage instanceof RuleChainMetadataUpdateMsg); |
@@ -1270,8 +1349,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1270,8 +1349,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1270 | edgeImitator.expectResponsesAmount(1); | 1349 | edgeImitator.expectResponsesAmount(1); |
1271 | edgeImitator.expectMessageAmount(1); | 1350 | edgeImitator.expectMessageAmount(1); |
1272 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); | 1351 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); |
1273 | - edgeImitator.waitForResponses(); | ||
1274 | - edgeImitator.waitForMessages(); | 1352 | + Assert.assertTrue(edgeImitator.waitForResponses()); |
1353 | + Assert.assertTrue(edgeImitator.waitForMessages()); | ||
1275 | 1354 | ||
1276 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 1355 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
1277 | Assert.assertTrue(latestMessage instanceof UserCredentialsUpdateMsg); | 1356 | Assert.assertTrue(latestMessage instanceof UserCredentialsUpdateMsg); |
@@ -1299,8 +1378,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1299,8 +1378,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1299 | edgeImitator.expectResponsesAmount(1); | 1378 | edgeImitator.expectResponsesAmount(1); |
1300 | edgeImitator.expectMessageAmount(1); | 1379 | edgeImitator.expectMessageAmount(1); |
1301 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); | 1380 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); |
1302 | - edgeImitator.waitForResponses(); | ||
1303 | - edgeImitator.waitForMessages(); | 1381 | + Assert.assertTrue(edgeImitator.waitForResponses()); |
1382 | + Assert.assertTrue(edgeImitator.waitForMessages()); | ||
1304 | 1383 | ||
1305 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 1384 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
1306 | Assert.assertTrue(latestMessage instanceof DeviceCredentialsUpdateMsg); | 1385 | Assert.assertTrue(latestMessage instanceof DeviceCredentialsUpdateMsg); |
@@ -1327,7 +1406,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1327,7 +1406,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1327 | 1406 | ||
1328 | edgeImitator.expectResponsesAmount(1); | 1407 | edgeImitator.expectResponsesAmount(1); |
1329 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); | 1408 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); |
1330 | - edgeImitator.waitForResponses(); | 1409 | + Assert.assertTrue(edgeImitator.waitForResponses()); |
1331 | } | 1410 | } |
1332 | 1411 | ||
1333 | private void sendDeviceRpcResponse() throws Exception { | 1412 | private void sendDeviceRpcResponse() throws Exception { |
@@ -1352,7 +1431,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1352,7 +1431,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1352 | 1431 | ||
1353 | edgeImitator.expectResponsesAmount(1); | 1432 | edgeImitator.expectResponsesAmount(1); |
1354 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); | 1433 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); |
1355 | - edgeImitator.waitForResponses(); | 1434 | + Assert.assertTrue(edgeImitator.waitForResponses()); |
1356 | } | 1435 | } |
1357 | 1436 | ||
1358 | private void sendAttributesRequest() throws Exception { | 1437 | private void sendAttributesRequest() throws Exception { |
@@ -1383,8 +1462,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1383,8 +1462,8 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1383 | edgeImitator.expectResponsesAmount(1); | 1462 | edgeImitator.expectResponsesAmount(1); |
1384 | edgeImitator.expectMessageAmount(1); | 1463 | edgeImitator.expectMessageAmount(1); |
1385 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); | 1464 | edgeImitator.sendUplinkMsg(uplinkMsgBuilder.build()); |
1386 | - edgeImitator.waitForResponses(); | ||
1387 | - edgeImitator.waitForMessages(); | 1465 | + Assert.assertTrue(edgeImitator.waitForResponses()); |
1466 | + Assert.assertTrue(edgeImitator.waitForMessages()); | ||
1388 | 1467 | ||
1389 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); | 1468 | AbstractMessage latestMessage = edgeImitator.getLatestMessage(); |
1390 | Assert.assertTrue(latestMessage instanceof EntityDataProto); | 1469 | Assert.assertTrue(latestMessage instanceof EntityDataProto); |
@@ -1416,7 +1495,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1416,7 +1495,7 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1416 | 1495 | ||
1417 | edgeImitator.expectResponsesAmount(1); | 1496 | edgeImitator.expectResponsesAmount(1); |
1418 | edgeImitator.sendUplinkMsg(upLinkMsgBuilder.build()); | 1497 | edgeImitator.sendUplinkMsg(upLinkMsgBuilder.build()); |
1419 | - edgeImitator.waitForResponses(); | 1498 | + Assert.assertTrue(edgeImitator.waitForResponses()); |
1420 | device = doGet("/api/device/" + device.getId().getId().toString(), Device.class); | 1499 | device = doGet("/api/device/" + device.getId().getId().toString(), Device.class); |
1421 | Assert.assertNotNull(device); | 1500 | Assert.assertNotNull(device); |
1422 | List<Device> edgeDevices = doGetTypedWithPageLink("/api/edge/" + edge.getId().getId().toString() + "/devices?", | 1501 | List<Device> edgeDevices = doGetTypedWithPageLink("/api/edge/" + edge.getId().getId().toString() + "/devices?", |
@@ -1428,7 +1507,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1428,7 +1507,11 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1428 | private void installation() throws Exception { | 1507 | private void installation() throws Exception { |
1429 | edge = doPost("/api/edge", constructEdge("Test Edge", "test"), Edge.class); | 1508 | edge = doPost("/api/edge", constructEdge("Test Edge", "test"), Edge.class); |
1430 | 1509 | ||
1431 | - Device savedDevice = saveDevice("Edge Device 1"); | 1510 | + DeviceProfile deviceProfile = this.createDeviceProfile(CUSTOM_DEVICE_PROFILE_NAME, null); |
1511 | + extendDeviceProfileData(deviceProfile); | ||
1512 | + doPost("/api/deviceProfile", deviceProfile, DeviceProfile.class); | ||
1513 | + | ||
1514 | + Device savedDevice = saveDevice("Edge Device 1", CUSTOM_DEVICE_PROFILE_NAME); | ||
1432 | doPost("/api/edge/" + edge.getId().getId().toString() | 1515 | doPost("/api/edge/" + edge.getId().getId().toString() |
1433 | + "/device/" + savedDevice.getId().getId().toString(), Device.class); | 1516 | + "/device/" + savedDevice.getId().getId().toString(), Device.class); |
1434 | 1517 | ||
@@ -1437,6 +1520,35 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | @@ -1437,6 +1520,35 @@ abstract public class BaseEdgeTest extends AbstractControllerTest { | ||
1437 | + "/asset/" + savedAsset.getId().getId().toString(), Asset.class); | 1520 | + "/asset/" + savedAsset.getId().getId().toString(), Asset.class); |
1438 | } | 1521 | } |
1439 | 1522 | ||
1523 | + private void extendDeviceProfileData(DeviceProfile deviceProfile) { | ||
1524 | + DeviceProfileData profileData = deviceProfile.getProfileData(); | ||
1525 | + List<DeviceProfileAlarm> alarms = new ArrayList<>(); | ||
1526 | + DeviceProfileAlarm deviceProfileAlarm = new DeviceProfileAlarm(); | ||
1527 | + deviceProfileAlarm.setAlarmType("High Temperature"); | ||
1528 | + AlarmRule alarmRule = new AlarmRule(); | ||
1529 | + alarmRule.setAlarmDetails("Alarm Details"); | ||
1530 | + AlarmCondition alarmCondition = new AlarmCondition(); | ||
1531 | + alarmCondition.setSpec(new SimpleAlarmConditionSpec()); | ||
1532 | + List<AlarmConditionFilter> condition = new ArrayList<>(); | ||
1533 | + AlarmConditionFilter alarmConditionFilter = new AlarmConditionFilter(); | ||
1534 | + alarmConditionFilter.setKey(new AlarmConditionFilterKey(AlarmConditionKeyType.ATTRIBUTE, "temperature")); | ||
1535 | + NumericFilterPredicate predicate = new NumericFilterPredicate(); | ||
1536 | + predicate.setOperation(NumericFilterPredicate.NumericOperation.GREATER); | ||
1537 | + predicate.setValue(new FilterPredicateValue<>(55.0)); | ||
1538 | + alarmConditionFilter.setPredicate(predicate); | ||
1539 | + alarmConditionFilter.setValueType(EntityKeyValueType.NUMERIC); | ||
1540 | + condition.add(alarmConditionFilter); | ||
1541 | + alarmCondition.setCondition(condition); | ||
1542 | + alarmRule.setCondition(alarmCondition); | ||
1543 | + deviceProfileAlarm.setClearRule(alarmRule); | ||
1544 | + TreeMap<AlarmSeverity, AlarmRule> createRules = new TreeMap<>(); | ||
1545 | + createRules.put(AlarmSeverity.CRITICAL, alarmRule); | ||
1546 | + deviceProfileAlarm.setCreateRules(createRules); | ||
1547 | + alarms.add(deviceProfileAlarm); | ||
1548 | + profileData.setAlarms(alarms); | ||
1549 | + profileData.setProvisionConfiguration(new AllowCreateNewDevicesDeviceProfileProvisionConfiguration("123")); | ||
1550 | + } | ||
1551 | + | ||
1440 | private EdgeEvent constructEdgeEvent(TenantId tenantId, EdgeId edgeId, EdgeEventActionType edgeEventAction, UUID entityId, EdgeEventType edgeEventType, JsonNode entityBody) { | 1552 | private EdgeEvent constructEdgeEvent(TenantId tenantId, EdgeId edgeId, EdgeEventActionType edgeEventAction, UUID entityId, EdgeEventType edgeEventType, JsonNode entityBody) { |
1441 | EdgeEvent edgeEvent = new EdgeEvent(); | 1553 | EdgeEvent edgeEvent = new EdgeEvent(); |
1442 | edgeEvent.setEdgeId(edgeId); | 1554 | edgeEvent.setEdgeId(edgeId); |
@@ -32,6 +32,7 @@ import org.thingsboard.server.gen.edge.CustomerUpdateMsg; | @@ -32,6 +32,7 @@ import org.thingsboard.server.gen.edge.CustomerUpdateMsg; | ||
32 | import org.thingsboard.server.gen.edge.DashboardUpdateMsg; | 32 | import org.thingsboard.server.gen.edge.DashboardUpdateMsg; |
33 | import org.thingsboard.server.gen.edge.DeviceCredentialsRequestMsg; | 33 | import org.thingsboard.server.gen.edge.DeviceCredentialsRequestMsg; |
34 | import org.thingsboard.server.gen.edge.DeviceCredentialsUpdateMsg; | 34 | import org.thingsboard.server.gen.edge.DeviceCredentialsUpdateMsg; |
35 | +import org.thingsboard.server.gen.edge.DeviceProfileUpdateMsg; | ||
35 | import org.thingsboard.server.gen.edge.DeviceRpcCallMsg; | 36 | import org.thingsboard.server.gen.edge.DeviceRpcCallMsg; |
36 | import org.thingsboard.server.gen.edge.DeviceUpdateMsg; | 37 | import org.thingsboard.server.gen.edge.DeviceUpdateMsg; |
37 | import org.thingsboard.server.gen.edge.DownlinkMsg; | 38 | import org.thingsboard.server.gen.edge.DownlinkMsg; |
@@ -58,6 +59,7 @@ import java.util.concurrent.CountDownLatch; | @@ -58,6 +59,7 @@ import java.util.concurrent.CountDownLatch; | ||
58 | import java.util.concurrent.TimeUnit; | 59 | import java.util.concurrent.TimeUnit; |
59 | import java.util.concurrent.locks.Lock; | 60 | import java.util.concurrent.locks.Lock; |
60 | import java.util.concurrent.locks.ReentrantLock; | 61 | import java.util.concurrent.locks.ReentrantLock; |
62 | +import java.util.stream.Collectors; | ||
61 | 63 | ||
62 | @Slf4j | 64 | @Slf4j |
63 | public class EdgeImitator { | 65 | public class EdgeImitator { |
@@ -154,88 +156,93 @@ public class EdgeImitator { | @@ -154,88 +156,93 @@ public class EdgeImitator { | ||
154 | 156 | ||
155 | private ListenableFuture<List<Void>> processDownlinkMsg(DownlinkMsg downlinkMsg) { | 157 | private ListenableFuture<List<Void>> processDownlinkMsg(DownlinkMsg downlinkMsg) { |
156 | List<ListenableFuture<Void>> result = new ArrayList<>(); | 158 | List<ListenableFuture<Void>> result = new ArrayList<>(); |
157 | - if (downlinkMsg.getDeviceUpdateMsgList() != null && !downlinkMsg.getDeviceUpdateMsgList().isEmpty()) { | 159 | + if (downlinkMsg.getDeviceUpdateMsgCount() > 0) { |
158 | for (DeviceUpdateMsg deviceUpdateMsg: downlinkMsg.getDeviceUpdateMsgList()) { | 160 | for (DeviceUpdateMsg deviceUpdateMsg: downlinkMsg.getDeviceUpdateMsgList()) { |
159 | result.add(saveDownlinkMsg(deviceUpdateMsg)); | 161 | result.add(saveDownlinkMsg(deviceUpdateMsg)); |
160 | } | 162 | } |
161 | } | 163 | } |
162 | - if (downlinkMsg.getDeviceCredentialsUpdateMsgList() != null && !downlinkMsg.getDeviceCredentialsUpdateMsgList().isEmpty()) { | 164 | + if (downlinkMsg.getDeviceProfileUpdateMsgCount() > 0) { |
165 | + for (DeviceProfileUpdateMsg deviceProfileUpdateMsg : downlinkMsg.getDeviceProfileUpdateMsgList()) { | ||
166 | + result.add(saveDownlinkMsg(deviceProfileUpdateMsg)); | ||
167 | + } | ||
168 | + } | ||
169 | + if (downlinkMsg.getDeviceCredentialsUpdateMsgCount() > 0) { | ||
163 | for (DeviceCredentialsUpdateMsg deviceCredentialsUpdateMsg: downlinkMsg.getDeviceCredentialsUpdateMsgList()) { | 170 | for (DeviceCredentialsUpdateMsg deviceCredentialsUpdateMsg: downlinkMsg.getDeviceCredentialsUpdateMsgList()) { |
164 | result.add(saveDownlinkMsg(deviceCredentialsUpdateMsg)); | 171 | result.add(saveDownlinkMsg(deviceCredentialsUpdateMsg)); |
165 | } | 172 | } |
166 | } | 173 | } |
167 | - if (downlinkMsg.getAssetUpdateMsgList() != null && !downlinkMsg.getAssetUpdateMsgList().isEmpty()) { | 174 | + if (downlinkMsg.getAssetUpdateMsgCount() > 0) { |
168 | for (AssetUpdateMsg assetUpdateMsg: downlinkMsg.getAssetUpdateMsgList()) { | 175 | for (AssetUpdateMsg assetUpdateMsg: downlinkMsg.getAssetUpdateMsgList()) { |
169 | result.add(saveDownlinkMsg(assetUpdateMsg)); | 176 | result.add(saveDownlinkMsg(assetUpdateMsg)); |
170 | } | 177 | } |
171 | } | 178 | } |
172 | - if (downlinkMsg.getRuleChainUpdateMsgList() != null && !downlinkMsg.getRuleChainUpdateMsgList().isEmpty()) { | 179 | + if (downlinkMsg.getRuleChainUpdateMsgCount() > 0) { |
173 | for (RuleChainUpdateMsg ruleChainUpdateMsg: downlinkMsg.getRuleChainUpdateMsgList()) { | 180 | for (RuleChainUpdateMsg ruleChainUpdateMsg: downlinkMsg.getRuleChainUpdateMsgList()) { |
174 | result.add(saveDownlinkMsg(ruleChainUpdateMsg)); | 181 | result.add(saveDownlinkMsg(ruleChainUpdateMsg)); |
175 | } | 182 | } |
176 | } | 183 | } |
177 | - if (downlinkMsg.getRuleChainMetadataUpdateMsgList() != null && !downlinkMsg.getRuleChainMetadataUpdateMsgList().isEmpty()) { | 184 | + if (downlinkMsg.getRuleChainMetadataUpdateMsgCount() > 0) { |
178 | for (RuleChainMetadataUpdateMsg ruleChainMetadataUpdateMsg: downlinkMsg.getRuleChainMetadataUpdateMsgList()) { | 185 | for (RuleChainMetadataUpdateMsg ruleChainMetadataUpdateMsg: downlinkMsg.getRuleChainMetadataUpdateMsgList()) { |
179 | result.add(saveDownlinkMsg(ruleChainMetadataUpdateMsg)); | 186 | result.add(saveDownlinkMsg(ruleChainMetadataUpdateMsg)); |
180 | } | 187 | } |
181 | } | 188 | } |
182 | - if (downlinkMsg.getDashboardUpdateMsgList() != null && !downlinkMsg.getDashboardUpdateMsgList().isEmpty()) { | 189 | + if (downlinkMsg.getDashboardUpdateMsgCount() > 0) { |
183 | for (DashboardUpdateMsg dashboardUpdateMsg: downlinkMsg.getDashboardUpdateMsgList()) { | 190 | for (DashboardUpdateMsg dashboardUpdateMsg: downlinkMsg.getDashboardUpdateMsgList()) { |
184 | result.add(saveDownlinkMsg(dashboardUpdateMsg)); | 191 | result.add(saveDownlinkMsg(dashboardUpdateMsg)); |
185 | } | 192 | } |
186 | } | 193 | } |
187 | - if (downlinkMsg.getRelationUpdateMsgList() != null && !downlinkMsg.getRelationUpdateMsgList().isEmpty()) { | 194 | + if (downlinkMsg.getRelationUpdateMsgCount() > 0) { |
188 | for (RelationUpdateMsg relationUpdateMsg: downlinkMsg.getRelationUpdateMsgList()) { | 195 | for (RelationUpdateMsg relationUpdateMsg: downlinkMsg.getRelationUpdateMsgList()) { |
189 | result.add(saveDownlinkMsg(relationUpdateMsg)); | 196 | result.add(saveDownlinkMsg(relationUpdateMsg)); |
190 | } | 197 | } |
191 | } | 198 | } |
192 | - if (downlinkMsg.getAlarmUpdateMsgList() != null && !downlinkMsg.getAlarmUpdateMsgList().isEmpty()) { | 199 | + if (downlinkMsg.getAlarmUpdateMsgCount() > 0) { |
193 | for (AlarmUpdateMsg alarmUpdateMsg: downlinkMsg.getAlarmUpdateMsgList()) { | 200 | for (AlarmUpdateMsg alarmUpdateMsg: downlinkMsg.getAlarmUpdateMsgList()) { |
194 | result.add(saveDownlinkMsg(alarmUpdateMsg)); | 201 | result.add(saveDownlinkMsg(alarmUpdateMsg)); |
195 | } | 202 | } |
196 | } | 203 | } |
197 | - if (downlinkMsg.getEntityDataList() != null && !downlinkMsg.getEntityDataList().isEmpty()) { | 204 | + if (downlinkMsg.getEntityDataCount() > 0) { |
198 | for (EntityDataProto entityData: downlinkMsg.getEntityDataList()) { | 205 | for (EntityDataProto entityData: downlinkMsg.getEntityDataList()) { |
199 | result.add(saveDownlinkMsg(entityData)); | 206 | result.add(saveDownlinkMsg(entityData)); |
200 | } | 207 | } |
201 | } | 208 | } |
202 | - if (downlinkMsg.getEntityViewUpdateMsgList() != null && !downlinkMsg.getEntityViewUpdateMsgList().isEmpty()) { | 209 | + if (downlinkMsg.getEntityViewUpdateMsgCount() > 0) { |
203 | for (EntityViewUpdateMsg entityViewUpdateMsg: downlinkMsg.getEntityViewUpdateMsgList()) { | 210 | for (EntityViewUpdateMsg entityViewUpdateMsg: downlinkMsg.getEntityViewUpdateMsgList()) { |
204 | result.add(saveDownlinkMsg(entityViewUpdateMsg)); | 211 | result.add(saveDownlinkMsg(entityViewUpdateMsg)); |
205 | } | 212 | } |
206 | } | 213 | } |
207 | - if (downlinkMsg.getCustomerUpdateMsgList() != null && !downlinkMsg.getCustomerUpdateMsgList().isEmpty()) { | 214 | + if (downlinkMsg.getCustomerUpdateMsgCount() > 0) { |
208 | for (CustomerUpdateMsg customerUpdateMsg: downlinkMsg.getCustomerUpdateMsgList()) { | 215 | for (CustomerUpdateMsg customerUpdateMsg: downlinkMsg.getCustomerUpdateMsgList()) { |
209 | result.add(saveDownlinkMsg(customerUpdateMsg)); | 216 | result.add(saveDownlinkMsg(customerUpdateMsg)); |
210 | } | 217 | } |
211 | } | 218 | } |
212 | - if (downlinkMsg.getWidgetsBundleUpdateMsgList() != null && !downlinkMsg.getWidgetsBundleUpdateMsgList().isEmpty()) { | 219 | + if (downlinkMsg.getWidgetsBundleUpdateMsgCount() > 0) { |
213 | for (WidgetsBundleUpdateMsg widgetsBundleUpdateMsg: downlinkMsg.getWidgetsBundleUpdateMsgList()) { | 220 | for (WidgetsBundleUpdateMsg widgetsBundleUpdateMsg: downlinkMsg.getWidgetsBundleUpdateMsgList()) { |
214 | result.add(saveDownlinkMsg(widgetsBundleUpdateMsg)); | 221 | result.add(saveDownlinkMsg(widgetsBundleUpdateMsg)); |
215 | } | 222 | } |
216 | } | 223 | } |
217 | - if (downlinkMsg.getWidgetTypeUpdateMsgList() != null && !downlinkMsg.getWidgetTypeUpdateMsgList().isEmpty()) { | 224 | + if (downlinkMsg.getWidgetTypeUpdateMsgCount() > 0) { |
218 | for (WidgetTypeUpdateMsg widgetTypeUpdateMsg: downlinkMsg.getWidgetTypeUpdateMsgList()) { | 225 | for (WidgetTypeUpdateMsg widgetTypeUpdateMsg: downlinkMsg.getWidgetTypeUpdateMsgList()) { |
219 | result.add(saveDownlinkMsg(widgetTypeUpdateMsg)); | 226 | result.add(saveDownlinkMsg(widgetTypeUpdateMsg)); |
220 | } | 227 | } |
221 | } | 228 | } |
222 | - if (downlinkMsg.getUserUpdateMsgList() != null && !downlinkMsg.getUserUpdateMsgList().isEmpty()) { | 229 | + if (downlinkMsg.getUserUpdateMsgCount() > 0) { |
223 | for (UserUpdateMsg userUpdateMsg: downlinkMsg.getUserUpdateMsgList()) { | 230 | for (UserUpdateMsg userUpdateMsg: downlinkMsg.getUserUpdateMsgList()) { |
224 | onUserUpdate(userUpdateMsg); | 231 | onUserUpdate(userUpdateMsg); |
225 | result.add(saveDownlinkMsg(userUpdateMsg)); | 232 | result.add(saveDownlinkMsg(userUpdateMsg)); |
226 | } | 233 | } |
227 | } | 234 | } |
228 | - if (downlinkMsg.getUserCredentialsUpdateMsgList() != null && !downlinkMsg.getUserCredentialsUpdateMsgList().isEmpty()) { | 235 | + if (downlinkMsg.getUserCredentialsUpdateMsgCount() > 0) { |
229 | for (UserCredentialsUpdateMsg userCredentialsUpdateMsg: downlinkMsg.getUserCredentialsUpdateMsgList()) { | 236 | for (UserCredentialsUpdateMsg userCredentialsUpdateMsg: downlinkMsg.getUserCredentialsUpdateMsgList()) { |
230 | result.add(saveDownlinkMsg(userCredentialsUpdateMsg)); | 237 | result.add(saveDownlinkMsg(userCredentialsUpdateMsg)); |
231 | } | 238 | } |
232 | } | 239 | } |
233 | - if (downlinkMsg.getDeviceRpcCallMsgList() != null && !downlinkMsg.getDeviceRpcCallMsgList().isEmpty()) { | 240 | + if (downlinkMsg.getDeviceRpcCallMsgCount() > 0) { |
234 | for (DeviceRpcCallMsg deviceRpcCallMsg: downlinkMsg.getDeviceRpcCallMsgList()) { | 241 | for (DeviceRpcCallMsg deviceRpcCallMsg: downlinkMsg.getDeviceRpcCallMsgList()) { |
235 | result.add(saveDownlinkMsg(deviceRpcCallMsg)); | 242 | result.add(saveDownlinkMsg(deviceRpcCallMsg)); |
236 | } | 243 | } |
237 | } | 244 | } |
238 | - if (downlinkMsg.getDeviceCredentialsRequestMsgList() != null && !downlinkMsg.getDeviceCredentialsRequestMsgList().isEmpty()) { | 245 | + if (downlinkMsg.getDeviceCredentialsRequestMsgCount() > 0) { |
239 | for (DeviceCredentialsRequestMsg deviceCredentialsRequestMsg: downlinkMsg.getDeviceCredentialsRequestMsgList()) { | 246 | for (DeviceCredentialsRequestMsg deviceCredentialsRequestMsg: downlinkMsg.getDeviceCredentialsRequestMsgList()) { |
240 | result.add(saveDownlinkMsg(deviceCredentialsRequestMsg)); | 247 | result.add(saveDownlinkMsg(deviceCredentialsRequestMsg)); |
241 | } | 248 | } |
@@ -256,15 +263,21 @@ public class EdgeImitator { | @@ -256,15 +263,21 @@ public class EdgeImitator { | ||
256 | return Futures.immediateFuture(null); | 263 | return Futures.immediateFuture(null); |
257 | } | 264 | } |
258 | 265 | ||
259 | - public void waitForMessages() throws InterruptedException { | ||
260 | - messagesLatch.await(5, TimeUnit.SECONDS); | 266 | + public boolean waitForMessages() throws InterruptedException { |
267 | + return waitForMessages(5); | ||
268 | + } | ||
269 | + | ||
270 | + public boolean waitForMessages(int timeout) throws InterruptedException { | ||
271 | + return messagesLatch.await(timeout, TimeUnit.SECONDS); | ||
261 | } | 272 | } |
262 | 273 | ||
263 | public void expectMessageAmount(int messageAmount) { | 274 | public void expectMessageAmount(int messageAmount) { |
264 | messagesLatch = new CountDownLatch(messageAmount); | 275 | messagesLatch = new CountDownLatch(messageAmount); |
265 | } | 276 | } |
266 | 277 | ||
267 | - public void waitForResponses() throws InterruptedException { responsesLatch.await(5, TimeUnit.SECONDS); } | 278 | + public boolean waitForResponses() throws InterruptedException { |
279 | + return responsesLatch.await(5, TimeUnit.SECONDS); | ||
280 | + } | ||
268 | 281 | ||
269 | public void expectResponsesAmount(int messageAmount) { | 282 | public void expectResponsesAmount(int messageAmount) { |
270 | responsesLatch = new CountDownLatch(messageAmount); | 283 | responsesLatch = new CountDownLatch(messageAmount); |
@@ -282,6 +295,18 @@ public class EdgeImitator { | @@ -282,6 +295,18 @@ public class EdgeImitator { | ||
282 | return result; | 295 | return result; |
283 | } | 296 | } |
284 | 297 | ||
298 | + @SuppressWarnings("unchecked") | ||
299 | + public <T extends AbstractMessage> List<T> findAllMessagesByType(Class<T> tClass) { | ||
300 | + List<T> result; | ||
301 | + try { | ||
302 | + lock.lock(); | ||
303 | + result = (List<T>) downlinkMsgs.stream().filter(downlinkMsg -> downlinkMsg.getClass().isAssignableFrom(tClass)).collect(Collectors.toList()); | ||
304 | + } finally { | ||
305 | + lock.unlock(); | ||
306 | + } | ||
307 | + return result; | ||
308 | + } | ||
309 | + | ||
285 | public AbstractMessage getLatestMessage() { | 310 | public AbstractMessage getLatestMessage() { |
286 | return downlinkMsgs.get(downlinkMsgs.size() - 1); | 311 | return downlinkMsgs.get(downlinkMsgs.size() - 1); |
287 | } | 312 | } |