package com.alibaba.druid.bvt.support.profile;
import org.junit.Assert;
import junit.framework.TestCase;
import com.alibaba.druid.support.profile.ProfileEntryKey;
import com.alibaba.druid.support.profile.ProfileEntryReqStat;
import com.alibaba.druid.support.profile.Profiler;
public class ProfilerTest extends TestCase {
public void test_profile() throws Exception {
for (int i = 0; i < 10; ++i) {
req();
}
}
private void req() {
Profiler.initLocal();
Profiler.enter("/", Profiler.PROFILE_TYPE_WEB);
for (int i = 0; i < 100; ++i) {
execA();
}
Assert.assertEquals(2, Profiler.getStatsMap().size());
{
ProfileEntryReqStat stat = Profiler.getStatsMap().get(new ProfileEntryKey("/", "com.xxx.a(int)",
Profiler.PROFILE_TYPE_SPRING));
Assert.assertEquals(100, stat.getExecuteCount());
Assert.assertEquals(100, stat.getExecuteTimeNanos());
}
{
ProfileEntryReqStat stat = Profiler.getStatsMap().get(new ProfileEntryKey("com.xxx.a(int)",
"com.xxx.b(int)",
Profiler.PROFILE_TYPE_SPRING));
Assert.assertEquals(1000 * 100, stat.getExecuteCount());
Assert.assertEquals(1000 * 100, stat.getExecuteTimeNanos());
}
Profiler.release(1);
Assert.assertEquals(3, Profiler.getStatsMap().size());
Profiler.removeLocal();
}
private void execA() {
Profiler.enter("com.xxx.a(int)", Profiler.PROFILE_TYPE_SPRING);
for (int i = 0; i < 1000; ++i) {
execB();
}
Profiler.release(1);
}
private void execB() {
Profiler.enter("com.xxx.b(int)", Profiler.PROFILE_TYPE_SPRING);
Profiler.release(1);
}
}