package net.sf.appstatus.services;
import java.util.List;
import java.util.Properties;
import junit.framework.Assert;
import net.sf.appstatus.core.AppStatus;
import net.sf.appstatus.core.services.IService;
import net.sf.appstatus.core.services.IServiceMonitor;
import org.junit.Test;
public class ServiceMonitorTest {
@Test
public void testServiceMonitor() {
AppStatus a = new AppStatus();
IServiceMonitor ism = a.getServiceMonitor("service-name", "service-group");
ism.beginCall();
ism.executionTime(100);
ism.endCall();
List<IService> services = a.getServices();
IService myService = null;
for (IService s : services) {
if (s.getName().equals("service-name") && s.getGroup().equals("service-group"))
myService = s;
}
Assert.assertNotNull(myService);
Assert.assertEquals(100d, myService.getAvgResponseTime());
Assert.assertEquals(100, myService.getMaxResponseTime().longValue());
Assert.assertEquals(100, myService.getMinResponseTime().longValue());
Assert.assertEquals(0d, myService.getAvgNestedCalls());
ism = a.getServiceMonitor("service-name", "service-group");
ism.beginCall();
ism.executionTime(200);
ism.endCall();
Assert.assertEquals(150d, myService.getAvgResponseTime());
Assert.assertEquals(200, myService.getMaxResponseTime().longValue());
Assert.assertEquals(100, myService.getMinResponseTime().longValue());
Assert.assertEquals(0d, myService.getAvgNestedCalls());
}
@Test
public void testServiceMonitorWithDelay() {
AppStatus a = new AppStatus();
Properties p = new Properties();
p.setProperty("services.minMaxDelay", "1");
a.setConfiguration(p);
a.init();
IServiceMonitor ism = a.getServiceMonitor("service-name", "service-group");
ism.beginCall();
ism.executionTime(100);
ism.endCall();
List<IService> services = a.getServices();
IService myService = null;
for (IService s : services) {
if (s.getName().equals("service-name") && s.getGroup().equals("service-group"))
myService = s;
}
Assert.assertNotNull(myService);
Assert.assertEquals(100d, myService.getAvgResponseTime());
Assert.assertNull(myService.getMaxResponseTime());
Assert.assertNull( myService.getMinResponseTime());
ism = a.getServiceMonitor("service-name", "service-group");
ism.beginCall();
ism.executionTime(200);
ism.endCall();
Assert.assertEquals(150d, myService.getAvgResponseTime());
Assert.assertEquals(200, myService.getMaxResponseTime().longValue());
Assert.assertEquals(200, myService.getMinResponseTime().longValue());
}
@Test
public void testNestedServiceCall() {
AppStatus a = new AppStatus();
IServiceMonitor ism = a.getServiceMonitor("service-name", "service-group");
ism.beginCall();
ism.executionTime(100);
ism.nestedCall();
ism.nestedCall();
ism.endCall();
List<IService> services = a.getServices();
IService myService = null;
for (IService s : services) {
if (s.getName().equals("service-name") && s.getGroup().equals("service-group"))
myService = s;
}
Assert.assertNotNull(myService);
Assert.assertEquals(2d, myService.getAvgNestedCalls());
ism = a.getServiceMonitor("service-name", "service-group");
ism.beginCall();
ism.executionTime(200);
ism.nestedCall();
ism.endCall();
Assert.assertEquals(1.5d, myService.getAvgNestedCalls());
}
}