From a8a1fc607bcb8558a7e6d1a249131a783e4b51e6 Mon Sep 17 00:00:00 2001 From: Mohab Usama Date: Fri, 30 Nov 2018 18:25:30 +0100 Subject: [PATCH 1/2] Support metrics sampling Signed-off-by: Mohab Usama --- .../config/DataServiceConfigProperties.java | 10 +-- .../zmon/dataservice/data/CheckData.java | 5 +- .../zmon/dataservice/data/KairosDBStore.java | 13 +--- .../dataservice/data/WhitelistedChecks.java | 75 ------------------- .../dataservice/data/KairosDbStoreTest.java | 39 +++------- .../dataservice/proxies/KairosDBTest.java | 3 +- 6 files changed, 23 insertions(+), 122 deletions(-) delete mode 100644 src/main/java/de/zalando/zmon/dataservice/data/WhitelistedChecks.java diff --git a/src/main/java/de/zalando/zmon/dataservice/config/DataServiceConfigProperties.java b/src/main/java/de/zalando/zmon/dataservice/config/DataServiceConfigProperties.java index 3f59a19..e8dbebd 100644 --- a/src/main/java/de/zalando/zmon/dataservice/config/DataServiceConfigProperties.java +++ b/src/main/java/de/zalando/zmon/dataservice/config/DataServiceConfigProperties.java @@ -1,14 +1,14 @@ package de.zalando.zmon.dataservice.config; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.NestedConfigurationProperty; +import org.springframework.context.annotation.Configuration; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.context.properties.NestedConfigurationProperty; -import org.springframework.context.annotation.Configuration; - @Configuration @ConfigurationProperties(prefix = "dataservice") public class DataServiceConfigProperties { @@ -90,7 +90,7 @@ public void setwhiteListedChecks(List whiteListedChecks) { @NestedConfigurationProperty private Map asyncExecutors = new HashMap<>(); - private int resultSizeWarning = 100; + private int resultSizeWarning = 2000; private long connectionsTimeToLive = 2 * 60 * 1000; private Map versionConfig = null; diff --git a/src/main/java/de/zalando/zmon/dataservice/data/CheckData.java b/src/main/java/de/zalando/zmon/dataservice/data/CheckData.java index 2d237e5..7f0d40a 100644 --- a/src/main/java/de/zalando/zmon/dataservice/data/CheckData.java +++ b/src/main/java/de/zalando/zmon/dataservice/data/CheckData.java @@ -1,10 +1,10 @@ package de.zalando.zmon.dataservice.data; +import com.fasterxml.jackson.databind.JsonNode; + import java.util.HashMap; import java.util.Map; -import com.fasterxml.jackson.databind.JsonNode; - /** * Created by jmussler on 4/22/15. */ @@ -18,4 +18,5 @@ public class CheckData { public JsonNode check_result; public boolean exception; public Map alerts = new HashMap<>(0); + public boolean is_sampled = true; } diff --git a/src/main/java/de/zalando/zmon/dataservice/data/KairosDBStore.java b/src/main/java/de/zalando/zmon/dataservice/data/KairosDBStore.java index 4bee139..1ba8db7 100644 --- a/src/main/java/de/zalando/zmon/dataservice/data/KairosDBStore.java +++ b/src/main/java/de/zalando/zmon/dataservice/data/KairosDBStore.java @@ -67,7 +67,6 @@ public void fillFlatValueMap(Map values, String prefix, Jso private final DataServiceMetrics metrics; private final int resultSizeWarning; - private WhitelistedChecks whitelist; private static class DataPoint { public String name; @@ -76,13 +75,11 @@ private static class DataPoint { } @Autowired - public KairosDBStore(DataServiceConfigProperties config, DataServiceMetrics metrics, DataPointsQueryStore dataPointsQueryStore, - WhitelistedChecks whitelist) { + public KairosDBStore(DataServiceConfigProperties config, DataServiceMetrics metrics, DataPointsQueryStore dataPointsQueryStore) { this.metrics = metrics; this.config = config; this.dataPointsQueryStore = dataPointsQueryStore; this.resultSizeWarning = config.getResultSizeWarning(); - this.whitelist = whitelist; if (null == config.getKairosdbTagFields() || config.getKairosdbTagFields().size() == 0) { this.entityTagFields = DEFAULT_ENTITY_TAG_FIELDS; @@ -140,12 +137,8 @@ void store(WorkerResult wr) { List points = new LinkedList<>(); for (CheckData cd : wr.results) { - //Get whitelist from dynamic entity reader - List whiteListedChecks = whitelist.getWhitelist(); - //Only ingest whitelisted checks - //if (! config.getwhiteListedChecks().contains(cd.check_id)){ - if (!whiteListedChecks.contains(cd.check_id)) { - LOG.warn("Dropping non critical checkid={} ", cd.check_id); + if (!cd.is_sampled) { + LOG.debug("Dropping non-sampled metrics for checkid={}", cd.check_id); continue; } diff --git a/src/main/java/de/zalando/zmon/dataservice/data/WhitelistedChecks.java b/src/main/java/de/zalando/zmon/dataservice/data/WhitelistedChecks.java deleted file mode 100644 index bf01f5b..0000000 --- a/src/main/java/de/zalando/zmon/dataservice/data/WhitelistedChecks.java +++ /dev/null @@ -1,75 +0,0 @@ -package de.zalando.zmon.dataservice.data; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.collect.Lists; -import de.zalando.zmon.dataservice.TokenWrapper; -import de.zalando.zmon.dataservice.components.DefaultObjectMapper; -import de.zalando.zmon.dataservice.config.DataServiceConfigProperties; -import org.apache.http.client.fluent.Executor; -import org.apache.http.client.fluent.Request; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -@Component -public class WhitelistedChecks { - private static final Logger LOG = LoggerFactory.getLogger(WhitelistedChecks.class); - - private final ObjectMapper objectMapper; - private final Executor executor; - private final TokenWrapper wrapper; - private final String hostname; - private List whitelist; - - @Autowired - public WhitelistedChecks(@DefaultObjectMapper ObjectMapper objectMapper, - DataServiceConfigProperties config, - @Qualifier("accessTokens") TokenWrapper wrapper) { - this.objectMapper = objectMapper; - this.executor = HttpClientFactory.getExecutor( - config.getRestMetricSocketTimeout(), - config.getRestMetricTimeout(), - config.getRestMetricConnections(), - config.getConnectionsTimeToLive() - - ); - - this.hostname = config.getProxyControllerBaseUrl(); - this.wrapper = wrapper; - this.whitelist = new ArrayList<>(); - } - - @Scheduled(fixedRate = 60_000) - public void updateWhitelist() { - try { - LOG.info("started updating whitelist. Old whitelist size={}", whitelist.size()); - String uri = hostname + "/api/v1/entities/zmon-checkid-whitelist"; - Request request = Request.Get(uri).addHeader("Authorization", "Bearer " + wrapper.get()); - String data = executor.execute(request).returnContent().toString(); - JsonNode jsonNode = objectMapper.readTree(data); - Iterator checkIds = jsonNode.get("check_ids").iterator(); - List list = new ArrayList<>(); - while (checkIds.hasNext()) { - list.add(checkIds.next().intValue()); - } - this.whitelist = list; - LOG.info("whitelist updated. New whitelist size={}", whitelist.size()); - } catch (Exception e) { - LOG.error("error updating whitelist", e); - } - } - - public List getWhitelist() { - return whitelist; - } -} diff --git a/src/test/java/de/zalando/zmon/dataservice/data/KairosDbStoreTest.java b/src/test/java/de/zalando/zmon/dataservice/data/KairosDbStoreTest.java index 5209cd0..b9da186 100644 --- a/src/test/java/de/zalando/zmon/dataservice/data/KairosDbStoreTest.java +++ b/src/test/java/de/zalando/zmon/dataservice/data/KairosDbStoreTest.java @@ -1,13 +1,10 @@ package de.zalando.zmon.dataservice.data; -import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; -import static com.github.tomakehurst.wiremock.client.WireMock.post; -import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; -import static org.mockito.Matchers.anyLong; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.*; - +import com.github.tomakehurst.wiremock.junit.WireMockRule; import com.google.common.collect.ImmutableList; +import de.zalando.zmon.dataservice.AbstractControllerTest; +import de.zalando.zmon.dataservice.DataServiceMetrics; +import de.zalando.zmon.dataservice.config.DataServiceConfigProperties; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -16,13 +13,11 @@ import org.springframework.context.annotation.Configuration; import org.springframework.test.context.ContextConfiguration; -import com.github.tomakehurst.wiremock.junit.WireMockRule; - -import de.zalando.zmon.dataservice.AbstractControllerTest; -import de.zalando.zmon.dataservice.DataServiceMetrics; -import de.zalando.zmon.dataservice.config.DataServiceConfigProperties; - -import java.util.List; +import static com.github.tomakehurst.wiremock.client.WireMock.*; +import static org.mockito.Matchers.anyLong; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.*; +import static org.mockito.Mockito.verify; @ContextConfiguration public class KairosDbStoreTest extends AbstractControllerTest { @@ -39,8 +34,6 @@ public class KairosDbStoreTest extends AbstractControllerTest { @Autowired private DataServiceMetrics metrics; - @Autowired - private WhitelistedChecks whitelistedChecks; @Before public void setUp() { @@ -50,7 +43,7 @@ public void setUp() { @Test public void writeWorkerResult() { - KairosDBStore kairosDb = new KairosDBStore(config, metrics, dataPointsQueryStore, whitelistedChecks); + KairosDBStore kairosDb = new KairosDBStore(config, metrics, dataPointsQueryStore); kairosDb.store(Fixture.buildWorkerResult()); verify(dataPointsQueryStore, atMost(1)).store(anyString()); verify(metrics, never()).markKairosError(); @@ -59,7 +52,7 @@ public void writeWorkerResult() { @Test public void testInvalidWorkerResult() { - KairosDBStore kairosDb = new KairosDBStore(config, metrics, dataPointsQueryStore, whitelistedChecks); + KairosDBStore kairosDb = new KairosDBStore(config, metrics, dataPointsQueryStore); for (WorkerResult wr : new WorkerResult[]{null, new WorkerResult()}) { kairosDb.store(wr); verify(metrics, never()).incKairosDBDataPoints(anyLong()); @@ -88,16 +81,6 @@ public DataServiceMetrics dataServiceMetrics() { public DataPointsQueryStore dataPointsStore() { return mock(DataPointsQueryStore.class); } - - @Bean - public WhitelistedChecks whitelistedChecks() { - WhitelistedChecks mock = mock(WhitelistedChecks.class); - List mockList = mock(List.class); - when(mockList.contains(any())).thenReturn(true); - when(mock.getWhitelist()).thenReturn(mockList); - return mock; - } - } } diff --git a/src/test/java/de/zalando/zmon/dataservice/proxies/KairosDBTest.java b/src/test/java/de/zalando/zmon/dataservice/proxies/KairosDBTest.java index 4616967..060c776 100644 --- a/src/test/java/de/zalando/zmon/dataservice/proxies/KairosDBTest.java +++ b/src/test/java/de/zalando/zmon/dataservice/proxies/KairosDBTest.java @@ -2,7 +2,6 @@ import de.zalando.zmon.dataservice.DataServiceMetrics; import de.zalando.zmon.dataservice.config.DataServiceConfigProperties; -import de.zalando.zmon.dataservice.data.WhitelistedChecks; import de.zalando.zmon.dataservice.data.DataPointsQueryStore; import de.zalando.zmon.dataservice.data.KairosDBStore; import org.assertj.core.api.Assertions; @@ -21,7 +20,7 @@ public class KairosDBTest { @Test public void testReplace() { KairosDBStore store = new KairosDBStore(mock(DataServiceConfigProperties.class), mock(DataServiceMetrics.class), - mock(DataPointsQueryStore.class), mock(WhitelistedChecks.class)); + mock(DataPointsQueryStore.class)); Map entity = new HashMap<>(); entity.put("id", "host01[aws:1234]"); From 7e7f78d883ca2d2c949b08732fd4e75b311e5722 Mon Sep 17 00:00:00 2001 From: Mohab Usama Date: Mon, 3 Dec 2018 10:20:50 +0100 Subject: [PATCH 2/2] Fix json fields naming Signed-off-by: Mohab Usama --- .../data/ApplicationMetricsWriter.java | 11 ++++--- .../zmon/dataservice/data/CheckData.java | 16 ++++++---- .../data/DataServiceController.java | 30 +++++++------------ .../zmon/dataservice/data/KairosDBStore.java | 16 +++++----- .../zmon/dataservice/data/RedisDataStore.java | 28 ++++++++--------- .../zmon/dataservice/data/Fixture.java | 23 +++++++------- .../dataservice/data/RedisDataStoreTest.java | 2 +- 7 files changed, 61 insertions(+), 65 deletions(-) diff --git a/src/main/java/de/zalando/zmon/dataservice/data/ApplicationMetricsWriter.java b/src/main/java/de/zalando/zmon/dataservice/data/ApplicationMetricsWriter.java index 364df8b..8e3b941 100644 --- a/src/main/java/de/zalando/zmon/dataservice/data/ApplicationMetricsWriter.java +++ b/src/main/java/de/zalando/zmon/dataservice/data/ApplicationMetricsWriter.java @@ -1,16 +1,15 @@ package de.zalando.zmon.dataservice.data; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - +import de.zalando.zmon.dataservice.config.DataServiceConfigProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; -import de.zalando.zmon.dataservice.config.DataServiceConfigProperties; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Component class ApplicationMetricsWriter implements WorkResultWriter { @@ -36,7 +35,7 @@ public void write(WriteData writeData) { if (writeData.getWorkerResultOptional().isPresent() && config.getRestMetricHosts() != null && config.getRestMetricHosts().size() > 0) { try { Map> partitions = writeData.getWorkerResultOptional().get().results.stream() - .filter(x -> config.getActuatorMetricChecks().contains(x.check_id)).filter(x -> !x.exception) + .filter(x -> config.getActuatorMetricChecks().contains(x.checkId)).filter(x -> !x.exception) .collect(Collectors.groupingBy(x -> Math .abs(x.entity.get("application_id").hashCode() % config.getRestMetricHosts().size()))); diff --git a/src/main/java/de/zalando/zmon/dataservice/data/CheckData.java b/src/main/java/de/zalando/zmon/dataservice/data/CheckData.java index 7f0d40a..e6a294a 100644 --- a/src/main/java/de/zalando/zmon/dataservice/data/CheckData.java +++ b/src/main/java/de/zalando/zmon/dataservice/data/CheckData.java @@ -1,5 +1,6 @@ package de.zalando.zmon.dataservice.data; +import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.JsonNode; import java.util.HashMap; @@ -11,12 +12,17 @@ public class CheckData { public String time; public String worker; - public int check_id; - public String entity_id; + @JsonProperty("check_id") + public int checkId; + @JsonProperty("entity_id") + public String entityId; public Map entity = new HashMap<>(); - public double run_time; - public JsonNode check_result; + @JsonProperty("run_time") + public double runTime; + @JsonProperty("check_result") + public JsonNode checkResult; public boolean exception; public Map alerts = new HashMap<>(0); - public boolean is_sampled = true; + @JsonProperty("is_sampled") + public boolean isSampled = true; } diff --git a/src/main/java/de/zalando/zmon/dataservice/data/DataServiceController.java b/src/main/java/de/zalando/zmon/dataservice/data/DataServiceController.java index bf8c64b..2c9caa4 100644 --- a/src/main/java/de/zalando/zmon/dataservice/data/DataServiceController.java +++ b/src/main/java/de/zalando/zmon/dataservice/data/DataServiceController.java @@ -1,11 +1,12 @@ package de.zalando.zmon.dataservice.data; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; - +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import de.zalando.zmon.dataservice.ApplianceVersionService; +import de.zalando.zmon.dataservice.DataServiceMetrics; +import de.zalando.zmon.dataservice.components.CustomObjectMapper; +import de.zalando.zmon.dataservice.components.DefaultObjectMapper; import de.zalando.zmon.dataservice.config.DataServiceConfigProperties; import de.zalando.zmon.dataservice.oauth2.BearerToken; import org.slf4j.Logger; @@ -14,20 +15,11 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; - -import de.zalando.zmon.dataservice.DataServiceMetrics; -import de.zalando.zmon.dataservice.components.CustomObjectMapper; -import de.zalando.zmon.dataservice.components.DefaultObjectMapper; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; @RestController @RequestMapping("/api") @@ -122,7 +114,7 @@ protected Optional extractAndFilter(String data, String accountId, // that // execute the wrong checks wrOptional.get().results = wrOptional.get().results.stream() - .filter(x -> x.entity_id.contains(accountId)).collect(Collectors.toList()); + .filter(x -> x.entityId.contains(accountId)).collect(Collectors.toList()); } } return wrOptional; diff --git a/src/main/java/de/zalando/zmon/dataservice/data/KairosDBStore.java b/src/main/java/de/zalando/zmon/dataservice/data/KairosDBStore.java index 1ba8db7..e719abc 100644 --- a/src/main/java/de/zalando/zmon/dataservice/data/KairosDBStore.java +++ b/src/main/java/de/zalando/zmon/dataservice/data/KairosDBStore.java @@ -137,29 +137,29 @@ void store(WorkerResult wr) { List points = new LinkedList<>(); for (CheckData cd : wr.results) { - if (!cd.is_sampled) { - LOG.debug("Dropping non-sampled metrics for checkid={}", cd.check_id); + if (!cd.isSampled) { + LOG.debug("Dropping non-sampled metrics for checkid={}", cd.checkId); continue; } final Map values = new HashMap<>(); - final String timeSeries = "zmon.check." + cd.check_id; + final String timeSeries = "zmon.check." + cd.checkId; - Double ts = cd.check_result.get("ts").asDouble(); + Double ts = cd.checkResult.get("ts").asDouble(); ts = ts * 1000.; Long tsL = ts.longValue(); - fillFlatValueMap(values, "", cd.check_result.get("value")); + fillFlatValueMap(values, "", cd.checkResult.get("value")); for (Map.Entry e : values.entrySet()) { DataPoint p = new DataPoint(); p.name = timeSeries; - p.tags.putAll(getTags(e.getKey(), cd.entity_id, cd.entity)); + p.tags.putAll(getTags(e.getKey(), cd.entityId, cd.entity)); // handle zmon actuator metrics and extract the http status code into its own field // put the first character of the status code into "status group" sg, this is only for easy kairosdb query - if (config.getActuatorMetricChecks().contains(cd.check_id)) { + if (config.getActuatorMetricChecks().contains(cd.checkId)) { final String[] keyParts = e.getKey().split("\\."); if (keyParts.length >= 3 && "health".equals(keyParts[0]) && "200".equals(keyParts[2])) { @@ -195,7 +195,7 @@ void store(WorkerResult wr) { } if (points.size() > resultSizeWarning) { - LOG.warn("result size warning: check={} data-points={} entity={}", cd.check_id, points.size(), cd.entity_id); + LOG.warn("result size warning: check={} data-points={} entity={}", cd.checkId, points.size(), cd.entityId); } } diff --git a/src/main/java/de/zalando/zmon/dataservice/data/RedisDataStore.java b/src/main/java/de/zalando/zmon/dataservice/data/RedisDataStore.java index 1cee6f8..c460040 100644 --- a/src/main/java/de/zalando/zmon/dataservice/data/RedisDataStore.java +++ b/src/main/java/de/zalando/zmon/dataservice/data/RedisDataStore.java @@ -80,34 +80,34 @@ public void store(WorkerResult wr) { Pipeline p = jedis.pipelined(); for (CheckData cd : wr.results) { - p.sadd("zmon:checks", "" + cd.check_id); - p.sadd("zmon:checks:" + cd.check_id, cd.entity_id); - String checkTs = "zmon:checks:" + cd.check_id + ":" + cd.entity_id; + p.sadd("zmon:checks", "" + cd.checkId); + p.sadd("zmon:checks:" + cd.checkId, cd.entityId); + String checkTs = "zmon:checks:" + cd.checkId + ":" + cd.entityId; - String checkValue = writeValueAsString(cd.check_result).orElse(EMPTY_CHECK); + String checkValue = writeValueAsString(cd.checkResult).orElse(EMPTY_CHECK); p.lpush(checkTs, checkValue); p.ltrim(checkTs, 0, 2); if (null != cd.alerts) { for (AlertData alert : cd.alerts.values()) { - createEvents(cd.entity_id, cd.check_id, checkValue, alert); + createEvents(cd.entityId, cd.checkId, checkValue, alert); if (alert.active && alert.in_period) { - p.sadd("zmon:alerts:" + alert.alert_id, cd.entity_id); + p.sadd("zmon:alerts:" + alert.alert_id, cd.entityId); String value = buildValue(alert, cd); - p.set("zmon:alerts:" + alert.alert_id + ":" + cd.entity_id, value); + p.set("zmon:alerts:" + alert.alert_id + ":" + cd.entityId, value); } else { - p.srem("zmon:alerts:" + alert.alert_id, cd.entity_id); - p.del("zmon:alerts:" + alert.alert_id + ":" + cd.entity_id); + p.srem("zmon:alerts:" + alert.alert_id, cd.entityId); + p.del("zmon:alerts:" + alert.alert_id + ":" + cd.entityId); } String captures = writeValueAsString(alert.captures).orElse(CAPTURES_NOT_SERIALIZED); - p.hset("zmon:alerts:" + alert.alert_id + ":entities", cd.entity_id, captures); + p.hset("zmon:alerts:" + alert.alert_id + ":entities", cd.entityId, captures); p.eval("if redis.call('scard','zmon:alerts:" + alert.alert_id + "') == 0 then " + "redis.call('srem','zmon:alert-acks', " + alert.alert_id + "); " + @@ -151,15 +151,15 @@ protected String buildValue(AlertData alert, CheckData cd) { vNode.put("start_time", alertStart); - vNode.set("ts", cd.check_result.get("ts")); - vNode.set("td", cd.check_result.get("td")); - vNode.set("worker", cd.check_result.get("worker")); + vNode.set("ts", cd.checkResult.get("ts")); + vNode.set("td", cd.checkResult.get("td")); + vNode.set("worker", cd.checkResult.get("worker")); if (cd.exception) { vNode.put("exc", 1); } - vNode.putPOJO("value", cd.check_result.get("value")); + vNode.putPOJO("value", cd.checkResult.get("value")); try { value = mapper.writeValueAsString(vNode); diff --git a/src/test/java/de/zalando/zmon/dataservice/data/Fixture.java b/src/test/java/de/zalando/zmon/dataservice/data/Fixture.java index e62abbb..a03dbb9 100644 --- a/src/test/java/de/zalando/zmon/dataservice/data/Fixture.java +++ b/src/test/java/de/zalando/zmon/dataservice/data/Fixture.java @@ -1,18 +1,17 @@ package de.zalando.zmon.dataservice.data; -import java.io.IOException; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.Optional; class Fixture { @@ -38,14 +37,14 @@ private static List buildCheckDataList() { List result = Lists.newArrayList(); for (int i = 0; i < 5; i++) { CheckData cd = new CheckData(); - cd.check_id = i; - cd.entity_id = "ENTITY_" + i; + cd.checkId = i; + cd.entityId = "ENTITY_" + i; cd.exception = i % 2 == 0; - cd.run_time = i * 1.2; + cd.runTime = i * 1.2; cd.time = "1234567"; cd.worker = "worker_" + i; cd.alerts = buildAlertDataMap(); - cd.check_result = buildCheckResult(); + cd.checkResult = buildCheckResult(); cd.entity = buildEntityMap(); result.add(cd); } diff --git a/src/test/java/de/zalando/zmon/dataservice/data/RedisDataStoreTest.java b/src/test/java/de/zalando/zmon/dataservice/data/RedisDataStoreTest.java index 8a69398..b6d9256 100644 --- a/src/test/java/de/zalando/zmon/dataservice/data/RedisDataStoreTest.java +++ b/src/test/java/de/zalando/zmon/dataservice/data/RedisDataStoreTest.java @@ -19,7 +19,7 @@ public void testSerializeValue() { CheckData cd = new CheckData(); ObjectNode node = mapper.createObjectNode(); node.put("value", "foobar"); - cd.check_result = node; + cd.checkResult = node; String value = ds.buildValue(new AlertData(), cd); Assertions.assertThat(value).contains("\"value\":\"foobar\""); }