private LimitsEnforcer createEnforcerWithCurrentValue(int minimum) { return createEnforcerWithCurrentValue(minimum, minimum); }
@Test public void testAddOneTelemetry() throws Exception { TelemetriesTransmitter mockSender = Mockito.mock(TelemetriesTransmitter.class); LimitsEnforcer maxEnforcer = createEnforcerWithCurrentValue(128); LimitsEnforcer sendEnforcer = createEnforcerWithCurrentValue(2); TelemetryBuffer testedBuffer = new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); testedBuffer.add("mockTelemetry"); Mockito.verify(mockSender, Mockito.times(1)).scheduleSend((TelemetriesTransmitter.TelemetriesFetcher) any(), anyLong(), (TimeUnit) anyObject()); }
@Test public void testFlushWithZero() throws Exception { TelemetriesTransmitter mockSender = Mockito.mock(TelemetriesTransmitter.class); // Create a buffer with max buffer size of 10 and timeout of 10 seconds LimitsEnforcer maxEnforcer = createEnforcerWithCurrentValue(10); LimitsEnforcer sendEnforcer = createEnforcerWithCurrentValue(3); TelemetryBuffer testedBuffer = new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); testedBuffer.flush(); Mockito.verify(mockSender, Mockito.never()).sendNow(anyCollectionOf(String.class)); }
@Test(expected = IllegalArgumentException.class) public void testNegativeBufferTimeoutSenderIsSet() throws Exception { TelemetriesTransmitter mockSender = Mockito.mock(TelemetriesTransmitter.class); LimitsEnforcer maxEnforcer = createDefaultBatchSizeEnforcer(); LimitsEnforcer sendEnforcer = createEnforcerWithCurrentValue(-1); new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); }
@Test(expected = IllegalArgumentException.class) public void testNegativeBufferSizeSenderIsSet() throws Exception { TelemetriesTransmitter mockSender = Mockito.mock(TelemetriesTransmitter.class); LimitsEnforcer maxEnforcer = createEnforcerWithCurrentValue(-1); LimitsEnforcer sendEnforcer = createDefaultSenderTimeoutEnforcer(); new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); }
@Test(expected = IllegalArgumentException.class) public void testZeroBufferSizeSenderIsSet() throws Exception { TelemetriesTransmitter mockSender = Mockito.mock(TelemetriesTransmitter.class); LimitsEnforcer maxEnforcer = createEnforcerWithCurrentValue(0); LimitsEnforcer sendEnforcer = createDefaultSenderTimeoutEnforcer(); new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); }
@Test(expected = IllegalArgumentException.class) public void testZeroBufferTimeoutSenderIsSet() throws Exception { TelemetriesTransmitter mockSender = Mockito.mock(TelemetriesTransmitter.class); LimitsEnforcer maxEnforcer = createDefaultBatchSizeEnforcer(); LimitsEnforcer sendEnforcer = createEnforcerWithCurrentValue(0); new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); }
@Test public void testSendWhenBufferIsFullInDeveloperMode() throws Exception { TelemetriesTransmitter mockSender = Mockito.mock(TelemetriesTransmitter.class); LimitsEnforcer maxEnforcer = createEnforcerWithCurrentValue(1); LimitsEnforcer sendEnforcer = createDefaultSenderTimeoutEnforcer(); TelemetryBuffer testedBuffer = new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); for (int i = 0; i < 2; ++i) { testedBuffer.add("mockTelemetry"); } Mockito.verify(mockSender, Mockito.never()).scheduleSend((TelemetriesTransmitter.TelemetriesFetcher)any(), anyLong(), (TimeUnit)anyObject()); Mockito.verify(mockSender, Mockito.times(2)).sendNow(anyCollectionOf(String.class)); }
@SuppressWarnings("unchecked") @Test public void testSendWhenBufferIsFullInNonDeveloperMode() throws Exception { TelemetriesTransmitter mockSender = Mockito.mock(TelemetriesTransmitter.class); Mockito.doReturn(true).when(mockSender).sendNow(anyCollection()); Mockito.doReturn(true).when(mockSender).scheduleSend(any(TelemetriesTransmitter.TelemetriesFetcher.class), anyLong(), any(TimeUnit.class)); LimitsEnforcer maxEnforcer = createEnforcerWithCurrentValue(2); LimitsEnforcer sendEnforcer = createDefaultSenderTimeoutEnforcer(); TelemetryBuffer testedBuffer = new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); for (int i = 0; i < 2; ++i) { testedBuffer.add("mockTelemetry"); } Mockito.verify(mockSender, Mockito.times(1)).scheduleSend((TelemetriesTransmitter.TelemetriesFetcher) any(), anyLong(), (TimeUnit) anyObject()); Mockito.verify(mockSender, Mockito.times(1)).sendNow(anyCollectionOf(String.class)); }
LimitsEnforcer maxEnforcer = createEnforcerWithCurrentValue(3); LimitsEnforcer sendEnforcer = createDefaultSenderTimeoutEnforcer();
@Test public void testSendBufferAfterTimeoutExpiresButBufferWasAlreadySent() throws Exception { MockSender mockSender = new MockSender() .setExpectedNumberOfScheduleSendCalls(1) .setExpectedNumberOfSendNowCalls(1) .setExpectedTelemetriesNumberInScheduleSend(0) .setExpectedTelemetriesNumberInSendNow(10); // Create a buffer with max buffer size of 10 and timeout of 10 seconds LimitsEnforcer maxEnforcer = createEnforcerWithCurrentValue(10); LimitsEnforcer sendEnforcer = createEnforcerWithCurrentValue(3); TelemetryBuffer testedBuffer = new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); for (int i = 0; i < 10; ++i) { testedBuffer.add("mockTelemetry"); } mockSender.waitForFinish(6L); }
@Test public void testSendBufferAfterTimeoutExpires() throws Exception { MockSender mockSender = new MockSender() .setExpectedNumberOfScheduleSendCalls(1) .setExpectedNumberOfSendNowCalls(0) .setExpectedTelemetriesNumberInScheduleSend(1) .setExpectedTelemetriesNumberInSendNow(1); // Create a buffer with max buffer size of 10 and timeout of 10 seconds LimitsEnforcer maxEnforcer = createEnforcerWithCurrentValue(10); LimitsEnforcer sendEnforcer = createEnforcerWithCurrentValue(3); TelemetryBuffer testedBuffer = new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); for (int i = 0; i < 1; ++i) { testedBuffer.add("mockTelemetry"); } mockSender.waitForFinish(6L); }
private void testFlushWithData(int expectedTelemetriesNumberInSendNow) { MockSender mockSender = new MockSender() .setExpectedNumberOfScheduleSendCalls(1) .setExpectedNumberOfSendNowCalls(1) .setExpectedTelemetriesNumberInScheduleSend(0) .setExpectedTelemetriesNumberInSendNow(expectedTelemetriesNumberInSendNow); // Create a buffer with max buffer size of 10 and timeout of 10 seconds LimitsEnforcer maxEnforcer = createEnforcerWithCurrentValue(1, 10); LimitsEnforcer sendEnforcer = createEnforcerWithCurrentValue(1, 3); TelemetryBuffer testedBuffer = new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); for (int i = 0; i < expectedTelemetriesNumberInSendNow; ++i) { testedBuffer.add("mockTelemetry"); } testedBuffer.flush(); mockSender.waitForFinish(6L); }
@Test public void testSetMaxTelemetriesInBatchWithSmallerSize() { MockSender mockSender = new MockSender() .setExpectedNumberOfScheduleSendCalls(0) .setExpectedNumberOfSendNowCalls(1) .setExpectedTelemetriesNumberInScheduleSend(0) .setExpectedTelemetriesNumberInSendNow(2); // Create a buffer with max buffer size of 10 and timeout of 10 seconds LimitsEnforcer maxEnforcer = createEnforcerWithCurrentValue(1, 10); LimitsEnforcer sendEnforcer = createEnforcerWithCurrentValue(30); TelemetryBuffer testedBuffer = new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); for (int i = 0; i < 2; ++i) { testedBuffer.add("mockTelemetry"); } testedBuffer.setMaxTelemetriesInBatch(1); mockSender.waitForFinish(1L); }
@Test public void testSetTransmitBufferTimeoutInSecondsShorterTime() { MockSender mockSender = new MockSender() .setExpectedNumberOfScheduleSendCalls(0) .setExpectedNumberOfSendNowCalls(1) .setExpectedTelemetriesNumberInScheduleSend(0) .setExpectedTelemetriesNumberInSendNow(2); // Create a buffer with max buffer size of 10 and timeout of 10 seconds LimitsEnforcer maxEnforcer = createEnforcerWithCurrentValue(10); LimitsEnforcer sendEnforcer = createEnforcerWithCurrentValue(1, 30); TelemetryBuffer testedBuffer = new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); for (int i = 0; i < 2; ++i) { testedBuffer.add("mockTelemetry"); } testedBuffer.setTransmitBufferTimeoutInSeconds(1); mockSender.waitForFinish(1L); }
@Test public void testSetMaxTelemetriesInBatchWithBiggerSize() { MockSender mockSender = new MockSender() .setExpectedNumberOfScheduleSendCalls(0) .setExpectedNumberOfSendNowCalls(1) .setExpectedTelemetriesNumberInScheduleSend(0) .setExpectedTelemetriesNumberInSendNow(11); // Create a buffer with max buffer size of 10 and timeout of 10 seconds LimitsEnforcer maxEnforcer = createEnforcerWithCurrentValue(1, 10); LimitsEnforcer sendEnforcer = createEnforcerWithCurrentValue(30); TelemetryBuffer testedBuffer = new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); for (int i = 0; i < 1; ++i) { testedBuffer.add("mockTelemetry"); } testedBuffer.setMaxTelemetriesInBatch(11); for (int i = 0; i < 10; ++i) { testedBuffer.add("mockTelemetry"); } mockSender.waitForFinish(1L); }
@Test public void testSetMaxTelemetriesInBatchWithSmallerSizeButLargerThanWhatInBuffer() { MockSender mockSender = new MockSender() .setExpectedNumberOfScheduleSendCalls(0) .setExpectedNumberOfSendNowCalls(1) .setExpectedTelemetriesNumberInScheduleSend(0) .setExpectedTelemetriesNumberInSendNow(3) .setExpectedNumberOfScheduleSendRequests(2); // Create a buffer with max buffer size of 10 and timeout of 10 seconds LimitsEnforcer maxEnforcer = createEnforcerWithCurrentValue(1, 10); LimitsEnforcer sendEnforcer = createEnforcerWithCurrentValue(30); TelemetryBuffer testedBuffer = new TelemetryBuffer(mockSender, maxEnforcer, sendEnforcer); for (int i = 0; i < 2; ++i) { testedBuffer.add("mockTelemetry"); } testedBuffer.setMaxTelemetriesInBatch(3); for (int i = 0; i < 2; ++i) { testedBuffer.add("mockTelemetry"); } mockSender.waitForFinish(1L); }