Search in sources :

Example 16 with Measurement

use of org.opennms.newts.api.Measurement in project newts by OpenNMS.

the class AggregationAttributesTest method test.

@Test
public void test() {
    Iterator<Row<Measurement>> testData = new MeasurementRowsBuilder(new Resource("localhost")).row(1).element("m0", 1, mapFor("a", "1")).row(300).element("m0", 1).row(600).element("m0", 1).row(900).element("m0", 1).row(1200).element("m0", 1).row(1500).element("m0", 1).row(1800).element("m0", 3, mapFor("b", "1")).row(2100).element("m0", 3).row(2400).element("m0", 3, mapFor("a", "2")).row(2700).element("m0", 3).row(3000).element("m0", 3).row(3300).element("m0", 3).build();
    ResultDescriptor rDescriptor = new ResultDescriptor(Duration.seconds(300)).datasource("m0-avg", "m0", Duration.seconds(600), AVERAGE).datasource("m0-min", "m0", Duration.seconds(600), MIN).datasource("m0-max", "m0", Duration.seconds(600), MAX);
    Aggregation aggregation = new Aggregation(new Resource("localhost"), Timestamp.fromEpochSeconds(1), Timestamp.fromEpochSeconds(3300), rDescriptor, Duration.minutes(60), testData);
    Row<Measurement> row = aggregation.next();
    assertThat(row.getTimestamp(), equalTo(fromEpochSeconds(0)));
    assertThat(row.getElement("m0-avg").getAttributes(), nullValue());
    row = aggregation.next();
    assertThat(row.getTimestamp(), equalTo(fromEpochSeconds(3600)));
    assertAttributes(row.getElement("m0-avg"), mapFor("a", "2", "b", "1"));
}
Also used : Measurement(org.opennms.newts.api.Measurement) MeasurementRowsBuilder(org.opennms.newts.aggregate.Utils.MeasurementRowsBuilder) Resource(org.opennms.newts.api.Resource) ResultDescriptor(org.opennms.newts.api.query.ResultDescriptor) Row(org.opennms.newts.api.Results.Row) Test(org.junit.Test)

Example 17 with Measurement

use of org.opennms.newts.api.Measurement in project newts by OpenNMS.

the class CassandraSampleRepository method select.

@Override
public Results<Measurement> select(Context context, Resource resource, Optional<Timestamp> start, Optional<Timestamp> end, ResultDescriptor descriptor, Optional<Duration> resolution, SampleSelectCallback callback) {
    Timer.Context timer = m_measurementSelectTimer.time();
    validateSelect(start, end);
    Timestamp upper = end.isPresent() ? end.get() : Timestamp.now();
    Timestamp lower = start.isPresent() ? start.get() : upper.minus(Duration.seconds(86400));
    Duration step;
    if (resolution.isPresent()) {
        step = resolution.get();
    } else {
        // Determine the ideal step size, splitting the interval evenly into N slices
        long stepMillis = upper.minus(lower).asMillis() / TARGET_NUMBER_OF_STEPS;
        // But every step must be a multiple of the interval
        long intervalMillis = descriptor.getInterval().asMillis();
        // If the interval is greater than the target step, use the 2 * interval as the step
        if (intervalMillis >= stepMillis) {
            step = descriptor.getInterval().times(2);
        } else {
            // Otherwise, round stepMillkeyis up to the closest multiple of intervalMillis
            long remainderMillis = stepMillis % intervalMillis;
            if (remainderMillis != 0) {
                stepMillis = stepMillis + intervalMillis - remainderMillis;
            }
            step = Duration.millis(stepMillis);
        }
    }
    LOG.debug("Querying database for resource {}, from {} to {}", resource, lower.minus(step), upper);
    DriverAdapter driverAdapter = new DriverAdapter(cassandraSelect(context, resource, lower.minus(step), upper), descriptor.getSourceNames());
    Results<Measurement> results;
    callback.beforeProcess();
    try {
        results = new ResultProcessor(resource, lower, upper, descriptor, step).process(driverAdapter);
    } finally {
        callback.afterProcess();
    }
    LOG.debug("{} results returned from database", driverAdapter.getResultCount());
    m_samplesSelected.mark(driverAdapter.getResultCount());
    try {
        return results;
    } finally {
        timer.stop();
    }
}
Also used : Measurement(org.opennms.newts.api.Measurement) Timer(com.codahale.metrics.Timer) Duration(org.opennms.newts.api.Duration) ResultProcessor(org.opennms.newts.aggregate.ResultProcessor) Timestamp(org.opennms.newts.api.Timestamp)

