Commit 206a3d386fd869f426b41954fb610107b424bc28

Authored by Volodymyr Babak
1 parent 2f072838

Edge event controller test stabilization

@@ -42,7 +42,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @@ -42,7 +42,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
42 public class BaseEdgeEventControllerTest extends AbstractControllerTest { 42 public class BaseEdgeEventControllerTest extends AbstractControllerTest {
43 43
44 private Tenant savedTenant; 44 private Tenant savedTenant;
45 - private TenantId tenantId;  
46 private User tenantAdmin; 45 private User tenantAdmin;
47 46
48 @Before 47 @Before
@@ -52,7 +51,6 @@ public class BaseEdgeEventControllerTest extends AbstractControllerTest { @@ -52,7 +51,6 @@ public class BaseEdgeEventControllerTest extends AbstractControllerTest {
52 Tenant tenant = new Tenant(); 51 Tenant tenant = new Tenant();
53 tenant.setTitle("My tenant"); 52 tenant.setTitle("My tenant");
54 savedTenant = doPost("/api/tenant", tenant, Tenant.class); 53 savedTenant = doPost("/api/tenant", tenant, Tenant.class);
55 - tenantId = savedTenant.getId();  
56 Assert.assertNotNull(savedTenant); 54 Assert.assertNotNull(savedTenant);
57 55
58 tenantAdmin = new User(); 56 tenantAdmin = new User();
@@ -63,6 +61,10 @@ public class BaseEdgeEventControllerTest extends AbstractControllerTest { @@ -63,6 +61,10 @@ public class BaseEdgeEventControllerTest extends AbstractControllerTest {
63 tenantAdmin.setLastName("Downs"); 61 tenantAdmin.setLastName("Downs");
64 62
65 tenantAdmin = createUserAndLogin(tenantAdmin, "testPassword1"); 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 @After 70 @After
@@ -75,7 +77,6 @@ public class BaseEdgeEventControllerTest extends AbstractControllerTest { @@ -75,7 +77,6 @@ public class BaseEdgeEventControllerTest extends AbstractControllerTest {
75 77
76 @Test 78 @Test
77 public void testGetEdgeEvents() throws Exception { 79 public void testGetEdgeEvents() throws Exception {
78 - Thread.sleep(500);  
79 Edge edge = constructEdge("TestEdge", "default"); 80 Edge edge = constructEdge("TestEdge", "default");
80 edge = doPost("/api/edge", edge, Edge.class); 81 edge = doPost("/api/edge", edge, Edge.class);
81 82
@@ -83,29 +84,31 @@ public class BaseEdgeEventControllerTest extends AbstractControllerTest { @@ -83,29 +84,31 @@ public class BaseEdgeEventControllerTest extends AbstractControllerTest {
83 Device savedDevice = doPost("/api/device", device, Device.class); 84 Device savedDevice = doPost("/api/device", device, Device.class);
84 85
85 doPost("/api/edge/" + edge.getId().toString() + "/device/" + savedDevice.getId().toString(), Device.class); 86 doPost("/api/edge/" + edge.getId().toString() + "/device/" + savedDevice.getId().toString(), Device.class);
86 - Thread.sleep(500);  
87 87
88 Asset asset = constructAsset("TestAsset", "default"); 88 Asset asset = constructAsset("TestAsset", "default");
89 Asset savedAsset = doPost("/api/asset", asset, Asset.class); 89 Asset savedAsset = doPost("/api/asset", asset, Asset.class);
90 90
91 doPost("/api/edge/" + edge.getId().toString() + "/asset/" + savedAsset.getId().toString(), Asset.class); 91 doPost("/api/edge/" + edge.getId().toString() + "/asset/" + savedAsset.getId().toString(), Asset.class);
92 - Thread.sleep(500);  
93 92
94 EntityRelation relation = new EntityRelation(savedAsset.getId(), savedDevice.getId(), EntityRelation.CONTAINS_TYPE); 93 EntityRelation relation = new EntityRelation(savedAsset.getId(), savedDevice.getId(), EntityRelation.CONTAINS_TYPE);
95 94
96 doPost("/api/relation", relation); 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 Assert.assertEquals(4, edgeEvents.size()); 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 private Device constructDevice(String name, String type) { 114 private Device constructDevice(String name, String type) {