diff --git a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java
index 7e06ef78229..9d6287487af 100644
--- a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java
+++ b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java
@@ -151,7 +151,7 @@ public void detectMonitor(Monitor monitor, List params, String collector)
@Override
@Transactional(rollbackFor = Exception.class)
public void addMonitor(Monitor monitor, List params, String collector, GrafanaDashboard grafanaDashboard)
- throws RuntimeException {
+ throws RuntimeException {
// Apply for monitor id
long monitorId = SnowFlakeIdGenerator.generateId();
Map labels = monitor.getLabels();
@@ -167,12 +167,12 @@ public void addMonitor(Monitor monitor, List params, String collector, Gr
// Construct the collection task Job entity
boolean isStatic = CommonConstants.SCRAPE_STATIC.equals(monitor.getScrape())
- || !StringUtils.hasText(monitor.getScrape());
+ || !StringUtils.hasText(monitor.getScrape());
String app = isStatic ? monitor.getApp() : monitor.getScrape();
Job appDefine = appService.getAppDefine(app);
if (!isStatic) {
appDefine.setSd(true);
- monitor.setInstance("unknow");
+ monitor.setInstance("unknown");
}
if (CommonConstants.PROMETHEUS.equals(monitor.getApp())) {
appDefine.setApp(CommonConstants.PROMETHEUS_APP_PREFIX + monitor.getName());
@@ -185,19 +185,19 @@ public void addMonitor(Monitor monitor, List params, String collector, Gr
String instance = monitor.getInstance();
// The port field may be null
Param portParam = params.stream()
- .filter(param -> PARAM_FIELD_PORT.equals(param.getField()))
- .findFirst()
- .orElse(null);
+ .filter(param -> PARAM_FIELD_PORT.equals(param.getField()))
+ .findFirst()
+ .orElse(null);
String portWithMark = (Objects.isNull(portParam) || !StringUtils.hasText(portParam.getParamValue()))
- ? ""
- : SignConstants.DOUBLE_MARK + portParam.getParamValue();
+ ? ""
+ : SignConstants.DOUBLE_MARK + portParam.getParamValue();
if (!IpDomainUtil.isHasPortWithMark(instance)) {
instance = instance + portWithMark;
}
monitor.setInstance(instance);
Map metadata = Map.of(CommonConstants.LABEL_INSTANCE_NAME, monitor.getName(),
- CommonConstants.LABEL_INSTANCE, instance);
+ CommonConstants.LABEL_INSTANCE, instance);
appDefine.setMetadata(metadata);
appDefine.setLabels(monitor.getLabels());
appDefine.setAnnotations(monitor.getAnnotations());
@@ -207,7 +207,7 @@ public void addMonitor(Monitor monitor, List params, String collector, Gr
}).collect(Collectors.toList());
appDefine.setConfigmap(configmaps);
long jobId = collector == null ? collectJobScheduling.addAsyncCollectJob(appDefine, null)
- : collectJobScheduling.addAsyncCollectJob(appDefine, collector);
+ : collectJobScheduling.addAsyncCollectJob(appDefine, collector);
try {
detectMonitor(monitor, params, collector);
} catch (Exception ignored) {
@@ -216,16 +216,16 @@ public void addMonitor(Monitor monitor, List params, String collector, Gr
try {
if (collector != null) {
CollectorMonitorBind collectorMonitorBind = CollectorMonitorBind.builder()
- .collector(collector)
- .monitorId(monitorId)
- .build();
+ .collector(collector)
+ .monitorId(monitorId)
+ .build();
collectorMonitorBindDao.save(collectorMonitorBind);
}
monitor.setId(monitorId);
monitor.setJobId(jobId);
// create grafana dashboard
if (monitor.getApp().equals(CommonConstants.PROMETHEUS) && grafanaDashboard != null
- && grafanaDashboard.isEnabled()) {
+ && grafanaDashboard.isEnabled()) {
dashboardService.createOrUpdateDashboard(grafanaDashboard.getTemplate(), monitorId);
}
monitorDao.save(monitor);
@@ -246,9 +246,9 @@ public void export(List ids, String type, HttpServletResponse res) throws
public void exportAll(String type, HttpServletResponse res) throws Exception {
// Get all monitor IDs from the database
List allMonitorIds = monitorDao.findAll()
- .stream()
- .map(Monitor::getId)
- .collect(Collectors.toList());
+ .stream()
+ .map(Monitor::getId)
+ .collect(Collectors.toList());
// Use the existing export method to export all monitors
export(allMonitorIds, type, res);
@@ -269,13 +269,13 @@ public void validate(MonitorDto monitorDto, Boolean isModify) throws IllegalArgu
monitorInfo.setName(monitorInfo.getName().trim());
Monitor monitor = monitorInfo.toEntity();
Map paramMap = monitorDto.getParamInfos()
- .stream()
- .peek(param -> {
- param.setMonitorId(monitor.getId());
- String value = param.getParamValue() == null ? null : param.getParamValue().trim();
- param.setParamValue(value);
- })
- .collect(Collectors.toMap(MonitorParam::getField, param -> param));
+ .stream()
+ .peek(param -> {
+ param.setMonitorId(monitor.getId());
+ String value = param.getParamValue() == null ? null : param.getParamValue().trim();
+ param.setParamValue(value);
+ })
+ .collect(Collectors.toMap(MonitorParam::getField, param -> param));
// Check name uniqueness and can not equal app type
if (isModify != null) {
Optional defineOptional = appService.getAppDefineOption(monitor.getName());
@@ -307,7 +307,7 @@ public void validate(MonitorDto monitorDto, Boolean isModify) throws IllegalArgu
List paramDefines = appService.getAppParamDefines(monitor.getApp());
if (!CollectionUtils.isEmpty(paramDefines)) {
boolean isStatic = CommonConstants.SCRAPE_STATIC.equals(monitor.getScrape())
- || !StringUtils.hasText(monitor.getScrape());
+ || !StringUtils.hasText(monitor.getScrape());
for (ParamDefineInfo paramDefine : paramDefines) {
String field = paramDefine.getField();
MonitorParam param = paramMap.get(field);
@@ -339,16 +339,16 @@ private void checkJobFields(String app) {
for (Metrics.Field field : metrics.getFields()) {
if (JexlCheckerUtil.verifyKeywords(field.getField())) {
throw new IllegalArgumentException(job.getApp() + " " + metrics.getName() + " "
- + field.getField() + " prohibited keywords, please modify the template information.");
+ + field.getField() + " prohibited keywords, please modify the template information.");
}
if (JexlCheckerUtil.verifyStartCharacter(field.getField())) {
throw new IllegalArgumentException(job.getApp() + " " + metrics.getName() + " "
- + field.getField()
- + " illegal start character, please modify the template information.");
+ + field.getField()
+ + " illegal start character, please modify the template information.");
}
if (JexlCheckerUtil.verifySpaces(field.getField())) {
throw new IllegalArgumentException(job.getApp() + " " + metrics.getName() + " "
- + field.getField() + " no spaces allowed, please modify the template information.");
+ + field.getField() + " no spaces allowed, please modify the template information.");
}
}
}
@@ -358,7 +358,7 @@ private void checkJobFields(String app) {
@Override
@Transactional(rollbackFor = Exception.class)
public void modifyMonitor(Monitor monitor, List params, String collector, GrafanaDashboard grafanaDashboard)
- throws RuntimeException {
+ throws RuntimeException {
long monitorId = monitor.getId();
// Check to determine whether the monitor corresponding to the monitor id exists
Optional queryOption = monitorDao.findById(monitorId);
@@ -382,22 +382,23 @@ public void modifyMonitor(Monitor monitor, List params, String collector,
labelDao.saveAll(addLabels);
}
+ boolean isStatic = CommonConstants.SCRAPE_STATIC.equals(monitor.getScrape())
+ || !StringUtils.hasText(monitor.getScrape());
+ if (!isStatic && !StringUtils.hasText(monitor.getInstance())) {
+ monitor.setInstance("unknown");
+ }
String instance = monitor.getInstance();
// The port field may be null
Param portParam = params.stream()
- .filter(param -> PARAM_FIELD_PORT.equals(param.getField()))
- .findFirst()
- .orElse(null);
+ .filter(param -> PARAM_FIELD_PORT.equals(param.getField()))
+ .findFirst()
+ .orElse(null);
String portWithMark = (Objects.isNull(portParam) || !StringUtils.hasText(portParam.getParamValue()))
- ? ""
- : SignConstants.DOUBLE_MARK + portParam.getParamValue();
- if (Objects.nonNull(instance)) {
- instance = instance + portWithMark;
- }
+ ? ""
+ : SignConstants.DOUBLE_MARK + portParam.getParamValue();
+ instance = instance + portWithMark;
monitor.setInstance(instance);
- boolean isStatic = CommonConstants.SCRAPE_STATIC.equals(monitor.getScrape())
- || !StringUtils.hasText(monitor.getScrape());
if (preMonitor.getStatus() != CommonConstants.MONITOR_PAUSED_CODE) {
// Construct the collection task Job entity
String app = isStatic ? monitor.getApp() : monitor.getScrape();
@@ -416,13 +417,13 @@ public void modifyMonitor(Monitor monitor, List params, String collector,
appDefine.setScheduleType(monitor.getScheduleType());
appDefine.setCronExpression(monitor.getCronExpression());
Map metadata = Map.of(CommonConstants.LABEL_INSTANCE_NAME, monitor.getName(),
- CommonConstants.LABEL_INSTANCE, monitor.getInstance());
+ CommonConstants.LABEL_INSTANCE, monitor.getInstance());
appDefine.setMetadata(metadata);
appDefine.setLabels(monitor.getLabels());
appDefine.setAnnotations(monitor.getAnnotations());
List configmaps = params.stream()
- .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
- .collect(Collectors.toList());
+ .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
+ .collect(Collectors.toList());
appDefine.setConfigmap(configmaps);
long newJobId;
if (collector == null) {
@@ -444,8 +445,8 @@ public void modifyMonitor(Monitor monitor, List params, String collector,
collectorMonitorBindDao.deleteCollectorMonitorBindsByMonitorId(monitorId);
if (collector != null) {
CollectorMonitorBind collectorMonitorBind = CollectorMonitorBind.builder()
- .collector(collector).monitorId(monitorId)
- .build();
+ .collector(collector).monitorId(monitorId)
+ .build();
collectorMonitorBindDao.save(collectorMonitorBind);
}
// force update gmtUpdate time, due the case: monitor not change, param change.
@@ -482,7 +483,7 @@ public void deleteMonitors(Set ids) throws RuntimeException {
return;
}
Set subMonitorIds = monitorBindDao.findMonitorBindsByBizIdIn(ids).stream().map(MonitorBind::getMonitorId)
- .collect(Collectors.toSet());
+ .collect(Collectors.toSet());
Set allMonitorIds = new HashSet<>(ids);
allMonitorIds.addAll(subMonitorIds);
List monitors = monitorDao.findMonitorsByIdIn(allMonitorIds);
@@ -523,28 +524,28 @@ public MonitorDto getMonitorDto(long id) throws RuntimeException {
monitorDto.setParams(params);
List metricsInfos;
if (DispatchConstants.PROTOCOL_PROMETHEUS.equalsIgnoreCase(monitor.getApp())
- || monitor.getType() == CommonConstants.MONITOR_TYPE_PUSH_AUTO_CREATE) {
+ || monitor.getType() == CommonConstants.MONITOR_TYPE_PUSH_AUTO_CREATE) {
List metricsDataList = warehouseService.queryMonitorMetricsData(id);
metricsInfos = metricsDataList.stream()
- .map(t -> MetricsInfo.builder().name(t.getMetrics())
- .favorited(favoritedMetrics.contains(t.getMetrics())).build())
- .collect(Collectors.toList());
+ .map(t -> MetricsInfo.builder().name(t.getMetrics())
+ .favorited(favoritedMetrics.contains(t.getMetrics())).build())
+ .collect(Collectors.toList());
monitorDto.setGrafanaDashboard(dashboardService.getDashboardByMonitorId(id));
} else {
boolean isStatic = CommonConstants.SCRAPE_STATIC.equals(monitor.getScrape())
- || !StringUtils.hasText(monitor.getScrape());
+ || !StringUtils.hasText(monitor.getScrape());
String type = isStatic ? monitor.getApp() : monitor.getScrape();
Job job = appService.getAppDefine(type);
metricsInfos = job.getMetrics().stream()
- .filter(Metrics::isVisible)
- .map(t -> MetricsInfo.builder().name(t.getName())
- .favorited(favoritedMetrics.contains(t.getName())).build())
- .collect(Collectors.toList());
+ .filter(Metrics::isVisible)
+ .map(t -> MetricsInfo.builder().name(t.getName())
+ .favorited(favoritedMetrics.contains(t.getName())).build())
+ .collect(Collectors.toList());
}
monitorDto.setMetrics(metricsInfos);
monitorDto.setMonitor(monitor);
Optional bindOptional = collectorMonitorBindDao
- .findCollectorMonitorBindByMonitorId(monitor.getId());
+ .findCollectorMonitorBindByMonitorId(monitor.getId());
bindOptional.ifPresent(bind -> monitorDto.setCollector(bind.getCollector()));
return monitorDto;
} else {
@@ -554,7 +555,7 @@ public MonitorDto getMonitorDto(long id) throws RuntimeException {
@Override
public Page getMonitors(List monitorIds, String app, String search, Byte status, String sort,
- String order, int pageIndex, int pageSize, String labels) {
+ String order, int pageIndex, int pageSize, String labels) {
Specification specification = (root, query, criteriaBuilder) -> {
List andList = new ArrayList<>();
if (!CollectionUtils.isEmpty(monitorIds)) {
@@ -579,7 +580,7 @@ public Page getMonitors(List monitorIds, String app, String searc
if (StringUtils.hasText(search)) {
Predicate predicateHost = criteriaBuilder.like(root.get("instance"), "%" + search + "%");
Predicate predicateName = criteriaBuilder.like(criteriaBuilder.lower(root.get("name")),
- "%" + search.toLowerCase() + "%");
+ "%" + search.toLowerCase() + "%");
Long id = Longs.tryParse(search);
if (id != null) {
orList.add(criteriaBuilder.equal(root.get("id"), id));
@@ -633,12 +634,12 @@ public void cancelManageMonitors(Set ids) {
// The jobId is not deleted, and the jobId is reused again after the management
// is started.
Set subMonitorIds = monitorBindDao.findMonitorBindsByBizIdIn(ids).stream().map(MonitorBind::getMonitorId)
- .collect(Collectors.toSet());
+ .collect(Collectors.toSet());
ids.addAll(subMonitorIds);
List managedMonitors = monitorDao.findMonitorsByIdIn(ids)
- .stream().filter(monitor -> monitor.getStatus() != CommonConstants.MONITOR_PAUSED_CODE)
- .peek(monitor -> monitor.setStatus(CommonConstants.MONITOR_PAUSED_CODE))
- .collect(Collectors.toList());
+ .stream().filter(monitor -> monitor.getStatus() != CommonConstants.MONITOR_PAUSED_CODE)
+ .peek(monitor -> monitor.setStatus(CommonConstants.MONITOR_PAUSED_CODE))
+ .collect(Collectors.toList());
if (!CollectionUtils.isEmpty(managedMonitors)) {
for (Monitor monitor : managedMonitors) {
collectJobScheduling.cancelAsyncCollectJob(monitor.getJobId());
@@ -651,12 +652,12 @@ public void cancelManageMonitors(Set ids) {
public void enableManageMonitors(Set ids) {
// Update monitoring status Add corresponding monitoring periodic task
Set subMonitorIds = monitorBindDao.findMonitorBindsByBizIdIn(ids).stream().map(MonitorBind::getMonitorId)
- .collect(Collectors.toSet());
+ .collect(Collectors.toSet());
ids.addAll(subMonitorIds);
List unManagedMonitors = monitorDao.findMonitorsByIdIn(ids)
- .stream().filter(monitor -> monitor.getStatus() == CommonConstants.MONITOR_PAUSED_CODE)
- .peek(monitor -> monitor.setStatus(CommonConstants.MONITOR_UP_CODE))
- .collect(Collectors.toList());
+ .stream().filter(monitor -> monitor.getStatus() == CommonConstants.MONITOR_PAUSED_CODE)
+ .peek(monitor -> monitor.setStatus(CommonConstants.MONITOR_UP_CODE))
+ .collect(Collectors.toList());
if (unManagedMonitors.isEmpty()) {
return;
}
@@ -665,7 +666,7 @@ public void enableManageMonitors(Set ids) {
// Construct the collection task Job entity
List params = paramDao.findParamsByMonitorId(monitor.getId());
boolean isStatic = CommonConstants.SCRAPE_STATIC.equals(monitor.getScrape())
- || !StringUtils.hasText(monitor.getScrape());
+ || !StringUtils.hasText(monitor.getScrape());
String app = isStatic ? monitor.getApp() : monitor.getScrape();
Job appDefine = appService.getAppDefine(app);
if (!isStatic) {
@@ -681,20 +682,20 @@ public void enableManageMonitors(Set ids) {
appDefine.setScheduleType(monitor.getScheduleType());
appDefine.setCronExpression(monitor.getCronExpression());
Map metadata = Map.of(CommonConstants.LABEL_INSTANCE_NAME, monitor.getName(),
- CommonConstants.LABEL_INSTANCE, monitor.getInstance());
+ CommonConstants.LABEL_INSTANCE, monitor.getInstance());
appDefine.setMetadata(metadata);
appDefine.setLabels(monitor.getLabels());
appDefine.setAnnotations(monitor.getAnnotations());
List configmaps = params.stream()
- .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
- .collect(Collectors.toList());
+ .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
+ .collect(Collectors.toList());
List paramDefaultValue = appDefine.getParams().stream()
- .filter(item -> StringUtils.hasText(item.getDefaultValue()))
- .toList();
+ .filter(item -> StringUtils.hasText(item.getDefaultValue()))
+ .toList();
paramDefaultValue.forEach(defaultVar -> {
if (configmaps.stream().noneMatch(item -> item.getKey().equals(defaultVar.getField()))) {
Configmap configmap = new Configmap(defaultVar.getField(), defaultVar.getDefaultValue(),
- CommonConstants.TYPE_STRING);
+ CommonConstants.TYPE_STRING);
configmaps.add(configmap);
}
});
@@ -702,7 +703,7 @@ public void enableManageMonitors(Set ids) {
// Issue collection tasks
Optional bindOptional = collectorMonitorBindDao
- .findCollectorMonitorBindByMonitorId(monitor.getId());
+ .findCollectorMonitorBindByMonitorId(monitor.getId());
String collector = bindOptional.map(CollectorMonitorBind::getCollector).orElse(null);
long newJobId = collectJobScheduling.addAsyncCollectJob(appDefine, collector);
monitor.setJobId(newJobId);
@@ -756,15 +757,15 @@ public List getAllAppMonitorsCount() {
@Override
public void updateAppCollectJob(Job job) {
List monitors = monitorDao.findMonitorsByAppEquals(job.getApp())
- .stream().filter(monitor -> monitor.getStatus() != CommonConstants.MONITOR_PAUSED_CODE)
- .toList();
+ .stream().filter(monitor -> monitor.getStatus() != CommonConstants.MONITOR_PAUSED_CODE)
+ .toList();
if (monitors.isEmpty()) {
return;
}
List monitorBinds = collectorMonitorBindDao.findCollectorMonitorBindsByMonitorIdIn(
- monitors.stream().map(Monitor::getId).collect(Collectors.toSet()));
+ monitors.stream().map(Monitor::getId).collect(Collectors.toSet()));
Map monitorIdCollectorMap = monitorBinds.stream().collect(
- Collectors.toMap(CollectorMonitorBind::getMonitorId, CollectorMonitorBind::getCollector));
+ Collectors.toMap(CollectorMonitorBind::getMonitorId, CollectorMonitorBind::getCollector));
for (Monitor monitor : monitors) {
try {
Job appDefine = job.clone();
@@ -781,20 +782,20 @@ public void updateAppCollectJob(Job job) {
appDefine.setCyclic(true);
appDefine.setTimestamp(System.currentTimeMillis());
Map metadata = Map.of(CommonConstants.LABEL_INSTANCE_NAME, monitor.getName(),
- CommonConstants.LABEL_INSTANCE, monitor.getInstance());
+ CommonConstants.LABEL_INSTANCE, monitor.getInstance());
appDefine.setMetadata(metadata);
appDefine.setLabels(monitor.getLabels());
appDefine.setAnnotations(monitor.getAnnotations());
List params = paramDao.findParamsByMonitorId(monitor.getId());
List configmaps = params.stream().map(param -> new Configmap(param.getField(),
- param.getParamValue(), param.getType())).collect(Collectors.toList());
+ param.getParamValue(), param.getType())).collect(Collectors.toList());
List paramDefaultValue = appDefine.getParams().stream()
- .filter(item -> StringUtils.hasText(item.getDefaultValue()))
- .toList();
+ .filter(item -> StringUtils.hasText(item.getDefaultValue()))
+ .toList();
paramDefaultValue.forEach(defaultVar -> {
if (configmaps.stream().noneMatch(item -> item.getKey().equals(defaultVar.getField()))) {
Configmap configmap = new Configmap(defaultVar.getField(), defaultVar.getDefaultValue(),
- (byte) 1);
+ (byte) 1);
configmaps.add(configmap);
}
});
@@ -878,8 +879,8 @@ private void detectSdMonitor(Monitor monitor, List params, String collect
appDefine.setLabels(monitor.getLabels());
appDefine.setAnnotations(monitor.getAnnotations());
List configmaps = params.stream()
- .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
- .collect(Collectors.toList());
+ .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
+ .collect(Collectors.toList());
appDefine.setConfigmap(configmaps);
appDefine.setSd(true);
List collectRep;
@@ -914,18 +915,18 @@ private void detectMonitorDirectly(Monitor monitor, List params, String c
appDefine.setCyclic(false);
appDefine.setTimestamp(System.currentTimeMillis());
Map metadata = Map.of(CommonConstants.LABEL_INSTANCE_NAME, monitor.getName(),
- CommonConstants.LABEL_INSTANCE, monitor.getInstance());
+ CommonConstants.LABEL_INSTANCE, monitor.getInstance());
appDefine.setMetadata(metadata);
appDefine.setLabels(monitor.getLabels());
appDefine.setAnnotations(monitor.getAnnotations());
List configmaps = params.stream()
- .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
- .collect(Collectors.toList());
+ .map(param -> new Configmap(param.getField(), param.getParamValue(), param.getType()))
+ .collect(Collectors.toList());
appDefine.setConfigmap(configmaps);
// To detect availability, you only need to collect the set of availability
// metrics with a priority of 0.
List availableMetrics = appDefine.getMetrics().stream()
- .filter(item -> item.getPriority() == 0).collect(Collectors.toList());
+ .filter(item -> item.getPriority() == 0).collect(Collectors.toList());
appDefine.setMetrics(availableMetrics);
List collectRep;
if (collector != null) {
diff --git a/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/service/MonitorServiceTest.java b/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/service/MonitorServiceTest.java
index a7351ee2219..a9cec7ec34b 100644
--- a/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/service/MonitorServiceTest.java
+++ b/hertzbeat-manager/src/test/java/org/apache/hertzbeat/manager/service/MonitorServiceTest.java
@@ -624,7 +624,7 @@ void modifyMonitor() {
} catch (IllegalArgumentException e) {
assertEquals("Can not modify monitor's app type", e.getMessage());
}
- reset();
+ reset(monitorDao);
Monitor existOkMonitor = Monitor.builder().jobId(1L).intervals(1).app("app").name("memory").instance("host")
.id(monitorId).build();
when(monitorDao.findById(monitorId)).thenReturn(Optional.of(existOkMonitor));
@@ -632,6 +632,110 @@ void modifyMonitor() {
assertThrows(MonitorDatabaseException.class,
() -> monitorService.modifyMonitor(dto.getMonitor(), dto.getParams(), null, null));
+
+ // Test logic: When scrape is not equal to static (and not null), and instance is empty, instance should be set to "unknown"
+ reset(monitorDao); // Reset the mock of monitorDao from previous code
+
+ long testSdMonitorId = 2L;
+ Monitor sdMonitor = Monitor.builder()
+ .id(testSdMonitorId)
+ .app("app")
+ .name("memory")
+ .scrape("custom_sd") // Not static
+ .instance("") // Instance is empty
+ .intervals(1)
+ .build();
+
+ Monitor preSdMonitor = Monitor.builder()
+ .id(testSdMonitorId)
+ .app("app")
+ .name("memory")
+ .jobId(2L)
+ .status(CommonConstants.MONITOR_UP_CODE) // Ensure not paused state to proceed to following logic
+ .build();
+
+ List emptyParams = new ArrayList<>();
+ Job mockJob = new Job();
+ mockJob.setMetrics(new ArrayList<>());
+ mockJob.setParams(new ArrayList<>());
+
+ when(monitorDao.findById(testSdMonitorId)).thenReturn(Optional.of(preSdMonitor));
+ when(appService.getAppDefine("custom_sd")).thenReturn(mockJob); // Query job based on scrape
+ when(collectJobScheduling.updateAsyncCollectJob(any(Job.class))).thenReturn(2L);
+ when(monitorDao.save(any(Monitor.class))).thenReturn(sdMonitor);
+
+ assertDoesNotThrow(() -> monitorService.modifyMonitor(sdMonitor, emptyParams, null, null));
+
+ // Assert that instance is assigned as unknown
+ assertEquals("unknown", sdMonitor.getInstance());
+
+ // Test logic: Port verification (from none to exists, from exists to none)
+ // Scenario 1: Originally without port mark (or with one), now port has value in params
+ reset(monitorDao);
+
+ long testPortMonitorId = 3L;
+ Monitor portMonitor = Monitor.builder()
+ .id(testPortMonitorId)
+ .app("app")
+ .name("memory3")
+ .scrape(CommonConstants.SCRAPE_STATIC)
+ .instance("127.0.0.1")
+ .intervals(1)
+ .build();
+
+ Monitor prePortMonitor = Monitor.builder()
+ .id(testPortMonitorId)
+ .app("app")
+ .name("memory3")
+ .jobId(3L)
+ .status(CommonConstants.MONITOR_UP_CODE)
+ .build();
+
+ List portParams = new ArrayList<>();
+ portParams.add(Param.builder().field(MonitorServiceImpl.PARAM_FIELD_PORT).paramValue("8080").build());
+
+ when(monitorDao.findById(testPortMonitorId)).thenReturn(Optional.of(prePortMonitor));
+ when(appService.getAppDefine("app")).thenReturn(mockJob);
+ when(collectJobScheduling.updateAsyncCollectJob(any(Job.class))).thenReturn(3L);
+ when(monitorDao.save(any(Monitor.class))).thenReturn(portMonitor);
+
+ assertDoesNotThrow(() -> monitorService.modifyMonitor(portMonitor, portParams, null, null));
+
+ // Assert that instance appended the port
+ assertEquals("127.0.0.1:8080", portMonitor.getInstance());
+
+ // Scenario 2: Originally instance has port mark, now port has no value in params
+ reset(monitorDao);
+
+ long testNoPortMonitorId = 4L;
+ Monitor noPortMonitor = Monitor.builder()
+ .id(testNoPortMonitorId)
+ .app("app")
+ .name("memory")
+ .scrape(CommonConstants.SCRAPE_STATIC)
+ .instance("127.0.0.1:8080") // Original instance has port
+ .intervals(1)
+ .build();
+
+ Monitor preNoPortMonitor = Monitor.builder()
+ .id(testNoPortMonitorId)
+ .app("app")
+ .name("memory")
+ .jobId(4L)
+ .status(CommonConstants.MONITOR_UP_CODE)
+ .build();
+
+ List noPortParams = new ArrayList<>(); // empty
+
+ when(monitorDao.findById(testNoPortMonitorId)).thenReturn(Optional.of(preNoPortMonitor));
+ when(appService.getAppDefine("app")).thenReturn(mockJob);
+ when(collectJobScheduling.updateAsyncCollectJob(any(Job.class))).thenReturn(4L);
+ when(monitorDao.save(any(Monitor.class))).thenReturn(noPortMonitor);
+
+ assertDoesNotThrow(() -> monitorService.modifyMonitor(noPortMonitor, noPortParams, null, null));
+
+ // Assert that the port mark in instance is removed
+ assertEquals("127.0.0.1", noPortMonitor.getInstance());
}
@Test