Skip to content

Commit b17f71b

Browse files
authored
Merge pull request #1045 from microsoft/trask/reduce-sporadic-test-failures
Reduce sporadic test failures
2 parents 6fa4dbe + 67539a7 commit b17f71b

File tree

5 files changed

+151
-176
lines changed

5 files changed

+151
-176
lines changed

test/fakeIngestion/standalone/src/main/java/com/microsoft/applicationinsights/test/fakeingestion/MockedAppInsightsIngestionServer.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
import com.google.common.base.Preconditions;
44
import com.google.common.base.Predicate;
5+
import com.google.common.base.Predicates;
56
import com.microsoft.applicationinsights.internal.schemav2.Data;
67
import com.microsoft.applicationinsights.internal.schemav2.Domain;
78
import com.microsoft.applicationinsights.internal.schemav2.Envelope;
9+
import org.checkerframework.checker.nullness.compatqual.NullableDecl;
810
import org.eclipse.jetty.server.Server;
911
import org.eclipse.jetty.servlet.ServletHandler;
1012
import org.eclipse.jetty.servlet.ServletHolder;
@@ -104,6 +106,17 @@ public Envelope waitForItem(Predicate<Envelope> condition, int timeout, TimeUnit
104106
return waitForItems(condition, 1, timeout, timeUnit).get(0);
105107
}
106108

109+
public List<Envelope> waitForItems(final String type, final int numItems) throws Exception {
110+
List<Envelope> items = waitForItems(new Predicate<Envelope>() {
111+
@Override public boolean apply(Envelope input) {
112+
return input.getData().getBaseType().equals(type);
113+
}
114+
}, numItems, 10, TimeUnit.SECONDS);
115+
if (items.size() > numItems) {
116+
throw new AssertionError("Expecting " + numItems + " of type " + type + ", but received " + items.size());
117+
}
118+
return items;
119+
}
107120

