package storm.emq;
import com.xiaomi.infra.galaxy.emq.client.EMQClientFactory;
import com.xiaomi.infra.galaxy.emq.thrift.MessageService;
import com.xiaomi.infra.galaxy.emq.thrift.SendMessageRequest;
import libthrift091.TException;
import org.junit.*;
/**
* Created by jiasheng on 15-12-28.
*/
public class EMQSpoutTest {
private static String queueName;
private MockSpoutExecutor executor;
@BeforeClass
public static void beforeClass() throws TException {
queueName = QueueUtil.createQueue();
QueueUtil.createTag(queueName);
}
@AfterClass
public static void afterClass() throws TException {
QueueUtil.deleteTag(queueName);
QueueUtil.deleteQueue(queueName);
}
@Before
public void setup() {
executor = new MockSpoutExecutor(new EMQSpout(new EMQConfig(
EMQTestConfig.EMQ_ENDPOINT,
queueName,
EMQTestConfig.EMQ_TAG,
QueueUtil.getCredential())));
}
@After
public void tearDown() {
executor.stop();
}
@Test
public void testEMQSpout() throws InterruptedException {
int sent = 0;
MessageService.Iface messageClient = new EMQClientFactory(QueueUtil.getCredential()).newMessageClient(EMQTestConfig.EMQ_ENDPOINT);
for (int i = 0; i < 100; i++) {
SendMessageRequest request = new SendMessageRequest(queueName, i + "");
try {
messageClient.sendMessage(request);
sent++;
} catch (TException e) {
}
}
executor.exec();
System.out.println("Emited: " + executor.getEmitCount() + "\nAcked: " + executor.getAckCount() + "\nFailed: " + executor.getFailCount());
Assert.assertTrue("Emited messages number of EMQSpout should be more than messages sent", executor.getEmitCount() >= sent);
}
}