Skip to content

Commit f106c37

Browse files
authored
Analytics error handling fix (#136)
* fix hotspot insight data class Signed-off-by: shalom <[email protected]> * fix exception handling in analytics service Signed-off-by: shalom <[email protected]> Signed-off-by: shalom <[email protected]>
1 parent e8e0537 commit f106c37

File tree

13 files changed

+131
-79
lines changed

13 files changed

+131
-79
lines changed

analytics-provider/src/main/java/org/digma/intellij/plugin/analytics/AnalyticsProviderException.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
public class AnalyticsProviderException extends RuntimeException {
44

5-
private int responseCode;
5+
private int responseCode = -1;
66

77
public AnalyticsProviderException(int code, String message) {
88
super(message);
@@ -20,4 +20,12 @@ public AnalyticsProviderException(Throwable cause) {
2020
public int getResponseCode() {
2121
return responseCode;
2222
}
23+
24+
@Override
25+
public String getMessage() {
26+
if (responseCode > 0) {
27+
return super.getMessage() + ", response code " + responseCode;
28+
}
29+
return super.getMessage();
30+
}
2331
}

analytics-provider/src/test/java/org/digma/intellij/plugin/analytics/EnvironmentTests.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@
1111

1212
import static org.junit.jupiter.api.Assertions.*;
1313

14-
public class EnvironmentTests extends AbstractAnalyticsProviderTest {
14+
@SuppressWarnings("resource")
15+
class EnvironmentTests extends AbstractAnalyticsProviderTest {
1516

1617
@Test
17-
public void getEnvironmentsTest() throws JsonProcessingException {
18+
void getEnvironmentsTest() throws JsonProcessingException {
1819

1920
List<String> expectedEnvs = new ArrayList<>();
2021
expectedEnvs.add("env1");
@@ -33,7 +34,7 @@ public void getEnvironmentsTest() throws JsonProcessingException {
3334

3435

3536
@Test
36-
public void getEnvironmentsEmptyResultTest() throws JsonProcessingException {
37+
void getEnvironmentsEmptyResultTest() throws JsonProcessingException {
3738

3839
mockBackEnd.enqueue(new MockResponse()
3940
.setBody(objectMapper.writeValueAsString(Collections.emptyList()))
@@ -47,7 +48,7 @@ public void getEnvironmentsEmptyResultTest() throws JsonProcessingException {
4748
}
4849

4950
@Test
50-
public void getEnvironmentsNullResultTest() {
51+
void getEnvironmentsNullResultTest() {
5152

5253
mockBackEnd.enqueue(new MockResponse()
5354
.addHeader("Content-Type", "application/json"));
@@ -61,7 +62,7 @@ public void getEnvironmentsNullResultTest() {
6162
}
6263

6364
@Test
64-
public void getEnvironmentsErrorResultTest() {
65+
void getEnvironmentsErrorResultTest() {
6566

6667
mockBackEnd.enqueue(new MockResponse()
6768
.setResponseCode(500)
@@ -77,7 +78,7 @@ public void getEnvironmentsErrorResultTest() {
7778

7879

7980
@Test
80-
public void getEnvironmentsWrongResultTest() throws JsonProcessingException {
81+
void getEnvironmentsWrongResultTest() throws JsonProcessingException {
8182

8283
mockBackEnd.enqueue(new MockResponse()
8384
.setBody(objectMapper.writeValueAsString("MYENV"))

analytics-provider/src/test/java/org/digma/intellij/plugin/analytics/ErrorsDetailsTests.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import static org.digma.intellij.plugin.analytics.UtilForTest.*;
99
import static org.junit.jupiter.api.Assertions.assertNotNull;
1010

11-
public class ErrorsDetailsTests extends AbstractAnalyticsProviderTest {
11+
class ErrorsDetailsTests extends AbstractAnalyticsProviderTest {
1212

1313

1414
// @Test
@@ -19,9 +19,8 @@ public class ErrorsDetailsTests extends AbstractAnalyticsProviderTest {
1919
// }
2020

2121

22-
2322
@Test
24-
public void testErrorDetails() {
23+
void testErrorDetails() {
2524
final var jsonContent = loadTextFile("/jsons/error-details.json");
2625
mockBackEnd.enqueue(new MockResponse()
2726
.setBody(jsonContent)

analytics-provider/src/test/java/org/digma/intellij/plugin/analytics/ErrorsOfCodeObjectTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@
99
import static org.digma.intellij.plugin.analytics.UtilForTest.*;
1010
import static org.junit.jupiter.api.Assertions.assertEquals;
1111

12-
public class ErrorsOfCodeObjectTests extends AbstractAnalyticsProviderTest {
12+
@SuppressWarnings("resource")
13+
class ErrorsOfCodeObjectTests extends AbstractAnalyticsProviderTest {
1314

1415
@Test
15-
public void ableToParse2Items() {
16+
void ableToParse2Items() {
1617
final var jsonContent = loadTextFile("/jsons/errors_of_code_object_2_items.json");
1718
mockBackEnd.enqueue(new MockResponse()
1819
.setBody(jsonContent)

analytics-provider/src/test/java/org/digma/intellij/plugin/analytics/InsightsTests.java

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,7 @@
33
import com.fasterxml.jackson.core.JsonProcessingException;
44
import com.fasterxml.jackson.databind.exc.MismatchedInputException;
55
import okhttp3.mockwebserver.MockResponse;
6-
import org.digma.intellij.plugin.model.rest.insights.CodeObjectInsight;
7-
import org.digma.intellij.plugin.model.rest.insights.Duration;
8-
import org.digma.intellij.plugin.model.rest.insights.ErrorInsight;
9-
import org.digma.intellij.plugin.model.rest.insights.ErrorInsightNamedError;
10-
import org.digma.intellij.plugin.model.rest.insights.HighUsageInsight;
11-
import org.digma.intellij.plugin.model.rest.insights.HotspotInsight;
12-
import org.digma.intellij.plugin.model.rest.insights.InsightsRequest;
13-
import org.digma.intellij.plugin.model.rest.insights.LowUsageInsight;
14-
import org.digma.intellij.plugin.model.rest.insights.NormalUsageInsight;
15-
import org.digma.intellij.plugin.model.rest.insights.Percentile;
16-
import org.digma.intellij.plugin.model.rest.insights.SlowEndpointInsight;
17-
import org.digma.intellij.plugin.model.rest.insights.SlowSpanInfo;
18-
import org.digma.intellij.plugin.model.rest.insights.SlowestSpansInsight;
19-
import org.digma.intellij.plugin.model.rest.insights.SpanHistogramQuery;
20-
import org.digma.intellij.plugin.model.rest.insights.SpanInfo;
6+
import org.digma.intellij.plugin.model.rest.insights.*;
217
import org.junit.jupiter.api.Test;
228

239
import java.util.ArrayList;
@@ -27,7 +13,8 @@
2713
import static org.junit.jupiter.api.Assertions.assertEquals;
2814
import static org.junit.jupiter.api.Assertions.assertThrows;
2915

30-
public class InsightsTests extends AbstractAnalyticsProviderTest {
16+
@SuppressWarnings("resource")
17+
class InsightsTests extends AbstractAnalyticsProviderTest {
3118

3219

3320
//run against running env just for local test
@@ -73,7 +60,7 @@ public void actualgetHtmlGraphForSpanPercentiles() {
7360
}
7461

7562
@Test
76-
public void getInsights() throws JsonProcessingException {
63+
void getInsights() throws JsonProcessingException {
7764

7865
String codeObjectId = "Sample.MoneyTransfer.API.Domain.Services.MoneyTransferDomainService$_$TransferFunds";
7966
List<CodeObjectInsight> expectedCodeObjectInsights = new ArrayList<>();
@@ -168,7 +155,7 @@ public void getInsights() throws JsonProcessingException {
168155

169156

170157
@Test
171-
public void getInsightsEmptyResultTest() throws JsonProcessingException {
158+
void getInsightsEmptyResultTest() throws JsonProcessingException {
172159

173160
mockBackEnd.enqueue(new MockResponse()
174161
.setBody(objectMapper.writeValueAsString(Collections.emptyList()))
@@ -181,45 +168,45 @@ public void getInsightsEmptyResultTest() throws JsonProcessingException {
181168
}
182169

183170
@Test
184-
public void getSummariesNullResultTest() {
171+
void getSummariesNullResultTest() {
185172

186173
mockBackEnd.enqueue(new MockResponse()
187174
.addHeader("Content-Type", "application/json"));
188175

189176
AnalyticsProviderException exception = assertThrows(AnalyticsProviderException.class, () -> {
190177
AnalyticsProvider analyticsProvider = new RestAnalyticsProvider(baseUrl);
191-
List<CodeObjectInsight> codeObjectInsights = analyticsProvider.getInsights(new InsightsRequest("myenv", Collections.singletonList("method:aaaa")));
178+
analyticsProvider.getInsights(new InsightsRequest("myenv", Collections.singletonList("method:aaaa")));
192179
});
193180

194181
assertEquals(MismatchedInputException.class, exception.getCause().getClass());
195182
}
196183

197184
@Test
198-
public void getSummariesErrorResultTest() {
185+
void getSummariesErrorResultTest() {
199186

200187
mockBackEnd.enqueue(new MockResponse()
201188
.setResponseCode(500)
202189
.addHeader("Content-Type", "application/json"));
203190

204191
AnalyticsProviderException exception = assertThrows(AnalyticsProviderException.class, () -> {
205192
AnalyticsProvider analyticsProvider = new RestAnalyticsProvider(baseUrl);
206-
List<CodeObjectInsight> codeObjectInsights = analyticsProvider.getInsights(new InsightsRequest("myenv", Collections.singletonList("method:aaaa")));
193+
analyticsProvider.getInsights(new InsightsRequest("myenv", Collections.singletonList("method:aaaa")));
207194
});
208195

209196
assertEquals(500, exception.getResponseCode());
210197
}
211198

212199

213200
@Test
214-
public void getSummariesWrongResultTest() throws JsonProcessingException {
201+
void getSummariesWrongResultTest() throws JsonProcessingException {
215202

216203
mockBackEnd.enqueue(new MockResponse()
217204
.setBody(objectMapper.writeValueAsString("mystring"))
218205
.addHeader("Content-Type", "application/json"));
219206

220207
AnalyticsProviderException exception = assertThrows(AnalyticsProviderException.class, () -> {
221208
AnalyticsProvider analyticsProvider = new RestAnalyticsProvider(baseUrl);
222-
List<CodeObjectInsight> codeObjectInsights = analyticsProvider.getInsights(new InsightsRequest("myenv", Collections.singletonList("method:aaaa")));
209+
analyticsProvider.getInsights(new InsightsRequest("myenv", Collections.singletonList("method:aaaa")));
223210
});
224211

225212
assertEquals(MismatchedInputException.class, exception.getCause().getClass());

analytics-provider/src/test/java/org/digma/intellij/plugin/analytics/SummariesTests.java

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@
1111
import java.util.Collections;
1212
import java.util.List;
1313

14-
import static org.junit.jupiter.api.Assertions.*;
14+
import static org.junit.jupiter.api.Assertions.assertEquals;
15+
import static org.junit.jupiter.api.Assertions.assertThrows;
1516

16-
public class SummariesTests extends AbstractAnalyticsProviderTest {
17+
@SuppressWarnings("resource")
18+
class SummariesTests extends AbstractAnalyticsProviderTest {
1719

1820

1921
//run against running env just for local test
@@ -30,7 +32,7 @@ public void getSummariesTemp() {
3032

3133

3234
@Test
33-
public void getSummaries() throws JsonProcessingException {
35+
void getSummaries() throws JsonProcessingException {
3436

3537
String codeObjectId = "Sample.MoneyTransfer.API.Controllers.TransferController$_$TransferFunds";
3638
List<ExecutedCodeSummary> executedCodeSummaries = new ArrayList<>();
@@ -49,12 +51,12 @@ public void getSummaries() throws JsonProcessingException {
4951
assertEquals(1, summariesResult.size());
5052
assertEquals(MethodCodeObjectSummary.class, summariesResult.get(0).getClass());
5153
MethodCodeObjectSummary methodCodeObjectSummary = (MethodCodeObjectSummary) summariesResult.get(0);
52-
assertEquals(methodCodeObjectSummary.getType(), CodeObjectSummaryType.MethodSummary);
53-
assertTrue(expectedCodeObjectSummary.equals(methodCodeObjectSummary));
54+
assertEquals(CodeObjectSummaryType.MethodSummary, methodCodeObjectSummary.getType());
55+
assertEquals(expectedCodeObjectSummary, methodCodeObjectSummary);
5456
}
5557

5658
@Test
57-
public void getMultipleSummaries() throws JsonProcessingException {
59+
void getMultipleSummaries() throws JsonProcessingException {
5860

5961
String codeObjectId = "Sample.MoneyTransfer.API.Controllers.TransferController$_$TransferFunds";
6062
List<ExecutedCodeSummary> executedCodeSummaries = new ArrayList<>();
@@ -79,17 +81,17 @@ public void getMultipleSummaries() throws JsonProcessingException {
7981
assertEquals(MethodCodeObjectSummary.class, summariesResult.get(0).getClass());
8082
assertEquals(SpanCodeObjectSummary.class, summariesResult.get(1).getClass());
8183
MethodCodeObjectSummary methodCodeObjectSummary = (MethodCodeObjectSummary) summariesResult.get(0);
82-
assertEquals(methodCodeObjectSummary.getType(), CodeObjectSummaryType.MethodSummary);
83-
assertTrue(expectedMethodCodeObjectSummary.equals(methodCodeObjectSummary));
84+
assertEquals(CodeObjectSummaryType.MethodSummary, methodCodeObjectSummary.getType());
85+
assertEquals(expectedMethodCodeObjectSummary, methodCodeObjectSummary);
8486

8587
SpanCodeObjectSummary spanCodeObjectSummary = (SpanCodeObjectSummary) summariesResult.get(1);
86-
assertEquals(spanCodeObjectSummary.getType(), CodeObjectSummaryType.SpanSummary);
87-
assertTrue(spanCodeObjectSummary.equals(expectedSpanCodeObjectSummary));
88+
assertEquals(CodeObjectSummaryType.SpanSummary, spanCodeObjectSummary.getType());
89+
assertEquals(spanCodeObjectSummary, expectedSpanCodeObjectSummary);
8890
}
8991

9092

9193
@Test
92-
public void getSummariesEmptyResultTest() throws JsonProcessingException {
94+
void getSummariesEmptyResultTest() throws JsonProcessingException {
9395

9496
mockBackEnd.enqueue(new MockResponse()
9597
.setBody(objectMapper.writeValueAsString(Collections.emptyList()))
@@ -103,22 +105,22 @@ public void getSummariesEmptyResultTest() throws JsonProcessingException {
103105
}
104106

105107
@Test
106-
public void getSummariesNullResultTest() {
108+
void getSummariesNullResultTest() {
107109

108110
mockBackEnd.enqueue(new MockResponse()
109111
.addHeader("Content-Type", "application/json"));
110112

111113
AnalyticsProviderException exception = assertThrows(AnalyticsProviderException.class, () -> {
112114
CodeObjectSummaryRequest summaryRequest = new CodeObjectSummaryRequest("myenv", Collections.singletonList("nonexistingid"));
113115
AnalyticsProvider restAnalyticsProvider = new RestAnalyticsProvider(baseUrl);
114-
List<CodeObjectSummary> summariesResult = restAnalyticsProvider.getSummaries(summaryRequest);
116+
restAnalyticsProvider.getSummaries(summaryRequest);
115117
});
116118

117119
assertEquals(MismatchedInputException.class, exception.getCause().getClass());
118120
}
119121

120122
@Test
121-
public void getSummariesErrorResultTest() {
123+
void getSummariesErrorResultTest() {
122124

123125
mockBackEnd.enqueue(new MockResponse()
124126
.setResponseCode(500)
@@ -135,7 +137,7 @@ public void getSummariesErrorResultTest() {
135137

136138

137139
@Test
138-
public void getSummariesWrongResultTest() throws JsonProcessingException {
140+
void getSummariesWrongResultTest() throws JsonProcessingException {
139141

140142
mockBackEnd.enqueue(new MockResponse()
141143
.setBody(objectMapper.writeValueAsString("mystring"))

analytics-provider/src/test/java/org/digma/intellij/plugin/analytics/UsageStatusTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
import java.util.ArrayList;
88
import java.util.List;
99

10-
public class UsageStatusTests extends AbstractAnalyticsProviderTest {
10+
@SuppressWarnings("resource")
11+
class UsageStatusTests extends AbstractAnalyticsProviderTest {
1112

1213
//run against running env just for local test
1314
//@Test
@@ -25,6 +26,6 @@ public void getUsageStatusTemp() {
2526
}
2627

2728
@Test
28-
public void doNothing() {
29+
void doNothing() {
2930
}
3031
}

analytics-provider/src/test/java/org/digma/intellij/plugin/analytics/UtilForTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@ private UtilForTest() {
1212

1313
public static String loadTextFile(String path) {
1414
try (var inputStream = UtilForTest.class.getResourceAsStream(path)) {
15-
return new String(inputStream.readAllBytes());
15+
if (inputStream != null) {
16+
return new String(inputStream.readAllBytes());
17+
}
18+
return "";
1619
} catch (IOException e) {
1720
throw new RuntimeException(e);
1821
}

0 commit comments

Comments
 (0)