108121
/**
109122
* Waits the given amount of time for this mocked server to receive a certain number of items which match the given predicate.

test/smoke/testApps/CustomInstrumentation/src/smokeTest/java/com/microsoft/applicationinsights/smoketestapp/CustomInstrumentationTest.java

Lines changed: 27 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,9 @@ public class CustomInstrumentationTest extends AiSmokeTest {
2424

2525
@Test
2626
@TargetUri("/customInstrumentationOne")
27-
public void customInstrumentationOne() {
28-
List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData");
29-
List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData");
30-
31-
assertThat(rdList, hasSize(1));
32-
assertThat(rddList, hasSize(1));
27+
public void customInstrumentationOne() throws Exception {
28+
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
29+
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
3330

3431
Envelope rdEnvelope = rdList.get(0);
3532
Envelope rddEnvelope = rddList.get(0);
@@ -47,12 +44,9 @@ public void customInstrumentationOne() {
4744

4845
@Test
4946
@TargetUri("/customInstrumentationTwo")
50-
public void customInstrumentationTwo() {
51-
List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData");
52-
List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData");
53-
54-
assertThat(rdList, hasSize(1));
55-
assertThat(rddList, hasSize(1));
47+
public void customInstrumentationTwo() throws Exception {
48+
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
49+
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
5650

5751
Envelope rdEnvelope = rdList.get(0);
5852
Envelope rddEnvelope = rddList.get(0);
@@ -70,14 +64,10 @@ public void customInstrumentationTwo() {
7064

7165
@Test
7266
@TargetUri("/customInstrumentationThree")
73-
public void customInstrumentationThree() {
74-
List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData");
75-
List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData");
76-
List<Envelope> edList = mockedIngestion.getItemsEnvelopeDataType("ExceptionData");
77-
78-
assertThat(rdList, hasSize(1));
79-
assertThat(rddList, hasSize(1));
80-
assertThat(edList, hasSize(1));
67+
public void customInstrumentationThree() throws Exception {
68+
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
69+
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
70+
List<Envelope> edList = mockedIngestion.waitForItems("ExceptionData", 1);
8171

8272
Envelope rdEnvelope = rdList.get(0);
8373
Envelope rddEnvelope = rddList.get(0);
@@ -102,12 +92,9 @@ public void customInstrumentationThree() {
10292

10393
@Test
10494
@TargetUri("/customInstrumentationFour")
105-
public void customInstrumentationFour() {
106-
List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData");
107-
List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData");
108-
109-
assertThat(rdList, hasSize(1));
110-
assertThat(rddList, hasSize(1));
95+
public void customInstrumentationFour() throws Exception {
96+
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
97+
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
11198

11299
Envelope rdEnvelope = rdList.get(0);
113100
Envelope rddEnvelope = rddList.get(0);
@@ -125,14 +112,13 @@ public void customInstrumentationFour() {
125112

126113
@Test
127114
@TargetUri("/customInstrumentationFive")
128-
public void customInstrumentationFive() {
129-
List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData");
130-
assertThat(rdList, hasSize(1));
115+
public void customInstrumentationFive() throws Exception {
116+
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
117+
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 4);
118+
131119
Envelope rdEnvelope = rdList.get(0);
132120
RequestData rd = (RequestData) ((Data) rdEnvelope.getData()).getBaseData();
133121

134-
List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData");
135-
assertThat(rddList, hasSize(4));
136122
Envelope fiveEnvelope = null;
137123
Envelope sixEnvelope = null;
138124
Envelope oneEnvelope = null;
@@ -189,12 +175,9 @@ public void customInstrumentationFive() {
189175

190176
@Test
191177
@TargetUri("/customInstrumentationSeven")
192-
public void customInstrumentationSeven() {
193-
List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData");
194-
List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData");
195-
196-
assertThat(rdList, hasSize(1));
197-
assertThat(rddList, hasSize(1));
178+
public void customInstrumentationSeven() throws Exception {
179+
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
180+
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
198181

199182
Envelope rdEnvelope = rdList.get(0);
200183
Envelope rddEnvelope = rddList.get(0);
@@ -211,12 +194,9 @@ public void customInstrumentationSeven() {
211194

212195
@Test
213196
@TargetUri("/customInstrumentationEight")
214-
public void customInstrumentationEight() {
215-
List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData");
216-
List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData");
217-
218-
assertThat(rdList, hasSize(1));
219-
assertThat(rddList, hasSize(2));
197+
public void customInstrumentationEight() throws Exception {
198+
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
199+
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 2);
220200

221201
Envelope rdEnvelope = rdList.get(0);
222202
Envelope rddEnvelope1 = rddList.get(0);
@@ -241,14 +221,13 @@ public void customInstrumentationEight() {
241221

242222
@Test
243223
@TargetUri("/customInstrumentationNine")
244-
public void customInstrumentationNine() {
245-
List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData");
246-
assertThat(rdList, hasSize(1));
224+
public void customInstrumentationNine() throws Exception {
225+
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
226+
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 2);
227+
247228
Envelope rdEnvelope = rdList.get(0);
248229
RequestData rd = (RequestData) ((Data) rdEnvelope.getData()).getBaseData();
249230

250-
List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData");
251-
assertThat(rddList, hasSize(2));
252231
Envelope nineEnvelope = null;
253232
Envelope httpEnvelope = null;
254233
RemoteDependencyData nineRdd = null;

test/smoke/testApps/HttpClients/src/smokeTest/java/com/microsoft/applicationinsights/smoketestapp/HttpClientSmokeTest.java

Lines changed: 39 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package com.microsoft.applicationinsights.smoketestapp;
22

3+
import java.util.List;
4+
5+
import com.microsoft.applicationinsights.internal.schemav2.Data;
6+
import com.microsoft.applicationinsights.internal.schemav2.Envelope;
37
import com.microsoft.applicationinsights.internal.schemav2.RemoteDependencyData;
48
import com.microsoft.applicationinsights.internal.schemav2.RequestData;
59
import com.microsoft.applicationinsights.smoketest.AiSmokeTest;
@@ -15,11 +19,13 @@ public class HttpClientSmokeTest extends AiSmokeTest {
1519

1620
@Test
1721
@TargetUri("/apacheHttpClient4")
18-
public void testAsyncDependencyCallWithApacheHttpClient4() {
19-
assertEquals(1, mockedIngestion.getCountForType("RequestData"));
20-
assertEquals(1, mockedIngestion.getCountForType("RemoteDependencyData"));
21-
RequestData rd = getTelemetryDataForType(0, "RequestData");
22-
RemoteDependencyData rdd = getTelemetryDataForType(0, "RemoteDependencyData");
22+
public void testAsyncDependencyCallWithApacheHttpClient4() throws Exception {
23+
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
24+
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
25+
26+
RequestData rd = (RequestData) ((Data) rdList.get(0).getData()).getBaseData();
27+
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddList.get(0).getData()).getBaseData();
28+
2329
assertTrue(rd.getSuccess());
2430
assertEquals("GET /", rdd.getName());
2531
assertEquals("www.bing.com:-1 | www.bing.com", rdd.getTarget());
@@ -28,11 +34,13 @@ public void testAsyncDependencyCallWithApacheHttpClient4() {
2834

2935
@Test
3036
@TargetUri("/apacheHttpClient3")
31-
public void testAsyncDependencyCallWithApacheHttpClient3() {
32-
assertEquals(1, mockedIngestion.getCountForType("RequestData"));
33-
assertEquals(1, mockedIngestion.getCountForType("RemoteDependencyData"));
34-
RequestData rd = getTelemetryDataForType(0, "RequestData");
35-
RemoteDependencyData rdd = getTelemetryDataForType(0, "RemoteDependencyData");
37+
public void testAsyncDependencyCallWithApacheHttpClient3() throws Exception {
38+
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
39+
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
40+
41+
RequestData rd = (RequestData) ((Data) rdList.get(0).getData()).getBaseData();
42+
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddList.get(0).getData()).getBaseData();
43+
3644
assertTrue(rd.getSuccess());
3745
assertEquals("GET /", rdd.getName());
3846
assertEquals("www.bing.com:-1 | www.bing.com", rdd.getTarget());
@@ -41,11 +49,13 @@ public void testAsyncDependencyCallWithApacheHttpClient3() {
4149

4250
@Test
4351
@TargetUri("/okHttp3")
44-
public void testAsyncDependencyCallWithOkHttp3() {
45-
assertEquals(1, mockedIngestion.getCountForType("RequestData"));
46-
assertEquals(1, mockedIngestion.getCountForType("RemoteDependencyData"));
47-
RequestData rd = getTelemetryDataForType(0, "RequestData");
48-
RemoteDependencyData rdd = getTelemetryDataForType(0, "RemoteDependencyData");
52+
public void testAsyncDependencyCallWithOkHttp3() throws Exception {
53+
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
54+
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
55+
56+
RequestData rd = (RequestData) ((Data) rdList.get(0).getData()).getBaseData();
57+
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddList.get(0).getData()).getBaseData();
58+
4959
assertTrue(rd.getSuccess());
5060
assertEquals("GET /", rdd.getName());
5161
assertEquals("www.bing.com:-1 | www.bing.com", rdd.getTarget());
@@ -54,11 +64,13 @@ public void testAsyncDependencyCallWithOkHttp3() {
5464

5565
@Test
5666
@TargetUri("/okHttp2")
57-
public void testAsyncDependencyCallWithOkHttp2() {
58-
assertEquals(1, mockedIngestion.getCountForType("RequestData"));
59-
assertEquals(1, mockedIngestion.getCountForType("RemoteDependencyData"));
60-
RequestData rd = getTelemetryDataForType(0, "RequestData");
61-
RemoteDependencyData rdd = getTelemetryDataForType(0, "RemoteDependencyData");
67+
public void testAsyncDependencyCallWithOkHttp2() throws Exception {
68+
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
69+
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
70+
71+
RequestData rd = (RequestData) ((Data) rdList.get(0).getData()).getBaseData();
72+
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddList.get(0).getData()).getBaseData();
73+
6274
assertTrue(rd.getSuccess());
6375
assertEquals("GET /", rdd.getName());
6476
assertEquals("www.bing.com:-1 | www.bing.com", rdd.getTarget());
@@ -67,11 +79,13 @@ public void testAsyncDependencyCallWithOkHttp2() {
6779

6880
@Test
6981
@TargetUri("/httpURLConnection")
70-
public void testAsyncDependencyCallWithHttpURLConnection() {
71-
assertEquals(1, mockedIngestion.getCountForType("RequestData"));
72-
assertEquals(1, mockedIngestion.getCountForType("RemoteDependencyData"));
73-
RequestData rd = getTelemetryDataForType(0, "RequestData");
74-
RemoteDependencyData rdd = getTelemetryDataForType(0, "RemoteDependencyData");
82+
public void testAsyncDependencyCallWithHttpURLConnection() throws Exception {
83+
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
84+
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
85+
86+
RequestData rd = (RequestData) ((Data) rdList.get(0).getData()).getBaseData();
87+
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddList.get(0).getData()).getBaseData();
88+
7589
assertTrue(rd.getSuccess());
7690
assertEquals("GET /", rdd.getName());
7791
assertEquals("www.bing.com:-1 | www.bing.com", rdd.getTarget());

0 commit comments

Comments
 (0)