upgrade libosmium dependency

This commit is contained in:
Dennis Luxen
2015-03-04 12:50:42 +01:00
32 changed files with 628 additions and 150 deletions
+69
View File
@@ -0,0 +1,69 @@
#include "catch.hpp"
#include <chrono>
#include <stdexcept>
#include <thread>
#include <osmium/thread/pool.hpp>
static std::atomic<int> result;
struct test_job_ok {
void operator()() const {
result = 1;
}
};
struct test_job_with_result {
int operator()() const {
return 42;
}
};
struct test_job_throw {
void operator()() const {
throw std::runtime_error("exception in pool thread");
}
};
TEST_CASE("thread") {
SECTION("can get access to thread pool") {
auto& pool = osmium::thread::Pool::instance();
REQUIRE(pool.queue_empty());
}
SECTION("can send job to thread pool") {
auto& pool = osmium::thread::Pool::instance();
result = 0;
auto future = pool.submit(test_job_ok{});
// wait a bit for the other thread to get a chance to run
std::this_thread::sleep_for(std::chrono::milliseconds(1));
REQUIRE(result == 1);
future.get();
REQUIRE(true);
}
SECTION("can send job to thread pool") {
auto& pool = osmium::thread::Pool::instance();
auto future = pool.submit(test_job_with_result{});
REQUIRE(future.get() == 42);
}
SECTION("can throw from job in thread pool") {
auto& pool = osmium::thread::Pool::instance();
result = 0;
bool got_exception = false;
auto future = pool.submit(test_job_throw{});
REQUIRE_THROWS_AS(future.get(), std::runtime_error);
}
}