Mercurial > malikania
annotate tests/libcommon/socket/main.cpp @ 192:74afc5a41c83
Common: rewrite socket class, closes #911 @2h
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sat, 27 Oct 2018 07:11:03 +0200 |
parents | |
children |
rev | line source |
---|---|
192
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * main.cpp -- test socket |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr> |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #define BOOST_TEST_MODULE "socket" |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #include <boost/test/unit_test.hpp> |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #include <malikania/socket.hpp> |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 using boost::asio::io_context; |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 using boost::asio::ip::make_address; |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 using boost::asio::ip::tcp; |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 using boost::asio::ssl::context; |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 using boost::asio::ssl::stream_base; |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 namespace mlk { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 namespace { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 class socket_fixture { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 private: |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 auto init() -> context; |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 void handshake(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 void pair(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 protected: |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 // SSL and Asio context. |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 context ssl_context_{init()}; |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 io_context ctx_; |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 // two connected sockets. |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 socket server_{ctx_, ssl_context_}; |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 socket client_{ctx_, ssl_context_}; |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 socket_fixture(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 }; |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 auto socket_fixture::init() -> context |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 context ret{context::sslv23}; |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 ret.use_private_key_file(CMAKE_SOURCE_DIR "/tests/assets/test.key", context::pem); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 ret.use_certificate_file(CMAKE_SOURCE_DIR "/tests/assets/test.crt", context::pem); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 return ret; |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 } |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 void socket_fixture::handshake() |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 server_.get_socket().async_handshake(stream_base::server, [] (auto code) { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 if (code) |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 throw std::system_error(code); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 }); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 client_.get_socket().async_handshake(stream_base::client, [] (auto code) { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 if (code) |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 throw std::system_error(code); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 }); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 ctx_.run(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 ctx_.reset(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 } |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 void socket_fixture::pair() |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 tcp::acceptor acc(ctx_, tcp::endpoint(tcp::v4(), 0U)); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 acc.async_accept(server_.get_socket().lowest_layer(), [] (auto code) { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 if (code) |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 throw std::system_error(code); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 }); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 tcp::endpoint ep(make_address("127.0.0.1"), acc.local_endpoint().port()); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 client_.get_socket().lowest_layer().async_connect(ep, [] (auto code) { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 if (code) |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 throw std::system_error(code); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 }); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 ctx_.run(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 ctx_.reset(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 } |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 socket_fixture::socket_fixture() |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 pair(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 handshake(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 } |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 BOOST_FIXTURE_TEST_SUITE(socket_suite, socket_fixture) |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 BOOST_AUTO_TEST_CASE(simple) |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 server_.recv([] (auto code, auto json) { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 BOOST_TEST(!code); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 BOOST_TEST(json["hello"].template get<std::string>() == "world"); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 }); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 client_.send({{ "hello", "world" }}, [] (auto code) { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 BOOST_TEST(!code); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 }); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 ctx_.run(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 } |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 BOOST_AUTO_TEST_CASE(multiple) |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 server_.recv([] (auto code, auto json) { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 BOOST_TEST(!code); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 BOOST_TEST(json["hello"].template get<std::string>() == "world"); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 }); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
123 client_.send({{ "hello", "world" }}, [] (auto code) { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 BOOST_TEST(!code); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
125 }); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 ctx_.run(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 ctx_.reset(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
129 server_.recv([] (auto code, auto json) { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 BOOST_TEST(!code); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 BOOST_TEST(json["hello"].template get<std::string>() == "what's up?"); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 }); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
133 client_.send({{ "hello", "what's up?" }}, [] (auto code) { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
134 BOOST_TEST(!code); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
135 }); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
136 ctx_.run(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
137 } |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
138 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
139 BOOST_AUTO_TEST_CASE(simple_then_too_big) |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
140 { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
141 std::string big(102400, 'a'); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
143 server_.recv([] (auto code, auto json) { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
144 BOOST_TEST(!code); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
145 BOOST_TEST(json["hello"].template get<std::string>() == "world"); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
146 }); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
147 client_.send({{ "hello", "world" }}, [] (auto code) { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
148 BOOST_TEST(!code); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
149 }); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
150 ctx_.run(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 ctx_.reset(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
152 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 server_.recv([] (auto code, auto json) { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
154 BOOST_TEST(code.value() == static_cast<int>(std::errc::argument_list_too_long)); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
155 BOOST_TEST(json.is_null()); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
156 }); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 client_.send({{ "hello", std::move(big) }}, [] (auto code) { |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
158 BOOST_TEST(!code); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
159 }); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
160 ctx_.run(); |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
161 } |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
162 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
163 BOOST_AUTO_TEST_SUITE_END() |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
164 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
165 } // !namespace |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
166 |
74afc5a41c83
Common: rewrite socket class, closes #911 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
167 } // !mlk |