|
2 | 2 |
|
3 | 3 | import java.util.List; |
4 | 4 |
|
| 5 | +import com.microsoft.applicationinsights.internal.schemav2.Data; |
| 6 | +import com.microsoft.applicationinsights.internal.schemav2.Envelope; |
5 | 7 | import com.microsoft.applicationinsights.internal.schemav2.ExceptionData; |
6 | 8 | import com.microsoft.applicationinsights.internal.schemav2.ExceptionDetails; |
7 | 9 | import com.microsoft.applicationinsights.internal.schemav2.RemoteDependencyData; |
|
11 | 13 | import com.microsoft.applicationinsights.smoketest.UseAgent; |
12 | 14 | import org.junit.Test; |
13 | 15 |
|
| 16 | +import static org.hamcrest.Matchers.hasSize; |
14 | 17 | import static org.junit.Assert.assertEquals; |
15 | 18 | import static org.junit.Assert.assertNotNull; |
16 | | -import static org.junit.Assert.assertTrue; |
| 19 | +import static org.junit.Assert.assertThat; |
17 | 20 |
|
18 | 21 | @UseAgent("CustomInstrumentation") |
19 | 22 | public class CustomInstrumentationTest extends AiSmokeTest { |
20 | 23 |
|
21 | 24 | @Test |
22 | 25 | @TargetUri("/customInstrumentationOne") |
23 | 26 | public void customInstrumentationOne() { |
24 | | - assertEquals(1, mockedIngestion.getCountForType("RequestData")); |
25 | | - assertEquals(1, mockedIngestion.getCountForType("RemoteDependencyData")); |
26 | | - RemoteDependencyData rdd = getTelemetryDataForType(0, "RemoteDependencyData"); |
| 27 | + List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData"); |
| 28 | + List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData"); |
| 29 | + |
| 30 | + assertThat(rdList, hasSize(1)); |
| 31 | + assertThat(rddList, hasSize(1)); |
| 32 | + |
| 33 | + Envelope rdEnvelope = rdList.get(0); |
| 34 | + Envelope rddEnvelope = rddList.get(0); |
| 35 | + |
| 36 | + RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddEnvelope.getData()).getBaseData(); |
| 37 | + |
27 | 38 | assertEquals(rdd.getName(), "com/springbootstartertest/controller/TargetObject.one"); |
28 | 39 | assertEquals(rdd.getType(), "OTHER"); |
29 | 40 | assertEquals(rdd.getSuccess(), true); |
| 41 | + |
| 42 | + assertSameOperationId(rdEnvelope, rddEnvelope); |
30 | 43 | } |
31 | 44 |
|
32 | 45 | @Test |
33 | 46 | @TargetUri("/customInstrumentationTwo") |
34 | 47 | public void customInstrumentationTwo() { |
35 | | - assertEquals(1, mockedIngestion.getCountForType("RequestData")); |
36 | | - assertEquals(1, mockedIngestion.getCountForType("RemoteDependencyData")); |
37 | | - RemoteDependencyData rdd = getTelemetryDataForType(0, "RemoteDependencyData"); |
| 48 | + List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData"); |
| 49 | + List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData"); |
| 50 | + |
| 51 | + assertThat(rdList, hasSize(1)); |
| 52 | + assertThat(rddList, hasSize(1)); |
| 53 | + |
| 54 | + Envelope rdEnvelope = rdList.get(0); |
| 55 | + Envelope rddEnvelope = rddList.get(0); |
| 56 | + |
| 57 | + RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddEnvelope.getData()).getBaseData(); |
| 58 | + |
38 | 59 | assertEquals(rdd.getName(), "com/springbootstartertest/controller/TargetObject.two"); |
39 | 60 | assertEquals(rdd.getType(), "OTHER"); |
40 | 61 | assertEquals(rdd.getSuccess(), true); |
| 62 | + |
| 63 | + assertSameOperationId(rdEnvelope, rddEnvelope); |
41 | 64 | } |
42 | 65 |
|
43 | 66 | @Test |
44 | 67 | @TargetUri("/customInstrumentationThree") |
45 | 68 | public void customInstrumentationThree() { |
46 | | - assertEquals(1, mockedIngestion.getCountForType("RequestData")); |
47 | | - assertEquals(1, mockedIngestion.getCountForType("RemoteDependencyData")); |
| 69 | + List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData"); |
| 70 | + List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData"); |
| 71 | + List<Envelope> edList = mockedIngestion.getItemsEnvelopeDataType("ExceptionData"); |
| 72 | + |
| 73 | + assertThat(rdList, hasSize(1)); |
| 74 | + assertThat(rddList, hasSize(1)); |
| 75 | + assertThat(edList, hasSize(1)); |
| 76 | + |
| 77 | + Envelope rdEnvelope = rdList.get(0); |
| 78 | + Envelope rddEnvelope = rddList.get(0); |
| 79 | + Envelope edEnvelope = edList.get(0); |
| 80 | + |
| 81 | + RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddEnvelope.getData()).getBaseData(); |
| 82 | + ExceptionData ed = (ExceptionData) ((Data) edEnvelope.getData()).getBaseData(); |
| 83 | + |
48 | 84 | assertEquals(1, mockedIngestion.getCountForType("ExceptionData")); |
49 | | - RemoteDependencyData rdd = getTelemetryDataForType(0, "RemoteDependencyData"); |
50 | 85 | assertEquals(rdd.getName(), "com/springbootstartertest/controller/TargetObject.three"); |
51 | 86 | assertEquals(rdd.getType(), "OTHER"); |
52 | 87 | assertEquals(rdd.getSuccess(), false); |
53 | | - ExceptionData exceptionData = getTelemetryDataForType(0, "ExceptionData"); |
54 | | - List<ExceptionDetails> exceptions = exceptionData.getExceptions(); |
| 88 | + |
| 89 | + List<ExceptionDetails> exceptions = ed.getExceptions(); |
55 | 90 | assertEquals(exceptions.size(), 1); |
56 | 91 | assertEquals(exceptions.get(0).getMessage(), "Three"); |
| 92 | + |
| 93 | + assertSameOperationId(rdEnvelope, rddEnvelope); |
| 94 | + assertSameOperationId(edEnvelope, rddEnvelope); |
57 | 95 | } |
58 | 96 |
|
59 | 97 | @Test |
60 | 98 | @TargetUri("/customInstrumentationFour") |
61 | 99 | public void customInstrumentationFour() { |
62 | | - assertEquals(1, mockedIngestion.getCountForType("RequestData")); |
63 | | - assertEquals(1, mockedIngestion.getCountForType("RemoteDependencyData")); |
64 | | - RemoteDependencyData rdd = getTelemetryDataForType(0, "RemoteDependencyData"); |
| 100 | + List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData"); |
| 101 | + List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData"); |
| 102 | + |
| 103 | + assertThat(rdList, hasSize(1)); |
| 104 | + assertThat(rddList, hasSize(1)); |
| 105 | + |
| 106 | + Envelope rdEnvelope = rdList.get(0); |
| 107 | + Envelope rddEnvelope = rddList.get(0); |
| 108 | + |
| 109 | + RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddEnvelope.getData()).getBaseData(); |
| 110 | + |
65 | 111 | assertEquals(rdd.getName(), "com/springbootstartertest/controller/TargetObject$NestedObject.four"); |
66 | 112 | assertEquals(rdd.getType(), "OTHER"); |
67 | 113 | assertEquals(rdd.getSuccess(), true); |
| 114 | + |
| 115 | + assertSameOperationId(rdEnvelope, rddEnvelope); |
68 | 116 | } |
69 | 117 |
|
70 | 118 | @Test |
71 | 119 | @TargetUri("/customInstrumentationFive") |
72 | 120 | public void customInstrumentationFive() { |
73 | | - assertEquals(1, mockedIngestion.getCountForType("RequestData")); |
74 | | - assertEquals(4, mockedIngestion.getCountForType("RemoteDependencyData")); |
| 121 | + List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData"); |
| 122 | + assertThat(rdList, hasSize(1)); |
| 123 | + Envelope rdEnvelope = rdList.get(0); |
| 124 | + RequestData rd = (RequestData) ((Data) rdEnvelope.getData()).getBaseData(); |
| 125 | + |
| 126 | + List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData"); |
| 127 | + assertThat(rddList, hasSize(4)); |
| 128 | + Envelope fiveEnvelope = null; |
| 129 | + Envelope sixEnvelope = null; |
| 130 | + Envelope oneEnvelope = null; |
| 131 | + Envelope twoEnvelope = null; |
75 | 132 | RemoteDependencyData fiveRdd = null; |
76 | 133 | RemoteDependencyData sixRdd = null; |
77 | 134 | RemoteDependencyData oneRdd = null; |
78 | 135 | RemoteDependencyData twoRdd = null; |
79 | | - List<RemoteDependencyData> rdds = mockedIngestion.getTelemetryDataByType("RemoteDependencyData"); |
80 | | - for (RemoteDependencyData rdd : rdds) { |
81 | | - if (rdd.getName().endsWith(".five")) { |
82 | | - fiveRdd = rdd; |
83 | | - } else if (rdd.getName().endsWith(".six")) { |
84 | | - sixRdd = rdd; |
85 | | - } else if (rdd.getName().endsWith(".one")) { |
86 | | - oneRdd = rdd; |
87 | | - } else if (rdd.getName().endsWith(".two")) { |
88 | | - twoRdd = rdd; |
| 136 | + for (Envelope loopEnvelope : rddList) { |
| 137 | + RemoteDependencyData loopData = (RemoteDependencyData) ((Data) loopEnvelope.getData()).getBaseData(); |
| 138 | + if (loopData.getName().endsWith(".five")) { |
| 139 | + fiveEnvelope = loopEnvelope; |
| 140 | + fiveRdd = loopData; |
| 141 | + } else if (loopData.getName().endsWith(".six")) { |
| 142 | + sixEnvelope = loopEnvelope; |
| 143 | + sixRdd = loopData; |
| 144 | + } else if (loopData.getName().endsWith(".one")) { |
| 145 | + oneEnvelope = loopEnvelope; |
| 146 | + oneRdd = loopData; |
| 147 | + } else if (loopData.getName().endsWith(".two")) { |
| 148 | + twoEnvelope = loopEnvelope; |
| 149 | + twoRdd = loopData; |
89 | 150 | } else { |
90 | | - throw new IllegalStateException("Unexpected remote dependency: " + rdd.getName()); |
| 151 | + throw new IllegalStateException("Unexpected remote dependency: " + loopData.getName()); |
91 | 152 | } |
92 | 153 | } |
93 | 154 |
|
94 | 155 | assertNotNull(fiveRdd); |
95 | 156 | assertEquals(fiveRdd.getName(), "com/springbootstartertest/controller/TargetObject.five"); |
96 | 157 | assertEquals(fiveRdd.getType(), "OTHER"); |
97 | 158 | assertEquals(fiveRdd.getSuccess(), true); |
| 159 | + assertSameOperationId(rdEnvelope, fiveEnvelope); |
98 | 160 |
|
99 | 161 | assertNotNull(sixRdd); |
100 | 162 | assertEquals(sixRdd.getName(), "com/springbootstartertest/controller/TargetObject.six"); |
101 | 163 | assertEquals(sixRdd.getType(), "OTHER"); |
102 | 164 | assertEquals(sixRdd.getSuccess(), true); |
| 165 | + assertSameOperationId(rdEnvelope, sixEnvelope); |
103 | 166 |
|
104 | 167 | assertNotNull(oneRdd); |
105 | 168 | assertEquals(oneRdd.getName(), "com/springbootstartertest/controller/TargetObject.one"); |
106 | 169 | assertEquals(oneRdd.getType(), "OTHER"); |
107 | 170 | assertEquals(oneRdd.getSuccess(), true); |
| 171 | + assertSameOperationId(rdEnvelope, oneEnvelope); |
108 | 172 |
|
109 | 173 | assertNotNull(twoRdd); |
110 | 174 | assertEquals(twoRdd.getName(), "com/springbootstartertest/controller/TargetObject.two"); |
111 | 175 | assertEquals(twoRdd.getType(), "OTHER"); |
112 | 176 | assertEquals(twoRdd.getSuccess(), true); |
| 177 | + assertSameOperationId(rdEnvelope, twoEnvelope); |
113 | 178 | } |
114 | 179 |
|
115 | 180 | @Test |
116 | 181 | @TargetUri("/customInstrumentationSeven") |
117 | 182 | public void customInstrumentationSeven() { |
118 | | - assertEquals(1, mockedIngestion.getCountForType("RequestData")); |
119 | | - assertEquals(1, mockedIngestion.getCountForType("RemoteDependencyData")); |
120 | | - RemoteDependencyData rdd = getTelemetryDataForType(0, "RemoteDependencyData"); |
| 183 | + List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData"); |
| 184 | + List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData"); |
| 185 | + |
| 186 | + assertThat(rdList, hasSize(1)); |
| 187 | + assertThat(rddList, hasSize(1)); |
| 188 | + |
| 189 | + Envelope rdEnvelope = rdList.get(0); |
| 190 | + Envelope rddEnvelope = rddList.get(0); |
| 191 | + |
| 192 | + RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddEnvelope.getData()).getBaseData(); |
| 193 | + |
121 | 194 | assertEquals(rdd.getName(), "com/springbootstartertest/controller/TargetObject.seven"); |
122 | 195 | assertEquals(rdd.getType(), "OTHER"); |
123 | 196 | assertEquals(rdd.getSuccess(), true); |
| 197 | + assertSameOperationId(rdEnvelope, rddEnvelope); |
124 | 198 | } |
125 | 199 |
|
126 | 200 | @Test |
127 | 201 | @TargetUri("/customInstrumentationEight") |
128 | 202 | public void customInstrumentationEight() { |
129 | | - assertEquals(1, mockedIngestion.getCountForType("RequestData")); |
130 | | - assertEquals(2, mockedIngestion.getCountForType("RemoteDependencyData")); |
131 | | - RemoteDependencyData rdd1 = getTelemetryDataForType(0, "RemoteDependencyData"); |
132 | | - RemoteDependencyData rdd2 = getTelemetryDataForType(1, "RemoteDependencyData"); |
| 203 | + List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData"); |
| 204 | + List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData"); |
| 205 | + |
| 206 | + assertThat(rdList, hasSize(1)); |
| 207 | + assertThat(rddList, hasSize(2)); |
| 208 | + |
| 209 | + Envelope rdEnvelope = rdList.get(0); |
| 210 | + Envelope rddEnvelope1 = rddList.get(0); |
| 211 | + Envelope rddEnvelope2 = rddList.get(1); |
| 212 | + |
| 213 | + RequestData rd = (RequestData) ((Data) rdEnvelope.getData()).getBaseData(); |
| 214 | + RemoteDependencyData rdd1 = (RemoteDependencyData) ((Data) rddEnvelope1.getData()).getBaseData(); |
| 215 | + RemoteDependencyData rdd2 = (RemoteDependencyData) ((Data) rddEnvelope2.getData()).getBaseData(); |
133 | 216 |
|
134 | 217 | assertEquals(rdd1.getName(), "com/springbootstartertest/controller/TargetObject.eight"); |
135 | 218 | assertEquals(rdd1.getType(), "OTHER"); |
136 | 219 | assertEquals(rdd1.getSuccess(), true); |
| 220 | + assertSameOperationId(rdEnvelope, rddEnvelope1); |
137 | 221 |
|
138 | 222 | assertEquals(rdd2.getName(), "com/springbootstartertest/controller/TargetObject.eight"); |
139 | 223 | assertEquals(rdd2.getType(), "OTHER"); |
140 | 224 | assertEquals(rdd2.getSuccess(), true); |
| 225 | + assertSameOperationId(rdEnvelope, rddEnvelope2); |
141 | 226 | } |
142 | 227 |
|
143 | 228 | @Test |
144 | 229 | @TargetUri("/customInstrumentationNine") |
145 | 230 | public void customInstrumentationNine() { |
146 | | - assertEquals(1, mockedIngestion.getCountForType("RequestData")); |
147 | | - assertEquals(2, mockedIngestion.getCountForType("RemoteDependencyData")); |
148 | | - RequestData d = getTelemetryDataForType(0, "RequestData"); |
| 231 | + List<Envelope> rdList = mockedIngestion.getItemsEnvelopeDataType("RequestData"); |
| 232 | + assertThat(rdList, hasSize(1)); |
| 233 | + Envelope rdEnvelope = rdList.get(0); |
| 234 | + RequestData rd = (RequestData) ((Data) rdEnvelope.getData()).getBaseData(); |
| 235 | + |
| 236 | + List<Envelope> rddList = mockedIngestion.getItemsEnvelopeDataType("RemoteDependencyData"); |
| 237 | + assertThat(rddList, hasSize(2)); |
| 238 | + Envelope nineEnvelope = null; |
| 239 | + Envelope httpEnvelope = null; |
149 | 240 | RemoteDependencyData nineRdd = null; |
150 | 241 | RemoteDependencyData httpRdd = null; |
151 | | - List<RemoteDependencyData> rdds = mockedIngestion.getTelemetryDataByType("RemoteDependencyData"); |
152 | | - for (RemoteDependencyData rdd : rdds) { |
153 | | - if (rdd.getType().equals("OTHER")) { |
154 | | - nineRdd = rdd; |
155 | | - } else if (rdd.getType().equals("Http (tracked component)")) { |
156 | | - httpRdd = rdd; |
| 242 | + for (Envelope loopEnvelope : rddList) { |
| 243 | + RemoteDependencyData loopData = (RemoteDependencyData) ((Data) loopEnvelope.getData()).getBaseData(); |
| 244 | + if (loopData.getType().equals("OTHER")) { |
| 245 | + nineEnvelope = loopEnvelope; |
| 246 | + nineRdd = loopData; |
| 247 | + } else if (loopData.getType().equals("Http (tracked component)")) { |
| 248 | + httpEnvelope = loopEnvelope; |
| 249 | + httpRdd = loopData; |
157 | 250 | } else { |
158 | | - throw new IllegalStateException("Unexpected remote dependency type: " + rdd.getType()); |
| 251 | + throw new IllegalStateException("Unexpected remote dependency type: " + loopData.getType()); |
159 | 252 | } |
160 | 253 | } |
161 | 254 |
|
162 | 255 | assertNotNull(nineRdd); |
163 | 256 | assertEquals(nineRdd.getName(), "com/springbootstartertest/controller/TargetObject.nine"); |
164 | 257 | assertEquals(nineRdd.getType(), "OTHER"); |
165 | 258 | assertEquals(nineRdd.getSuccess(), true); |
| 259 | + assertSameOperationId(rdEnvelope, nineEnvelope); |
166 | 260 |
|
167 | 261 | assertNotNull(httpRdd); |
168 | | - String requestOperationId = d.getId(); |
169 | | - String rddId = httpRdd.getId(); |
170 | | - assertTrue(rddId.contains(requestOperationId)); |
| 262 | + assertSameOperationId(rdEnvelope, httpEnvelope); |
| 263 | + } |
| 264 | + |
| 265 | + private static void assertSameOperationId(Envelope rdEnvelope, Envelope rddEnvelope) { |
| 266 | + String operationId = rdEnvelope.getTags().get("ai.operation.id"); |
| 267 | + String operationParentId = rdEnvelope.getTags().get("ai.operation.parentId"); |
| 268 | + |
| 269 | + assertNotNull(operationId); |
| 270 | + assertNotNull(operationParentId); |
| 271 | + |
| 272 | + assertEquals(operationId, rddEnvelope.getTags().get("ai.operation.id")); |
| 273 | + assertEquals(operationParentId, rddEnvelope.getTags().get("ai.operation.parentId")); |
171 | 274 | } |
172 | 275 | } |
0 commit comments