/** * Flushes the data that the channel might have internally. */ @Override public void flush() { telemetryBuffer.flush(); }
/** * Sets the transmit buffer timeout in seconds * @param value The amount of time to wait before sending the buffer. */ public void setTransmitBufferTimeoutInSeconds(int value) { synchronized (lock) { int oldValue = transmitBufferTimeoutInSeconds; transmitBufferTimeoutInSeconds = this.transmitBufferTimeoutInSecondsEnforcer.normalizeValue(value); // Request for quicker flushes, we flush if the previous timeout is bigger if (transmitBufferTimeoutInSeconds < oldValue) { flush(); } } }
/** * Sets the maximum number of telemetries in a batch * @param value The max amount of Telemetries that are allowed in a batch. */ public void setMaxTelemetriesInBatch(int value) { synchronized (lock) { maxTelemetriesInBatch = maxTelemetriesInBatchEnforcer.normalizeValue(value); if (telemetries != null && maxTelemetriesInBatch < telemetries.size()) { // Request for smaller buffers, we flush if our buffer contains more elements flush(); } } }
@Test public void flushDelegatesToBuffer() { channel.flush(); verify(mockBuffer, times(1)).flush(); }
@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)); }
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); }