blob: 7151ef94026b7d5e801807c11dc04f69b1812d3c [file] [log] [blame]
#include <iostream>
#include <chrono>
#include <gtest/gtest.h>
#include <memory>
#include "ClientBaseTest.h"
class LocalTransactionCheckerImpl : public ons::LocalTransactionChecker {
virtual ons::TransactionStatus check(ons::Message &msg) {
cout << "transaction checker::commit transaction" << endl;
return ons::CommitTransaction;
}
};
class LocalTransactionExecuterImpl : public ons::LocalTransactionExecuter {
virtual ons::TransactionStatus execute(ons::Message &msg) {
cout << "transaction executer::commit transaction of msgid: " << msg.getMsgID() << endl;
return ons::CommitTransaction;
}
};
class TransactionTest : public ClientBaseTest {
protected:
void SetUp() override {
ClientBaseTest::SetUp();
checker_ = new LocalTransactionCheckerImpl();
executor_ = new LocalTransactionExecuterImpl();
producer_ = ons::ONSFactory::getInstance()->createTransactionProducer(factoryInfo, checker_);
producer_->start();
}
void TearDown() override {
ClientBaseTest::TearDown();
producer_->shutdown();
delete checker_;
delete executor_;
}
ons::TransactionProducer *producer_;
LocalTransactionCheckerImpl *checker_;
LocalTransactionExecuterImpl *executor_;
};
TEST_F(TransactionTest, test_setUp) {
ASSERT_TRUE(nullptr != producer_);
}
TEST_F(TransactionTest, testSendMessage_Normal) {
ons::Message msg(
"t_opensource_unit_test",
"tagA",
"ORDERID_100",
"hello RocketMQ"
);
ons::SendResultONS sendResult = producer_->send(msg, executor_);
ASSERT_TRUE(nullptr != sendResult.getMessageId());
}
TEST_F(TransactionTest, testSendMessage_ExcutorBeingNull) {
ons::Message msg(
"t_opensource_unit_test",
"tagA",
"ORDERID_100",
"hello RocketMQ"
);
EXPECT_THROW(ons::SendResultONS sendResult = producer_->send(msg, NULL), ons::ONSClientException);
}
TEST_F(TransactionTest, testSendMessage_TopicBeingEmpty) {
ons::Message msg(
"",
"tagA",
"ORDERID_100",
"hello RocketMQ"
);
EXPECT_THROW(ons::SendResultONS sendResult = producer_->send(msg, executor_), ons::ONSClientException);
}
TEST_F(TransactionTest, testSendMessage_TopicNotExist) {
ons::Message msg(
"topic_not_use_test",
"tagA",
"ORDERID_100",
"hello RocketMQ"
);
EXPECT_THROW(ons::SendResultONS sendResult = producer_->send(msg, executor_), ons::ONSClientException);
}