@Test public void shouldReadFirstObservation() { final ErrorConsumer consumer = mock(ErrorConsumer.class); final long timestamp = 7; final RuntimeException error = new RuntimeException("Test Error"); when(clock.time()).thenReturn(timestamp); log.record(error); assertThat(ErrorLogReader.read(buffer, consumer), is(1)); verify(consumer).accept(eq(1), eq(timestamp), eq(timestamp), any(String.class)); }
@Test public void shouldReadTwoDistinctObservations() { final ErrorConsumer consumer = mock(ErrorConsumer.class); final long timestampOne = 7; final long timestampTwo = 10; final RuntimeException errorOne = new RuntimeException("Test Error One"); final IllegalStateException errorTwo = new IllegalStateException("Test Error Two"); when(clock.time()).thenReturn(timestampOne).thenReturn(timestampTwo); log.record(errorOne); log.record(errorTwo); assertThat(ErrorLogReader.read(buffer, consumer), is(2)); final InOrder inOrder = inOrder(consumer); inOrder.verify(consumer).accept(eq(1), eq(timestampOne), eq(timestampOne), any(String.class)); inOrder.verify(consumer).accept(eq(1), eq(timestampTwo), eq(timestampTwo), any(String.class)); }
@Test public void shouldReadSummarisedObservation() { final ErrorConsumer consumer = mock(ErrorConsumer.class); final long timestampOne = 7; final long timestampTwo = 10; final RuntimeException error = new RuntimeException("Test Error"); final StringWriter stringWriter = new StringWriter(); error.printStackTrace(new PrintWriter(stringWriter)); final String errorAsString = stringWriter.toString(); when(clock.time()).thenReturn(timestampOne).thenReturn(timestampTwo); log.record(error); log.record(error); assertThat(ErrorLogReader.read(buffer, consumer), is(1)); verify(consumer).accept(eq(2), eq(timestampOne), eq(timestampTwo), eq(errorAsString)); }
@Test public void shouldReadOneObservationSinceTimestamp() { final ErrorConsumer consumer = mock(ErrorConsumer.class); final long timestampOne = 7; final long timestampTwo = 10; final RuntimeException errorOne = new RuntimeException("Test Error One"); final IllegalStateException errorTwo = new IllegalStateException("Test Error Two"); when(clock.time()).thenReturn(timestampOne).thenReturn(timestampTwo); assertFalse(ErrorLogReader.hasErrors(buffer)); log.record(errorOne); log.record(errorTwo); assertTrue(ErrorLogReader.hasErrors(buffer)); assertThat(ErrorLogReader.read(buffer, consumer, timestampTwo), is(1)); verify(consumer).accept(eq(1), eq(timestampTwo), eq(timestampTwo), any(String.class)); verifyNoMoreInteractions(consumer); } }
consumer.accept( buffer.getInt(offset + OBSERVATION_COUNT_OFFSET), buffer.getLong(offset + FIRST_OBSERVATION_TIMESTAMP_OFFSET),
consumer.accept( buffer.getInt(offset + OBSERVATION_COUNT_OFFSET), buffer.getLong(offset + FIRST_OBSERVATION_TIMESTAMP_OFFSET),
consumer.accept( buffer.getInt(offset + OBSERVATION_COUNT_OFFSET), buffer.getLong(offset + FIRST_OBSERVATION_TIMESTAMP_OFFSET),