]>
Commit | Line | Data |
---|---|---|
530e3e1a PD |
1 | #define BOOST_TEST_DYN_LINK |
2 | #define BOOST_TEST_NO_MAIN | |
3 | #include <boost/test/unit_test.hpp> | |
4 | ||
5 | #include "iputils.hh" | |
6 | #include "proxy-protocol.hh" | |
7 | ||
8 | using namespace boost; | |
9 | using std::string; | |
10 | ||
11 | ||
12 | BOOST_AUTO_TEST_SUITE(test_proxy_protocol_cc) | |
13 | ||
14 | #define BINARY(s) (std::string(s, sizeof(s) - 1)) | |
15 | ||
16 | #define PROXYMAGIC "\x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A" | |
17 | #define PROXYMAGICLEN sizeof(PROXYMAGIC)-1 | |
18 | ||
19 | static string proxymagic(PROXYMAGIC, PROXYMAGICLEN); | |
20 | ||
21 | BOOST_AUTO_TEST_CASE(test_roundtrip) { | |
22 | string proxyheader; | |
23 | ||
24 | bool ptcp = true; | |
25 | ComboAddress src("65.66.67.68:18762"); // 18762 = 0x494a = "IJ" | |
26 | ComboAddress dest("69.70.71.72:19276"); // 19276 = 0x4b4c = "KL" | |
27 | proxyheader = makeProxyHeader(ptcp, src, dest); | |
28 | ||
29 | BOOST_CHECK_EQUAL(proxyheader, BINARY( | |
30 | PROXYMAGIC | |
31 | "\x21" // version | command | |
32 | "\x11" // ipv4=0x10 | TCP=0x1 | |
33 | "\x00\x0c" // 4 bytes IPv4 * 2 + 2 port numbers = 8 + 2 * 2 =12 = 0xc | |
34 | "ABCD" // 65.66.67.68 | |
35 | "EFGH" // 69.70.71.72 | |
36 | "IJ" // src port | |
37 | "KL" // dst port | |
38 | )); | |
39 | ||
40 | bool ptcp2; | |
41 | ComboAddress src2, dest2; | |
42 | ||
43 | BOOST_CHECK_EQUAL(parseProxyHeader(proxyheader.c_str(), proxyheader.size(), src2, dest2, ptcp2), 28); | |
44 | ||
45 | BOOST_CHECK_EQUAL(ptcp2, true); | |
46 | BOOST_CHECK(src2 == ComboAddress("65.66.67.68:18762")); | |
47 | BOOST_CHECK(dest2 == ComboAddress("69.70.71.72:19276")); | |
48 | } | |
49 | ||
50 | BOOST_AUTO_TEST_SUITE_END() |