use of com.axibase.tsd.api.model.metric.Metric in project atsd-api-test by axibase.
the class SeriesSearchTest method createSeries.
private static SeriesSearchResultRecord createSeries(String prefix) throws Exception {
Entity entity = new Entity(prefix + Mocks.entity(), Collections.singletonMap(prefix + "entity_tag", prefix + "entity_value")).setLabel(prefix + Mocks.LABEL).setInterpolationMode(InterpolationMode.PREVIOUS).setTimeZoneID("Europe/Moscow").setEnabled(true);
Metric metric = new Metric(prefix + Mocks.metric(), Collections.singletonMap(prefix + "metric_tag", prefix + "metric_value")).setLabel(prefix + Mocks.LABEL).setTimeZoneID("Europe/London").setEnabled(true).setInterpolate(InterpolationMode.PREVIOUS).setDescription(prefix + Mocks.DESCRIPTION).setDataType(DataType.DECIMAL).setTimePrecision("SECONDS").setEnabled(true).setPersistent(true).setFilter("name = '*'").setRetentionDays(0).setSeriesRetentionDays(0).setVersioned(false).setMinValue(new BigDecimal("1")).setMaxValue(new BigDecimal("200.1")).setInvalidAction("TRANSFORM").setUnits("kg");
Map<String, String> tags = Collections.singletonMap(prefix + "tag", prefix + "value");
Series series = new Series(entity.getName(), metric.getName(), tags);
series.addSamples(Mocks.SAMPLE);
EntityMethod.createOrReplaceEntityCheck(entity);
MetricMethod.createOrReplaceMetricCheck(metric);
SeriesMethod.insertSeriesCheck(series);
return new SeriesSearchResultRecord(entity, metric, tags, 1.0);
}
use of com.axibase.tsd.api.model.metric.Metric in project atsd-api-test by axibase.
the class SeriesSearchTest method testFieldsTags.
@Issue("4404")
@Test(description = "Test explicitly requested fields and tags are returned")
public void testFieldsTags() {
SeriesSearchQuery query = new SeriesSearchQuery("sst_1*");
query.addEntityFields("interpolate", "timezone");
query.addEntityTags("sst_11_entity_tag");
query.addMetricFields("datatype", "timeprecision");
query.addMetricTags("sst_11_metric_tag");
Entity entity1 = new Entity().setName(resultRecord1.getEntity().getName()).setLabel(resultRecord1.getEntity().getLabel()).setInterpolationMode(resultRecord1.getEntity().getInterpolationMode()).setTimeZoneID(resultRecord1.getEntity().getTimeZoneID());
Metric metirc1 = new Metric().setName(resultRecord1.getMetric().getName()).setLabel(resultRecord1.getMetric().getLabel()).setDataType(resultRecord1.getMetric().getDataType()).setTimePrecision(resultRecord1.getMetric().getTimePrecision());
SeriesSearchResultRecord expectedResult1 = new SeriesSearchResultRecord(entity1, metirc1, resultRecord1.getSeriesTags(), 1.0);
Entity entity2 = new Entity().setName(resultRecord3.getEntity().getName()).setLabel(resultRecord3.getEntity().getLabel()).setInterpolationMode(resultRecord3.getEntity().getInterpolationMode()).setTimeZoneID(resultRecord3.getEntity().getTimeZoneID()).setTags(resultRecord3.getEntity().getTags());
Metric metirc2 = new Metric().setName(resultRecord3.getMetric().getName()).setLabel(resultRecord3.getMetric().getLabel()).setDataType(resultRecord3.getMetric().getDataType()).setTimePrecision(resultRecord3.getMetric().getTimePrecision()).setTags(resultRecord3.getMetric().getTags());
SeriesSearchResultRecord expectedResult3 = new SeriesSearchResultRecord(entity2, metirc2, resultRecord3.getSeriesTags(), 1.0);
SeriesSearchResultRecord[] expectedResult = { expectedResult1, expectedResult3 };
checkQueryWithoutRelevance(query, Sets.newHashSet(Arrays.asList(expectedResult)));
}
use of com.axibase.tsd.api.model.metric.Metric in project atsd-api-test by axibase.
the class SeriesInsertTest method testBigDecimalOverflow.
@Issue("2871")
@Test
public void testBigDecimalOverflow() throws Exception {
String entityName = "e-decimal-1";
String metricName = "m-decimal-1";
BigDecimal largeNumber = new BigDecimal("10.121212121212121212212121212121212121212121");
Series series = new Series(entityName, metricName);
series.addSamples(Sample.ofDateDecimal(Mocks.ISO_TIME, largeNumber));
Metric metric = new Metric();
metric.setName(metricName);
metric.setDataType(DataType.DECIMAL);
MetricMethod.createOrReplaceMetricCheck(metric);
assertEquals("Managed to insert large decimal series", BAD_REQUEST.getStatusCode(), insertSeries(Collections.singletonList(series)).getStatus());
}
use of com.axibase.tsd.api.model.metric.Metric in project atsd-api-test by axibase.
the class SeriesInsertTest method testBigDecimalAggregatePrecision.
@Issue("2871")
@Test
public void testBigDecimalAggregatePrecision() throws Exception {
String entityName = "e-decimal-2";
String metricName = "m-decimal-2";
BigDecimal number = new BigDecimal("0.6083333332");
ZonedDateTime dateTime = ZonedDateTime.parse(Mocks.ISO_TIME);
Metric metric = new Metric(metricName);
metric.setDataType(DataType.DECIMAL);
MetricMethod.createOrReplaceMetricCheck(metric);
Series series = new Series(entityName, null);
series.setMetric(metricName);
for (int i = 0; i < 12; i++) {
series.addSamples(Sample.ofDateDecimal(dateTime.plusSeconds(5 * i).toString(), number));
}
assertEquals("Failed to insert small decimal series", OK.getStatusCode(), insertSeries(Collections.singletonList(series)).getStatus());
assertSeriesExisting(series);
SeriesQuery seriesQuery = new SeriesQuery(series.getEntity(), series.getMetric(), dateTime.format(DateTimeFormatter.ISO_INSTANT), dateTime.plusMinutes(1).format(DateTimeFormatter.ISO_INSTANT));
seriesQuery.setAggregate(new Aggregate(AggregationType.SUM, new Period(1, TimeUnit.MINUTE)));
List<Series> seriesList = querySeriesAsList(seriesQuery);
assertEquals("Stored small decimal value incorrect", new BigDecimal("7.2999999984"), seriesList.get(0).getData().get(0).getValue());
}
use of com.axibase.tsd.api.model.metric.Metric in project atsd-api-test by axibase.
the class SeriesInsertTest method testDoubleAggregatePrecision.
@Issue("2871")
@Test
public void testDoubleAggregatePrecision() throws Exception {
String entityName = "e-double-3";
String metricName = "m-double-3";
BigDecimal number = new BigDecimal("0.6083333332");
final long t = MILLS_TIME;
Metric metric = new Metric(metricName);
metric.setDataType(DataType.DOUBLE);
MetricMethod.createOrReplaceMetricCheck(metric);
Series series = new Series(entityName, null);
series.setMetric(metricName);
for (int i = 0; i < 12; i++) {
String isoDate = Util.ISOFormat(t + i * 5000);
series.addSamples(Sample.ofDateDecimal(isoDate, number));
}
assertEquals("Failed to insert small decimal series", OK.getStatusCode(), insertSeries(Collections.singletonList(series)).getStatus());
assertSeriesExisting(series);
SeriesQuery seriesQuery = new SeriesQuery(series.getEntity(), series.getMetric(), t, t + 1 + 11 * 5000);
seriesQuery.setAggregate(new Aggregate(AggregationType.SUM, new Period(1, TimeUnit.MINUTE)));
List<Series> seriesList = querySeriesAsList(seriesQuery);
assertEquals("Stored small double value incorrect", new BigDecimal("7.299999998400001"), seriesList.get(0).getData().get(0).getValue());
}
Aggregations