Example 18 with Measurement

use of org.opennms.newts.api.Measurement in project newts by OpenNMS.

the class InsertSelectMeasurementsITCase method testWithAbsolute.

@Test
public void testWithAbsolute() {
    Iterator<Row<Sample>> testSamples = new SampleRowsBuilder(new Resource("localhost"), MetricType.ABSOLUTE).row(900000000).element("mAbsolute", // Thu Jul  9 11:00:00 CDT 1998
    300).row(900000300).element("mAbsolute", 300).row(900000600).element("mAbsolute", 300).row(900000900).element("mAbsolute", 300).row(900001200).element("mAbsolute", 300).row(900001500).element("mAbsolute", 300).row(900001800).element("mAbsolute", 300, mapFor("a", "1")).row(900002100).element("mAbsolute", 300).row(900002400).element("mAbsolute", 300, mapFor("b", "2")).row(900002700).element("mAbsolute", 300).row(900003000).element("mAbsolute", 300).row(900003300).element("mAbsolute", 300).row(900003600).element("mAbsolute", 300).row(900003900).element("mAbsolute", 300).row(900004200).element("mAbsolute", 300).row(900004500).element("mAbsolute", 300).row(900004800).element("mAbsolute", 300).row(900005100).element("mAbsolute", 300, mapFor("c", "3")).row(900005400).element("mAbsolute", 300).row(900005700).element("mAbsolute", 300, mapFor("d", "4")).row(900006000).element("mAbsolute", 300).row(900006300).element("mAbsolute", 300).row(900006600).element("mAbsolute", 300).row(900006900).element("mAbsolute", 300).row(900007200).element("mAbsolute", // Thu Jul  9 13:00:00 CDT 1998
    300).build();
    ResultDescriptor rDescriptor = new ResultDescriptor(Duration.seconds(300)).datasource("mAbsolute-avg", "mAbsolute", Duration.seconds(600), AVERAGE).export("mAbsolute-avg");
    Iterator<Row<Measurement>> expected = new MeasurementRowsBuilder(new Resource("localhost")).row(900003600).element("mAbsolute-avg", 1).row(900007200).element("mAbsolute-avg", 1).build();
    writeSamples(testSamples);
    Results<Measurement> results = getRepository().select(Context.DEFAULT_CONTEXT, new Resource("localhost"), Optional.of(Timestamp.fromEpochSeconds(900003600)), Optional.of(Timestamp.fromEpochSeconds(900007200)), rDescriptor, Optional.of(Duration.minutes(60)));
    // Validate results
    assertRowsEqual(expected, results.iterator());
    // Validate merged attributes
    Iterator<Row<Measurement>> rows = results.iterator();
    assertAttributes(rows.next().getElement("mAbsolute-avg"), mapFor("a", "1", "b", "2"));
    assertAttributes(rows.next().getElement("mAbsolute-avg"), mapFor("c", "3", "d", "4"));
}
Also used : Measurement(org.opennms.newts.api.Measurement) MeasurementRowsBuilder(org.opennms.newts.persistence.cassandra.Utils.MeasurementRowsBuilder) Resource(org.opennms.newts.api.Resource) ResultDescriptor(org.opennms.newts.api.query.ResultDescriptor) Row(org.opennms.newts.api.Results.Row) SampleRowsBuilder(org.opennms.newts.persistence.cassandra.Utils.SampleRowsBuilder) Test(org.junit.Test)

