summaryrefslogtreecommitdiff
path: root/test/fixtures
diff options
context:
space:
mode:
Diffstat (limited to 'test/fixtures')
-rw-r--r--test/fixtures/fixture_log.cpp47
-rw-r--r--test/fixtures/fixture_log.hpp59
-rw-r--r--test/fixtures/server_environment.hpp51
-rw-r--r--test/fixtures/storage/empty0
4 files changed, 101 insertions, 56 deletions
diff --git a/test/fixtures/fixture_log.cpp b/test/fixtures/fixture_log.cpp
deleted file mode 100644
index 1b1646e665..0000000000
--- a/test/fixtures/fixture_log.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-#include "fixture_log.hpp"
-
-#include <iostream>
-
-namespace mbgl {
-
-FixtureLogBackend::~FixtureLogBackend() {
- std::cerr << unchecked();
-}
-
-size_t FixtureLogBackend::count(const LogMessage &message) const {
- size_t message_count = 0;
- for (const LogMessage &msg : messages) {
- if (msg == message) {
- message_count++;
- msg.checked = true;
- }
- }
- return message_count;
-}
-
-std::vector<FixtureLogBackend::LogMessage> FixtureLogBackend::unchecked() const {
- std::vector<LogMessage> unchecked_messages;
- for (const LogMessage &msg : messages) {
- if (!msg.checked) {
- unchecked_messages.push_back(msg);
- msg.checked = true;
- }
- }
- return unchecked_messages;
-}
-
-::std::ostream& operator<<(::std::ostream& os, const std::vector<FixtureLogBackend::LogMessage>& messages) {
- for (const FixtureLogBackend::LogMessage &message : messages) {
- os << "- " << message;
- }
- return os;
-}
-
-::std::ostream& operator<<(::std::ostream& os, const FixtureLogBackend::LogMessage& message) {
- os << "[\"" << message.severity.get() << "\", \"" << message.event.get() << "\"";
- if (message.code) os << ", " << message.code.get();
- if (message.msg) os << ", \"" << message.msg.get() << "\"";
- return os << "]" << std::endl;
-}
-
-}
diff --git a/test/fixtures/fixture_log.hpp b/test/fixtures/fixture_log.hpp
index 99097a2c47..8df16e3086 100644
--- a/test/fixtures/fixture_log.hpp
+++ b/test/fixtures/fixture_log.hpp
@@ -7,6 +7,8 @@
#include <vector>
#include <cstdarg>
+#include <iostream>
+
namespace mbgl {
@@ -37,13 +39,13 @@ public:
mutable bool checked = false;
};
- ~FixtureLogBackend();
+ inline ~FixtureLogBackend();
- void record(EventSeverity severity, Event event, const std::string &msg) {
+ inline void record(EventSeverity severity, Event event, const std::string &msg) {
messages.emplace_back(severity, event, msg);
}
- void record(EventSeverity severity, Event event, const char* format, ...) {
+ inline void record(EventSeverity severity, Event event, const char* format, ...) {
va_list args;
va_start(args, format);
const size_t len = vsnprintf(NULL, 0, format, args);
@@ -55,24 +57,63 @@ public:
messages.emplace_back(severity, event, std::string { buffer.get(), len });
}
- void record(EventSeverity severity, Event event, int64_t code) {
+ inline void record(EventSeverity severity, Event event, int64_t code) {
messages.emplace_back(severity, event, code);
}
- void record(EventSeverity severity, Event event, int64_t code, const std::string &msg) {
+ inline void record(EventSeverity severity, Event event, int64_t code, const std::string &msg) {
messages.emplace_back(severity, event, code, msg);
}
- size_t count(const LogMessage &message) const;
- std::vector<LogMessage> unchecked() const;
+ inline size_t count(const LogMessage &message) const;
+ inline std::vector<LogMessage> unchecked() const;
public:
std::vector<LogMessage> messages;
};
-::std::ostream& operator<<(::std::ostream& os, const std::vector<FixtureLogBackend::LogMessage>& messages);
-::std::ostream& operator<<(::std::ostream& os, const FixtureLogBackend::LogMessage& message);
+inline ::std::ostream& operator<<(::std::ostream& os, const std::vector<FixtureLogBackend::LogMessage>& messages);
+inline ::std::ostream& operator<<(::std::ostream& os, const FixtureLogBackend::LogMessage& message);
+
+FixtureLogBackend::~FixtureLogBackend() {
+ std::cerr << unchecked();
+}
+
+size_t FixtureLogBackend::count(const LogMessage &message) const {
+ size_t message_count = 0;
+ for (const LogMessage &msg : messages) {
+ if (msg == message) {
+ message_count++;
+ msg.checked = true;
+ }
+ }
+ return message_count;
+}
+std::vector<FixtureLogBackend::LogMessage> FixtureLogBackend::unchecked() const {
+ std::vector<LogMessage> unchecked_messages;
+ for (const LogMessage &msg : messages) {
+ if (!msg.checked) {
+ unchecked_messages.push_back(msg);
+ msg.checked = true;
+ }
+ }
+ return unchecked_messages;
+}
+
+::std::ostream& operator<<(::std::ostream& os, const std::vector<FixtureLogBackend::LogMessage>& messages) {
+ for (const FixtureLogBackend::LogMessage &message : messages) {
+ os << "- " << message;
+ }
+ return os;
+}
+
+::std::ostream& operator<<(::std::ostream& os, const FixtureLogBackend::LogMessage& message) {
+ os << "[\"" << message.severity.get() << "\", \"" << message.event.get() << "\"";
+ if (message.code) os << ", " << message.code.get();
+ if (message.msg) os << ", \"" << message.msg.get() << "\"";
+ return os << "]" << std::endl;
+}
}
diff --git a/test/fixtures/server_environment.hpp b/test/fixtures/server_environment.hpp
new file mode 100644
index 0000000000..54dbb24bdd
--- /dev/null
+++ b/test/fixtures/server_environment.hpp
@@ -0,0 +1,51 @@
+#ifndef MBGL_TEST_FIXTURES_SERVER_ENVIRONMENT
+#define MBGL_TEST_FIXTURES_SERVER_ENVIRONMENT
+
+#include <gtest/gtest.h>
+
+#include <dirent.h>
+#include <signal.h>
+#include <libgen.h>
+
+class ServerEnvironment : public ::testing::Environment {
+public:
+ inline ServerEnvironment(const std::string &executable);
+ inline virtual void SetUp();
+ inline virtual void TearDown();
+
+private:
+ const std::string executable;
+ const std::string parent_pid = std::to_string(getpid());
+ pid_t pid = 0;
+};
+
+ServerEnvironment::ServerEnvironment(const std::string &executable_) : executable(executable_) {}
+
+void ServerEnvironment::SetUp() {
+ pid = fork();
+ if (pid < 0) {
+ throw std::runtime_error("Cannot create server process");
+ } else if (pid == 0) {
+ char *arg[] = {
+ const_cast<char *>(executable.c_str()),
+ const_cast<char *>(parent_pid.c_str()),
+ nullptr
+ };
+ int ret = execv(executable.c_str(), arg);
+ // This call should not return. In case execve failed, we exit anyway.
+ if (ret < 0) {
+ fprintf(stderr, "Failed to start server: %s\n", strerror(errno));
+ }
+ exit(0);
+ } else {
+ // Wait until the server process sends SIGCONT.
+ raise(SIGSTOP);
+ }
+}
+
+void ServerEnvironment::TearDown() {
+ ASSERT_TRUE(pid);
+ kill(pid, SIGHUP);
+}
+
+#endif \ No newline at end of file
diff --git a/test/fixtures/storage/empty b/test/fixtures/storage/empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/fixtures/storage/empty