blob: e25a964422426adeb4851a161690040de8748680 [file] [log] [blame]
package com.a.eye.skywalking.collector.worker;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.queue.EndOfBatchCommand;
import org.junit.After;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
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 static org.mockito.Mockito.*;
/**
* @author pengys5
*/
@RunWith(PowerMockRunner.class)
@PrepareForTest(TestAnalysisMember.class)
@PowerMockIgnore({"javax.management.*"})
public class AnalysisMemberTestCase {
@Test
public void testCommandOnWork() throws Exception {
ClusterWorkerContext clusterWorkerContext = new ClusterWorkerContext(null);
LocalWorkerContext localWorkerContext = new LocalWorkerContext();
TestAnalysisMember member = PowerMockito.spy(new TestAnalysisMember(TestAnalysisMember.Role.INSTANCE, clusterWorkerContext, localWorkerContext));
EndOfBatchCommand command = new EndOfBatchCommand();
member.onWork(command);
verify(member, times(1)).aggregation();
verify(member, never()).analyse(anyObject());
}
@Test
public void testAnalyse() throws Exception {
ClusterWorkerContext clusterWorkerContext = new ClusterWorkerContext(null);
LocalWorkerContext localWorkerContext = new LocalWorkerContext();
TestAnalysisMember member = PowerMockito.spy(new TestAnalysisMember(TestAnalysisMember.Role.INSTANCE, clusterWorkerContext, localWorkerContext));
Object message = new Object();
member.onWork(message);
verify(member, never()).aggregation();
verify(member, times(1)).analyse(anyObject());
}
@Test
public void testPreStart() throws Exception {
ClusterWorkerContext clusterWorkerContext = new ClusterWorkerContext(null);
LocalWorkerContext localWorkerContext = new LocalWorkerContext();
TestAnalysisMember member = PowerMockito.spy(new TestAnalysisMember(TestAnalysisMember.Role.INSTANCE, clusterWorkerContext, localWorkerContext));
member.preStart();
}
@Test
public void testOnWorkException() throws Exception {
ClusterWorkerContext clusterWorkerContext = new ClusterWorkerContext(null);
LocalWorkerContext localWorkerContext = new LocalWorkerContext();
TestAnalysisMember member = PowerMockito.spy(new TestAnalysisMember(TestAnalysisMember.Role.INSTANCE, clusterWorkerContext, localWorkerContext));
doThrow(new TestException()).when(member).analyse(anyObject());
ExceptionAnswer answer = new ExceptionAnswer();
PowerMockito.when(member, "saveException", any(TestException.class)).thenAnswer(answer);
member.onWork(new Object());
Assert.assertEquals(true, answer.isTestException);
}
class TestException extends Exception {
}
class ExceptionAnswer implements Answer {
boolean isTestException = false;
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
Object obj = invocation.getArguments()[0];
if (obj instanceof TestException) {
isTestException = true;
} else {
isTestException = false;
}
return null;
}
}
}