package com.ldbc.driver.runtime.metrics;
import com.ldbc.driver.WorkloadException;
import com.ldbc.driver.runtime.metrics.sbe.MetricsEvent;
import org.junit.Test;
import uk.co.real_logic.sbe.codec.java.DirectBuffer;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
public class SbeEventTest {
@Test
public void shouldReadWrites() throws WorkloadException, MetricsCollectionException {
final DirectBuffer directBuffer = new DisruptorSbeMetricsEvent.MetricsCollectionEventFactory().newInstance();
final MetricsEvent metricsEvent = new MetricsEvent();
byte eventType = DisruptorSbeMetricsEvent.SUBMIT_OPERATION_RESULT;
int operationType = Integer.MAX_VALUE;
long scheduledStartTime = Long.MAX_VALUE;
long actualStartTime = Long.MAX_VALUE;
long runDuration = Long.MAX_VALUE;
int resultCode = Integer.MAX_VALUE;
metricsEvent.wrapForEncode(directBuffer, DisruptorSbeMetricsEvent.MESSAGE_HEADER_SIZE);
metricsEvent.eventType(eventType);
metricsEvent.operationType(operationType);
metricsEvent.scheduledStartTimeAsMilli(scheduledStartTime);
metricsEvent.actualStartTimeAsMilli(actualStartTime);
metricsEvent.runDurationAsNano(runDuration);
metricsEvent.resultCode(resultCode);
metricsEvent.wrapForDecode(
directBuffer,
DisruptorSbeMetricsEvent.MESSAGE_HEADER_SIZE,
DisruptorSbeMetricsEvent.ACTING_BLOCK_LENGTH,
DisruptorSbeMetricsEvent.ACTING_VERSION);
assertThat(metricsEvent.eventType(), is(eventType));
assertThat(metricsEvent.scheduledStartTimeAsMilli(), is(scheduledStartTime));
assertThat(metricsEvent.actualStartTimeAsMilli(), is(actualStartTime));
assertThat(metricsEvent.runDurationAsNano(), is(runDuration));
assertThat(metricsEvent.resultCode(), is(resultCode));
eventType = DisruptorSbeMetricsEvent.SUBMIT_OPERATION_RESULT;
scheduledStartTime = 1;
actualStartTime = 2;
runDuration = 3;
resultCode = 4;
metricsEvent.wrapForEncode(directBuffer, DisruptorSbeMetricsEvent.MESSAGE_HEADER_SIZE)
.eventType(eventType)
.scheduledStartTimeAsMilli(scheduledStartTime)
.actualStartTimeAsMilli(actualStartTime)
.runDurationAsNano(runDuration)
.resultCode(resultCode);
metricsEvent.wrapForDecode(
directBuffer,
DisruptorSbeMetricsEvent.MESSAGE_HEADER_SIZE,
DisruptorSbeMetricsEvent.ACTING_BLOCK_LENGTH,
DisruptorSbeMetricsEvent.ACTING_VERSION);
assertThat(metricsEvent.eventType(), is(eventType));
assertThat(metricsEvent.scheduledStartTimeAsMilli(), is(scheduledStartTime));
assertThat(metricsEvent.actualStartTimeAsMilli(), is(actualStartTime));
assertThat(metricsEvent.runDurationAsNano(), is(runDuration));
assertThat(metricsEvent.resultCode(), is(resultCode));
metricsEvent.wrapForDecode(
directBuffer,
DisruptorSbeMetricsEvent.MESSAGE_HEADER_SIZE,
DisruptorSbeMetricsEvent.ACTING_BLOCK_LENGTH,
DisruptorSbeMetricsEvent.ACTING_VERSION);
assertThat(metricsEvent.eventType(), is(eventType));
assertThat(metricsEvent.scheduledStartTimeAsMilli(), is(scheduledStartTime));
assertThat(metricsEvent.actualStartTimeAsMilli(), is(actualStartTime));
assertThat(metricsEvent.runDurationAsNano(), is(runDuration));
assertThat(metricsEvent.resultCode(), is(resultCode));
}
}