Example 19 with Measurement

use of org.opennms.newts.api.Measurement in project newts by OpenNMS.

the class InsertSelectMeasurementsITCase method testWithDefaultResolution.

@Test
public void testWithDefaultResolution() {
    Iterator<Row<Sample>> testSamples = new SampleRowsBuilder(new Resource("localhost"), MetricType.GAUGE).row(900000000).element("mGauge", // Thu Jul  9 11:00:00 CDT 1998
    1).row(900000300).element("mGauge", 1).row(900000600).element("mGauge", 1).row(900000900).element("mGauge", 1).row(900001200).element("mGauge", 1).row(900001500).element("mGauge", 1).row(900001800).element("mGauge", 1, mapFor("a", "1")).row(900002100).element("mGauge", 3).row(900002400).element("mGauge", 3, mapFor("b", "2")).row(900002700).element("mGauge", 3).row(900003000).element("mGauge", 3).row(900003300).element("mGauge", 3).row(900003600).element("mGauge", 3).row(900003900).element("mGauge", 1).row(900004200).element("mGauge", 1).row(900004500).element("mGauge", 1).row(900004800).element("mGauge", 1).row(900005100).element("mGauge", 1, mapFor("c", "3")).row(900005400).element("mGauge", 1).row(900005700).element("mGauge", 3, mapFor("d", "4")).row(900006000).element("mGauge", 3).row(900006300).element("mGauge", 3).row(900006600).element("mGauge", 3).row(900006900).element("mGauge", 3).row(900007200).element("mGauge", // Thu Jul  9 13:00:00 CDT 1998
    3).build();
    ResultDescriptor rDescriptor = new ResultDescriptor(Duration.seconds(300)).datasource("mGauge-avg", "mGauge", Duration.seconds(600), AVERAGE).export("mGauge-avg");
    Iterator<Row<Measurement>> expected = new MeasurementRowsBuilder(new Resource("localhost")).row(900003600).element("mGauge-avg", 3).row(900004200).element("mGauge-avg", 1).row(900004800).element("mGauge-avg", 1).row(900005400).element("mGauge-avg", 1).row(900006000).element("mGauge-avg", 3).row(900006600).element("mGauge-avg", 3).row(900007200).element("mGauge-avg", 3).build();
    writeSamples(testSamples);
    Results<Measurement> results = getRepository().select(Context.DEFAULT_CONTEXT, new Resource("localhost"), Optional.of(Timestamp.fromEpochSeconds(900003600)), Optional.of(Timestamp.fromEpochSeconds(900007200)), rDescriptor, Optional.<Duration>absent());
    // Validate results
    assertRowsEqual(expected, results.iterator());
}
Also used : Measurement(org.opennms.newts.api.Measurement) MeasurementRowsBuilder(org.opennms.newts.persistence.cassandra.Utils.MeasurementRowsBuilder) Resource(org.opennms.newts.api.Resource) ResultDescriptor(org.opennms.newts.api.query.ResultDescriptor) Row(org.opennms.newts.api.Results.Row) SampleRowsBuilder(org.opennms.newts.persistence.cassandra.Utils.SampleRowsBuilder) Test(org.junit.Test)

Example 20 with Measurement

use of org.opennms.newts.api.Measurement in project newts by OpenNMS.

the class InsertSelectMeasurementsITCase method testWithDerive.

