Skip to content

Commit

Permalink
add test for insertint data for multiple gauges
Browse files Browse the repository at this point in the history
  • Loading branch information
John Sanda committed Jul 1, 2015
1 parent c02a60f commit 2173c0f
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public Observable<HttpClientResponse> addGaugeData(String tenant, List<DataPoint
try {
String json = mapper.writeValueAsString(gauges);
PublishSubject<HttpClientResponse> subject = PublishSubject.create();
HttpClientRequest request = httpClient.post(baseURI + "/gauges/data")
HttpClientRequest request = httpClient.post(BASE_PATH + "gauges/data")
.putHeader("Content-Type", "application/json")
.putHeader("Hawkular-Tenant", tenant);
request.toObservable().subscribe(subject::onNext, subject::onError, subject::onCompleted);
Expand Down Expand Up @@ -115,7 +115,7 @@ public Observable<HttpClientResponse> addGaugeData(String tenant, String gauge,

public Observable<GaugeDataPoint> findGaugeData(String tenantId, String gauge, long start, long end) {
PublishSubject<GaugeDataPoint> subject = PublishSubject.create();
HttpClientRequest request = httpClient.get(baseURI + "/gauges/" + gauge + "/data?start=" + start + "&end=" +
HttpClientRequest request = httpClient.get(BASE_PATH + "gauges/" + gauge + "/data?start=" + start + "&end=" +
end)
.putHeader("Hawkular-Tenant", tenantId)
.putHeader("Content-Type", "application/json");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,15 @@
package org.hawkular.metrics.rest;

import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;
import static org.testng.Assert.assertEquals;

import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;

import io.vertx.rxjava.core.http.HttpClientResponse;
import org.hawkular.metrics.rest.model.DataPoints;
import org.hawkular.metrics.rest.model.GaugeDataPoint;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
Expand Down Expand Up @@ -59,21 +62,78 @@ private String nextTenantId() {
public void addDataPointsForOneGauge() throws Exception {
String tenantId = nextTenantId();
String gauge = "addDataPointsForOneGauge";
long endTime = System.currentTimeMillis();
long startTime = endTime - TimeUnit.MILLISECONDS.convert(10, TimeUnit.MINUTES);
List<GaugeDataPoint> dataPoints = asList(
new GaugeDataPoint(System.currentTimeMillis() - 500, 10.1),
new GaugeDataPoint(System.currentTimeMillis() - 400, 11.1112),
new GaugeDataPoint(System.currentTimeMillis() - 300, 13.4783)
new GaugeDataPoint(startTime + 2000, 13.4783),
new GaugeDataPoint(startTime + 1000, 11.1112),
new GaugeDataPoint(startTime, 10.1)
);

TestSubscriber<HttpClientResponse> subscriber = new TestSubscriber<>();
TestSubscriber<HttpClientResponse> writeSubscriber = new TestSubscriber<>();

client.addGaugeData(tenantId, gauge, dataPoints).subscribe(subscriber);
client.addGaugeData(tenantId, gauge, dataPoints).subscribe(writeSubscriber);

subscriber.awaitTerminalEvent();
assertEquals(subscriber.getOnNextEvents().size(), 1, "Expected to get back one http response");
writeSubscriber.awaitTerminalEvent();
writeSubscriber.assertNoErrors();
assertEquals(writeSubscriber.getOnNextEvents().size(), 1, "Expected to get back one http response");

HttpClientResponse response = subscriber.getOnNextEvents().get(0);
HttpClientResponse response = writeSubscriber.getOnNextEvents().get(0);
assertEquals(200, response.statusCode(), "Expected a 200 status when data points are successfully stored");

TestSubscriber<GaugeDataPoint> readSubscriber = new TestSubscriber<>();
client.findGaugeData(tenantId, gauge, startTime, endTime).subscribe(readSubscriber);

readSubscriber.awaitTerminalEvent();
readSubscriber.assertNoErrors();
assertEquals(readSubscriber.getOnNextEvents(), dataPoints, "The data points do not match");
}

@Test
public void addDataPointsForMultipleGauges() throws Exception {
String tenantId = nextTenantId();
String prefix="addDataForMultiple-";
int id = 0;
long endTime = System.currentTimeMillis();
long startTime = endTime - TimeUnit.MILLISECONDS.convert(10, TimeUnit.MINUTES);

List<DataPoints<GaugeDataPoint>> gauges = asList(
new DataPoints<>(prefix + id++, asList(
new GaugeDataPoint(startTime + 2000, 7.421),
new GaugeDataPoint(startTime + 1000, 5.0367),
new GaugeDataPoint(startTime, 5.55))),
new DataPoints<>(prefix + id++, asList(
new GaugeDataPoint(startTime, 25.474),
new GaugeDataPoint(endTime + 100, 24.7341)
))
);

TestSubscriber<HttpClientResponse> writeSubscriber = new TestSubscriber<>();

client.addGaugeData(tenantId, gauges).subscribe(writeSubscriber);

writeSubscriber.awaitTerminalEvent();
writeSubscriber.assertNoErrors();
assertEquals(writeSubscriber.getOnNextEvents().size(), 1, "Expected to get back one http response");

HttpClientResponse response = writeSubscriber.getOnNextEvents().get(0);
assertEquals(200, response.statusCode(), "Expected a 200 status when data points are successfully stored");

TestSubscriber<GaugeDataPoint> readSubscriber = new TestSubscriber<>();
client.findGaugeData(tenantId, prefix + 0, startTime, endTime).subscribe(readSubscriber);

readSubscriber.awaitTerminalEvent();
readSubscriber.assertNoErrors();
assertEquals(readSubscriber.getOnNextEvents(), gauges.get(0).getData(), "The data points do not match");

readSubscriber = new TestSubscriber<>();

client.findGaugeData(tenantId, prefix + 1, startTime, endTime).subscribe(readSubscriber);

readSubscriber.awaitTerminalEvent();
readSubscriber.assertNoErrors();
assertEquals(readSubscriber.getOnNextEvents(), singletonList(new GaugeDataPoint(startTime, 25.474)),
"The data points do not match");
}

}

0 comments on commit 2173c0f

Please sign in to comment.