package org.skywalking.apm.collector.worker;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.skywalking.apm.collector.actor.ClusterWorkerContext;
import org.skywalking.apm.collector.actor.LocalWorkerContext;
import org.skywalking.apm.collector.worker.mock.MockEsBulkClient;
import org.skywalking.apm.collector.worker.storage.EsClient;
import org.skywalking.apm.collector.worker.storage.JoinAndSplitData;
import org.skywalking.apm.collector.worker.storage.JoinAndSplitPersistenceData;
import static org.powermock.api.mockito.PowerMockito.*;
/**
* @author pengys5
*/
@RunWith(PowerMockRunner.class)
@PrepareForTest( {TestJoinAndSplitPersistenceMember.class, EsClient.class})
@PowerMockIgnore( {"javax.management.*"})
public class JoinAndSplitPersistenceMemberTestCase {
private TestJoinAndSplitPersistenceMember mergePersistenceMember;
private JoinAndSplitPersistenceData persistenceData;
@Before
public void init() throws Exception {
MockEsBulkClient mockEsBulkClient = new MockEsBulkClient();
mockEsBulkClient.createMock();
ClusterWorkerContext clusterWorkerContext = new ClusterWorkerContext(null);
LocalWorkerContext localWorkerContext = new LocalWorkerContext();
mergePersistenceMember = PowerMockito.spy(new TestJoinAndSplitPersistenceMember(TestJoinAndSplitPersistenceMember.Role.INSTANCE, clusterWorkerContext, localWorkerContext));
persistenceData = mock(JoinAndSplitPersistenceData.class);
JoinAndSplitData joinAndSplitData = mock(JoinAndSplitData.class);
when(mergePersistenceMember, "getPersistenceData").thenReturn(persistenceData);
when(persistenceData.getOrCreate(Mockito.anyString())).thenReturn(joinAndSplitData);
doCallRealMethod().when(mergePersistenceMember).analyse(Mockito.any(JoinAndSplitData.class));
}
@Test
public void testAnalyse() throws Exception {
String id = "2016" + Const.ID_SPLIT + "A" + Const.ID_SPLIT + "B";
JoinAndSplitData joinAndSplitData = new JoinAndSplitData(id);
joinAndSplitData.set("Column", "VALUE");
mergePersistenceMember.analyse(joinAndSplitData);
}
}