package com.jsonde.profiler;
import com.jsonde.api.methodCall.MethodCallDto;
import com.jsonde.api.methodCall.MethodCallSummaryDto;
import junit.framework.TestCase;
import java.util.ArrayList;
import java.util.List;
public class ThreadLocalProfilerTest extends TestCase {
private class TestProfiler extends ProfilerImpl {
int processCalled;
List<MethodCallDto> methodCallDtos;
@Override
protected void processMethodCall(List<MethodCallDto> methodCallDtos, MethodCallSummaryDto methodCallSummaryDto, boolean complete) {
processCalled++;
this.methodCallDtos = new ArrayList<MethodCallDto>(methodCallDtos);
}
}
public void testThreadLocalProfiler() throws Exception {
TestProfiler testProfiler = new TestProfiler();
ThreadLocalProfiler tlp = new ThreadLocalProfiler(testProfiler);
tlp.enterMethodImpl(1, null, null);
tlp.enterMethodImpl(2, null, null);
tlp.enterMethodImpl(3, null, null);
tlp.leaveMethodImpl(false, false, null);
tlp.leaveMethodImpl(false, false, null);
tlp.enterMethodImpl(2, null, null);
tlp.leaveMethodImpl(false, false, null);
tlp.enterMethodImpl(2, null, null);
tlp.leaveMethodImpl(false, false, null);
tlp.enterMethodImpl(2, null, null);
tlp.leaveMethodImpl(false, false, null);
tlp.leaveMethodImpl(false, false, null);
assertEquals(1, testProfiler.processCalled);
assertEquals(6, testProfiler.methodCallDtos.size());
}
}