21 * questions.
22 */
23
24 package MyPackage;
25
26 /**
27 * @test
28 * @summary Verifies the JVMTI Heap Monitor sampling rate average
29 * @build Frame HeapMonitor
30 * @compile HeapMonitorStatRateTest.java
31 * @run main/othervm/native -agentlib:HeapMonitor MyPackage.HeapMonitorStatRateTest
32 */
33
34 public class HeapMonitorStatRateTest {
35
36 private native static double getAverageRate();
37
38 public static void main(String[] args) {
39 int[] tab = {1024, 16384, 524288};
40
41 HeapMonitor.enableSamplingEvents();
42
43 for (int rateIdx = 0; rateIdx < tab.length; rateIdx++) {
44 int rate = tab[rateIdx];
45
46 HeapMonitor.resetEventStorage();
47 HeapMonitor.setSamplingRate(rate);
48
49 int allocationTotal = 512 * 1024 * 1024;
50 HeapMonitor.allocateSize(allocationTotal);
51
52 HeapMonitor.setSamplingRate(0);
53
54 double actualCount = HeapMonitor.getEventStorageElementCount();
55 double expectedCount = allocationTotal / rate;
56
57 double error = Math.abs(actualCount - expectedCount);
58 double errorPercentage = error / expectedCount * 100;
59
60 if (errorPercentage > 10) {
61 throw new RuntimeException("Rate average over 10% for rate " + rate + " -> " + actualCount
62 + ", " + expectedCount);
63 }
64 }
65 }
66 }
|
21 * questions.
22 */
23
24 package MyPackage;
25
26 /**
27 * @test
28 * @summary Verifies the JVMTI Heap Monitor sampling rate average
29 * @build Frame HeapMonitor
30 * @compile HeapMonitorStatRateTest.java
31 * @run main/othervm/native -agentlib:HeapMonitor MyPackage.HeapMonitorStatRateTest
32 */
33
34 public class HeapMonitorStatRateTest {
35
36 private native static double getAverageRate();
37
38 public static void main(String[] args) {
39 int[] tab = {1024, 16384, 524288};
40
41 for (int rateIdx = 0; rateIdx < tab.length; rateIdx++) {
42 int rate = tab[rateIdx];
43
44 HeapMonitor.resetEventStorage();
45 HeapMonitor.setSamplingRate(rate);
46
47 HeapMonitor.enableSamplingEvents();
48
49 int allocationTotal = 512 * 1024 * 1024;
50 HeapMonitor.allocateSize(allocationTotal);
51
52 HeapMonitor.disableSamplingEvents();
53
54 double actualCount = HeapMonitor.getEventStorageElementCount();
55 double expectedCount = allocationTotal / rate;
56
57 double error = Math.abs(actualCount - expectedCount);
58 double errorPercentage = error / expectedCount * 100;
59
60 if (errorPercentage > 10) {
61 throw new RuntimeException("Rate average over 10% for rate " + rate + " -> " + actualCount
62 + ", " + expectedCount);
63 }
64 }
65 }
66 }
|