Commit 206a3d386fd869f426b41954fb610107b424bc28
1 parent
2f072838
Edge event controller test stabilization
Showing
1 changed file
with
18 additions
and
15 deletions
... | ... | @@ -42,7 +42,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. |
42 | 42 | public class BaseEdgeEventControllerTest extends AbstractControllerTest { |
43 | 43 | |
44 | 44 | private Tenant savedTenant; |
45 | - private TenantId tenantId; | |
46 | 45 | private User tenantAdmin; |
47 | 46 | |
48 | 47 | @Before |
... | ... | @@ -52,7 +51,6 @@ public class BaseEdgeEventControllerTest extends AbstractControllerTest { |
52 | 51 | Tenant tenant = new Tenant(); |
53 | 52 | tenant.setTitle("My tenant"); |
54 | 53 | savedTenant = doPost("/api/tenant", tenant, Tenant.class); |
55 | - tenantId = savedTenant.getId(); | |
56 | 54 | Assert.assertNotNull(savedTenant); |
57 | 55 | |
58 | 56 | tenantAdmin = new User(); |
... | ... | @@ -63,6 +61,10 @@ public class BaseEdgeEventControllerTest extends AbstractControllerTest { |
63 | 61 | tenantAdmin.setLastName("Downs"); |
64 | 62 | |
65 | 63 | tenantAdmin = createUserAndLogin(tenantAdmin, "testPassword1"); |
64 | + // sleep 1 seconds to avoid CREDENTIALS updated message for the user | |
65 | + // user credentials is going to be stored and updated event pushed to edge notification service | |
66 | + // while service will be processing this event edge could be already added and additional message will be pushed | |
67 | + Thread.sleep(1000); | |
66 | 68 | } |
67 | 69 | |
68 | 70 | @After |
... | ... | @@ -75,7 +77,6 @@ public class BaseEdgeEventControllerTest extends AbstractControllerTest { |
75 | 77 | |
76 | 78 | @Test |
77 | 79 | public void testGetEdgeEvents() throws Exception { |
78 | - Thread.sleep(500); | |
79 | 80 | Edge edge = constructEdge("TestEdge", "default"); |
80 | 81 | edge = doPost("/api/edge", edge, Edge.class); |
81 | 82 | |
... | ... | @@ -83,29 +84,31 @@ public class BaseEdgeEventControllerTest extends AbstractControllerTest { |
83 | 84 | Device savedDevice = doPost("/api/device", device, Device.class); |
84 | 85 | |
85 | 86 | doPost("/api/edge/" + edge.getId().toString() + "/device/" + savedDevice.getId().toString(), Device.class); |
86 | - Thread.sleep(500); | |
87 | 87 | |
88 | 88 | Asset asset = constructAsset("TestAsset", "default"); |
89 | 89 | Asset savedAsset = doPost("/api/asset", asset, Asset.class); |
90 | 90 | |
91 | 91 | doPost("/api/edge/" + edge.getId().toString() + "/asset/" + savedAsset.getId().toString(), Asset.class); |
92 | - Thread.sleep(500); | |
93 | 92 | |
94 | 93 | EntityRelation relation = new EntityRelation(savedAsset.getId(), savedDevice.getId(), EntityRelation.CONTAINS_TYPE); |
95 | 94 | |
96 | 95 | doPost("/api/relation", relation); |
97 | - Thread.sleep(500); | |
98 | 96 | |
99 | - List<EdgeEvent> edgeEvents = doGetTypedWithTimePageLink("/api/edge/" + edge.getId().toString() + "/events?", | |
100 | - new TypeReference<PageData<EdgeEvent>>() { | |
101 | - }, new TimePageLink(4)).getData(); | |
102 | - | |
103 | - Assert.assertFalse(edgeEvents.isEmpty()); | |
97 | + // wait while edge event for the relation entity persisted to DB | |
98 | + Thread.sleep(100); | |
99 | + List<EdgeEvent> edgeEvents; | |
100 | + int attempt = 1; | |
101 | + do { | |
102 | + edgeEvents = doGetTypedWithTimePageLink("/api/edge/" + edge.getId().toString() + "/events?", | |
103 | + new TypeReference<PageData<EdgeEvent>>() {}, new TimePageLink(4)).getData(); | |
104 | + attempt++; | |
105 | + Thread.sleep(100); | |
106 | + } while (edgeEvents.size() != 4 || attempt < 5); | |
104 | 107 | Assert.assertEquals(4, edgeEvents.size()); |
105 | - Assert.assertEquals(EdgeEventType.RULE_CHAIN, edgeEvents.get(0).getType()); | |
106 | - Assert.assertEquals(EdgeEventType.DEVICE, edgeEvents.get(1).getType()); | |
107 | - Assert.assertEquals(EdgeEventType.ASSET, edgeEvents.get(2).getType()); | |
108 | - Assert.assertEquals(EdgeEventType.RELATION, edgeEvents.get(3).getType()); | |
108 | + Assert.assertTrue(edgeEvents.stream().anyMatch(ee -> EdgeEventType.RULE_CHAIN.equals(ee.getType()))); | |
109 | + Assert.assertTrue(edgeEvents.stream().anyMatch(ee -> EdgeEventType.DEVICE.equals(ee.getType()))); | |
110 | + Assert.assertTrue(edgeEvents.stream().anyMatch(ee -> EdgeEventType.ASSET.equals(ee.getType()))); | |
111 | + Assert.assertTrue(edgeEvents.stream().anyMatch(ee -> EdgeEventType.RELATION.equals(ee.getType()))); | |
109 | 112 | } |
110 | 113 | |
111 | 114 | private Device constructDevice(String name, String type) { | ... | ... |