NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.3: NDN, CCN, CCNx, content centric networks
API Documentation
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
processor.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2011, Peter Thorson. All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are met:
6
* * Redistributions of source code must retain the above copyright
7
* notice, this list of conditions and the following disclaimer.
8
* * Redistributions in binary form must reproduce the above copyright
9
* notice, this list of conditions and the following disclaimer in the
10
* documentation and/or other materials provided with the distribution.
11
* * Neither the name of the WebSocket++ Project nor the
12
* names of its contributors may be used to endorse or promote products
13
* derived from this software without specific prior written permission.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
* ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY
19
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
*
26
*/
27
//#define BOOST_TEST_DYN_LINK
28
#define BOOST_TEST_MODULE processors
29
#include <boost/test/unit_test.hpp>
30
31
#include <iostream>
32
#include <string>
33
34
#include <
websocketpp/processors/processor.hpp
>
35
#include <
websocketpp/http/request.hpp
>
36
37
BOOST_AUTO_TEST_CASE
( exact_match ) {
38
websocketpp::http::parser::request
r;
39
40
std::string handshake =
"GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\n\r\n"
;
41
42
r.
consume
(handshake.c_str(),handshake.size());
43
44
BOOST_CHECK(
websocketpp::processor::is_websocket_handshake
(r));
45
}
46
47
BOOST_AUTO_TEST_CASE
( non_match ) {
48
websocketpp::http::parser::request
r;
49
50
std::string handshake =
"GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n\r\n"
;
51
52
r.
consume
(handshake.c_str(),handshake.size());
53
54
BOOST_CHECK(!
websocketpp::processor::is_websocket_handshake
(r));
55
}
56
57
BOOST_AUTO_TEST_CASE
( ci_exact_match ) {
58
websocketpp::http::parser::request
r;
59
60
std::string handshake =
"GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: UpGrAde\r\nUpgrade: WebSocket\r\n\r\n"
;
61
62
r.
consume
(handshake.c_str(),handshake.size());
63
64
BOOST_CHECK(
websocketpp::processor::is_websocket_handshake
(r));
65
}
66
67
BOOST_AUTO_TEST_CASE
( non_exact_match1 ) {
68
websocketpp::http::parser::request
r;
69
70
std::string handshake =
"GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade,foo\r\nUpgrade: websocket,foo\r\n\r\n"
;
71
72
r.
consume
(handshake.c_str(),handshake.size());
73
74
BOOST_CHECK(
websocketpp::processor::is_websocket_handshake
(r));
75
}
76
77
BOOST_AUTO_TEST_CASE
( non_exact_match2 ) {
78
websocketpp::http::parser::request
r;
79
80
std::string handshake =
"GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: keep-alive,Upgrade,foo\r\nUpgrade: foo,websocket,bar\r\n\r\n"
;
81
82
r.
consume
(handshake.c_str(),handshake.size());
83
84
BOOST_CHECK(
websocketpp::processor::is_websocket_handshake
(r));
85
}
86
87
BOOST_AUTO_TEST_CASE
( version_blank ) {
88
websocketpp::http::parser::request
r;
89
90
std::string handshake =
"GET / HTTP/1.1\r\nHost: www.example.com\r\nUpgrade: websocket\r\n\r\n"
;
91
92
r.
consume
(handshake.c_str(),handshake.size());
93
94
BOOST_CHECK(
websocketpp::processor::get_websocket_version
(r) == 0);
95
}
96
97
BOOST_AUTO_TEST_CASE
( version_7 ) {
98
websocketpp::http::parser::request
r;
99
100
std::string handshake =
"GET / HTTP/1.1\r\nHost: www.example.com\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 7\r\n\r\n"
;
101
102
r.
consume
(handshake.c_str(),handshake.size());
103
104
BOOST_CHECK(
websocketpp::processor::get_websocket_version
(r) == 7);
105
}
106
107
BOOST_AUTO_TEST_CASE
( version_8 ) {
108
websocketpp::http::parser::request
r;
109
110
std::string handshake =
"GET / HTTP/1.1\r\nHost: www.example.com\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 8\r\n\r\n"
;
111
112
r.
consume
(handshake.c_str(),handshake.size());
113
114
BOOST_CHECK(
websocketpp::processor::get_websocket_version
(r) == 8);
115
}
116
117
BOOST_AUTO_TEST_CASE
( version_13 ) {
118
websocketpp::http::parser::request
r;
119
120
std::string handshake =
"GET / HTTP/1.1\r\nHost: www.example.com\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\n\r\n"
;
121
122
r.
consume
(handshake.c_str(),handshake.size());
123
124
BOOST_CHECK(
websocketpp::processor::get_websocket_version
(r) == 13);
125
}
126
127
BOOST_AUTO_TEST_CASE
( version_non_numeric ) {
128
websocketpp::http::parser::request
r;
129
130
std::string handshake =
"GET / HTTP/1.1\r\nHost: www.example.com\r\nUpgrade: websocket\r\nSec-WebSocket-Version: abc\r\n\r\n"
;
131
132
r.
consume
(handshake.c_str(),handshake.size());
133
134
BOOST_CHECK(
websocketpp::processor::get_websocket_version
(r) == -1);
135
}
websocketpp::processor::is_websocket_handshake
bool is_websocket_handshake(request_type &r)
Determine whether or not a generic HTTP request is a WebSocket handshake.
Definition:
processor.hpp:68
processor.hpp
websocketpp::processor::get_websocket_version
int get_websocket_version(request_type &r)
Extract the version from a WebSocket handshake request.
Definition:
processor.hpp:107
request.hpp
websocketpp::http::parser::request
Stores, parses, and manipulates HTTP requests.
Definition:
request.hpp:50
websocketpp::http::parser::request::consume
size_t consume(char const *buf, size_t len)
Process bytes in the input buffer.
Definition:
request.hpp:41
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(exact_match)
Definition:
processor.cpp:37
ndnSIM
NFD
websocketpp
test
processors
processor.cpp
Generated on Thu Nov 2 2017 03:30:29 for ndnSIM by
1.8.11