package com.amazonaws.xray.agent.runtime.dispatcher; import com.amazonaws.xray.agent.runtime.handlers.XRayHandlerInterface; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.powermock.modules.junit4.PowerMockRunner; import software.amazon.disco.agent.event.ServiceActivityRequestEvent; import software.amazon.disco.agent.event.ServiceActivityResponseEvent; import software.amazon.disco.agent.event.ServiceRequestEvent; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @RunWith(PowerMockRunner.class) public class EventDispatcherTest { private final String ORIGIN = "testOrigin"; private final String SERVICE = "testService"; private final String OPERATION = "testOperation"; @Mock private XRayHandlerInterface mockHandler; private EventDispatcher eventDispatcher; @Before public void setup() { eventDispatcher = new EventDispatcher(); eventDispatcher.addHandler(ORIGIN, mockHandler); } @Test public void testAddHandler() { String testOrigin = "SOMEORIGIN"; ServiceRequestEvent serviceRequestEvent = new ServiceActivityRequestEvent(testOrigin, SERVICE, OPERATION); eventDispatcher.dispatchRequestEvent(serviceRequestEvent); verify(mockHandler, times(0)).handleRequest(serviceRequestEvent); eventDispatcher.addHandler(testOrigin, mockHandler); eventDispatcher.dispatchRequestEvent(serviceRequestEvent); verify(mockHandler, times(1)).handleRequest(serviceRequestEvent); } @Test public void testDispatchRequest() { ServiceActivityRequestEvent serviceRequestEvent = new ServiceActivityRequestEvent(ORIGIN, SERVICE, OPERATION); eventDispatcher.dispatchRequestEvent(serviceRequestEvent); verify(mockHandler, times(1)).handleRequest(serviceRequestEvent); } @Test public void testDispatchResponse() { ServiceActivityRequestEvent serviceRequestEvent = mock(ServiceActivityRequestEvent.class); ServiceActivityResponseEvent serviceResponseEvent = new ServiceActivityResponseEvent(ORIGIN, SERVICE, OPERATION, serviceRequestEvent); eventDispatcher.dispatchResponseEvent(serviceResponseEvent); verify(mockHandler, times(1)).handleResponse(serviceResponseEvent); } @Test public void testDispatchNoHandler() { ServiceActivityRequestEvent serviceRequestEvent = new ServiceActivityRequestEvent("NotUsedOrigin", null, null); eventDispatcher.dispatchRequestEvent(serviceRequestEvent); verify(mockHandler, times(0)).handleRequest(serviceRequestEvent); } }