|
1 | 1 | package spp.demo;
|
2 | 2 |
|
| 3 | +import com.codahale.metrics.ConsoleReporter; |
| 4 | +import com.codahale.metrics.MetricRegistry; |
| 5 | +import com.codahale.metrics.Timer; |
3 | 6 | import io.micronaut.runtime.Micronaut;
|
4 | 7 | import spp.demo.command.AddBreakpoint;
|
5 | 8 | import spp.demo.command.AddLog;
|
6 | 9 | import spp.demo.command.TailLogs;
|
7 | 10 |
|
8 | 11 | import java.net.HttpURLConnection;
|
| 12 | +import java.net.MalformedURLException; |
9 | 13 | import java.net.URL;
|
10 |
| -import java.util.Map; |
11 | 14 | import java.util.concurrent.Executor;
|
12 | 15 | import java.util.concurrent.Executors;
|
13 | 16 |
|
14 | 17 | public class Main {
|
15 | 18 |
|
16 | 19 | private static final Executor executor = Executors.newCachedThreadPool();
|
| 20 | + private static final MetricRegistry metricRegistry = new MetricRegistry(); |
17 | 21 |
|
18 | 22 | public static void main(String[] args) throws Exception {
|
19 | 23 | Micronaut.run(Main.class, args);
|
20 | 24 |
|
| 25 | + ConsoleReporter reporter = ConsoleReporter.forRegistry(metricRegistry).build(); |
| 26 | + |
21 | 27 | while (true) {
|
22 | 28 | executeDemos();
|
23 | 29 | Thread.sleep(1000);
|
24 | 30 |
|
25 |
| - Map<Thread, StackTraceElement[]> threads = Thread.getAllStackTraces(); |
26 |
| - for (Map.Entry<Thread, StackTraceElement[]> entry : threads.entrySet()) { |
27 |
| - Thread thread = entry.getKey(); |
28 |
| - StackTraceElement[] stackTraceElements = entry.getValue(); |
29 |
| - System.out.println("Thread: " + thread.getName()); |
30 |
| - for (StackTraceElement stackTraceElement : stackTraceElements) { |
31 |
| - System.out.println(" " + stackTraceElement); |
32 |
| - } |
33 |
| - } |
| 31 | + reporter.report(); |
34 | 32 |
|
35 | 33 | int threadCount = Thread.activeCount();
|
36 | 34 | System.out.println("Thread count: " + threadCount);
|
@@ -92,15 +90,27 @@ public static void triggerEndpoints() {
|
92 | 90 | }
|
93 | 91 |
|
94 | 92 | private static void callEndpoint(String endpoint) {
|
| 93 | + Timer.Context timer = metricRegistry.timer(endpoint).time(); |
| 94 | + URL url; |
| 95 | + try { |
| 96 | + url = new URL("http://localhost:8080" + endpoint); |
| 97 | + } catch (MalformedURLException e) { |
| 98 | + throw new RuntimeException(e); |
| 99 | + } |
| 100 | + |
95 | 101 | executor.execute(() -> {
|
| 102 | + HttpURLConnection connection = null; |
96 | 103 | try {
|
97 |
| - URL url = new URL("http://localhost:8080" + endpoint); |
98 |
| - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); |
| 104 | + connection = (HttpURLConnection) url.openConnection(); |
99 | 105 | connection.setConnectTimeout(5000);
|
100 | 106 | connection.setReadTimeout(5000);
|
101 | 107 | connection.getResponseCode();
|
102 |
| - connection.disconnect(); |
103 | 108 | } catch (Exception ignore) {
|
| 109 | + } finally { |
| 110 | + if (connection != null) { |
| 111 | + connection.disconnect(); |
| 112 | + } |
| 113 | + timer.close(); |
104 | 114 | }
|
105 | 115 | });
|
106 | 116 | }
|
|
0 commit comments