package org.skywalking.apm.plugin.mongodb.v3; import com.mongodb.ServerAddress; import com.mongodb.binding.ConnectionSource; import com.mongodb.binding.ReadBinding; import com.mongodb.connection.ServerConnectionState; import com.mongodb.connection.ServerDescription; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.powermock.api.mockito.PowerMockito; import org.powermock.modules.junit4.PowerMockRunner; import org.skywalking.apm.agent.core.plugin.interceptor.EnhancedClassInstanceContext; import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodInvokeContext; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @RunWith(PowerMockRunner.class) public class MongoDBReadBindingInterceptorTest { private MongoDBReadBindingInterceptor interceptor; @Mock private EnhancedClassInstanceContext instanceContext; @Mock private InstanceMethodInvokeContext interceptorContext; @Mock private ReadBinding readBinding; @Mock private ConnectionSource connectionSource; private ServerAddress address = new ServerAddress("127.0.0.1", 27017); @Before public void setUp() throws Exception { interceptor = new MongoDBReadBindingInterceptor(); ServerDescription serverDescription = ServerDescription.builder().address(address).state(ServerConnectionState.CONNECTED).build(); PowerMockito.when(connectionSource.getServerDescription()).thenReturn(serverDescription); PowerMockito.when(readBinding.getReadConnectionSource()).thenReturn(connectionSource); } @Test public void afterMethodTest() throws Exception { interceptor.afterMethod(instanceContext, interceptorContext, readBinding); verify(instanceContext, times(1)).set(MongoDBMethodInterceptor.MONGODB_HOST, "127.0.0.1"); verify(instanceContext, times(1)).set(MongoDBMethodInterceptor.MONGODB_PORT, 27017); } }