private NonBlockingDispatcher createDispatcher() { TransmissionOutput mockOutput1 = Mockito.mock(TransmissionOutput.class); TransmissionOutput mockOutput2 = Mockito.mock(TransmissionOutput.class); NonBlockingDispatcher tested = new NonBlockingDispatcher(new TransmissionOutput[] {mockOutput1, mockOutput2}); return tested; } }
@Test public void testDispatchSuccessOfFirst() { TransmissionOutput mockOutput1 = Mockito.mock(TransmissionOutput.class); Mockito.doReturn(true).when(mockOutput1).send((Transmission) anyObject()); TransmissionOutput mockOutput2 = Mockito.mock(TransmissionOutput.class); NonBlockingDispatcher tested = new NonBlockingDispatcher(new TransmissionOutput[] {mockOutput1, mockOutput2}); Transmission transmission = new Transmission(new byte[2], "mockType", "mockEncoding"); tested.dispatch(transmission); Mockito.verify(mockOutput1, Mockito.times(1)).send((Transmission) anyObject()); Mockito.verify(mockOutput2, Mockito.never()).send((Transmission) anyObject()); }
@Test(expected = NullPointerException.class) public void testNullDispatch() throws Exception { createDispatcher().dispatch(null); }
@Test public void testDispatchFailureOfFirst() { TransmissionOutput mockOutput1 = Mockito.mock(TransmissionOutput.class); Mockito.doReturn(false).when(mockOutput1).send((Transmission) anyObject()); TransmissionOutput mockOutput2 = Mockito.mock(TransmissionOutput.class); Mockito.doReturn(true).when(mockOutput2).send((Transmission) anyObject()); NonBlockingDispatcher tested = new NonBlockingDispatcher(new TransmissionOutput[] {mockOutput1, mockOutput2}); Transmission transmission = new Transmission(new byte[2], "mockType", "mockEncoding"); tested.dispatch(transmission); Mockito.verify(mockOutput1, Mockito.times(1)).send((Transmission) anyObject()); Mockito.verify(mockOutput2, Mockito.times(1)).send((Transmission) anyObject()); }
@Test(expected = NullPointerException.class) public void nullTest() { new NonBlockingDispatcher(null); }
@Test(expected = IllegalArgumentException.class) public void emptyTest() { new NonBlockingDispatcher(new TransmissionOutput[]{}); }
@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; } }
TransmissionDispatcher dispatcher = new NonBlockingDispatcher(new TransmissionOutput[] {networkSender, activeFileSystemOutput}); actualNetworkSender.setTransmissionDispatcher(dispatcher);