Skip to content

Commit 623e167

Browse files
committed
make sure we error out when CRT result is smaller than netty
1 parent db37f9a commit 623e167

4 files changed

Lines changed: 50 additions & 19 deletions

File tree

.builder/actions/localhost_canary.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ def run(self, env):
1010
actions = [
1111
"mvn install -DskipTests",
1212
"cd ./samples/HttpClientCanary && mvn install",
13-
"cd ./samples/HttpClientCanary && mvn exec:exec@netty exec:exec@crt"
13+
"cd ./samples/HttpClientCanary && mvn exec:exec@netty",
14+
"cd ./samples/HttpClientCanary && mvn exec:exec@crt"
1415
]
1516

1617
return Builder.Script(actions, name='aws-crt-java-test')

samples/HttpClientCanary/src/main/java/com/canary/CanaryUtils.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,13 @@ public static double calculateSTD(ArrayList<Double> list) {
5454
return Math.sqrt(variance);
5555
}
5656

57-
public static void printResult(ArrayList<Double> list) {
57+
/* Return avg of the list and print out the avg and std */
58+
public static double printResult(ArrayList<Double> list) {
5859
double avg = calculateAverage(list);
5960
double std = calculateSTD(list);
6061
System.out.println("Result collected has: " + list.size());
6162
System.out.println("avg of all samples: " + avg);
6263
System.out.println("Standard deviation of all samples: " + std);
64+
return avg;
6365
}
6466
}