@Test
public void testWithDerive() {
    Iterator<Row<Sample>> testSamples = new SampleRowsBuilder(new Resource("localhost"), MetricType.DERIVE).row(900000000).element("mDerive", // Thu Jul  9 11:00:00 CDT 1998
    0).row(900000300).element("mDerive", 300).row(900000600).element("mDerive", 600).row(900000900).element("mDerive", 900).row(900001200).element("mDerive", 1200).row(900001500).element("mDerive", 1500).row(900001800).element("mDerive", 1800, mapFor("a", "1")).row(900002100).element("mDerive", 2100).row(900002400).element("mDerive", 2400, mapFor("b", "2")).row(900002700).element("mDerive", 2700).row(900003000).element("mDerive", 3000).row(900003300).element("mDerive", 3300).row(900003600).element("mDerive", 3600).row(900003900).element("mDerive", 3900).row(900004200).element("mDerive", 4200).row(900004500).element("mDerive", 4500).row(900004800).element("mDerive", 4800).row(900005100).element("mDerive", 5100, mapFor("c", "3")).row(900005400).element("mDerive", 5400).row(900005700).element("mDerive", 5700, mapFor("d", "4")).row(900006000).element("mDerive", 6000).row(900006300).element("mDerive", 6300).row(900006600).element("mDerive", 6600).row(900006900).element("mDerive", 6900).row(900007200).element("mDerive", // Thu Jul  9 13:00:00 CDT 1998
    7200).build();
    ResultDescriptor rDescriptor = new ResultDescriptor(Duration.seconds(300)).datasource("mDerive-avg", "mDerive", Duration.seconds(600), AVERAGE).export("mDerive-avg");
    Iterator<Row<Measurement>> expected = new MeasurementRowsBuilder(new Resource("localhost")).row(900003600).element("mDerive-avg", 1).row(900007200).element("mDerive-avg", 1).build();
    writeSamples(testSamples);
    Results<Measurement> results = getRepository().select(Context.DEFAULT_CONTEXT, new Resource("localhost"), Optional.of(Timestamp.fromEpochSeconds(900003600)), Optional.of(Timestamp.fromEpochSeconds(900007200)), rDescriptor, Optional.of(Duration.minutes(60)));
    // Validate results
    assertRowsEqual(expected, results.iterator());
    // Validate merged attributes
    Iterator<Row<Measurement>> rows = results.iterator();
    assertAttributes(rows.next().getElement("mDerive-avg"), mapFor("a", "1", "b", "2"));
    assertAttributes(rows.next().getElement("mDerive-avg"), mapFor("c", "3", "d", "4"));
}
Also used : Measurement(org.opennms.newts.api.Measurement) MeasurementRowsBuilder(org.opennms.newts.persistence.cassandra.Utils.MeasurementRowsBuilder) Resource(org.opennms.newts.api.Resource) ResultDescriptor(org.opennms.newts.api.query.ResultDescriptor) Row(org.opennms.newts.api.Results.Row) SampleRowsBuilder(org.opennms.newts.persistence.cassandra.Utils.SampleRowsBuilder) Test(org.junit.Test)

Aggregations

Measurement (org.opennms.newts.api.Measurement)21 Resource (org.opennms.newts.api.Resource)14 Row (org.opennms.newts.api.Results.Row)14 ResultDescriptor (org.opennms.newts.api.query.ResultDescriptor)12 Test (org.junit.Test)10 Results (org.opennms.newts.api.Results)4 MeasurementRowsBuilder (org.opennms.newts.persistence.cassandra.Utils.MeasurementRowsBuilder)4 SampleRowsBuilder (org.opennms.newts.persistence.cassandra.Utils.SampleRowsBuilder)4 NoSuchElementException (java.util.NoSuchElementException)3 Source (org.opennms.netmgt.measurements.model.Source)3 OnmsResource (org.opennms.netmgt.model.OnmsResource)3 SampleRowsBuilder (org.opennms.newts.aggregate.Utils.SampleRowsBuilder)3 Duration (org.opennms.newts.api.Duration)3 Timestamp (org.opennms.newts.api.Timestamp)3 Map (java.util.Map)2 Callable (java.util.concurrent.Callable)2 FetchResults (org.opennms.netmgt.measurements.api.FetchResults)2 AggregationFunction (org.opennms.newts.api.query.AggregationFunction)2 Datasource (org.opennms.newts.api.query.Datasource)2 Meter (com.codahale.metrics.Meter)1