Search in sources :

Example 1 with MethodUsageStatistics

use of com.evolveum.midpoint.util.aspect.MethodUsageStatistics in project midpoint by Evolveum.

the class ProfilingTest method prof_03_profManagerRequestTest.

@Test
public void prof_03_profManagerRequestTest() {
    ProfilingDataManager manager = ProfilingDataManager.getInstance();
    ProfilingDataLog event1 = new ProfilingDataLog("GET", REQUEST_FILTER_TEST_URI, "sessionID", FASTEST_METHOD_EST, System.currentTimeMillis());
    ProfilingDataLog event2 = new ProfilingDataLog("GET", REQUEST_FILTER_TEST_URI, "sessionID", MIDDLE_METHOD_EST, System.currentTimeMillis());
    ProfilingDataLog event3 = new ProfilingDataLog("GET", REQUEST_FILTER_TEST_URI, "sessionID", SLOWEST_METHOD_EST, System.currentTimeMillis());
    //WHEN - adding 3 custom events
    manager.prepareRequestProfilingEvent(event1);
    manager.prepareRequestProfilingEvent(event2);
    manager.prepareRequestProfilingEvent(event3);
    Map<String, MethodUsageStatistics> perfMap = manager.getPerformanceMap();
    //THEN
    assertSame(1, perfMap.keySet().size());
    assertSame(3, perfMap.get(REQUEST_FILTER_TEST_URI).getSlowestMethodList().size());
    //Here, we are testing, if ProfilingEventList - slowestMethodMap is ordered correctly - we must use this
    //strange approach, because testNG somehow thinks, that long 5000 != long 5000
    boolean first = false;
    boolean second = false;
    boolean third = false;
    if (SLOWEST_METHOD_EST == perfMap.get(REQUEST_FILTER_TEST_URI).getSlowestMethodList().get(0).getEstimatedTime())
        first = true;
    if (MIDDLE_METHOD_EST == perfMap.get(REQUEST_FILTER_TEST_URI).getSlowestMethodList().get(1).getEstimatedTime())
        second = true;
    if (FASTEST_METHOD_EST == perfMap.get(REQUEST_FILTER_TEST_URI).getSlowestMethodList().get(2).getEstimatedTime())
        third = true;
    assertSame(true, first);
    assertSame(true, second);
    assertSame(true, third);
    boolean max = false;
    boolean min = false;
    boolean mean = false;
    if (SLOWEST_METHOD_EST == perfMap.get(REQUEST_FILTER_TEST_URI).getMax())
        max = true;
    if (FASTEST_METHOD_EST == perfMap.get(REQUEST_FILTER_TEST_URI).getMin())
        min = true;
    long meanVal = (FASTEST_METHOD_EST + MIDDLE_METHOD_EST + SLOWEST_METHOD_EST) / 3;
    if (meanVal == perfMap.get(REQUEST_FILTER_TEST_URI).getMean())
        mean = true;
    assertSame(true, max);
    assertSame(true, min);
    assertSame(true, mean);
}
Also used : ProfilingDataManager(com.evolveum.midpoint.util.aspect.ProfilingDataManager) MethodUsageStatistics(com.evolveum.midpoint.util.aspect.MethodUsageStatistics) ProfilingDataLog(com.evolveum.midpoint.util.aspect.ProfilingDataLog) Test(org.testng.annotations.Test)

Example 2 with MethodUsageStatistics

use of com.evolveum.midpoint.util.aspect.MethodUsageStatistics in project midpoint by Evolveum.

the class ProfilingTest method prof_05_subsystemProfilingTest.

@Test
public void prof_05_subsystemProfilingTest() {
    Map<ProfilingDataManager.Subsystem, Boolean> confMap = new HashMap<>();
    confMap.put(ProfilingDataManager.Subsystem.MODEL, true);
    confMap.put(ProfilingDataManager.Subsystem.REPOSITORY, true);
    confMap.put(ProfilingDataManager.Subsystem.SYNCHRONIZATION_SERVICE, false);
    confMap.put(ProfilingDataManager.Subsystem.WEB, false);
    confMap.put(ProfilingDataManager.Subsystem.WORKFLOW, false);
    confMap.put(ProfilingDataManager.Subsystem.PROVISIONING, false);
    confMap.put(ProfilingDataManager.Subsystem.UCF, false);
    confMap.put(ProfilingDataManager.Subsystem.TASK_MANAGER, false);
    ProfilingDataManager.getInstance().configureProfilingDataManager(confMap, 10, true, false, false);
    ProfilingDataManager manager = ProfilingDataManager.getInstance();
    //6 prof. events are created, there should be 2 keys in HashMap
    Long startTime = System.nanoTime();
    manager.applyGranularityFilterOnEnd("class", "method", new String[] { "1", "2", "3" }, ProfilingDataManager.Subsystem.MODEL, System.currentTimeMillis(), startTime);
    manager.applyGranularityFilterOnEnd("class", "method", new String[] { "1", "2", "3" }, ProfilingDataManager.Subsystem.MODEL, System.currentTimeMillis(), startTime);
    manager.applyGranularityFilterOnEnd("class", "method", new String[] { "1", "2", "3" }, ProfilingDataManager.Subsystem.MODEL, System.currentTimeMillis(), startTime);
    manager.applyGranularityFilterOnEnd("class2", "method", new String[] { "1", "2", "3" }, ProfilingDataManager.Subsystem.REPOSITORY, System.currentTimeMillis(), startTime);
    manager.applyGranularityFilterOnEnd("class2", "method", new String[] { "1", "2", "3" }, ProfilingDataManager.Subsystem.REPOSITORY, System.currentTimeMillis(), startTime);
    manager.applyGranularityFilterOnEnd("class2", "method", new String[] { "1", "2", "3" }, ProfilingDataManager.Subsystem.REPOSITORY, System.currentTimeMillis(), startTime);
    Map<String, MethodUsageStatistics> perfMap = manager.getPerformanceMap();
    //Now we test the results
    assertSame(2, perfMap.keySet().size());
}
Also used : ProfilingDataManager(com.evolveum.midpoint.util.aspect.ProfilingDataManager) HashMap(java.util.HashMap) MethodUsageStatistics(com.evolveum.midpoint.util.aspect.MethodUsageStatistics) Test(org.testng.annotations.Test)

Aggregations

MethodUsageStatistics (com.evolveum.midpoint.util.aspect.MethodUsageStatistics)2 ProfilingDataManager (com.evolveum.midpoint.util.aspect.ProfilingDataManager)2 Test (org.testng.annotations.Test)2 ProfilingDataLog (com.evolveum.midpoint.util.aspect.ProfilingDataLog)1 HashMap (java.util.HashMap)1