package com.aliyun.openservices.log.producer; import com.aliyun.openservices.log.common.LogItem; import com.aliyun.openservices.log.exception.LogException; import com.aliyun.openservices.log.response.PutLogsResponse; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentMatchers; import java.util.ArrayList; import java.util.Date; import java.util.List; import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; /** * Created by brucewu on 2018/1/12. */ public class LogProducerTest { private static final String MOCK_IP = "192.168.0.25"; private LogProducer producer; @Before public void setUp() { producer = new LogProducer(new ProducerConfig()); } @After public void cleanUp() { } private ProjectConfig buildProjectConfig1() { String projectName = System.getenv("project1"); String endpoint = System.getenv("endpoint1"); String accessKeyId = System.getenv("accessKeyId"); String accessKey = System.getenv("accessKey"); return new ProjectConfig(projectName, endpoint, accessKeyId, accessKey); } private ProjectConfig buildProjectConfig2() { String projectName = System.getenv("project2"); String endpoint = System.getenv("endpoint2"); String accessKeyId = System.getenv("accessKeyId"); String accessKey = System.getenv("accessKey"); return new ProjectConfig(projectName, endpoint, accessKeyId, accessKey); } private List<LogItem> getLogItems() { List<LogItem> logItems = new ArrayList<LogItem>(); LogItem logItem1 = new LogItem((int) (new Date().getTime() / 1000)); logItem1.PushBack("key1", "val1"); LogItem logItem2 = new LogItem((int) (new Date().getTime() / 1000)); logItem2.PushBack("key2", "val2"); logItems.add(logItem1); logItems.add(logItem2); return logItems; } static private class TestCallback extends ILogCallback { @Override public void onCompletion(PutLogsResponse response, LogException e) { } } @Test public void testSendToMultiProjects() { producer.setProjectConfig(buildProjectConfig1()); producer.setProjectConfig(buildProjectConfig2()); TestCallback testCallback1 = mock(TestCallback.class); TestCallback testCallback2 = mock(TestCallback.class); producer.send(System.getenv("project1"), "store_1s", "topic1", MOCK_IP, getLogItems(), testCallback1); producer.send(System.getenv("project2"), "store_1s", "topic2", MOCK_IP, getLogItems(), testCallback2); producer.flush(); producer.close(); verify(testCallback1, times(1)).onCompletion(ArgumentMatchers.any(PutLogsResponse.class), (LogException) isNull()); verify(testCallback2, times(1)).onCompletion(ArgumentMatchers.any(PutLogsResponse.class), (LogException) isNull()); } @Test public void testSendToMultiShardLogStore() { producer.setProjectConfig(buildProjectConfig1()); TestCallback testCallback = mock(TestCallback.class); producer.send( System.getenv("project1"), "store_3s", "topic1", "55000000000000000000000000000000", MOCK_IP, getLogItems(), testCallback); producer.send( System.getenv("project1"), "store_3s", "topic2", "55000000000000000000000000000001", MOCK_IP, getLogItems(), testCallback); producer.send( System.getenv("project1"), "store_3s", "topic3", "aa000000000000000000000000000000", MOCK_IP, getLogItems(), testCallback); producer.send( System.getenv("project1"), "store_3s", "topic4", "aa000000000000000000000000000001", MOCK_IP, getLogItems(), testCallback); producer.send( System.getenv("project1"), "store_3s", "topic5", "fffffffffffffffffffffffffffffffe", MOCK_IP, getLogItems(), testCallback); producer.flush(); producer.close(); verify(testCallback, times(5)). onCompletion( ArgumentMatchers.any(PutLogsResponse.class), (LogException) isNull() ); } }