aboutsummaryrefslogtreecommitdiffstats
path: root/unittest.cpp
diff options
context:
space:
mode:
authoripknHama <ipknhama@gmail.com>2014-04-15 22:08:23 +0900
committeripknHama <ipknhama@gmail.com>2014-04-15 22:08:23 +0900
commit5692ec1cbf0957c526d6c7911c88e35145518839 (patch)
tree0450cd8b355ae655559cc8beb3323e5b1920f2fd /unittest.cpp
parentdc5033203302a6b825b681ab2b07604e9c59bd5b (diff)
downloadcrow-5692ec1cbf0957c526d6c7911c88e35145518839.tar.gz
crow-5692ec1cbf0957c526d6c7911c88e35145518839.zip
multi server test
Diffstat (limited to 'unittest.cpp')
-rw-r--r--unittest.cpp53
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";