import org.gridkit.jvmtool.win32.SjkWinHelper;
import org.junit.Test;
public class SjkWinHelperCheck {
@Test
public void cpu_by_pid() throws Throwable {
try {
//SjkWinHelper.main(new String[0]);
SjkWinHelper helper = new SjkWinHelper();
long[] buf = new long[2];
int pid = 10048;
for(int i = 0; i != 10; ++i) {
if (helper.getProcessCpuTimes(pid, buf)) {
System.out.println("Proc [" + pid + "] kernel: " + toSec(buf[0]) + " user: " + toSec(buf[1]));
}
else {
System.out.println("Proc [" + pid + "] - no data");
}
System.out.println("Proc [" + pid + "] CC " + helper.getProcessCpuCycles(pid));
Thread.sleep(500);
}
}
catch(Throwable e) {
e.printStackTrace();
throw e;
}
}
@Test
public void cpu_by_tid() throws Throwable {
try {
//SjkWinHelper.main(new String[0]);
SjkWinHelper helper = new SjkWinHelper();
long[] buf = new long[2];
int pid = 3164;
for(int i = 0; i != 10; ++i) {
if (helper.getThreadCpuTimes(pid, buf)) {
System.out.println("Thread [" + pid + "] kernel: " + toSec(buf[0]) + " user: " + toSec(buf[1]));
}
else {
System.out.println("Thread [" + pid + "] - no data");
}
System.out.println("Thread [" + pid + "] CC " + helper.getThreadCpuCycles(pid));
Thread.sleep(500);
}
}
catch(Throwable e) {
e.printStackTrace();
throw e;
}
}
private String toSec(long us) {
return String.format("%f", us * 0.000001d);
}
@Test
public void enum_threads() {
SjkWinHelper helper = new SjkWinHelper();
int pid = 10048;
int[] threads = helper.enumThreads(pid);
System.out.println("PID " + pid + " threads " + threads.length);
for(int t : threads) {
System.out.println(" " + t);
}
}
}