diff options
author | ipknHama <ipknhama@gmail.com> | 2014-04-15 22:08:23 +0900 |
---|---|---|
committer | ipknHama <ipknhama@gmail.com> | 2014-04-15 22:08:23 +0900 |
commit | 5692ec1cbf0957c526d6c7911c88e35145518839 (patch) | |
tree | 0450cd8b355ae655559cc8beb3323e5b1920f2fd /unittest.cpp | |
parent | dc5033203302a6b825b681ab2b07604e9c59bd5b (diff) | |
download | crow-5692ec1cbf0957c526d6c7911c88e35145518839.tar.gz crow-5692ec1cbf0957c526d6c7911c88e35145518839.zip |
multi server test
Diffstat (limited to 'unittest.cpp')
-rw-r--r-- | unittest.cpp | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/unittest.cpp b/unittest.cpp index bda1f26..b573b13 100644 --- a/unittest.cpp +++ b/unittest.cpp @@ -83,6 +83,7 @@ TEST(simple_response_routing_params) { ASSERT_EQUAL(100, response(100).code); ASSERT_EQUAL(200, response("Hello there").code); + ASSERT_EQUAL(500, response(500, "Internal Error?").code); routing_params rp; rp.int_params.push_back(1); @@ -97,13 +98,63 @@ TEST(simple_response_routing_params) ASSERT_EQUAL("hello", rp.get<string>(0)); } +TEST(multi_server) +{ + static char buf[2048]; + Flask app1, app2; + app1.route("/")([]{return "A";}); + app2.route("/")([]{return "B";}); + + Server<Flask> server1(&app1, 45451); + Server<Flask> server2(&app2, 45452); + + auto _ = async(launch::async, [&]{server1.run();}); + auto _2 = async(launch::async, [&]{server2.run();}); + + asio::io_service is; + { + asio::ip::tcp::socket c(is); + c.connect(asio::ip::tcp::endpoint(asio::ip::address::from_string("127.0.0.1"), 45451)); + + std::string sendmsg = "GET /\r\n\r\n"; + + c.send(asio::buffer(sendmsg)); + + size_t recved = c.receive(asio::buffer(buf, 2048)); + ASSERT_EQUAL('A', buf[recved-1]); + } + + { + asio::ip::tcp::socket c(is); + c.connect(asio::ip::tcp::endpoint(asio::ip::address::from_string("127.0.0.1"), 45452)); + + std::string sendmsg = "GET /\r\n\r\n"; + + c.send(asio::buffer(sendmsg)); + + size_t recved = c.receive(asio::buffer(buf, 2048)); + ASSERT_EQUAL('B', buf[recved-1]); + } + + server1.stop(); + server2.stop(); +} + int testmain() { bool failed = false; for(auto t:tests) { failed__ = false; - t->test(); + try + { + //cerr << typeid(*t).name() << endl; + t->test(); + } + catch(std::exception& e) + { + fail(e.what()); + } if (failed__) { cerr << "F"; |