private void testSend(int amount, int expectedSends, ActiveTransmissionNetworkOutput theTested) throws InterruptedException { TransmissionOutput mockOutput = null; ActiveTransmissionNetworkOutput tested = null; if (theTested == null) { mockOutput = Mockito.mock(TransmissionOutput.class); Mockito.doReturn(true).when(mockOutput).send((Transmission) anyObject()); TransmissionPolicyStateFetcher mockStateFetcher = Mockito.mock(TransmissionPolicyStateFetcher.class); Mockito.doReturn(TransmissionPolicy.UNBLOCKED).when(mockStateFetcher).getCurrentState(); tested = new ActiveTransmissionNetworkOutput(mockOutput, mockStateFetcher); } else { tested = theTested; } for (int i = 0; i < amount; ++i) { tested.send(new Transmission(new byte[2], MOCK_CONTENT_TYPE, MOCK_ENCODING_TYPE)); } int waitCounter = 0; if (mockOutput != null) { try { Mockito.verify(mockOutput, Mockito.times(expectedSends)).send((Transmission) anyObject()); Thread.sleep(1000); } catch (Error e) { ++waitCounter; if (waitCounter == 2) { assertFalse(true); } } } tested.stop(60L, TimeUnit.SECONDS); }
Mockito.doReturn(TransmissionPolicy.UNBLOCKED).when(mockStateFetcher).getCurrentState(); ActiveTransmissionNetworkOutput tested = new ActiveTransmissionNetworkOutput(mock, mockStateFetcher, 1); numberExpected[0] = tested.getNumberOfMaxThreads(); testSend(100, 1, tested); assertTrue("Too many calls to send", isError[0]);
@Override public TelemetriesTransmitter create(String endpoint, String maxTransmissionStorageCapacity, boolean throttlingIsEnabled, int maxInstanceRetries) { // An active object with the network sender TransmissionOutput actualNetworkSender = TestThreadLocalData.getTransmissionOutput(); final TransmissionPolicyManager transmissionPolicyManager = new TransmissionPolicyManager(throttlingIsEnabled); transmissionPolicyManager.addTransmissionHandler(new ErrorHandler(transmissionPolicyManager)); transmissionPolicyManager.addTransmissionHandler(new PartialSuccessHandler(transmissionPolicyManager)); transmissionPolicyManager.addTransmissionHandler(new ThrottlingHandler(transmissionPolicyManager)); transmissionPolicyManager.setMaxInstantRetries(maxInstanceRetries); TransmissionPolicyStateFetcher stateFetcher = transmissionPolicyManager.getTransmissionPolicyState(); TransmissionOutput networkSender = new ActiveTransmissionNetworkOutput(actualNetworkSender, stateFetcher); // An active object with the file system sender TransmissionFileSystemOutput fileSystemSender = new TransmissionFileSystemOutput(); TransmissionOutput activeFileSystemOutput = new ActiveTransmissionFileSystemOutput(fileSystemSender, stateFetcher); // The dispatcher works with the two active senders TransmissionDispatcher dispatcher = new NonBlockingDispatcher(new TransmissionOutput[] {networkSender, activeFileSystemOutput}); // The loader works with the file system loader as the active one does TransmissionsLoader transmissionsLoader = new ActiveTransmissionLoader(fileSystemSender, stateFetcher, dispatcher); // The Transmitter manage all TelemetriesTransmitter telemetriesTransmitter = new TransmitterImpl(dispatcher, new GzipTelemetrySerializer(), transmissionsLoader); return telemetriesTransmitter; } }
TransmissionOutput networkSender = new ActiveTransmissionNetworkOutput(actualNetworkSender, stateFetcher);