Skip to content

Commit

Permalink
gtest -> Catch2 (#170)
Browse files Browse the repository at this point in the history
* Add catch2 + cxxopts + msgpack

* gtest -> Catch2

* Ci fixes
  • Loading branch information
MisterTea committed Jan 28, 2019
1 parent e503d0a commit 5c1b34a
Show file tree
Hide file tree
Showing 20 changed files with 310 additions and 337 deletions.
6 changes: 3 additions & 3 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
command: git submodule update --init
- run:
name: Build the root version of the project
command: mkdir ../root_version; cp -Rf .git * ../root_version/; cd ../root_version; git checkout et-v5.1.5; mkdir build; cd build; cmake ../; make -j4
command: mkdir ../root_version; cp -Rf .git * ../root_version/; cd ../root_version; git checkout v6; mkdir build; cd build; cmake ../; make -j4
- run:
name: Build the project
command: mkdir build; cd build; cmake ../; make -j4
Expand Down Expand Up @@ -48,7 +48,7 @@ jobs:
command: mkdir build; cd build; cmake -DBUILD_TEST=1 ../; make -j4
- run:
name: Run tests
command: cd build/test/; ./et-test
command: cd build; ./et-test
build_mac:
macos:
xcode: "9.0"
Expand All @@ -65,7 +65,7 @@ jobs:
command: mkdir build; cd build; cmake -DBUILD_TEST=1 ../; make -j4
- run:
name: Run tests
command: cd build/test/; ./et-test
command: cd build; ./et-test
workflows:
version: 2
build_and_test:
Expand Down
12 changes: 9 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
[submodule "googletest"]
path = external/googletest
url = https://github.com/google/googletest.git
[submodule "external/cxxopts"]
path = external/cxxopts
url = https://github.com/jarro2783/cxxopts.git
[submodule "external/Catch2"]
path = external/Catch2
url = https://github.com/catchorg/Catch2.git
[submodule "external/msgpack-c"]
path = external/msgpack-c
url = https://github.com/msgpack/msgpack-c.git
39 changes: 35 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ option(CODE_COVERAGE "Enable code coverage" OFF)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DET_VERSION='\"${PROJECT_VERSION}\"'")
# For easylogging, disable default log file, enable crash log, ensure thread safe, and catch c++ exceptions
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DELPP_NO_DEFAULT_LOG_FILE -DELPP_FEATURE_CRASH_LOG -DELPP_THREAD_SAFE -DELPP_HANDLE_SIGABRT")
IF(BUILD_TEST)
add_subdirectory(${CMAKE_SOURCE_DIR}/external/googletest)
ENDIF(BUILD_TEST)
IF(CODE_COVERAGE)
if(UNIX)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
Expand Down Expand Up @@ -94,6 +91,9 @@ ENDIF()

include_directories(
external
external/Catch2/single_include
external/cxxopts/include
external/msgpack-c/include
src/base
src/terminal
src/htm
Expand Down Expand Up @@ -274,7 +274,38 @@ target_link_libraries (
if(BUILD_TEST) # Build unit tests.
message(STATUS "Enabling test for ${PROJECT_NAME}")
enable_testing()
add_subdirectory(test)

file(GLOB TEST_SRCS test/*Test.cpp )
add_executable(
et-test

${TEST_SRCS}
test/Main.cpp
)

add_dependencies(
et-test
TerminalCommon
et-lib)

target_link_libraries(
et-test
TerminalCommon
et-lib
${CMAKE_THREAD_LIBS_INIT}
${PROTOBUF_LIBRARIES}
${GFLAGS_LIBRARIES}
${sodium_LIBRARY_RELEASE}
${SELINUX_LIBRARIES}
${UTEMPTER_LIBRARIES}
${CORE_LIBRARIES}
resolv
util
)
add_test(
et-test
et-test
)
endif()

install(TARGETS etserver etterminal et htm htmd
Expand Down
1 change: 1 addition & 0 deletions external/Catch2
Submodule Catch2 added at 61f4c7
1 change: 1 addition & 0 deletions external/cxxopts
Submodule cxxopts added at 9990f7
1 change: 0 additions & 1 deletion external/googletest
Submodule googletest deleted from ec44c6
1 change: 1 addition & 0 deletions external/msgpack-c
Submodule msgpack-c added at aec88c
2 changes: 0 additions & 2 deletions src/base/LogHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ el::Configurations LogHandler::setupLogHandler(int *argc, char ***argv) {
// easylogging parse verbose arguments, see [Application Arguments]
// in https://github.com/muflihun/easyloggingpp/blob/master/README.md
START_EASYLOGGINGPP(*argc, *argv);
// GFLAGS parse command line arguments
gflags::ParseCommandLineFlags(argc, argv, true);

// Easylogging configurations
el::Configurations defaultConf;
Expand Down
3 changes: 3 additions & 0 deletions src/htm/HtmClientMain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ int main(int argc, char** argv) {
// Reconfigure default logger to apply settings above
el::Loggers::reconfigureLogger("default", defaultConf);

// GFLAGS parse command line arguments
gflags::ParseCommandLineFlags(&argc, &argv, true);

uid_t myuid = getuid();
if (FLAGS_x) {
LOG(INFO) << "Killing previous htmd";
Expand Down
3 changes: 3 additions & 0 deletions src/htm/HtmServerMain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ int main(int argc, char **argv) {
// Reconfigure default logger to apply settings above
el::Loggers::reconfigureLogger("default", defaultConf);

// GFLAGS parse command line arguments
gflags::ParseCommandLineFlags(&argc, &argv, true);

shared_ptr<SocketHandler> socketHandler(new PipeSocketHandler());
HtmServer htm(socketHandler, SocketEndpoint(HtmServer::getPipeName()));
htm.run();
Expand Down
3 changes: 3 additions & 0 deletions src/terminal/Terminal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,9 @@ int main(int argc, char **argv) {
// Setup easylogging configurations
el::Configurations defaultConf = LogHandler::setupLogHandler(&argc, &argv);

// GFLAGS parse command line arguments
gflags::ParseCommandLineFlags(&argc, &argv, true);

if (FLAGS_logtostdout) {
defaultConf.setGlobally(el::ConfigurationType::ToStandardOutput, "true");
} else {
Expand Down
3 changes: 3 additions & 0 deletions src/terminal/TerminalClient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,9 @@ int main(int argc, char** argv) {
// Setup easylogging configurations
el::Configurations defaultConf = LogHandler::setupLogHandler(&argc, &argv);

// GFLAGS parse command line arguments
gflags::ParseCommandLineFlags(&argc, &argv, true);

if (FLAGS_logtostdout) {
defaultConf.setGlobally(el::ConfigurationType::ToStandardOutput, "true");
} else {
Expand Down
3 changes: 3 additions & 0 deletions src/terminal/TerminalServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,9 @@ int main(int argc, char **argv) {
// Setup easylogging configurations
el::Configurations defaultConf = LogHandler::setupLogHandler(&argc, &argv);

// GFLAGS parse command line arguments
gflags::ParseCommandLineFlags(&argc, &argv, true);

if (FLAGS_logtostdout) {
defaultConf.setGlobally(el::ConfigurationType::ToStandardOutput, "true");
} else {
Expand Down
150 changes: 67 additions & 83 deletions test/BackedTest.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
#include "Headers.hpp"

#include "gtest/gtest.h"
#include "TestHeaders.hpp"

#include "BackedReader.hpp"
#include "BackedWriter.hpp"
Expand Down Expand Up @@ -92,95 +90,81 @@ void listenFn(shared_ptr<SocketHandler> socketHandler, SocketEndpoint endpoint,
*serverClientFd = fd;
}

class BackedTest : public testing::Test {
protected:
void SetUp() override {
string tmpPath = string("/tmp/et_test_XXXXXXXX");
pipeDirectory = string(mkdtemp(&tmpPath[0]));
pipePath = string(pipeDirectory) + "/pipe";
SocketEndpoint endpoint(pipePath);
int serverClientFd = -1;
std::thread serverListenThread(listenFn, serverSocketHandler, endpoint,
&serverClientFd);

// Wait for server to spin up
::usleep(1000 * 1000);
int clientServerFd = clientSocketHandler->connect(endpoint);
FATAL_FAIL(clientServerFd);
serverListenThread.join();
FATAL_FAIL(serverClientFd);

serverCollector.reset(new BackedCollector(
shared_ptr<BackedReader>(new BackedReader(
serverSocketHandler,
shared_ptr<CryptoHandler>(new CryptoHandler(
"12345678901234567890123456789012", CLIENT_SERVER_NONCE_MSB)),
serverClientFd)),
shared_ptr<BackedWriter>(new BackedWriter(
serverSocketHandler,
shared_ptr<CryptoHandler>(new CryptoHandler(
"12345678901234567890123456789012", SERVER_CLIENT_NONCE_MSB)),
serverClientFd))));

clientCollector.reset(new BackedCollector(
shared_ptr<BackedReader>(new BackedReader(
clientSocketHandler,
shared_ptr<CryptoHandler>(new CryptoHandler(
"12345678901234567890123456789012", SERVER_CLIENT_NONCE_MSB)),
clientServerFd)),
shared_ptr<BackedWriter>(new BackedWriter(
clientSocketHandler,
shared_ptr<CryptoHandler>(new CryptoHandler(
"12345678901234567890123456789012", CLIENT_SERVER_NONCE_MSB)),
clientServerFd))));
}

void TearDown() override {
FATAL_FAIL(::remove(pipePath.c_str()));
FATAL_FAIL(::remove(pipeDirectory.c_str()));
}

TEST_CASE("BackedTest", "[BackedTest]") {
shared_ptr<SocketHandler> serverSocketHandler;
shared_ptr<SocketHandler> clientSocketHandler;
serverSocketHandler.reset(new PipeSocketHandler());
clientSocketHandler.reset(new PipeSocketHandler());

shared_ptr<BackedCollector> serverCollector;
shared_ptr<BackedCollector> clientCollector;
string pipeDirectory;
string pipePath;
};

class ReliableBackedTest : public BackedTest {
protected:
void SetUp() override {
srand(1);

serverSocketHandler.reset(new PipeSocketHandler());
clientSocketHandler.reset(new PipeSocketHandler());

BackedTest::SetUp();
}
};
string tmpPath = string("/tmp/et_test_XXXXXXXX");
pipeDirectory = string(mkdtemp(&tmpPath[0]));
pipePath = string(pipeDirectory) + "/pipe";
SocketEndpoint endpoint(pipePath);
int serverClientFd = -1;
std::thread serverListenThread(listenFn, serverSocketHandler, endpoint,
&serverClientFd);

// Wait for server to spin up
::usleep(1000 * 1000);
int clientServerFd = clientSocketHandler->connect(endpoint);
FATAL_FAIL(clientServerFd);
serverListenThread.join();
FATAL_FAIL(serverClientFd);

serverCollector.reset(new BackedCollector(
shared_ptr<BackedReader>(new BackedReader(
serverSocketHandler,
shared_ptr<CryptoHandler>(new CryptoHandler(
"12345678901234567890123456789012", CLIENT_SERVER_NONCE_MSB)),
serverClientFd)),
shared_ptr<BackedWriter>(new BackedWriter(
serverSocketHandler,
shared_ptr<CryptoHandler>(new CryptoHandler(
"12345678901234567890123456789012", SERVER_CLIENT_NONCE_MSB)),
serverClientFd))));

clientCollector.reset(new BackedCollector(
shared_ptr<BackedReader>(new BackedReader(
clientSocketHandler,
shared_ptr<CryptoHandler>(new CryptoHandler(
"12345678901234567890123456789012", SERVER_CLIENT_NONCE_MSB)),
clientServerFd)),
shared_ptr<BackedWriter>(new BackedWriter(
clientSocketHandler,
shared_ptr<CryptoHandler>(new CryptoHandler(
"12345678901234567890123456789012", CLIENT_SERVER_NONCE_MSB)),
clientServerFd))));

SECTION("ReliableBackedTest") {
string s(64 * 1024, '\0');
for (int a = 0; a < 64 * 1024 - 1; a++) {
s[a] = rand() % 26 + 'A';
}
s[64 * 1024 - 1] = 0;

for (int a = 0; a < 64; a++) {
VLOG(1) << "Writing packet " << a;
BackedWriterWriteState r =
serverCollector->write(string((&s[0] + a * 1024), 1024));
if (r != BackedWriterWriteState::SUCCESS) {
LOG(FATAL) << "Invalid write state: " << int(r);
}
}

TEST_F(ReliableBackedTest, ReadWrite) {
string s(64 * 1024, '\0');
for (int a = 0; a < 64 * 1024 - 1; a++) {
s[a] = rand() % 26 + 'A';
}
s[64 * 1024 - 1] = 0;

for (int a = 0; a < 64; a++) {
VLOG(1) << "Writing packet " << a;
BackedWriterWriteState r =
serverCollector->write(string((&s[0] + a * 1024), 1024));
if (r != BackedWriterWriteState::SUCCESS) {
LOG(FATAL) << "Invalid write state: " << int(r);
string resultConcat;
string result;
for (int a = 0; a < 64; a++) {
result = clientCollector->read();
resultConcat = resultConcat.append(result);
}
REQUIRE(resultConcat == s);
}

string resultConcat;
string result;
for (int a = 0; a < 64; a++) {
result = clientCollector->read();
resultConcat = resultConcat.append(result);
}
EXPECT_EQ(resultConcat, s);
FATAL_FAIL(::remove(pipePath.c_str()));
FATAL_FAIL(::remove(pipeDirectory.c_str()));
}
41 changes: 0 additions & 41 deletions test/CMakeLists.txt

This file was deleted.

Loading

0 comments on commit 5c1b34a

Please sign in to comment.