[Collector] Add application id into service metric for UI (#1406)
* #1405 Add application id into service metric for the page jump from overview page to service page. * Fixed test case error.
This commit is contained in:
parent
8046aa089e
commit
621ed2c0e3
|
|
@ -22,26 +22,21 @@ package org.apache.skywalking.apm.collector.storage.ui.service;
|
|||
* @author peng-yongsheng
|
||||
*/
|
||||
public class ServiceMetric {
|
||||
private int id;
|
||||
private String name;
|
||||
private ServiceInfo service;
|
||||
private long calls;
|
||||
private int avgResponseTime;
|
||||
private int cpm;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
public ServiceMetric() {
|
||||
this.service = new ServiceInfo();
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
public ServiceInfo getService() {
|
||||
return service;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
public void setService(ServiceInfo service) {
|
||||
this.service = service;
|
||||
}
|
||||
|
||||
public int getAvgResponseTime() {
|
||||
|
|
|
|||
|
|
@ -208,7 +208,8 @@ public class ServiceMetricEsUIDAO extends EsDAO implements IServiceMetricUIDAO {
|
|||
int serviceId = ((Number)searchHit.getSource().get(ServiceMetricTable.SERVICE_ID.getName())).intValue();
|
||||
if (!serviceIds.contains(serviceId)) {
|
||||
ServiceMetric serviceMetric = new ServiceMetric();
|
||||
serviceMetric.setId(serviceId);
|
||||
serviceMetric.getService().setId(serviceId);
|
||||
serviceMetric.getService().setApplicationId(serviceId);
|
||||
serviceMetric.setCalls(((Number)searchHit.getSource().get(ServiceMetricTable.TRANSACTION_CALLS.getName())).longValue());
|
||||
serviceMetric.setAvgResponseTime(((Number)searchHit.getSource().get(ServiceMetricTable.TRANSACTION_AVERAGE_DURATION.getName())).intValue());
|
||||
serviceMetrics.add(serviceMetric);
|
||||
|
|
|
|||
|
|
@ -208,7 +208,8 @@ public class ServiceMetricShardingjdbcUIDAO extends ShardingjdbcDAO implements I
|
|||
int serviceId = rs.getInt(ServiceMetricTable.SERVICE_ID.getName());
|
||||
if (!serviceIds.contains(serviceId)) {
|
||||
ServiceMetric serviceMetric = new ServiceMetric();
|
||||
serviceMetric.setId(serviceId);
|
||||
serviceMetric.getService().setId(serviceId);
|
||||
serviceMetric.getService().setApplicationId(applicationId);
|
||||
serviceMetric.setCalls(rs.getLong(ServiceMetricTable.TRANSACTION_CALLS.getName()));
|
||||
serviceMetric.setAvgResponseTime(rs.getInt(ServiceMetricTable.TRANSACTION_AVERAGE_DURATION.getName()));
|
||||
serviceMetrics.add(serviceMetric);
|
||||
|
|
|
|||
|
|
@ -86,14 +86,16 @@ public class ApplicationService {
|
|||
long startSecondTimeBucket, long endSecondTimeBucket, Integer topN) {
|
||||
List<ServiceMetric> slowServices = serviceMetricUIDAO.getSlowService(applicationId, step, startTimeBucket, endTimeBucket, topN, MetricSource.Callee);
|
||||
slowServices.forEach(slowService -> {
|
||||
ServiceName serviceName = serviceNameCacheService.get(slowService.getId());
|
||||
ServiceName serviceName = serviceNameCacheService.get(slowService.getService().getId());
|
||||
|
||||
try {
|
||||
slowService.setCpm((int)(slowService.getCalls() / dateBetweenService.minutesBetween(serviceName.getApplicationId(), startSecondTimeBucket, endSecondTimeBucket)));
|
||||
} catch (ParseException e) {
|
||||
logger.error(e.getMessage(), e);
|
||||
}
|
||||
slowService.setName(serviceName.getServiceName());
|
||||
slowService.getService().setApplicationId(serviceName.getApplicationId());
|
||||
slowService.getService().setApplicationName(applicationCacheService.getApplicationById(serviceName.getApplicationId()).getApplicationCode());
|
||||
slowService.getService().setName(serviceName.getServiceName());
|
||||
});
|
||||
return slowServices;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -109,8 +109,10 @@ public class ServiceNameService {
|
|||
long startSecondTimeBucket, long endSecondTimeBucket, Integer topN) {
|
||||
List<ServiceMetric> slowServices = serviceMetricUIDAO.getSlowService(0, step, startTimeBucket, endTimeBucket, topN, MetricSource.Callee);
|
||||
slowServices.forEach(slowService -> {
|
||||
ServiceName serviceName = serviceNameCacheService.get(slowService.getId());
|
||||
slowService.setName(serviceName.getServiceName());
|
||||
ServiceName serviceName = serviceNameCacheService.get(slowService.getService().getId());
|
||||
slowService.getService().setName(serviceName.getServiceName());
|
||||
slowService.getService().setApplicationId(serviceName.getApplicationId());
|
||||
slowService.getService().setApplicationName(applicationCacheService.getApplicationById(serviceName.getApplicationId()).getApplicationCode());
|
||||
try {
|
||||
slowService.setCpm((int)(slowService.getCalls() / dateBetweenService.minutesBetween(serviceName.getApplicationId(), startSecondTimeBucket, endSecondTimeBucket)));
|
||||
} catch (ParseException e) {
|
||||
|
|
|
|||
|
|
@ -115,9 +115,9 @@ public class ApplicationServiceTest {
|
|||
when(serviceMetricUIDAO.getSlowService(anyInt(), anyObject(), anyLong(), anyLong(), anyInt(), anyObject())).then(invocation -> {
|
||||
ServiceMetric serviceMetric = new ServiceMetric();
|
||||
serviceMetric.setCalls(200900);
|
||||
serviceMetric.setName("test");
|
||||
serviceMetric.getService().setName("test");
|
||||
serviceMetric.setAvgResponseTime(100);
|
||||
serviceMetric.setId(1);
|
||||
serviceMetric.getService().setId(1);
|
||||
return Collections.singletonList(serviceMetric);
|
||||
});
|
||||
when(serviceNameCacheService.get(anyInt())).then(invocation -> {
|
||||
|
|
@ -125,8 +125,9 @@ public class ApplicationServiceTest {
|
|||
serviceName.setServiceName("serviceName");
|
||||
return serviceName;
|
||||
});
|
||||
mockCache();
|
||||
when(dateBetweenService.minutesBetween(anyInt(), anyLong(), anyLong())).then(invocation -> 20L);
|
||||
List<ServiceMetric> slowService = applicationService.getSlowService(-1, duration.getStep(), startTimeBucket, endTimeBucket, startSecondTimeBucket, endSecondTimeBucket, 10);
|
||||
List<ServiceMetric> slowService = applicationService.getSlowService(1, duration.getStep(), startTimeBucket, endTimeBucket, startSecondTimeBucket, endSecondTimeBucket, 10);
|
||||
Assert.assertTrue(slowService.get(0).getCpm() > 0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ package org.apache.skywalking.apm.collector.ui.service;
|
|||
|
||||
import java.text.ParseException;
|
||||
import java.util.*;
|
||||
import org.apache.skywalking.apm.collector.cache.service.ServiceNameCacheService;
|
||||
import org.apache.skywalking.apm.collector.cache.service.*;
|
||||
import org.apache.skywalking.apm.collector.core.module.*;
|
||||
import org.apache.skywalking.apm.collector.storage.dao.ui.*;
|
||||
import org.apache.skywalking.apm.collector.storage.table.register.ServiceName;
|
||||
|
|
@ -42,6 +42,7 @@ public class ServiceNameServiceTest {
|
|||
private IServiceNameServiceUIDAO serviceNameServiceUIDAO;
|
||||
private IServiceMetricUIDAO serviceMetricUIDAO;
|
||||
private ServiceNameCacheService serviceNameCacheService;
|
||||
private ApplicationCacheService applicationCacheService;
|
||||
private DateBetweenService dateBetweenService;
|
||||
private ServiceNameService serverNameService;
|
||||
private Duration duration;
|
||||
|
|
@ -56,9 +57,11 @@ public class ServiceNameServiceTest {
|
|||
when(moduleManager.find(anyString())).then(invocation -> new MockModule());
|
||||
serverNameService = new ServiceNameService(moduleManager);
|
||||
serviceNameCacheService = mock(ServiceNameCacheService.class);
|
||||
applicationCacheService = mock(ApplicationCacheService.class);
|
||||
serviceMetricUIDAO = mock(IServiceMetricUIDAO.class);
|
||||
dateBetweenService = mock(DateBetweenService.class);
|
||||
Whitebox.setInternalState(serverNameService, "serviceNameCacheService", serviceNameCacheService);
|
||||
Whitebox.setInternalState(serverNameService, "applicationCacheService", applicationCacheService);
|
||||
Whitebox.setInternalState(serverNameService, "serviceMetricUIDAO", serviceMetricUIDAO);
|
||||
Whitebox.setInternalState(serverNameService, "dateBetweenService", dateBetweenService);
|
||||
duration = new Duration();
|
||||
|
|
@ -106,9 +109,10 @@ public class ServiceNameServiceTest {
|
|||
when(serviceMetricUIDAO.getSlowService(anyInt(), anyObject(), anyLong(), anyLong(), anyInt(), anyObject())).then(invocation -> {
|
||||
ServiceMetric serviceMetric = new ServiceMetric();
|
||||
serviceMetric.setCalls(200901);
|
||||
serviceMetric.setName("test");
|
||||
serviceMetric.getService().setName("test");
|
||||
serviceMetric.setAvgResponseTime(100);
|
||||
serviceMetric.setId(1);
|
||||
serviceMetric.getService().setApplicationId(1);
|
||||
serviceMetric.getService().setId(1);
|
||||
return Collections.singletonList(serviceMetric);
|
||||
});
|
||||
when(dateBetweenService.minutesBetween(anyInt(), anyLong(), anyLong())).then(invocation -> 20L);
|
||||
|
|
@ -121,7 +125,15 @@ public class ServiceNameServiceTest {
|
|||
Mockito.when(serviceNameCacheService.get(anyInt())).then(invocation -> {
|
||||
ServiceName serviceName = new ServiceName();
|
||||
serviceName.setServiceName("test_name");
|
||||
serviceName.setApplicationId(1);
|
||||
return serviceName;
|
||||
});
|
||||
|
||||
Mockito.when(applicationCacheService.getApplicationById(anyInt())).then(invocation -> {
|
||||
org.apache.skywalking.apm.collector.storage.table.register.Application application = new org.apache.skywalking.apm.collector.storage.table.register.Application();
|
||||
application.setApplicationId(1);
|
||||
application.setApplicationCode("test");
|
||||
return application;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -35,8 +35,7 @@ type ServiceInfo {
|
|||
}
|
||||
|
||||
type ServiceMetric {
|
||||
id: ID!
|
||||
name: String
|
||||
service: ServiceInfo!
|
||||
# The unit is millisecond.
|
||||
avgResponseTime: Int!
|
||||
cpm: Int!
|
||||
|
|
|
|||
Loading…
Reference in New Issue