1515import static com .microsoft .applicationinsights .smoketest .EnvironmentValue .TOMCAT_8_JAVA_8_OPENJ9 ;
1616import static com .microsoft .applicationinsights .smoketest .EnvironmentValue .WILDFLY_13_JAVA_8 ;
1717import static com .microsoft .applicationinsights .smoketest .EnvironmentValue .WILDFLY_13_JAVA_8_OPENJ9 ;
18- import static org .assertj .core .api .Assertions .assertThat ;
19-
20- import com .microsoft .applicationinsights .smoketest .schemav2 .DataPoint ;
21- import com .microsoft .applicationinsights .smoketest .schemav2 .Envelope ;
22- import com .microsoft .applicationinsights .smoketest .schemav2 .MetricData ;
23- import java .util .List ;
24- import java .util .Objects ;
25- import java .util .concurrent .TimeUnit ;
26- import java .util .function .Predicate ;
18+
2719import org .junit .jupiter .api .Test ;
2820import org .junit .jupiter .api .extension .RegisterExtension ;
2921
@@ -34,105 +26,31 @@ abstract class AutoPerfCountersTest {
3426
3527 @ Test
3628 @ TargetUri (value = "index.jsp" )
37- void testPerformanceCounterData () throws Exception {
38- System .out .println ("Waiting for performance data..." );
39- long start = System .currentTimeMillis ();
40-
41- int timeout = 10 ;
42-
43- Envelope availableMem =
44- testing .mockedIngestion .waitForItem (
45- getPerfMetricPredicate ("\\ Memory\\ Available Bytes" ), timeout , TimeUnit .SECONDS );
46- Envelope totalCpu =
47- testing .mockedIngestion .waitForItem (
48- getPerfMetricPredicate ("\\ Processor(_Total)\\ % Processor Time" ),
49- timeout ,
50- TimeUnit .SECONDS );
51-
52- Envelope processIo =
53- testing .mockedIngestion .waitForItem (
54- getPerfMetricPredicate ("\\ Process(??APP_WIN32_PROC??)\\ IO Data Bytes/sec" ),
55- timeout ,
56- TimeUnit .SECONDS );
57- Envelope processMemUsed =
58- testing .mockedIngestion .waitForItem (
59- getPerfMetricPredicate ("\\ Process(??APP_WIN32_PROC??)\\ Private Bytes" ),
60- timeout ,
61- TimeUnit .SECONDS );
62- Envelope processCpu =
63- testing .mockedIngestion .waitForItem (
64- getPerfMetricPredicate ("\\ Process(??APP_WIN32_PROC??)\\ % Processor Time" ),
65- timeout ,
66- TimeUnit .SECONDS );
67- Envelope processCpuNormalized =
68- testing .mockedIngestion .waitForItem (
69- getPerfMetricPredicate ("\\ Process(??APP_WIN32_PROC??)\\ % Processor Time Normalized" ),
70- timeout ,
71- TimeUnit .SECONDS );
72- System .out .println ("PerformanceCounterData are good: " + (System .currentTimeMillis () - start ));
73-
74- MetricData metricMem = SmokeTestExtension .getBaseData (availableMem );
75- assertPerfMetric (metricMem );
76- assertThat (metricMem .getMetrics ().get (0 ).getName ()).isEqualTo ("\\ Memory\\ Available Bytes" );
77-
78- MetricData pdCpu = SmokeTestExtension .getBaseData (totalCpu );
79- assertPerfMetric (pdCpu );
80- assertThat (pdCpu .getMetrics ().get (0 ).getName ())
81- .isEqualTo ("\\ Processor(_Total)\\ % Processor Time" );
82-
83- assertPerfMetric (SmokeTestExtension .getBaseData (processIo ));
84- assertPerfMetric (SmokeTestExtension .getBaseData (processMemUsed ));
85- assertPerfMetric (SmokeTestExtension .getBaseData (processCpu ));
86- assertPerfMetric (SmokeTestExtension .getBaseData (processCpuNormalized ));
87-
88- start = System .currentTimeMillis ();
89- System .out .println ("Waiting for metric data..." );
90- Envelope deadlocks =
91- testing .mockedIngestion .waitForItem (
92- getPerfMetricPredicate ("Suspected Deadlocked Threads" ), timeout , TimeUnit .SECONDS );
93- Envelope heapUsed =
94- testing .mockedIngestion .waitForItem (
95- getPerfMetricPredicate ("Heap Memory Used (MB)" ), timeout , TimeUnit .SECONDS );
96- Envelope gcTotalCount =
97- testing .mockedIngestion .waitForItem (
98- getPerfMetricPredicate ("GC Total Count" ), timeout , TimeUnit .SECONDS );
99- Envelope gcTotalTime =
100- testing .mockedIngestion .waitForItem (
101- getPerfMetricPredicate ("GC Total Time" ), timeout , TimeUnit .SECONDS );
102- System .out .println ("MetricData are good: " + (System .currentTimeMillis () - start ));
103-
104- MetricData mdDeadlocks = SmokeTestExtension .getBaseData (deadlocks );
105- assertPerfMetric (mdDeadlocks );
106- assertThat (mdDeadlocks .getMetrics ().get (0 ).getValue ()).isEqualTo (0 );
107-
108- MetricData mdHeapUsed = SmokeTestExtension .getBaseData (heapUsed );
109- assertPerfMetric (mdHeapUsed );
110- assertThat (mdHeapUsed .getMetrics ().get (0 ).getValue ()).isGreaterThan (0 );
111-
112- MetricData mdGcTotalCount = SmokeTestExtension .getBaseData (gcTotalCount );
113- assertPerfMetric (mdGcTotalCount );
114-
115- MetricData mdGcTotalTime = SmokeTestExtension .getBaseData (gcTotalTime );
116- assertPerfMetric (mdGcTotalTime );
117- }
29+ void testPerformanceCounterData () {
11830
119- private void assertPerfMetric (MetricData perfMetric ) {
120- List <DataPoint > metrics = perfMetric .getMetrics ();
121- assertThat (metrics ).hasSize (1 );
122- }
31+ testing .waitAndAssertMetric ("\\ Memory\\ Available Bytes" , MetricAssert ::hasValueGreaterThanZero );
32+
33+ testing .waitAndAssertMetric (
34+ "\\ Processor(_Total)\\ % Processor Time" , MetricAssert ::hasValueGreaterThanZero );
35+
36+ testing .waitAndAssertMetric ("\\ Process(??APP_WIN32_PROC??)\\ IO Data Bytes/sec" , metric -> {});
37+
38+ testing .waitAndAssertMetric (
39+ "\\ Process(??APP_WIN32_PROC??)\\ Private Bytes" , MetricAssert ::hasValueGreaterThanZero );
40+
41+ testing .waitAndAssertMetric (
42+ "\\ Process(??APP_WIN32_PROC??)\\ % Processor Time" , MetricAssert ::hasValueGreaterThanZero );
43+
44+ testing .waitAndAssertMetric (
45+ "\\ Process(??APP_WIN32_PROC??)\\ % Processor Time Normalized" ,
46+ MetricAssert ::hasValueGreaterThanZero );
47+
48+ testing .waitAndAssertMetric ("Suspected Deadlocked Threads" , metric -> metric .hasValue (0 ));
49+
50+ testing .waitAndAssertMetric ("Heap Memory Used (MB)" , MetricAssert ::hasValueGreaterThanZero );
12351
124- private static Predicate <Envelope > getPerfMetricPredicate (String name ) {
125- Objects .requireNonNull (name , "name" );
126- return new Predicate <Envelope >() {
127- @ Override
128- public boolean test (Envelope input ) {
129- if (!input .getData ().getBaseType ().equals ("MetricData" )) {
130- return false ;
131- }
132- MetricData md = SmokeTestExtension .getBaseData (input );
133- return name .equals (md .getMetrics ().get (0 ).getName ());
134- }
135- };
52+ testing .waitAndAssertMetric ("GC Total Count" , metric -> {});
53+ testing .waitAndAssertMetric ("GC Total Time" , metric -> {});
13654 }
13755
13856 @ Environment (TOMCAT_8_JAVA_8 )
0 commit comments