samples/HttpClientCanary/src/main/java/com/canary/Http2StreamManagerCanary.java

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public class Http2StreamManagerCanary {
4848
private int maxStreams = 100;
4949
private int maxConnections = 50;
5050
private int batchNum;
51+
private String nettyResultPath;
5152

5253
private Http2StreamManager createStreamManager(URI uri, int numConnections) {
5354

@@ -65,7 +66,7 @@ private Http2StreamManager createStreamManager(URI uri, int numConnections) {
6566
.withSocketOptions(sockOpts)
6667
.withUri(uri)
6768
.withMaxConnections(numConnections);
68-
if(useTls) {
69+
if (useTls) {
6970
connectionManagerOptions.withTlsContext(tlsContext);
7071
} else {
7172
options.withPriorKnowledge(true);
@@ -165,7 +166,7 @@ public void onResponseComplete(HttpStreamBase stream, int errorCode) {
165166

166167
opts.incrementAndGet();
167168
int requestCompletedNum = requestCompleted.incrementAndGet();
168-
if(requestCompletedNum == concurrentNum) {
169+
if (requestCompletedNum == concurrentNum) {
169170
requestCompleteFuture.complete(null);
170171
}
171172
}
@@ -180,34 +181,53 @@ private void runCanary(int warmupLoops, int loops, long timerSecs) throws Except
180181
ArrayList<Double> warmupResults = new ArrayList<>();
181182
ArrayList<Double> results = new ArrayList<>();
182183
AtomicInteger streamFailed = new AtomicInteger(0);
183-
// Log.initLoggingToFile(Log.LogLevel.Error, "errorlog.txt");
184184

185-
System.out.println("batchNum: "+ this.batchNum);
186-
System.out.println("maxStreams: "+ this.maxStreams);
187-
System.out.println("maxConnections: "+ this.maxConnections);
185+
System.out.println("batchNum: " + this.batchNum);
186+
System.out.println("maxStreams: " + this.maxStreams);
187+
System.out.println("maxConnections: " + this.maxConnections);
188188
try (Http2StreamManager streamManager = createStreamManager(uri, this.maxConnections)) {
189189
AtomicInteger opts = new AtomicInteger(0);
190190
AtomicBoolean done = new AtomicBoolean(false);
191-
ScheduledExecutorService scheduler = createDataCollector(warmupLoops, loops, timerSecs, opts, done, warmupResults, results);
191+
ScheduledExecutorService scheduler = createDataCollector(warmupLoops, loops, timerSecs, opts, done,
192+
warmupResults, results);
192193
concurrentRequests(streamManager, batchNum, streamFailed, opts, done);
193194
scheduler.shutdown();
194195
}
195196
System.out.println("Failed request num: " + streamFailed.get());
196197
System.out.println("////////////// warmup results //////////////");
197198
printResult(warmupResults);
198199
System.out.println("////////////// real results //////////////");
199-
printResult(results);
200+
double avg_result = printResult(results);
201+
BufferedReader reader = new BufferedReader(new FileReader(nettyResultPath));
202+
StringBuilder stringBuilder = new StringBuilder();
203+
String line = null;
204+
while ((line = reader.readLine()) != null) {
205+
stringBuilder.append(line);
206+
}
207+
reader.close();
208+
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
209+
String content = stringBuilder.toString();
210+
double netty_result = Double.parseDouble(content);
211+
if (avg_result < netty_result) {
212+
System.out.println("CRT result is smaller than netty. CRT: " + avg_result + " Netty: " + netty_result);
213+
System.exit(-1);
214+
}
215+
200216
CrtResource.logNativeResources();
201217
CrtResource.waitForNoResources();
218+
202219
}
203220

204221
public static void main(String[] args) throws Exception {
205222
System.out.println("Current JVM version - " + System.getProperty("java.version"));
206-
/* TODO: make all those number configurable */
223+
207224
Http2StreamManagerCanary canary = new Http2StreamManagerCanary();
208-
canary.uri = new URI("https://localhost:8443/echo");
209-
canary.maxConnections = 8;
210-
canary.maxStreams = 20;
225+
226+
canary.uri = new URI(System.getProperty("aws.crt.http.canary.uri", "https://localhost:8443/echo"));
227+
canary.maxConnections = Integer.parseInt(System.getProperty("aws.crt.http.canary.maxConnections", "8"));
228+
canary.maxStreams = Integer.parseInt(System.getProperty("aws.crt.http.canary.maxStreams", "20"));
229+
canary.nettyResultPath = System.getProperty("aws.crt.http.canary.nettyResultPath", "netty_result.txt");
230+
211231
canary.batchNum = canary.maxStreams * canary.maxConnections;
212232
canary.runCanary(5, 5, 30);
213233
}

samples/HttpClientCanary/src/main/java/com/canary/SDKNettyClientCanary.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import software.amazon.awssdk.utils.AttributeMap;
1414
import software.amazon.awssdk.http.nio.netty.Http2Configuration;
1515

16+
import java.io.BufferedWriter;
17+
import java.io.FileWriter;
1618
import java.net.URI;
1719
import java.nio.ByteBuffer;
1820
import java.util.ArrayList;
@@ -31,6 +33,7 @@ public class SDKNettyClientCanary {
3133
private int batchNum;
3234
private int maxStreams = 100;
3335
private int maxConnections = 50;
36+
private String nettyResultPath;
3437

3538
public static AttributeMap.Builder trustAllTlsAttributeMapBuilder() {
3639
return AttributeMap.builder().put(TRUST_ALL_CERTIFICATES, true);
@@ -145,15 +148,20 @@ private void runCanary(int warmupLoops, int loops, long timerSecs) throws Except
145148
System.out.println("////////////// warmup results //////////////");
146149
printResult(warmupResults);
147150
System.out.println("////////////// real results //////////////");
148-
printResult(results);
151+
double avg_result = printResult(results);
152+
BufferedWriter writer = new BufferedWriter(new FileWriter(this.nettyResultPath, false));
153+
writer.append(Double.toString(avg_result));
154+
writer.close();
149155
}
150156

151157
public static void main(String[] args) throws Exception {
152158
SDKNettyClientCanary canary = new SDKNettyClientCanary();
153-
/* TODO: make all those number configurable */
154-
canary.uri = new URI("https://localhost:8443/echo");
155-
canary.maxConnections = 8;
156-
canary.maxStreams = 20;
159+
160+
canary.uri = new URI(System.getProperty("aws.crt.http.canary.uri", "https://localhost:8443/echo"));
161+
canary.maxConnections = Integer.parseInt(System.getProperty("aws.crt.http.canary.maxConnections", "8"));
162+
canary.maxStreams = Integer.parseInt(System.getProperty("aws.crt.http.canary.maxStreams", "20"));
163+
canary.nettyResultPath = System.getProperty("aws.crt.http.canary.nettyResultPath", "netty_result.txt");
164+
157165
canary.batchNum = canary.maxStreams * canary.maxConnections;
158166
canary.runCanary(5, 5, 30);
159167
}

0 commit comments

Comments
 (0)