use of org.apache.gobblin.metrics.GobblinTrackingEvent in project incubator-gobblin by apache.
the class KafkaAvroEventReporterWithSchemaRegistryTest method test.
@Test
public void test() throws Exception {
MetricContext context = MetricContext.builder("context").build();
MockKafkaPusher pusher = new MockKafkaPusher();
KafkaAvroSchemaRegistry registry = Mockito.mock(KafkaAvroSchemaRegistry.class);
Mockito.when(registry.register(Mockito.any(Schema.class))).thenAnswer(new Answer<String>() {
@Override
public String answer(InvocationOnMock invocation) throws Throwable {
return register((Schema) invocation.getArguments()[0]);
}
});
Mockito.when(registry.register(Mockito.any(Schema.class), Mockito.anyString())).thenAnswer(new Answer<String>() {
@Override
public String answer(InvocationOnMock invocation) throws Throwable {
return register((Schema) invocation.getArguments()[0]);
}
});
KafkaEventReporter kafkaReporter = KafkaAvroEventReporter.forContext(context).withKafkaPusher(pusher).withSchemaRegistry(registry).build("localhost:0000", "topic");
GobblinTrackingEvent event = new GobblinTrackingEvent(0l, "namespace", "name", Maps.<String, String>newHashMap());
context.submitEvent(event);
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
kafkaReporter.report();
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
byte[] nextMessage = pusher.messageIterator().next();
DataInputStream is = new DataInputStream(new ByteArrayInputStream(nextMessage));
Assert.assertEquals(is.readByte(), KafkaAvroSchemaRegistry.MAGIC_BYTE);
byte[] readId = new byte[20];
Assert.assertEquals(is.read(readId), 20);
String readStringId = Hex.encodeHexString(readId);
Assert.assertTrue(this.schemas.containsKey(readStringId));
Schema schema = this.schemas.get(readStringId);
Assert.assertFalse(schema.toString().contains("avro.java.string"));
is.close();
}
use of org.apache.gobblin.metrics.GobblinTrackingEvent in project incubator-gobblin by apache.
the class R2RestResponseHandler method handleResponse.
@Override
public R2ResponseStatus handleResponse(Request<RestRequest> request, RestResponse response) {
R2ResponseStatus status = new R2ResponseStatus(StatusType.OK);
int statusCode = response.getStatus();
status.setStatusCode(statusCode);
HttpUtils.updateStatusType(status, statusCode, errorCodeWhitelist);
if (status.getType() == StatusType.OK) {
status.setContent(response.getEntity());
status.setContentType(response.getHeader(CONTENT_TYPE_HEADER));
} else {
log.info("Receive an unsuccessful response with status code: " + statusCode);
Map<String, String> metadata = Maps.newHashMap();
metadata.put(HttpConstants.STATUS_CODE, String.valueOf(statusCode));
metadata.put(HttpConstants.REQUEST, request.toString());
if (status.getType() != StatusType.CONTINUE) {
FailureEventBuilder failureEvent = new FailureEventBuilder(R2_FAILED_REQUEST_EVENT);
failureEvent.addAdditionalMetadata(metadata);
failureEvent.submit(metricsContext);
} else {
GobblinTrackingEvent event = new GobblinTrackingEvent(0L, R2_RESPONSE_EVENT_NAMESPACE, R2_FAILED_REQUEST_EVENT, metadata);
metricsContext.submitEvent(event);
}
}
return status;
}
use of org.apache.gobblin.metrics.GobblinTrackingEvent in project incubator-gobblin by apache.
the class KafkaEventReporterTest method testTagInjection.
@Test
public void testTagInjection() throws IOException {
String tag1 = "tag1";
String value1 = "value1";
String metadataValue1 = "metadata1";
String tag2 = "tag2";
String value2 = "value2";
MetricContext context = MetricContext.builder("context").addTag(new Tag<String>(tag1, value1)).addTag(new Tag<String>(tag2, value2)).build();
MockKafkaPusher pusher = new MockKafkaPusher();
KafkaEventReporter kafkaReporter = getBuilder(context, pusher).build("localhost:0000", "topic");
String namespace = "gobblin.metrics.test";
String eventName = "testEvent";
GobblinTrackingEvent event = new GobblinTrackingEvent();
event.setName(eventName);
event.setNamespace(namespace);
Map<String, String> metadata = Maps.newHashMap();
metadata.put(tag1, metadataValue1);
event.setMetadata(metadata);
context.submitEvent(event);
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
kafkaReporter.report();
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
GobblinTrackingEvent retrievedEvent = nextEvent(pusher.messageIterator());
Assert.assertEquals(retrievedEvent.getNamespace(), namespace);
Assert.assertEquals(retrievedEvent.getName(), eventName);
Assert.assertEquals(retrievedEvent.getMetadata().size(), 4);
Assert.assertEquals(retrievedEvent.getMetadata().get(tag1), metadataValue1);
Assert.assertEquals(retrievedEvent.getMetadata().get(tag2), value2);
}
use of org.apache.gobblin.metrics.GobblinTrackingEvent in project incubator-gobblin by apache.
the class KafkaEventReporter method reportEventQueue.
@Override
public void reportEventQueue(Queue<GobblinTrackingEvent> queue) {
GobblinTrackingEvent nextEvent;
List<byte[]> events = Lists.newArrayList();
while (null != (nextEvent = queue.poll())) {
events.add(this.serializer.serializeRecord(nextEvent));
}
if (!events.isEmpty()) {
this.kafkaPusher.pushMessages(events);
}
}
use of org.apache.gobblin.metrics.GobblinTrackingEvent in project incubator-gobblin by apache.
the class KafkaAvroJobMonitorTest method testWrongSchemaVersionWriter.
@Test
public void testWrongSchemaVersionWriter() throws Exception {
TestKafkaAvroJobMonitor monitor = new TestKafkaAvroJobMonitor(GobblinTrackingEvent.SCHEMA$, new NoopSchemaVersionWriter());
monitor.buildMetricsContextAndMetrics();
AvroSerializer<GobblinTrackingEvent> serializer = new AvroBinarySerializer<>(GobblinTrackingEvent.SCHEMA$, new FixedSchemaVersionWriter());
GobblinTrackingEvent event = new GobblinTrackingEvent(0L, "namespace", "event", Maps.<String, String>newHashMap());
Collection<Either<JobSpec, URI>> results = monitor.parseJobSpec(serializer.serializeRecord(event));
Assert.assertEquals(results.size(), 0);
Assert.assertEquals(monitor.events.size(), 0);
Assert.assertEquals(monitor.getMessageParseFailures().getCount(), 1);
monitor.shutdownMetrics();
}
Aggregations