< prev index next >

test/hotspot/jtreg/serviceability/jvmti/HeapMonitor/MyPackage/HeapMonitorStatRateTest.java

Print this page
rev 49267 : [mq]: event5
rev 49268 : [mq]: event6
rev 49269 : [mq]: event7


  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 }
< prev index next >