From 2b48c2004e770329e522d3acb2cec22b2cdd649f Mon Sep 17 00:00:00 2001 From: mckang Date: Fri, 7 Sep 2018 13:37:56 +0900 Subject: [PATCH] Initial Commit --- .gitignore | 2 + .../org.eclipse.core.resources.prefs | 4 + .../.settings/org.eclipse.jdt.core.prefs | 5 + .../.settings/org.eclipse.m2e.core.prefs | 4 + promql_client/pom.xml | 30 ++++++ .../client/builder/InstantQueryBuilder.java | 51 +++++++++++ .../client/builder/QueryBuilder.java | 5 + .../client/builder/QueryBuilderType.java | 44 +++++++++ .../client/builder/RangeQueryBuilder.java | 54 +++++++++++ .../prometheus/client/builder/Utils.java | 25 +++++ .../client/converter/ConvertUtil.java | 70 ++++++++++++++ .../prometheus/client/converter/Data.java | 5 + .../prometheus/client/converter/Result.java | 22 +++++ .../converter/query/DefaultQueryResult.java | 24 +++++ .../client/converter/query/MatrixData.java | 72 +++++++++++++++ .../client/converter/query/QueryDataType.java | 86 ++++++++++++++++++ .../converter/query/QueryResultItemValue.java | 28 ++++++ .../client/converter/query/ScalarData.java | 11 +++ .../client/converter/query/VectorData.java | 54 +++++++++++ .../client/builder/UriBuilderTest.java | 27 ++++++ .../comverter/query/MatrixResultTest.java | 22 +++++ .../comverter/query/ScalarResultTest.java | 20 ++++ .../comverter/query/VectorResultTest.java | 20 ++++ .../target/classes/META-INF/MANIFEST.MF | 5 + .../promql_client/pom.properties | 7 ++ .../promql_client/pom.xml | 30 ++++++ .../client/builder/InstantQueryBuilder.class | Bin 0 -> 2208 bytes .../client/builder/QueryBuilder.class | Bin 0 -> 142 bytes .../client/builder/QueryBuilderType$1.class | Bin 0 -> 988 bytes .../client/builder/QueryBuilderType$2.class | Bin 0 -> 992 bytes .../client/builder/QueryBuilderType$3.class | Bin 0 -> 746 bytes .../client/builder/QueryBuilderType$4.class | Bin 0 -> 746 bytes .../client/builder/QueryBuilderType.class | Bin 0 -> 1936 bytes .../client/builder/RangeQueryBuilder.class | Bin 0 -> 2357 bytes .../prometheus/client/builder/Utils.class | Bin 0 -> 1857 bytes .../client/converter/ConvertUtil$1.class | Bin 0 -> 3405 bytes .../client/converter/ConvertUtil.class | Bin 0 -> 1958 bytes .../prometheus/client/converter/Data.class | Bin 0 -> 128 bytes .../prometheus/client/converter/Result.class | Bin 0 -> 1135 bytes .../converter/query/DefaultQueryResult.class | Bin 0 -> 1221 bytes .../client/converter/query/MatrixData.class | Bin 0 -> 2989 bytes .../converter/query/QueryDataType$1.class | Bin 0 -> 2665 bytes .../converter/query/QueryDataType$2.class | Bin 0 -> 2227 bytes .../converter/query/QueryDataType$3.class | Bin 0 -> 1257 bytes .../converter/query/QueryDataType.class | Bin 0 -> 1902 bytes .../query/QueryResultItemValue.class | Bin 0 -> 1190 bytes .../client/converter/query/ScalarData.class | Bin 0 -> 497 bytes .../client/converter/query/VectorData.class | Bin 0 -> 2435 bytes .../client/builder/UriBuilderTest.class | Bin 0 -> 2088 bytes .../comverter/query/MatrixResultTest.class | Bin 0 -> 1900 bytes .../comverter/query/ScalarResultTest.class | Bin 0 -> 4110 bytes .../comverter/query/VectorResultTest.class | Bin 0 -> 4110 bytes 52 files changed, 727 insertions(+) create mode 100644 .gitignore create mode 100644 promql_client/.settings/org.eclipse.core.resources.prefs create mode 100644 promql_client/.settings/org.eclipse.jdt.core.prefs create mode 100644 promql_client/.settings/org.eclipse.m2e.core.prefs create mode 100644 promql_client/pom.xml create mode 100644 promql_client/src/main/java/com/bdwise/prometheus/client/builder/InstantQueryBuilder.java create mode 100644 promql_client/src/main/java/com/bdwise/prometheus/client/builder/QueryBuilder.java create mode 100644 promql_client/src/main/java/com/bdwise/prometheus/client/builder/QueryBuilderType.java create mode 100644 promql_client/src/main/java/com/bdwise/prometheus/client/builder/RangeQueryBuilder.java create mode 100644 promql_client/src/main/java/com/bdwise/prometheus/client/builder/Utils.java create mode 100644 promql_client/src/main/java/com/bdwise/prometheus/client/converter/ConvertUtil.java create mode 100644 promql_client/src/main/java/com/bdwise/prometheus/client/converter/Data.java create mode 100644 promql_client/src/main/java/com/bdwise/prometheus/client/converter/Result.java create mode 100644 promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/DefaultQueryResult.java create mode 100644 promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/MatrixData.java create mode 100644 promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/QueryDataType.java create mode 100644 promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/QueryResultItemValue.java create mode 100644 promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/ScalarData.java create mode 100644 promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/VectorData.java create mode 100644 promql_client/src/test/java/com/bdwise/prometheus/client/builder/UriBuilderTest.java create mode 100644 promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/MatrixResultTest.java create mode 100644 promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/ScalarResultTest.java create mode 100644 promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/VectorResultTest.java create mode 100644 promql_client/target/classes/META-INF/MANIFEST.MF create mode 100644 promql_client/target/classes/META-INF/maven/com.bdwise.prometheus.client/promql_client/pom.properties create mode 100644 promql_client/target/classes/META-INF/maven/com.bdwise.prometheus.client/promql_client/pom.xml create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/builder/InstantQueryBuilder.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilder.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$1.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$2.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$3.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$4.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/builder/RangeQueryBuilder.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/builder/Utils.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/converter/ConvertUtil$1.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/converter/ConvertUtil.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/converter/Data.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/converter/Result.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/converter/query/DefaultQueryResult.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/converter/query/MatrixData.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$1.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$2.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$3.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryResultItemValue.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/converter/query/ScalarData.class create mode 100644 promql_client/target/classes/com/bdwise/prometheus/client/converter/query/VectorData.class create mode 100644 promql_client/target/test-classes/com/bdwise/prometheus/client/builder/UriBuilderTest.class create mode 100644 promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/MatrixResultTest.class create mode 100644 promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/ScalarResultTest.class create mode 100644 promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/VectorResultTest.class diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..32868bd --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.classpath +.project diff --git a/promql_client/.settings/org.eclipse.core.resources.prefs b/promql_client/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..f9fe345 --- /dev/null +++ b/promql_client/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 +encoding/=UTF-8 diff --git a/promql_client/.settings/org.eclipse.jdt.core.prefs b/promql_client/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..abec6ca --- /dev/null +++ b/promql_client/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/promql_client/.settings/org.eclipse.m2e.core.prefs b/promql_client/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/promql_client/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/promql_client/pom.xml b/promql_client/pom.xml new file mode 100644 index 0000000..86624cf --- /dev/null +++ b/promql_client/pom.xml @@ -0,0 +1,30 @@ + + 4.0.0 + + com.bdwise.prometheus.client + promql_client + 0.1-SNAPSHOT + jar + + promql_client + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + com.google.code.gson + gson + 2.8.1 + + + diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/builder/InstantQueryBuilder.java b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/InstantQueryBuilder.java new file mode 100644 index 0000000..22b2e04 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/InstantQueryBuilder.java @@ -0,0 +1,51 @@ +package com.bdwise.prometheus.client.builder; + +import java.net.URI; +import java.util.HashMap; +import java.util.Map; + + +public class InstantQueryBuilder implements QueryBuilder { + private static final String TARGET_URI_PATTERN_SUFFIX = "/api/v1/query?query=#{query}&time=#{time}&timeout=#{timeout}"; + + private static final String TIME_EPOCH_TIME = "time"; + private static final String TIMEOUT = "timeout"; + private static final String QUERY_STRING = "query"; + + + private String targetUriPattern; + private Map params = new HashMap(); + + public InstantQueryBuilder(String serverUrl) { + targetUriPattern = serverUrl+ TARGET_URI_PATTERN_SUFFIX; + params.put(TIMEOUT, ""); + params.put(TIME_EPOCH_TIME, ""); + } + + public InstantQueryBuilder withQuery(String query) { + params.put(QUERY_STRING, query); + return this; + } + + public InstantQueryBuilder withEpochTime(long time) { + params.put(TIME_EPOCH_TIME, time); + return this; + } + + + public InstantQueryBuilder withTimeout(String timeout) { + params.put(TIMEOUT, timeout); + return this; + } + + public URI build() { + return URI.create(Utils.namedFormat(targetUriPattern, params)); + } + + private boolean validate() { + return true; + } + + + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/builder/QueryBuilder.java b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/QueryBuilder.java new file mode 100644 index 0000000..488fa96 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/QueryBuilder.java @@ -0,0 +1,5 @@ +package com.bdwise.prometheus.client.builder; + +public interface QueryBuilder { + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/builder/QueryBuilderType.java b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/QueryBuilderType.java new file mode 100644 index 0000000..589fb8f --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/QueryBuilderType.java @@ -0,0 +1,44 @@ +package com.bdwise.prometheus.client.builder; + +public enum QueryBuilderType { + RangeQuery{ + + @SuppressWarnings("unchecked") + @Override + public RangeQueryBuilder newInstance(String prometheusUrl) { + return new RangeQueryBuilder(prometheusUrl); + } + + }, + InstantQuery{ + + @SuppressWarnings("unchecked") + @Override + public InstantQueryBuilder newInstance(String prometheusUrl) { + return new InstantQueryBuilder(prometheusUrl); + } + + }, + MetadaQuery{ + + @SuppressWarnings("unchecked") + @Override + public QueryBuilder newInstance(String prometheusUrl) { + // TODO Auto-generated method stub + return null; + } + + }, + TargetQuery{ + + @SuppressWarnings("unchecked") + @Override + public QueryBuilder newInstance(String prometheusUrl) { + // TODO Auto-generated method stub + return null; + } + + }; + + public abstract T newInstance(String prometheusUrl); +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/builder/RangeQueryBuilder.java b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/RangeQueryBuilder.java new file mode 100644 index 0000000..6c1c829 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/RangeQueryBuilder.java @@ -0,0 +1,54 @@ +package com.bdwise.prometheus.client.builder; + +import java.net.URI; +import java.util.HashMap; +import java.util.Map; + + +public class RangeQueryBuilder implements QueryBuilder { + private static final String TARGET_URI_PATTERN_SUFFIX = "/api/v1/query_range?query=#{query}&start=#{start}&end=#{end}&step=#{step}"; + + private static final String START_TIME_EPOCH_TIME = "start"; + private static final String END_TIME_EPOCH_TIME = "end"; + private static final String STEP_TIME = "step"; + private static final String QUERY_STRING = "query"; + + + private String targetUriPattern; + private Map params = new HashMap(); + + public RangeQueryBuilder(String serverUrl) { + targetUriPattern = serverUrl+ TARGET_URI_PATTERN_SUFFIX; + } + + public RangeQueryBuilder withQuery(String query) { + params.put(QUERY_STRING, query); + return this; + } + + public RangeQueryBuilder withStartEpochTime(long startTime) { + params.put(START_TIME_EPOCH_TIME, startTime); + return this; + } + + public RangeQueryBuilder withEndEpochTime(long endTime) { + params.put(END_TIME_EPOCH_TIME, endTime); + return this; + } + + public RangeQueryBuilder withStepTime(String step) { + params.put(STEP_TIME, step); + return this; + } + + public URI build() { + return URI.create(Utils.namedFormat(targetUriPattern, params)); + } + + private boolean validate() { + return true; + } + + + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/builder/Utils.java b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/Utils.java new file mode 100644 index 0000000..fb3fde8 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/builder/Utils.java @@ -0,0 +1,25 @@ +package com.bdwise.prometheus.client.builder; + +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class Utils { + private final static Pattern namedFormatPattern = Pattern.compile("#\\{(?.*?)}"); + public static String namedFormat(final String format, Map kvs) { + final StringBuffer buffer = new StringBuffer(); + final Matcher match = namedFormatPattern.matcher(format); + while (match.find()) { + final String key = match.group("key"); + final Object value = kvs.get(key); + if (value != null) + match.appendReplacement(buffer, value.toString()); + else if (kvs.containsKey(key)) + match.appendReplacement(buffer, "null"); + else + match.appendReplacement(buffer, ""); + } + match.appendTail(buffer); + return buffer.toString(); + } +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/ConvertUtil.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/ConvertUtil.java new file mode 100644 index 0000000..1cc4d59 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/ConvertUtil.java @@ -0,0 +1,70 @@ +package com.bdwise.prometheus.client.converter; + +import java.io.IOException; + +import com.bdwise.prometheus.client.converter.query.DefaultQueryResult; +import com.bdwise.prometheus.client.converter.query.QueryDataType; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; + + +public abstract class ConvertUtil { + + + private static QueryDataType searchDataType(String typeString) { + for (QueryDataType each : QueryDataType.class.getEnumConstants()) { + if (each.name().compareToIgnoreCase(typeString) == 0) { + return each; + } + } + return null; + } + + @SuppressWarnings("unchecked") + public static DefaultQueryResult convertQueryResultString(String jsonString) { + Gson gson = new GsonBuilder().registerTypeAdapter(DefaultQueryResult.class, new TypeAdapter>() { + @Override + public DefaultQueryResult read(JsonReader reader) throws IOException { + DefaultQueryResult queryResult = new DefaultQueryResult(); + String status = null; + String resultType = null; + reader.beginObject(); + while(reader.hasNext()) { + String propertyName = reader.nextName(); + if("status".equals(propertyName)) { + status = reader.nextString(); + } else if("data".equals(propertyName)) { + reader.beginObject(); + while(reader.hasNext()) { + propertyName = reader.nextName(); + if("resultType".equals(propertyName)) { + resultType = reader.nextString(); + } else if("result".equals(propertyName)) { + System.out.println("resultType:"+ resultType); + reader.beginArray(); + while(reader.hasNext()) { + queryResult.addData((T) searchDataType(resultType).convert(reader)); + } + reader.endArray(); + } + } + reader.endObject(); + } + } + reader.endObject(); + queryResult.setStatus(status); + queryResult.setResultType(resultType); + return queryResult; + } + + @Override + public void write(JsonWriter arg0, DefaultQueryResult arg1) throws IOException { + } + }).create(); + return gson.fromJson(jsonString, DefaultQueryResult.class); + } + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/Data.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/Data.java new file mode 100644 index 0000000..c6ee5a2 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/Data.java @@ -0,0 +1,5 @@ +package com.bdwise.prometheus.client.converter; + +public interface Data { + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/Result.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/Result.java new file mode 100644 index 0000000..228548a --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/Result.java @@ -0,0 +1,22 @@ +package com.bdwise.prometheus.client.converter; + +import java.util.List; + +public abstract class Result{ + String status = null; + String resultType = null; + public String getStatus() { + return status; + } + public void setStatus(String status) { + this.status = status; + } + public String getResultType() { + return resultType; + } + public void setResultType(String resultType) { + this.resultType = resultType; + } + + public abstract List getResult(); +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/DefaultQueryResult.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/DefaultQueryResult.java new file mode 100644 index 0000000..3bcb0ca --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/DefaultQueryResult.java @@ -0,0 +1,24 @@ +package com.bdwise.prometheus.client.converter.query; + +import java.util.ArrayList; +import java.util.List; + +import com.bdwise.prometheus.client.converter.Data; +import com.bdwise.prometheus.client.converter.Result; + + +public class DefaultQueryResult extends Result{ + + List result = new ArrayList(); + public void addData(T data) { + result.add(data); + } + + @Override + public List getResult() { + return result; + } + + + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/MatrixData.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/MatrixData.java new file mode 100644 index 0000000..a947db4 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/MatrixData.java @@ -0,0 +1,72 @@ +package com.bdwise.prometheus.client.converter.query; + +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import com.bdwise.prometheus.client.converter.Data; + + + +public class MatrixData implements Data { + + private Map metric = new HashMap(); + + private QueryResultItemValue[] dataValues; + + + public Map getMetric() { + return metric; + } + + public void setMetric(Map metric) { + this.metric = metric; + } + + public QueryResultItemValue[] getDataValues() { + return dataValues; + } + + public void setDataValues(QueryResultItemValue[] values) { + this.dataValues = values; + } + + + public double[] getValues() { + double[] values = new double[dataValues.length]; + int index = 0; + for(QueryResultItemValue dataValue : dataValues) { + values[index++] = dataValue.getValue(); + } + return values; + } + + public double[] getTimestamps() { + double[] timestamps = new double[dataValues.length]; + int index = 0; + for(QueryResultItemValue dataValue : dataValues) { + timestamps[index++] = dataValue.getTimestamp(); + } + return timestamps; + } + + public String[] getFormattedTimestamps(String format) { + SimpleDateFormat formatter = new SimpleDateFormat(format); + String[] timestamps = new String[dataValues.length]; + int index = 0; + for(QueryResultItemValue dataValue : dataValues) { + timestamps[index++] = formatter.format(new Date(Math.round(dataValue.getTimestamp()*1000L))); + } + return timestamps; + } + + @Override + public String toString() { + return "MatrixData [metric=" + metric + ", dataValues=" + Arrays.toString(dataValues) + "]"; + } + + + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/QueryDataType.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/QueryDataType.java new file mode 100644 index 0000000..1a41ec5 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/QueryDataType.java @@ -0,0 +1,86 @@ +package com.bdwise.prometheus.client.converter.query; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import com.bdwise.prometheus.client.converter.Data; +import com.google.gson.stream.JsonReader; + +public enum QueryDataType { + Matrix{ + + @SuppressWarnings("unchecked") + @Override + public MatrixData convert(JsonReader reader) throws IOException { + MatrixData resultDataItem = new MatrixData(); + reader.beginObject(); + while(reader.hasNext()) { + String name = reader.nextName(); + if("metric".equalsIgnoreCase(name)) { + Map metric = new HashMap(); + reader.beginObject(); + while(reader.hasNext()) { + metric.put(reader.nextName(), reader.nextString()); + } + reader.endObject(); + resultDataItem.setMetric(metric); + } else if("values".equalsIgnoreCase(name)) { + ArrayList resultDataItemValue = new ArrayList(); + reader.beginArray(); + while(reader.hasNext()) { + reader.beginArray(); + resultDataItemValue.add(new QueryResultItemValue(reader.nextDouble(), reader.nextDouble())); + reader.endArray(); + } + reader.endArray(); + resultDataItem.setDataValues(resultDataItemValue.toArray(new QueryResultItemValue[] {})); + } + } + reader.endObject(); + return resultDataItem; + } + + }, + Vector{ + + @SuppressWarnings("unchecked") + @Override + public VectorData convert(JsonReader reader) throws IOException { + VectorData resultDataItem = new VectorData(); + reader.beginObject(); + while(reader.hasNext()) { + String name = reader.nextName(); + if("metric".equalsIgnoreCase(name)) { + Map metric = new HashMap(); + reader.beginObject(); + while(reader.hasNext()) { + metric.put(reader.nextName(), reader.nextString()); + } + reader.endObject(); + resultDataItem.setMetric(metric); + } else if("value".equalsIgnoreCase(name)) { + reader.beginArray(); + resultDataItem.setDataValue(new QueryResultItemValue(reader.nextDouble(), reader.nextDouble())); + reader.endArray(); + } + } + reader.endObject(); + return resultDataItem; + } + + }, + Scalar{ + + @SuppressWarnings("unchecked") + @Override + public ScalarData convert(JsonReader reader) throws IOException { + ScalarData resultDataItem = null; + resultDataItem = new ScalarData(reader.nextDouble(), reader.nextDouble()); + return resultDataItem; + } + + }; + public abstract T convert(JsonReader reader) throws IOException ; +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/QueryResultItemValue.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/QueryResultItemValue.java new file mode 100644 index 0000000..093a126 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/QueryResultItemValue.java @@ -0,0 +1,28 @@ +package com.bdwise.prometheus.client.converter.query; + +public class QueryResultItemValue { + private double timestamp; + private double value; + public QueryResultItemValue(double timestamp, double value) { + super(); + this.timestamp = timestamp; + this.value = value; + } + public double getTimestamp() { + return timestamp; + } + public void setTimestamp(double timestamp) { + this.timestamp = timestamp; + } + public double getValue() { + return value; + } + public void setValue(double value) { + this.value = value; + } + @Override + public String toString() { + return "ResultDataItemValue [timestamp=" + timestamp + ", value=" + value + "]"; + } + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/ScalarData.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/ScalarData.java new file mode 100644 index 0000000..42aeff7 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/ScalarData.java @@ -0,0 +1,11 @@ +package com.bdwise.prometheus.client.converter.query; + +import com.bdwise.prometheus.client.converter.Data; + +public class ScalarData extends QueryResultItemValue implements Data { + + public ScalarData(double timestamp, double value) { + super(timestamp, value); + } + +} diff --git a/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/VectorData.java b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/VectorData.java new file mode 100644 index 0000000..2b750f9 --- /dev/null +++ b/promql_client/src/main/java/com/bdwise/prometheus/client/converter/query/VectorData.java @@ -0,0 +1,54 @@ +package com.bdwise.prometheus.client.converter.query; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import com.bdwise.prometheus.client.converter.Data; + + +public class VectorData implements Data { + + private Map metric = new HashMap(); + + private QueryResultItemValue dataValue; + + + public Map getMetric() { + return metric; + } + + public void setMetric(Map metric) { + this.metric = metric; + } + + public QueryResultItemValue getDataValue() { + return dataValue; + } + + public void setDataValue(QueryResultItemValue value) { + this.dataValue = value; + } + + + public double getValue() { + return dataValue.getValue(); + } + + public double getTimestamps() { + return dataValue.getTimestamp(); + } + + public String getFormattedTimestamps(String format) { + SimpleDateFormat formatter = new SimpleDateFormat(format); + return formatter.format(new Date(Math.round(dataValue.getTimestamp()*1000))); + } + + @Override + public String toString() { + return "VectorData [metric=" + metric + ", dataValue=" + dataValue + "]"; + } + + +} diff --git a/promql_client/src/test/java/com/bdwise/prometheus/client/builder/UriBuilderTest.java b/promql_client/src/test/java/com/bdwise/prometheus/client/builder/UriBuilderTest.java new file mode 100644 index 0000000..c341d65 --- /dev/null +++ b/promql_client/src/test/java/com/bdwise/prometheus/client/builder/UriBuilderTest.java @@ -0,0 +1,27 @@ +package com.bdwise.prometheus.client.builder; + +import java.net.MalformedURLException; +import java.net.URI; + + +import junit.framework.TestCase; + +public class UriBuilderTest extends TestCase { + + public void testRangeQueryBuilder() throws MalformedURLException { + RangeQueryBuilder rangeQueryBuilder = QueryBuilderType.RangeQuery.newInstance("http://52.192.4.59:30900"); + URI targetUri = rangeQueryBuilder.withQuery("irate(received_api_call_total[60s])") + .withStartEpochTime(System.currentTimeMillis() / 1000 - 60*10) + .withEndEpochTime(System.currentTimeMillis() / 1000) + .withStepTime("60s") + .build(); + + System.out.println(targetUri.toURL().toString()); + } + + public void testInstantQueryBuilder() throws MalformedURLException { + InstantQueryBuilder iqb = QueryBuilderType.InstantQuery.newInstance("http://52.192.4.59:30900"); + URI targetUri = iqb.withQuery("irate(received_api_call_total[60s])").build(); + System.out.println(targetUri.toURL().toString()); + } +} diff --git a/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/MatrixResultTest.java b/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/MatrixResultTest.java new file mode 100644 index 0000000..f53a791 --- /dev/null +++ b/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/MatrixResultTest.java @@ -0,0 +1,22 @@ +package com.bdwise.prometheus.client.comverter.query; + + +import com.bdwise.prometheus.client.converter.ConvertUtil; +import com.bdwise.prometheus.client.converter.Data; +import com.bdwise.prometheus.client.converter.query.DefaultQueryResult; +import com.bdwise.prometheus.client.converter.query.ScalarData; + +import junit.framework.TestCase; + +public class MatrixResultTest extends TestCase { + + private String testScalarData="{\"status\":\"success\",\"data\":{\"resultType\":\"scalar\",\"result\":[1536200364.286,\"1\"]}}"; + + public void testParser() { + DefaultQueryResult result = ConvertUtil.convertQueryResultString(testScalarData); + System.out.println("-----" +result.getResult().size()); + for(Data data : result.getResult()) { + System.out.println("=======>" + data); + } + } +} diff --git a/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/ScalarResultTest.java b/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/ScalarResultTest.java new file mode 100644 index 0000000..e29bd61 --- /dev/null +++ b/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/ScalarResultTest.java @@ -0,0 +1,20 @@ +package com.bdwise.prometheus.client.comverter.query; + +import com.bdwise.prometheus.client.converter.ConvertUtil; +import com.bdwise.prometheus.client.converter.Data; +import com.bdwise.prometheus.client.converter.query.DefaultQueryResult; +import com.bdwise.prometheus.client.converter.query.VectorData; + +import junit.framework.TestCase; + +public class ScalarResultTest extends TestCase { + private String testVectorData="{\"status\":\"success\",\"data\":{\"resultType\":\"vector\",\"result\":[{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-7ztnz\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"*\",\"endpoint\":\"http\",\"instance\":\"10.244.4.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-7ztnz\",\"service\":\"person-application-1-5\",\"url\":\"*\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-7ztnz\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"com.satish.monitoring.web.rest.PersonResource\",\"endpoint\":\"http\",\"instance\":\"10.244.4.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-7ztnz\",\"service\":\"person-application-1-5\",\"url\":\"[GET]/person\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8gb82\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"*\",\"endpoint\":\"http\",\"instance\":\"10.244.2.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8gb82\",\"service\":\"person-application-1-5\",\"url\":\"*\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8gb82\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"com.satish.monitoring.web.rest.PersonResource\",\"endpoint\":\"http\",\"instance\":\"10.244.2.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8gb82\",\"service\":\"person-application-1-5\",\"url\":\"[GET]/person\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8xh22\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"*\",\"endpoint\":\"http\",\"instance\":\"10.244.1.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8xh22\",\"service\":\"person-application-1-5\",\"url\":\"*\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8xh22\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"com.satish.monitoring.web.rest.PersonResource\",\"endpoint\":\"http\",\"instance\":\"10.244.1.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8xh22\",\"service\":\"person-application-1-5\",\"url\":\"[GET]/person\"},\"value\":[1536200364.286,\"0\"]}]}}"; + + public void testParser() { + DefaultQueryResult result = ConvertUtil.convertQueryResultString(testVectorData); + System.out.println("-----" +result.getResult().size()); + for(Data data : result.getResult()) { + System.out.println("=======>" + data); + } + } +} diff --git a/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/VectorResultTest.java b/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/VectorResultTest.java new file mode 100644 index 0000000..ea93ef3 --- /dev/null +++ b/promql_client/src/test/java/com/bdwise/prometheus/client/comverter/query/VectorResultTest.java @@ -0,0 +1,20 @@ +package com.bdwise.prometheus.client.comverter.query; + +import com.bdwise.prometheus.client.converter.ConvertUtil; +import com.bdwise.prometheus.client.converter.Data; +import com.bdwise.prometheus.client.converter.query.DefaultQueryResult; +import com.bdwise.prometheus.client.converter.query.VectorData; + +import junit.framework.TestCase; + +public class VectorResultTest extends TestCase { + private String testVectorData="{\"status\":\"success\",\"data\":{\"resultType\":\"vector\",\"result\":[{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-7ztnz\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"*\",\"endpoint\":\"http\",\"instance\":\"10.244.4.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-7ztnz\",\"service\":\"person-application-1-5\",\"url\":\"*\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-7ztnz\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"com.satish.monitoring.web.rest.PersonResource\",\"endpoint\":\"http\",\"instance\":\"10.244.4.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-7ztnz\",\"service\":\"person-application-1-5\",\"url\":\"[GET]/person\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8gb82\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"*\",\"endpoint\":\"http\",\"instance\":\"10.244.2.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8gb82\",\"service\":\"person-application-1-5\",\"url\":\"*\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8gb82\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"com.satish.monitoring.web.rest.PersonResource\",\"endpoint\":\"http\",\"instance\":\"10.244.2.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8gb82\",\"service\":\"person-application-1-5\",\"url\":\"[GET]/person\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8xh22\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"*\",\"endpoint\":\"http\",\"instance\":\"10.244.1.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8xh22\",\"service\":\"person-application-1-5\",\"url\":\"*\"},\"value\":[1536200364.286,\"0\"]},{\"metric\":{\"POD\":\"person-application-1.5-5dcc65c754-8xh22\",\"application\":\"person-1.5\\t\\t\\t\\t\\t\\t\\t\\t\",\"controller\":\"com.satish.monitoring.web.rest.PersonResource\",\"endpoint\":\"http\",\"instance\":\"10.244.1.4:19000\",\"job\":\"person-application-1-5\",\"namespace\":\"default\",\"pod\":\"person-application-1.5-5dcc65c754-8xh22\",\"service\":\"person-application-1-5\",\"url\":\"[GET]/person\"},\"value\":[1536200364.286,\"0\"]}]}}"; + + public void testParser() { + DefaultQueryResult result = ConvertUtil.convertQueryResultString(testVectorData); + System.out.println("-----" +result.getResult().size()); + for(Data data : result.getResult()) { + System.out.println("=======>" + data); + } + } +} diff --git a/promql_client/target/classes/META-INF/MANIFEST.MF b/promql_client/target/classes/META-INF/MANIFEST.MF new file mode 100644 index 0000000..9421486 --- /dev/null +++ b/promql_client/target/classes/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Built-By: mckang +Build-Jdk: 1.8.0_144 +Created-By: Maven Integration for Eclipse + diff --git a/promql_client/target/classes/META-INF/maven/com.bdwise.prometheus.client/promql_client/pom.properties b/promql_client/target/classes/META-INF/maven/com.bdwise.prometheus.client/promql_client/pom.properties new file mode 100644 index 0000000..f33cab5 --- /dev/null +++ b/promql_client/target/classes/META-INF/maven/com.bdwise.prometheus.client/promql_client/pom.properties @@ -0,0 +1,7 @@ +#Generated by Maven Integration for Eclipse +#Fri Sep 07 12:58:14 KST 2018 +version=0.1-SNAPSHOT +groupId=com.bdwise.prometheus.client +m2e.projectName=promql_client +m2e.projectLocation=/Users/mckang/playground/prometheus_dev/promql_client +artifactId=promql_client diff --git a/promql_client/target/classes/META-INF/maven/com.bdwise.prometheus.client/promql_client/pom.xml b/promql_client/target/classes/META-INF/maven/com.bdwise.prometheus.client/promql_client/pom.xml new file mode 100644 index 0000000..86624cf --- /dev/null +++ b/promql_client/target/classes/META-INF/maven/com.bdwise.prometheus.client/promql_client/pom.xml @@ -0,0 +1,30 @@ + + 4.0.0 + + com.bdwise.prometheus.client + promql_client + 0.1-SNAPSHOT + jar + + promql_client + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + com.google.code.gson + gson + 2.8.1 + + + diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/InstantQueryBuilder.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/InstantQueryBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..2a6404ca4ea29c913e7d1b9ef39f7f718b1c5a44 GIT binary patch literal 2208 zcmbtV+fo}x5IrLVE5vdW_=Xc>o1h?Jvmr4FHWwR+01*(N3l7dj8A%gZm$a*_R=83r ze?fjF4@p&QNK%y#$Va8pGrOQAh$MN{rjH)rcu@qVwf%4HKSB{ zWj2ISckG&Q4@I+Kl&hw&T%*)9s}HeK9V%I8zrOfgqjT}^+^5Zi2p$+?bc9n3NGuGk)_ zJzi~!2znUi4PG~mqiN$i$@8fi7sh^2-`8>1tO>H@$207v>)SMY&Cs7uZ>5TXVb=MJwmD3F&=(>1Hc7Ozt>-8u8X;%?KSP&4Ou=PxE7Sn;Ypw@4UW^QL9GiwxH$ z0uFw?5_^=&id_*=bl{GT5sWf)OeFR+++!G2^;LYU4LxTF7xUhcT8#fi(&WBB;h>S zyi#Yi=~k(+hH#FAQ*f#@e`UIdyRu6dGC}rd#rz+EdL?+OZkG@9s&^J9HWL4xcod&u zOT#8ZUrT?Rwsj!2m0=i?=;wDRS+>E@BY8*)s#QDHTSgi^y>?5u2E8^Uk36Ui3Jl3B zC0(GlZRmIodYO7GUK5p7+o^HV!AzSw; zchkQ_2vM^2fZa=Wf509fI~K5q=nQp_I!g}+;oMa7TZGKW_co31(8`YplP9o}JjT1p zKX7;d828^`jHcuJlP7rp7!PC7w=mw~qc`{@`76d^1F^@yVXgzumDPJ{{h|Ua(Ktdu zfFXh&B$C636O~8wek~J`W!ky!g~SRzC5wV1rKmHkV$CPEMum{X`c;sjNk8Jxv=o92 z5>?wH=%rj*p#5i{GO(;4!#dJF=mt^hptCWL`REBYF2Nne06o1e+}Igz41L&ExI34S z9k`6_IFXG9K!aoleX_gA`eYwdg7oyM3aG-LAa{cORt4lu0!am^d#*mq5Q_N5hj~C> Y=@$zBBu7;{@8neAWXM0sz?E0&ANlhQ$^ZZW literal 0 HcmV?d00001 diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilder.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..ec65077f8ff3ad547b69e6f57e98e0f18bb2d4df GIT binary patch literal 142 zcmX^0Z`VEs1_nb0c6J6PMh3&={9OH{l=95tRQ-aY{M^)%jMUO%{p6g?)Vvb?q|(fs zl++^qz|z#BN+$@1oq>gsK_Dx!EKxrvF)v-;KPf9UxrC8{D>%QjC^^+FGbfdiK@eGo Y9!N18BLgD?Gtg!bU}Rtgl1vP20KTFp)Bpeg literal 0 HcmV?d00001 diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$1.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$1.class new file mode 100644 index 0000000000000000000000000000000000000000..8f71f67292d07fe9d21e715d03435eac77371b46 GIT binary patch literal 988 zcmbVKTT2^36#kBh*|@GX(I&NOs}G^50hc_el+p^hXuXWCL2wL&(dVIk)dSx4-{>{Q=Oxl7%tCRuFaFcIR5g!oAc{S0v{mjol!W zLM3iHm0?F{_iHNj&F4%xzPS{&hJ`#~W29t4;e%8%`ADd)co+Va?}olQbB_`&)mgK( zdP>OeMjc@zhY1JcunC8QBE6CLn}%T8lS+I^yKSM5{dOn_GhP(<;i<2s(fh`HaxP=S z`_Y(cjV57IiR+e%6JG_);tl9ybvX2IJS6dW6HN;6RqIgJC z4;OKwLo=dh+aeqcN*=DG|C+Hun0GLZ62U%-QXPnWX%U>-BiIV+*3gq#e6e| ze6>-B;IxzydN=grSj0Qa44C6nNADd+fpv?uP2_u);#z%??ohmC+ZZPKwON9_7Dqb# zb65gJOyLDfW<;rvvCRl3cH%e6-|Kgn{lQ8GVrbaW1E^*}eE?&v;uWa$iJ|8DQ13X# iKo!>NKk@o0PF9HV=djS@Si~EaSqpFZXXa)Yv4eY)&jU>W literal 0 HcmV?d00001 diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$2.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$2.class new file mode 100644 index 0000000000000000000000000000000000000000..09a7f971735d0041f6dccfc792ab2e332b706f7d GIT binary patch literal 992 zcmbVK+e#xr5ItpL633`9nz$El4vKv(A>rvcp(GA zW`9Zx>s7+A5;rv!gpP7q2^fwtra*-qruxvOT4ao& i%B)oW;Nx4K_#@^$h0h(0Y0R*VOPJ-G>6=l+HvRz$`UOn@ literal 0 HcmV?d00001 diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$3.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$3.class new file mode 100644 index 0000000000000000000000000000000000000000..70b3c13b4216ab7112a3ac74400af17c9253a222 GIT binary patch literal 746 zcmbVJTT22#6#honORILVv=<+G@F5FYLMp-tNh$;lLi2rH2c1}FWp+35U)594LqDJ& z6`fh7pnS=N*)wO(cbPfoo^)puUaqEKFr2JJW=LKLDS}Ie;(qJVezGmsmP4x(C?SWnW~IkqG`s;f z5yx5<378D+Wysb_{xxl|(Grs1h2uU~UAymchJ4F&Y`14Cq4UL|5sZY-aK4&Txmsh$ zNIq>!Kd_}kF1JhGQTe|*>E?dM^`KmR|39r{FgsqT9DXD83k$!;c%&KBi)-n)o=?qh z)A+psL$)a;R}I(peeT!yz-SWsi_uCTNqLHPr!b=P^ub|?y(0Y*Au{wgBV>_Kq(ym_ zB9KN7>lDcmo8KBN!p7J$RbtR=tq+tUW^rC!Fg0Qed8)^;9pQISpg6xrk#;84G#hn% E0jPk(_W%F@ literal 0 HcmV?d00001 diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$4.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType$4.class new file mode 100644 index 0000000000000000000000000000000000000000..41d212787fe94b7e0911960bed85a3657c33704e GIT binary patch literal 746 zcmbVJ-AV#M6#honv{n1Dw3{xxkjR3Tz=|+Jk_thC(7a#QK_}K(ncYo%tGWuh=mC1D z=*%hwApP6$$KHuH}9AhVm7{i(4jjUdOB7AO*l{ezSkcYnIxPr^T>V?AX zb7kF!TurZLNoP9drAiV8!^u))hLsB;MR3Vb*l#}CPqyXSa$vOsCFG#mD0dl*y4U9> z;#kcf0h6J%2-#f9zp4$^n?mxtaMa_fWA|LnkZXF5?RIS?bUr^cf}!vk&X;p4RjLeW z$tMlz2ex#`<#xe4%Kuj<-R#e}9+a!^|EHAjQfcvoNd9nHsT)9M$94ityXWQ=HwSKs%FanvEL1 E0JI^*4FCWD literal 0 HcmV?d00001 diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType.class b/promql_client/target/classes/com/bdwise/prometheus/client/builder/QueryBuilderType.class new file mode 100644 index 0000000000000000000000000000000000000000..1a11ed12be0e88116766e7fc88bdd5393b066286 GIT binary patch literal 1936 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 DqU|9k literal 0 HcmV?d00001 diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/Data.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/Data.class new file mode 100644 index 0000000000000000000000000000000000000000..8c2ebbc4497a2e4f75f00614ee20115487aa3fd5 GIT binary patch literal 128 zcmWlSu?@m75Jmqb5DO~yK;py>h?as09CHFkjvYCduv-cSU?@cVidQ}9eSgabz!}D% zA{<@nxqZC-C_LoUi@szU*#$3A*`+v3R>^#^Y7I7oLuY5p!Nw=w+D@Dj_V+YpCs!YY Uuq)-ML=AyZudf1OyShU22M}=~@c;k- literal 0 HcmV?d00001 diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/Result.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/Result.class new file mode 100644 index 0000000000000000000000000000000000000000..eb020e4d59cb0c7e8a9774b745260c27488adfa7 GIT binary patch literal 1135 zcmb7EO>fgc5S>jNhq!iK+&1OA6gZ?o#X{oLM3E2`Ckqg<%Gq&O=~j+i+3O}?P13=v$JpCyjl78pP#>o=p{XCQjO7GoK5`E(PvR`|1{4gTpshX z@Z&`ARQhq2p7C7r-2cdnGLcO(7_FT|XOW*o>DYfiI^nToWEL`#Wx>b`W}8Eqi*(#$ zWaZPt;g?g6(!NNA95AYPb`KdDZ?Yq9QJrj?Zc(d6j8<)Gkg2>io0?=Yas!d_cjaWn z^Dr7EK=Fbsj*`PD7b>ojhCCMF;0HJA2?X0$(ZI7pe04LZei-%!z-x`U99D{Kbat0% z(kf;po1Mi9rHum^t-F@a!I}A3U87?Na(PWDMdAmdkc!7pj8hCIhhkd`1($5CVOHib ze=C%*D;n^H8Y82Fez?DXT@4N*8TAHpt?1X$Gj=e_I^J9j3zLN@JD57Gh3FG1 z7`|@z2d#A3cXE_*&ylLrZCH;C*aobLLrq$R?;&IBW3)~ih&Hce+KA9S-Kj2ljjy_- z(fvlwS2!A4F(H7?;2H~XDx=}<(!C1q130U`%S@n{gDP~(&RhX)Cr39NJ zYyL&Qzm%-|FIo4RWFIUiJEyBA>w(hxf5@tFEg_4)!9#k4ooz@^qsLe~Q}0QYd3pg? CN7oSm literal 0 HcmV?d00001 diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/DefaultQueryResult.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/DefaultQueryResult.class new file mode 100644 index 0000000000000000000000000000000000000000..3b97b293d13b5fa0866c47708da5eb8f1db4aac2 GIT binary patch literal 1221 zcmbu8U2hUW6o%gc%F1>Nlv?n+wtg)%b@jFo46*4I(P#-quR1JKI?b|Mm)RQrl_r`- zP5c4=DC3!32x*B4jTbw+=VRVy&Y82n|NQs`;5oJpq!?bf!O-dTKgp4BPQzd*)Uk+0 zj_XO`E5{A|GZ88gIv*nuj-5Sm#3N6=(Z*XbqE7=EhMfgPk}V9`Fy6~hY@hHm?nFv@ zPFs#togsH12R>I(C>Yi+g&Unty-7LQhV-RsGNkQlmm%{q=nE5RtXRmwG*Dnzn+dnV zkdL*xi9A+vU?^EwLYAS>mcDou4SOQ&@SaD+QafmILw?pq-9ZcYu}N(w z2HlRGT#v{7f%Cd|B3xCkexU2<$M~Hq(Mgohbo~RNrejjFtCt3V5-M}fY31fY5QVPT zm--?r^P~Dy*TQhr=1@qKvy+1-=fNfoTAKbeMh{IJy$$+G;Tn0VPMEYVlcy8g zK(TfXtM(K5_va{n!|E4`rLjh9KGrdjfrSF?yG}kU)-7TkWwI(4JU7Tp?LKEFBp|r3b+Iy;Idjhb_TJwmy!_|)Z2Gas6% zyjfgJ-CVtAWeKSXBo7HGVFWaWbnL7^%dA4Hx^|v%$|C|zi}qU4bgPafaC!IJQSVWO zUgY`W+Q{oGO1cCM#bVQ_HyJ*c<3#*p1WUl6^F+N+$ zn)!_B*z(z547uwzsb76N=JiBLAJ;5*&Ud*r(Y@PAz8~7Vc4&8-Ds|*|Vh^zN=E|PM zLn6zg?YrH0T&_9NOgXZ4YFV95bia$d%G`V$!+VGcG*ee&h|d%6B7#(yd!C!P3}i4}qz-E3pHbLuO~m zE?5=UER-u!)Rh>nN;a{^H|$JzXBU&rche=OV7jiAs~;CQ?-x*Gr!(F4!Q*$o4))^- zwd`7t+|;67DCaHa(DGoT7{i3@&q)DeKg^7dsa+Gz1J?1Gz>#`4OGItrrwNWwAc`CK zLdQ&Pha$<=TaRHDb9CA%Rf{=Jh(x-3CW%5lbwKyGp!3S7XD- zU?YCNHX0yD#cK{QnH~towZKVl!@gdy<&W)SA?w90d8!54YBQlRu8wa7j_-|pt!n3U zmJ`8u#H|mW&J}O6k43S933)MNSOq7&W|qsA^rf#c5#BGzK5~8hkq9^=n|nKVO17e) z*Cgut9x%TuUiYpB7R5c}b=b1!I*$3c62meIvho@|I*=V{mDo#nq`(LA=r=6w z#ZuMDTGO_i>MeCkE=cQehJz-^PZ$CI@wb5YO{}H>>nR}T5AWqL;%^DBEquDB_5(+I zHu>2?e0dXXzrpxLojT6z5$*s_gt)(j-|zD&#?w554xHe(zy~-)Qap$A{^9XPYF%}=JZfi1?d$>65{i;QH+p=mpXsem zLWA_GYx@sf1zWO^^XMTdh zfpg6Id5TS-Q^iQ&5|WBb592V3Z&L&pxTl{S>41$o8Nf9Mqm6 z*%2|cf#GnU5u%B`TSzZ=gf}qMhUxn+aD5Z=8@RprL=%Q)=ucn$)mQiTw93*I#=6S? zxQ1b1gwBm(hTlsVR~p7u4l+BXnBfrql02I*hYY@=$8iqpVSG)G4NNNELqs{Pd=GOc z+uYZ+;P+-?3oFapAmK9-aOhM3 Gm45*Tu)uHt literal 0 HcmV?d00001 diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$1.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$1.class new file mode 100644 index 0000000000000000000000000000000000000000..c384a88872e51cf9ebeeffa51dd0d04a1835aefc GIT binary patch literal 2665 zcmbtWO;;OL7=CUONE)Us-xP~26vTv&j;Jjyp$HOa(*m^=seo38 z3m2ZFOE(-B9(4mpIeJ|CC;S8c2KBi&0Yc$uX;03~edoRJ=kvbzz4_zsUw#8HfQ<-F z2@Gf4g1Mai%=V?Z=D7tKtjMBoX7aXl0yE<}8`2A;XRa5e_r$!f-YF}v=ANv{u7L=` z0z)ruL7;lrcI;q8pgBIZYHe6%-g0v0gTS+$Tr!=Q7YL8LSs6nJrwvpgCNO)PqGM2o7;d4W(oF(1P#Xp7*2K!>vUpP3nWRjJi1%be}pTV9o!K&f9c z(2fp)s3SLn8LPl@G{zH08zhQOwh(*PvokTghSwwL7N~u;kqpF}RwPyCROVS`DW`)5uHyz9Ix3WIIP6+O!OB+1?YAVQn-5QD-bm#seYHY? zT|Ru&`BBaY4K7yb?K>JiS@y@)SsCZG^}plr`3Joo?lB0g8#sqro|y-3(aXq5Ti;!W z?&&KEX2Lz;Wb&@hiB(VpHm zv4iMO*VI|Ic_MgomWAee=&>T!#8u!`ryIg}M5% zlJebMj8l0+D^G5rol=vn;a#K`NZnP>4(@GZR#}w*lXyF}k9{rTL$u)%woR@8w;qD?XB7;lF z@oHN|2OM0+=jg;!et*Hc>q}~XOMBlTf$wQW0Xo7W5UMhuipn5MD5Kbd#AAZnNZlM( z7+W_lxlY)GI>W)gicd-9sohMe(q3VI&q26$jFG#~mWPt3_yekYnD&~=x>Rb_4639m XDzzVirzsx+*HVKNNvW1pk{HFmc_-hp literal 0 HcmV?d00001 diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$2.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$2.class new file mode 100644 index 0000000000000000000000000000000000000000..3372cba01a373f62042da8963f82fbb6ed1e27ee GIT binary patch literal 2227 zcmbtVZBrXn6n-uVBwe;Gg_KIIwH2fZZ>yB|P=peYR0tL@6;yPST*G!YyRf^#;`qVw zM>u2uK)>o27-gnEpuff6pgwn#T3$L@+R5zRv*+G>&Uwyx&dIaC{&))DLwp-UgTQ3b ztr&&Uca|@WZO^U9U`tkgqi9>w35=ra>`E_?p0QJv-kxz^y)$NDuI+8huE7|h0u!%q zL7-{Ua;#uVpgp?om;02bSyjF|-M^g=w~2BfI?XP7Id? zM$eSO7d|v3a7ESTErCcfmDg|;*J5~E;HI+ppU8B)qpmdhA_;$ zY*zz;v7_EX>ssE#p=lR8_bpQGO}*&Avntz%MU@tkx@&vTf-l#Y)u zO|373r7%O}bUlC&6{92dwVjQcqmQt%i+8&SW&qV@Yu+$6%6~jABs&pX#`e6#<gbeHMlDM}vT=<04vE^;Ng(73I7Y zj@M&HE^3zCmjd{&^vMH=>E(F@B988fxM_ zz1PG6;=fVXfM&imuD}3K(H140D-g$dT;NKNXyJ)Vl%xD=Rn~+$-AK((he)g+pna)# zA01C%ak-vreXoBXUB6)T5Ix-Nn~2tS+d7nRolpPo_#lD@ltv!^{U?`+zK-ZV?mWS* z)|uL6b!@ip5cBI47SwZq#eFPOTIIugKXaMr`;}2dLL51?QNGQ{hlpXAagVS;Mmavm z(2a3UrU~>TjXPX3d@o=MISzmgOk)!>*uh;?dG80d_m6Bgm5ZSo%6cw{7kNBj7UK9G zpJSbQNx-CqFBn5NM`$O$WR||-O_jx(W)snt8AkK<$t-fefj^+BhfuyzNNN>PHB*^a Y5vctL3ZYa)iEFKnl9FPMI!OTk00630^#A|> literal 0 HcmV?d00001 diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$3.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType$3.class new file mode 100644 index 0000000000000000000000000000000000000000..eae64921110431a46ee8003ae33d9adbf53cec4b GIT binary patch literal 1257 zcmbtTTTc@~6#k~St!ph6D&9~*Dz?QqF(eu-AsC8DNh?ALi9VQ2x0AAFJ5y)32>(i7 zB+CJ zPCk`*5-u3-a;d&IyW` x!(Ai_&xvvV55@)Z*gP{;A}Sqo*!paiHgo$wiG^6Zk21+o%@xvYmu)0g@e|Y0P>lcp literal 0 HcmV?d00001 diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/QueryDataType.class new file mode 100644 index 0000000000000000000000000000000000000000..07742ff5decedc7b958e3b990dcfde86d9664241 GIT binary patch literal 1902 zcmbtVT~pIQ6g^8zQ(^=R0`jFIC~ZL^;wP+O@{F8q?Fq*dj`6u9oU-v=jtku5>GG~n5M*fG;d|UDa4T;tTBRaGXoY)@xzCVD zUL874I2n=iY=<6FIbPuOaBXpQV`Vrqm)uxPF}(WN7=AcG8ZFbCW(Y*08HV7zy+xYZ zi22ot4^M>AtfCdVh7Q~$_K9kcu1NACRVhl5m5(n)Gc91~($I{Mf?JJ+ejJ9Pq8qxz z?AM@3%-fA&PKFUyF;Kz0ry-1xL?71B0+pdHX3Lo7E#btY^;TKBl5C?c?&rj= zXWEvl;2}eYpLEkUme$U{Ftnu1yv4neLySKp(o<9a6=k|E;_0+>@g6Uf1j(L>L>n@! zib*_G@Pwhg#ztk=6GaWr@SHSp$KmCiy<298)tYT>bBC@{e5uBNXG>&2s))~V?GwYh z+GACZ)?I*0Iz(KSKCa;f5)4mk!RHIyb>lUR&ZAwZll_EJNH)1xJG(gb*6T7-(TqwK zCP%6%yX54=8`C%LU%hQyhGbZ+2`%X~)YGO(jJ9N1!tvD$cVUot1gIGYXM1D^0BELL z>(6x4fc9Q_&uB-8Zr(L$wEsH26%nKnm^(phR&Ng+;l?34Ptcv!dxA&kJw)FL2D18{ z<|Eua#9-(LST=Bg&QvydfWB0=`2d5dLkxW*kS5%xQTHJ=f*(gOmN7!%9{6A74r*o9 z&=W*hQdVN4{YMzN00_|rR1Zm>v;`5VfqoKE#0X@R)`Ik9j6z6IgS0)OA5lfqGs=Jj z?mECw_H7_`noUU7D}laaJRbY%pO8c=ao9Pz7IN3iDu#?ABda=#9b@Vz*gwy;gG9Zm ro*SXaGNTny)0c~Cq74De(Ab38s)RYbruSZ2Z>5=*sr^>wfy(>`*%OB#rUI0ULVFafinq#$Tl- zmL{6`1N>3O+2w>v(J$tbz1i8BXP$Xxe*FCU9l#DAB@khF+VT2kyZhcAa&zE&eJ+l9 zFf==k&0S%3Ja@!>!F}^x!2J*AD|x==!@v3j0du+S5*d>S2XjEGau|2QL(}+UXk;G+&s8MaDz>w7uhbFBn zIug*x)3jawGU&Ite`vKGLd!S3j^(s0-4HKPyz zaK;SPNs>a9CJadm_-zXBK=`)XV^}h(&6!dYZ#{uEhUIzpv%q$`+)rYiVQnIL!xGk1 z_VSylzE9Fv#ce6x9fpE&u|l;aBkt? zOj)u}lnNBF9F{SOhJ1_Hz993Fj0gcwxB$8W)F%NUAj373!sJ~7lf7t)-;7$CP$q?Q z3Zba(+LV$OQewEikVtNxNPZ!a8;gmY(`Z7ZK;?>mAtDu_QOX&HP3g|;SWR|JHHb;OcA+Q6oWc+?Z*<+r2?u>B2StAY3c literal 0 HcmV?d00001 diff --git a/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/VectorData.class b/promql_client/target/classes/com/bdwise/prometheus/client/converter/query/VectorData.class new file mode 100644 index 0000000000000000000000000000000000000000..26aa49893f3e750561a3be7a3614c6e3bd944986 GIT binary patch literal 2435 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 AZ2$lO literal 0 HcmV?d00001 diff --git a/promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/ScalarResultTest.class b/promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/ScalarResultTest.class new file mode 100644 index 0000000000000000000000000000000000000000..848fc091660c91663985b1210564c3548d960fe0 GIT binary patch literal 4110 zcmdT{?RFDY6x|mJNz<`lkq;3S2F12CnItr&v=oFEuv$u?9}1 z=B0Q!T5F@`!0fWgv;wE3T_>)L(5EVc(D%}Iwdy)0TRD8rWeVv+xm4;aluj0U(izT+vrE+|#yh~qH}ucTq-vYC8uZ-&=E z?o>9LrFGFSuC39ua5|SR(Co3kVbzXjm*p*+J>Y27FK;mE@d<@8SaRYRk1ImFP!zZf z*=?@$m`k=B5$$ZQaH21t&7SD%&E)(0dd#djx6<=6>PkjtLUt@%$W(l?#@8Im+?K@* z+pRJaabrnPKMI)S|GfvZmo7}rS+z!ONjv)Ii~V_)sflfCZ2Avro_|p^ZzS}RY2JYG ztaaTAn!ma|*m|1ZS;)T#n&(~^&FcxhY??o3UAKbfuWk>XhURlCE3FXNWnc$(@;>Hx zay+UOWiVwIT}rEtF`r^=#tt0)ULR~x3r;9-c8rC6c2!47meRs)!Vbu<6!zgj0{aE> zPl)Q(wc@ZJKTRvgHSi`5QX*0tY2#I`BKhx3=~7dF0@I!UmV{kT!rxe_rbh mI0ipg2b#n*X7DKi4{_iA4A+_W4SMNxYPMNE3C`9Pn)@38P}zb2 literal 0 HcmV?d00001 diff --git a/promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/VectorResultTest.class b/promql_client/target/test-classes/com/bdwise/prometheus/client/comverter/query/VectorResultTest.class new file mode 100644 index 0000000000000000000000000000000000000000..4fcbd7c57392b5d933bfaea4fa863ac4cb3fd3ad GIT binary patch literal 4110 zcmdT{?RFDY6x|mJNz<`lkq;3S2F12CnItr&v=oFEuv$u?9}1xVPKUij&zm9#U<%0>04ih(!XoX$ddB>YcdEcYDxwwffj)S zi=pc%>y~d<VGD4f0^aIaL+qGK7DcQ>5IF~7;3*}O&uTVN!=uMxzr`&rC z(qyvcN86if{YBG~=PKW;RHRSKZca$IT=N`P@o_<^8fP4rS-2$)GndWedwVmy26Cse z*(_HVz2e$CnqHjFr3+kkS>K>$N8V+5%VrNaTl2~rI6Xe0K>ABg6ytG4h+Y)>6^86K zS9;7PyAl%ZY_4#kFQ3hx=L?wly~WhcwT>D4I7CddW0zz-5zW`&F?JaUj)r_FO25(gkCnypR=x8LGxF)2Tw!uxs{bx2<$Sj13P&ib6hzd zR*TY~vWpc;tBx_RWLIWv-_g(Y$riQX1OjKrSlDM*b(CZ&E!-w-pZrQ;9}Xn2Um*X4 zsBT>=4tvpPS~(R1Z{i>&BDIlTysA|s|D7paV)Z95-T7}x*!3j*jW@-rbR-r-O~D6S zaR~1u@V3D2Cc$|(P_k;^T^y#?^g<=DH-5R}SrZfz8kDrFg9(@d` z@t(krwEm=U1jn>U{eY1km&Z&BT{xaVH+!vmNj-Q4tg_>JqQflnHk!ZcG~u!HdkBYSa!9iV*WuR`G5b90~B>w^)| zZ8nrnl0DtGeoNtTs=lp!wb?)$k@xh|1z0;V4xZ7Q(PX6NFFJbP+xyQmXhxHOJt3=k zt`*p(cTA49am?c*zgzh<6g>lN-4BrJ?l8Vb`?rzNZhp5%t|_#j4Jlr)bIzb6&C!89 zypu|gLj6j+7S7Fee~0!TxP{!uTR-8*^^T(t@c!{tbUs8zU=_Wq=wHR@c;=kI_%}G3 zeuxVKzu=S04X4X=>RH8=*qH0r1it?3cMWbkG`NFNHtl@D-rxUNuawO=jD>U~vo