Skip to content

Commit efa85f8

Browse files
committed
Convert ProfilerConfiguration
1 parent a716f90 commit efa85f8

File tree

4 files changed

+119
-60
lines changed

4 files changed

+119
-60
lines changed

agent/agent-profiler/agent-diagnostics/src/main/java/com/microsoft/applicationinsights/diagnostics/appinsights/CodeOptimizerDiagnosticEngineJfr.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ private static void emitMachineStats() {
144144
machineStats.commit();
145145
}
146146

147+
@SuppressWarnings("DefaultCharset")
147148
private static void emitAlertBreachJfrEvent(AlertBreach alert) {
148149
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
149150
JsonWriter writer = JsonProviders.createWriter(outputStream)) {

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/profiler/config/ProfilerConfiguration.java

Lines changed: 85 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,26 @@
33

44
package com.microsoft.applicationinsights.agent.internal.profiler.config;
55

6+
import com.azure.json.JsonSerializable;
7+
import com.azure.json.JsonWriter;
68
import com.fasterxml.jackson.databind.util.StdDateFormat;
7-
import com.google.auto.value.AutoValue;
89
import com.microsoft.applicationinsights.alerting.aiconfig.AlertingConfig;
10+
import java.io.IOException;
911
import java.text.ParseException;
1012
import java.util.Date;
1113
import java.util.List;
1214
import javax.annotation.Nullable;
1315

14-
@AutoValue
15-
public abstract class ProfilerConfiguration {
16+
public class ProfilerConfiguration implements JsonSerializable<ProfilerConfiguration> {
1617

1718
public static final Date DEFAULT_DATE;
19+
private Date lastModified;
20+
private boolean enabled;
21+
private String collectionPlan;
22+
private String cpuTriggerConfiguration;
23+
private String memoryTriggerConfiguration;
24+
private String defaultConfiguration;
25+
private List<AlertingConfig.RequestTrigger> requestTriggerConfiguration;
1826

1927
static {
2028
Date defaultDate;
@@ -27,45 +35,94 @@ public abstract class ProfilerConfiguration {
2735
DEFAULT_DATE = defaultDate;
2836
}
2937

30-
public static ProfilerConfiguration create(
31-
Date lastModified,
32-
boolean enabled,
33-
String collectionPlan,
34-
String cpuTriggerConfiguration,
35-
String memoryTriggerConfiguration,
36-
String defaultConfiguration,
37-
List<AlertingConfig.RequestTrigger> requestTriggerConfiguration) {
38+
public boolean hasBeenConfigured() {
39+
return getLastModified().compareTo(DEFAULT_DATE) != 0;
40+
}
3841

39-
return new AutoValue_ProfilerConfiguration(
40-
lastModified,
41-
enabled,
42-
collectionPlan,
43-
cpuTriggerConfiguration,
44-
memoryTriggerConfiguration,
45-
defaultConfiguration,
46-
requestTriggerConfiguration);
42+
public Date getLastModified() {
43+
return lastModified;
4744
}
4845

49-
public boolean hasBeenConfigured() {
50-
return getLastModified().compareTo(DEFAULT_DATE) != 0;
46+
public ProfilerConfiguration setLastModified(Date lastModified) {
47+
this.lastModified = lastModified;
48+
return this;
5149
}
5250

53-
public abstract Date getLastModified();
51+
public boolean isEnabled() {
52+
return enabled;
53+
}
5454

55-
public abstract boolean isEnabled();
55+
public ProfilerConfiguration setEnabled(boolean enabled) {
56+
this.enabled = enabled;
57+
return this;
58+
}
5659

5760
@Nullable
58-
public abstract String getCollectionPlan();
61+
public String getCollectionPlan() {
62+
return collectionPlan;
63+
}
64+
65+
public ProfilerConfiguration setCollectionPlan(String collectionPlan) {
66+
this.collectionPlan = collectionPlan;
67+
return this;
68+
}
5969

6070
@Nullable
61-
public abstract String getCpuTriggerConfiguration();
71+
public String getCpuTriggerConfiguration() {
72+
return cpuTriggerConfiguration;
73+
}
74+
75+
public ProfilerConfiguration setCpuTriggerConfiguration(String cpuTriggerConfiguration) {
76+
this.cpuTriggerConfiguration = cpuTriggerConfiguration;
77+
return this;
78+
}
6279

6380
@Nullable
64-
public abstract String getMemoryTriggerConfiguration();
81+
public String getMemoryTriggerConfiguration() {
82+
return memoryTriggerConfiguration;
83+
}
84+
85+
public ProfilerConfiguration setMemoryTriggerConfiguration(String memoryTriggerConfiguration) {
86+
this.memoryTriggerConfiguration = memoryTriggerConfiguration;
87+
return this;
88+
}
6589

6690
@Nullable
67-
public abstract String getDefaultConfiguration();
91+
public String getDefaultConfiguration() {
92+
return defaultConfiguration;
93+
}
94+
95+
public ProfilerConfiguration setDefaultConfiguration(String defaultConfiguration) {
96+
this.defaultConfiguration = defaultConfiguration;
97+
return this;
98+
}
6899

69100
@Nullable
70-
public abstract List<AlertingConfig.RequestTrigger> getRequestTriggerConfiguration();
101+
public List<AlertingConfig.RequestTrigger> getRequestTriggerConfiguration() {
102+
return requestTriggerConfiguration;
103+
}
104+
105+
public ProfilerConfiguration setRequestTriggerConfiguration(
106+
List<AlertingConfig.RequestTrigger> requestTriggerConfiguration) {
107+
this.requestTriggerConfiguration = requestTriggerConfiguration;
108+
return this;
109+
}
110+
111+
@Override
112+
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
113+
jsonWriter.writeStartObject();
114+
jsonWriter.writeLongField("lastModified", lastModified.getTime());
115+
jsonWriter.writeBooleanField("enabled", enabled);
116+
jsonWriter.writeStringField("collectionPlan", collectionPlan);
117+
jsonWriter.writeStringField("cpuTriggerConfiguration", cpuTriggerConfiguration);
118+
jsonWriter.writeStringField("memoryTriggerConfiguration", memoryTriggerConfiguration);
119+
jsonWriter.writeStringField("defaultConfiguration", defaultConfiguration);
120+
jsonWriter.writeStartArray("requestTriggerConfiguration");
121+
for (AlertingConfig.RequestTrigger trigger : requestTriggerConfiguration) {
122+
trigger.toJson(jsonWriter);
123+
}
124+
jsonWriter.writeEndArray();
125+
jsonWriter.writeEndObject();
126+
return jsonWriter;
127+
}
71128
}

agent/agent-tooling/src/test/java/com/microsoft/applicationinsights/agent/internal/profiler/ProfilingInitializerTest.java

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -166,28 +166,28 @@ public Collection<DynamicTest> runTests() {
166166

167167
@NotNull
168168
private static ProfilerConfiguration unconfiguredState() {
169-
return ProfilerConfiguration.create(
170-
ProfilerConfiguration.DEFAULT_DATE,
171-
true,
172-
"",
173-
"--cpu-threshold 80 --cpu-trigger-profilingDuration 120 --cpu-trigger-cooldown 14400 --cpu-trigger-enabled true",
174-
"--memory-threshold 80 --memory-trigger-profilingDuration 120 --memory-trigger-cooldown 14400 --memory-trigger-enabled true",
175-
null,
176-
null);
169+
return new ProfilerConfiguration()
170+
.setLastModified(ProfilerConfiguration.DEFAULT_DATE)
171+
.setEnabled(true)
172+
.setCollectionPlan("")
173+
.setCpuTriggerConfiguration(
174+
"--cpu-threshold 80 --cpu-trigger-profilingDuration 120 --cpu-trigger-cooldown 14400 --cpu-trigger-enabled true")
175+
.setMemoryTriggerConfiguration(
176+
"--memory-threshold 80 --memory-trigger-profilingDuration 120 --memory-trigger-cooldown 14400 --memory-trigger-enabled true");
177177
}
178178

179179
@NotNull
180180
private static ProfilerConfiguration userConfiguredTriggersState(boolean triggersEnabled) {
181-
return ProfilerConfiguration.create(
182-
new Date(Instant.now().toEpochMilli()),
183-
true,
184-
"",
185-
"--cpu-threshold 80 --cpu-trigger-profilingDuration 120 --cpu-trigger-cooldown 14400 --cpu-trigger-enabled "
186-
+ triggersEnabled,
187-
"--memory-threshold 80 --memory-trigger-profilingDuration 120 --memory-trigger-cooldown 14400 --memory-trigger-enabled "
188-
+ triggersEnabled,
189-
null,
190-
null);
181+
return new ProfilerConfiguration()
182+
.setLastModified(new Date(Instant.now().toEpochMilli()))
183+
.setEnabled(true)
184+
.setCollectionPlan("")
185+
.setCpuTriggerConfiguration(
186+
"--cpu-threshold 80 --cpu-trigger-profilingDuration 120 --cpu-trigger-cooldown 14400 --cpu-trigger-enabled "
187+
+ triggersEnabled)
188+
.setMemoryTriggerConfiguration(
189+
"--memory-threshold 80 --memory-trigger-profilingDuration 120 --memory-trigger-cooldown 14400 --memory-trigger-enabled "
190+
+ triggersEnabled);
191191
}
192192

193193
@NotNull
@@ -200,18 +200,19 @@ private static ProfilerConfiguration profileNowState(
200200
expiration = Instant.now().plus(100, ChronoUnit.SECONDS);
201201
}
202202

203-
return ProfilerConfiguration.create(
204-
new Date(Instant.now().minus(10, ChronoUnit.SECONDS).toEpochMilli()),
205-
true,
206-
"--single --mode immediate --immediate-profiling-duration 120 --expiration "
207-
+ toBinaryDate(expiration)
208-
+ " --settings-moniker a-settings-moniker",
209-
"--cpu-threshold 80 --cpu-trigger-profilingDuration 120 --cpu-trigger-cooldown 14400 --cpu-trigger-enabled "
210-
+ triggersEnabled,
211-
"--memory-threshold 80 --memory-trigger-profilingDuration 120 --memory-trigger-cooldown 14400 --memory-trigger-enabled "
212-
+ triggersEnabled,
213-
null,
214-
null);
203+
return new ProfilerConfiguration()
204+
.setLastModified(new Date(Instant.now().minus(10, ChronoUnit.SECONDS).toEpochMilli()))
205+
.setEnabled(true)
206+
.setCollectionPlan(
207+
"--single --mode immediate --immediate-profiling-duration 120 --expiration "
208+
+ toBinaryDate(expiration)
209+
+ " --settings-moniker a-settings-moniker")
210+
.setCpuTriggerConfiguration(
211+
"--cpu-threshold 80 --cpu-trigger-profilingDuration 120 --cpu-trigger-cooldown 14400 --cpu-trigger-enabled "
212+
+ triggersEnabled)
213+
.setMemoryTriggerConfiguration(
214+
"--memory-threshold 80 --memory-trigger-profilingDuration 120 --memory-trigger-cooldown 14400 --memory-trigger-enabled "
215+
+ triggersEnabled);
215216
}
216217

217218
@SuppressWarnings("DirectInvocationOnMock")

agent/agent-tooling/src/test/java/com/microsoft/applicationinsights/agent/internal/profiler/config/ConfigServiceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import com.azure.core.http.HttpPipelineBuilder;
1212
import com.azure.core.test.TestBase;
1313
import com.azure.core.test.TestMode;
14-
import com.fasterxml.jackson.core.JsonParseException;
14+
import com.fasterxml.jackson.databind.exc.InvalidDefinitionException;
1515
import com.microsoft.applicationinsights.agent.internal.profiler.service.ServiceProfilerClient;
1616
import java.io.IOException;
1717
import java.net.MalformedURLException;
@@ -61,7 +61,7 @@ void badServiceResponseDoesNotProvideReturn() throws MalformedURLException {
6161
ConfigService configService = new ConfigService(serviceProfilerClient);
6262
Mono<ProfilerConfiguration> result = configService.pullSettings();
6363

64-
assertThatThrownBy(result::block).hasRootCauseInstanceOf(JsonParseException.class);
64+
assertThatThrownBy(result::block).hasRootCauseInstanceOf(InvalidDefinitionException.class);
6565
}
6666

6767
private HttpPipeline getHttpPipeline() {

0 commit comments

Comments
 (0)