Search in sources :

Example 66 with Metric

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);
}
Also used : Entity(com.axibase.tsd.api.model.entity.Entity) SeriesSearchResultRecord(com.axibase.tsd.api.model.series.search.SeriesSearchResultRecord) Metric(com.axibase.tsd.api.model.metric.Metric) BigDecimal(java.math.BigDecimal)

Example 67 with Metric

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)));
}
Also used : Entity(com.axibase.tsd.api.model.entity.Entity) SeriesSearchResultRecord(com.axibase.tsd.api.model.series.search.SeriesSearchResultRecord) SeriesSearchQuery(com.axibase.tsd.api.model.series.search.SeriesSearchQuery) Metric(com.axibase.tsd.api.model.metric.Metric) Issue(io.qameta.allure.Issue) Test(org.testng.annotations.Test) BeforeTest(org.testng.annotations.BeforeTest)

Example 68 with Metric

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());
}
Also used : Metric(com.axibase.tsd.api.model.metric.Metric) BigDecimal(java.math.BigDecimal) Issue(io.qameta.allure.Issue) Test(org.testng.annotations.Test)

Example 69 with Metric

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());
}
Also used : SeriesQuery(com.axibase.tsd.api.model.series.query.SeriesQuery) ZonedDateTime(java.time.ZonedDateTime) Period(com.axibase.tsd.api.model.Period) Metric(com.axibase.tsd.api.model.metric.Metric) Aggregate(com.axibase.tsd.api.model.series.query.transformation.aggregate.Aggregate) BigDecimal(java.math.BigDecimal) Issue(io.qameta.allure.Issue) Test(org.testng.annotations.Test)

Example 70 with Metric

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());
}
Also used : SeriesQuery(com.axibase.tsd.api.model.series.query.SeriesQuery) Period(com.axibase.tsd.api.model.Period) Metric(com.axibase.tsd.api.model.metric.Metric) Aggregate(com.axibase.tsd.api.model.series.query.transformation.aggregate.Aggregate) BigDecimal(java.math.BigDecimal) Issue(io.qameta.allure.Issue) Test(org.testng.annotations.Test)

Aggregations

Metric (com.axibase.tsd.api.model.metric.Metric)76 Test (org.testng.annotations.Test)58 Issue (io.qameta.allure.Issue)50 Series (com.axibase.tsd.api.model.series.Series)25 Entity (com.axibase.tsd.api.model.entity.Entity)21 Response (javax.ws.rs.core.Response)16 BeforeClass (org.testng.annotations.BeforeClass)15 SeriesQuery (com.axibase.tsd.api.model.series.query.SeriesQuery)13 MetricCommand (com.axibase.tsd.api.model.command.MetricCommand)10 SqlTest (com.axibase.tsd.api.method.sql.SqlTest)7 BigDecimal (java.math.BigDecimal)7 MetricCheck (com.axibase.tsd.api.method.checks.MetricCheck)5 HashMap (java.util.HashMap)5 File (java.io.File)4 ArrayList (java.util.ArrayList)4 SeriesSearchResultRecord (com.axibase.tsd.api.model.series.search.SeriesSearchResultRecord)3 Period (com.axibase.tsd.api.model.Period)2 Sample (com.axibase.tsd.api.model.series.Sample)2 Aggregate (com.axibase.tsd.api.model.series.query.transformation.aggregate.Aggregate)2 SeriesSearchQuery (com.axibase.tsd.api.model.series.search.SeriesSearchQuery)2