From ddddef5444175ea0b6f9dca14ec325e49d43164b Mon Sep 17 00:00:00 2001 From: Peter Thorson Date: Sat, 30 Mar 2013 20:12:37 -0500 Subject: [PATCH] updates to unit tests to support new connection and processor api that includes RNG --- test/connection/connection.cpp | 3 +- test/processors/hybi07.cpp | 23 ++++++++---- test/processors/hybi08.cpp | 21 ++++++++--- test/processors/hybi13.cpp | 69 +++++++++++++++++++++++----------- test/roles/SConscript | 2 +- 5 files changed, 81 insertions(+), 37 deletions(-) diff --git a/test/connection/connection.cpp b/test/connection/connection.cpp index ddf428ff4a..88f3bab383 100644 --- a/test/connection/connection.cpp +++ b/test/connection/connection.cpp @@ -84,7 +84,8 @@ struct stub_config : public websocketpp::config::core { BOOST_AUTO_TEST_CASE( connection_extensions ) { stub_config::alog_type alog; stub_config::elog_type elog; - websocketpp::connection s(true,"",alog,elog); + stub_config::rng_type rng; + websocketpp::connection s(true,"",alog,elog,rng); BOOST_CHECK( s.extension_value == 5 ); BOOST_CHECK( s.extension_method() == 5 ); diff --git a/test/processors/hybi07.cpp b/test/processors/hybi07.cpp index 7f847a2a05..f07042d3a1 100644 --- a/test/processors/hybi07.cpp +++ b/test/processors/hybi07.cpp @@ -37,6 +37,7 @@ #include #include #include +#include struct stub_config { typedef websocketpp::http::parser::request request_type; @@ -46,7 +47,9 @@ struct stub_config { message_type; typedef websocketpp::message_buffer::alloc::con_msg_manager con_msg_manager_type; - + + typedef websocketpp::random::none::int_generator rng_type; + /// Extension related config static const bool enable_extensions = false; @@ -65,7 +68,8 @@ BOOST_AUTO_TEST_CASE( exact_match ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi07 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi07 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 7\r\nSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n\r\n"; @@ -103,7 +107,8 @@ BOOST_AUTO_TEST_CASE( non_get_method ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi07 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi07 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "POST / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 7\r\nSec-WebSocket-Key: foo\r\n\r\n"; @@ -120,7 +125,8 @@ BOOST_AUTO_TEST_CASE( old_http_version ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi07 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi07 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "GET / HTTP/1.0\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 7\r\nSec-WebSocket-Key: foo\r\n\r\n"; @@ -137,7 +143,8 @@ BOOST_AUTO_TEST_CASE( missing_handshake_key1 ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi07 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi07 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 7\r\n\r\n"; @@ -154,7 +161,8 @@ BOOST_AUTO_TEST_CASE( missing_handshake_key2 ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi07 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi07 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 7\r\n\r\n"; @@ -171,7 +179,8 @@ BOOST_AUTO_TEST_CASE( bad_host ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi07 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi07 p(false,true,msg_manager,rng); websocketpp::uri_ptr u; bool exception = false; websocketpp::lib::error_code ec; diff --git a/test/processors/hybi08.cpp b/test/processors/hybi08.cpp index 0aedaa326e..60336b903d 100644 --- a/test/processors/hybi08.cpp +++ b/test/processors/hybi08.cpp @@ -37,6 +37,7 @@ #include #include #include +#include struct stub_config { typedef websocketpp::http::parser::request request_type; @@ -47,6 +48,8 @@ struct stub_config { typedef websocketpp::message_buffer::alloc::con_msg_manager con_msg_manager_type; + typedef websocketpp::random::none::int_generator rng_type; + /// Extension related config static const bool enable_extensions = false; @@ -65,7 +68,8 @@ BOOST_AUTO_TEST_CASE( exact_match ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi08 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi08 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 8\r\nSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n\r\n"; @@ -102,8 +106,9 @@ BOOST_AUTO_TEST_CASE( exact_match ) { BOOST_AUTO_TEST_CASE( non_get_method ) { stub_config::request_type r; stub_config::response_type response; + stub_config::rng_type rng; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi08 p(false,true,msg_manager); + websocketpp::processor::hybi08 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "POST / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 8\r\nSec-WebSocket-Key: foo\r\n\r\n"; @@ -120,7 +125,8 @@ BOOST_AUTO_TEST_CASE( old_http_version ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi08 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi08 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "GET / HTTP/1.0\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 8\r\nSec-WebSocket-Key: foo\r\n\r\n"; @@ -137,7 +143,8 @@ BOOST_AUTO_TEST_CASE( missing_handshake_key1 ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi08 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi08 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 8\r\n\r\n"; @@ -154,7 +161,8 @@ BOOST_AUTO_TEST_CASE( missing_handshake_key2 ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi08 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi08 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 8\r\n\r\n"; @@ -171,7 +179,8 @@ BOOST_AUTO_TEST_CASE( bad_host ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi08 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi08 p(false,true,msg_manager,rng); websocketpp::uri_ptr u; bool exception = false; websocketpp::lib::error_code ec; diff --git a/test/processors/hybi13.cpp b/test/processors/hybi13.cpp index c5dd6c9f11..f70512dc3f 100644 --- a/test/processors/hybi13.cpp +++ b/test/processors/hybi13.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -50,6 +51,8 @@ struct stub_config { typedef websocketpp::message_buffer::alloc::con_msg_manager con_msg_manager_type; + typedef websocketpp::random::none::int_generator rng_type; + struct permessage_compress_config { typedef stub_config::request_type request_type; }; @@ -69,6 +72,8 @@ struct stub_config_ext { typedef websocketpp::message_buffer::alloc::con_msg_manager con_msg_manager_type; + typedef websocketpp::random::none::int_generator rng_type; + struct permessage_compress_config { typedef stub_config_ext::request_type request_type; }; @@ -83,7 +88,8 @@ BOOST_AUTO_TEST_CASE( exact_match ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi13 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r\n\r\n"; @@ -121,7 +127,8 @@ BOOST_AUTO_TEST_CASE( non_get_method ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi13 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "POST / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: foo\r\n\r\n"; @@ -138,7 +145,8 @@ BOOST_AUTO_TEST_CASE( old_http_version ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi13 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "GET / HTTP/1.0\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Key: foo\r\n\r\n"; @@ -155,7 +163,8 @@ BOOST_AUTO_TEST_CASE( missing_handshake_key1 ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi13 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\n\r\n"; @@ -172,7 +181,8 @@ BOOST_AUTO_TEST_CASE( missing_handshake_key2 ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi13 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,true,msg_manager,rng); websocketpp::lib::error_code ec; std::string handshake = "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: upgrade\r\nUpgrade: websocket\r\nSec-WebSocket-Version: 13\r\n\r\n"; @@ -189,7 +199,8 @@ BOOST_AUTO_TEST_CASE( bad_host ) { stub_config::request_type r; stub_config::response_type response; stub_config::con_msg_manager_type::ptr msg_manager; - websocketpp::processor::hybi13 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,true,msg_manager,rng); websocketpp::uri_ptr u; bool exception = false; websocketpp::lib::error_code ec; @@ -229,11 +240,12 @@ BOOST_AUTO_TEST_CASE( bad_host ) { BOOST_AUTO_TEST_CASE( frame_empty_binary_unmasked ) { typedef stub_config::con_msg_manager_type con_msg_manager_type; con_msg_manager_type::ptr msg_manager(new con_msg_manager_type()); + stub_config::rng_type rng; uint8_t frame[2] = {0x82, 0x00}; websocketpp::lib::error_code ec; // all in one chunk - websocketpp::processor::hybi13 p1(false,false,msg_manager); + websocketpp::processor::hybi13 p1(false,false,msg_manager,rng); size_t ret1 = p1.consume(frame,2,ec); @@ -242,7 +254,7 @@ BOOST_AUTO_TEST_CASE( frame_empty_binary_unmasked ) { BOOST_CHECK( p1.ready() == true ); // two separate chunks - websocketpp::processor::hybi13 p2(false,false,msg_manager); + websocketpp::processor::hybi13 p2(false,false,msg_manager,rng); BOOST_CHECK( p2.consume(frame,1,ec) == 1 ); BOOST_CHECK( !ec ); @@ -258,7 +270,8 @@ BOOST_AUTO_TEST_CASE( frame_small_binary_unmasked ) { typedef stub_config::message_type::ptr message_ptr; con_msg_manager_type::ptr msg_manager(new con_msg_manager_type()); - websocketpp::processor::hybi13 p(false,false,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,false,msg_manager,rng); uint8_t frame[4] = {0x82, 0x02, 0x2A, 0x2A}; websocketpp::lib::error_code ec; @@ -280,7 +293,8 @@ BOOST_AUTO_TEST_CASE( frame_extended_binary_unmasked ) { typedef stub_config::message_type::ptr message_ptr; con_msg_manager_type::ptr msg_manager(new con_msg_manager_type()); - websocketpp::processor::hybi13 p(false,false,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,false,msg_manager,rng); uint8_t frame[130] = {0x82, 0x7E, 0x00, 0x7E}; websocketpp::lib::error_code ec; @@ -306,7 +320,8 @@ BOOST_AUTO_TEST_CASE( frame_jumbo_binary_unmasked ) { typedef stub_config::message_type::ptr message_ptr; con_msg_manager_type::ptr msg_manager(new con_msg_manager_type()); - websocketpp::processor::hybi13 p(false,false,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,false,msg_manager,rng); uint8_t frame[130] = {0x82, 0x7E, 0x00, 0x7E}; websocketpp::lib::error_code ec; @@ -330,7 +345,8 @@ BOOST_AUTO_TEST_CASE( control_frame_too_large ) { typedef stub_config::message_type::ptr message_ptr; con_msg_manager_type::ptr msg_manager(new con_msg_manager_type()); - websocketpp::processor::hybi13 p(false,false,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,false,msg_manager,rng); uint8_t frame[130] = {0x88, 0x7E, 0x00, 0x7E}; websocketpp::lib::error_code ec; @@ -349,6 +365,7 @@ BOOST_AUTO_TEST_CASE( rsv_bits_used ) { typedef stub_config::message_type::ptr message_ptr; con_msg_manager_type::ptr msg_manager(new con_msg_manager_type()); + stub_config::rng_type rng; uint8_t frame[3][2] = {{0x90, 0x00}, {0xA0, 0x00}, @@ -356,7 +373,7 @@ BOOST_AUTO_TEST_CASE( rsv_bits_used ) { websocketpp::lib::error_code ec; for (int i = 0; i < 3; i++) { - websocketpp::processor::hybi13 p(false,false,msg_manager); + websocketpp::processor::hybi13 p(false,false,msg_manager,rng); BOOST_CHECK( p.get_message() == message_ptr() ); BOOST_CHECK( p.consume(frame[i],2,ec) > 0 ); @@ -373,6 +390,7 @@ BOOST_AUTO_TEST_CASE( reserved_opcode_used ) { typedef stub_config::message_type::ptr message_ptr; con_msg_manager_type::ptr msg_manager(new con_msg_manager_type()); + stub_config::rng_type rng; uint8_t frame[10][2] = {{0x83, 0x00}, {0x84, 0x00}, @@ -387,7 +405,7 @@ BOOST_AUTO_TEST_CASE( reserved_opcode_used ) { websocketpp::lib::error_code ec; for (int i = 0; i < 10; i++) { - websocketpp::processor::hybi13 p(false,false,msg_manager); + websocketpp::processor::hybi13 p(false,false,msg_manager,rng); BOOST_CHECK( p.get_message() == message_ptr() ); BOOST_CHECK( p.consume(frame[i],2,ec) > 0 ); @@ -403,7 +421,8 @@ BOOST_AUTO_TEST_CASE( fragmented_control_message ) { typedef stub_config::message_type::ptr message_ptr; con_msg_manager_type::ptr msg_manager(new con_msg_manager_type()); - websocketpp::processor::hybi13 p(false,false,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,false,msg_manager,rng); uint8_t frame[2] = {0x08, 0x00}; websocketpp::lib::error_code ec; @@ -421,8 +440,9 @@ BOOST_AUTO_TEST_CASE( fragmented_binary_message ) { typedef stub_config::message_type::ptr message_ptr; con_msg_manager_type::ptr msg_manager(new con_msg_manager_type()); - websocketpp::processor::hybi13 p0(false,false,msg_manager); - websocketpp::processor::hybi13 p1(false,false,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p0(false,false,msg_manager,rng); + websocketpp::processor::hybi13 p1(false,false,msg_manager,rng); uint8_t frame0[6] = {0x02, 0x01, 0x2A, 0x80, 0x01, 0x2A}; uint8_t frame1[8] = {0x02, 0x01, 0x2A, 0x89, 0x00, 0x80, 0x01, 0x2A}; @@ -476,7 +496,8 @@ BOOST_AUTO_TEST_CASE( unmasked_client_frame ) { typedef stub_config::message_type::ptr message_ptr; con_msg_manager_type::ptr msg_manager(new con_msg_manager_type()); - websocketpp::processor::hybi13 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,true,msg_manager,rng); uint8_t frame[2] = {0x82, 0x00}; websocketpp::lib::error_code ec; @@ -494,7 +515,8 @@ BOOST_AUTO_TEST_CASE( masked_server_frame ) { typedef stub_config::message_type::ptr message_ptr; con_msg_manager_type::ptr msg_manager(new con_msg_manager_type()); - websocketpp::processor::hybi13 p(false,false,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,false,msg_manager,rng); uint8_t frame[8] = {0x82, 0x82, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0xD5}; websocketpp::lib::error_code ec; @@ -512,7 +534,8 @@ BOOST_AUTO_TEST_CASE( frame_small_binary_masked ) { typedef stub_config::message_type::ptr message_ptr; con_msg_manager_type::ptr msg_manager(new con_msg_manager_type()); - websocketpp::processor::hybi13 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,true,msg_manager,rng); uint8_t frame[8] = {0x82, 0x82, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0xD5}; websocketpp::lib::error_code ec; @@ -531,7 +554,8 @@ BOOST_AUTO_TEST_CASE( masked_fragmented_binary_message ) { typedef stub_config::message_type::ptr message_ptr; con_msg_manager_type::ptr msg_manager(new con_msg_manager_type()); - websocketpp::processor::hybi13 p0(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p0(false,true,msg_manager,rng); uint8_t frame0[14] = {0x02, 0x81, 0xAB, 0x23, 0x98, 0x45, 0x81, 0x80, 0x81, 0xB8, 0x34, 0x12, 0xFF, 0x92}; @@ -553,7 +577,8 @@ BOOST_AUTO_TEST_CASE( prepare_data_frame ) { typedef stub_config::message_type::ptr message_ptr; con_msg_manager_type::ptr msg_manager(new con_msg_manager_type()); - websocketpp::processor::hybi13 p(false,true,msg_manager); + stub_config::rng_type rng; + websocketpp::processor::hybi13 p(false,true,msg_manager,rng); // test websocketpp::lib::error_code e; diff --git a/test/roles/SConscript b/test/roles/SConscript index 189675cf01..3737c846d5 100644 --- a/test/roles/SConscript +++ b/test/roles/SConscript @@ -10,7 +10,7 @@ Import('polyfill_libs') env = env.Clone () env_cpp11 = env_cpp11.Clone () -BOOST_LIBS = boostlibs(['unit_test_framework','system','regex'],env) + [platform_libs] +BOOST_LIBS = boostlibs(['unit_test_framework','system','regex','random'],env) + [platform_libs] objs = env.Object('client_boost.o', ["client.cpp"], LIBS = BOOST_LIBS) objs += env.Object('server_boost.o', ["server.cpp"], LIBS = BOOST_LIBS)