@Test public void everyThingClosesWithFirstTrackerFail() throws IOException { when(address.size()).thenReturn(2); when(mockTrackerFactory.getTracker()) .thenAnswer( new Answer<Tracker>() { boolean first = true; @Override public Tracker answer(InvocationOnMock invocation) throws Throwable { if (first) { first = false; throw new CommunicationException("Errror on communication"); } return mockTracker; } }); stream.write(1); stream.close(); verify(mockOutputStream).flush(); verify(mockOutputStream).close(); verify(mockHttpConnection).disconnect(); verify(mockTracker).createClose(KEY, DOMAIN, mockDestination, 1); verify(mockTracker).close(); verify(mockWriteLock).unlock(); }
@Test public void countOnWrite() throws IOException { byte[] b = new byte[] {1, 2, 3, 4, 5}; stream.write(b); stream.flush(); stream.close(); verify(mockTracker).createClose(KEY, DOMAIN, mockDestination, 5); }
@Test public void everyThingCloses() throws IOException { stream.write(1); stream.close(); verify(mockOutputStream).flush(); verify(mockOutputStream).close(); verify(mockHttpConnection).disconnect(); verify(mockTracker).createClose(KEY, DOMAIN, mockDestination, 1); verify(mockTracker).close(); verify(mockWriteLock).unlock(); }
@Test public void everyThingClosesEvenOnFail() throws IOException { doThrow(new RuntimeException()).when(mockOutputStream).flush(); doThrow(new RuntimeException()).when(mockOutputStream).close(); when(mockHttpConnection.getResponseCode()).thenReturn(HttpURLConnection.HTTP_INTERNAL_ERROR); doThrow(new RuntimeException()).when(mockInputStream).close(); doThrow(new RuntimeException()).when(mockHttpConnection).disconnect(); doThrow(new RuntimeException()).when(mockTracker).createClose(KEY, DOMAIN, mockDestination, 1); try { stream.write(1); stream.close(); } catch (Exception e) { } verify(mockOutputStream).flush(); verify(mockOutputStream).close(); verify(mockHttpConnection).disconnect(); verify(mockTracker).createClose(KEY, DOMAIN, mockDestination, -1); verify(mockTracker).close(); verify(mockWriteLock).unlock(); }
@Test public void writeByteArrayWithOffsetDelegates() throws IOException { byte[] b = new byte[4]; stream.write(b, 2, 4); verify(mockOutputStream).write(b, 2, 4); }
@Test public void writeIntDelegates() throws IOException { stream.write(1); verify(mockOutputStream).write(1); }