From 08016494a9a8d61f2cbb439568e17e938e5eb6b8 Mon Sep 17 00:00:00 2001 From: arvidn Date: Sun, 21 Jun 2015 12:41:50 -0400 Subject: [PATCH] split up test_http_connection into smaller test cases --- src/file.cpp | 8 +-- test/socks.py | 2 +- test/test_http_connection.cpp | 108 ++++++++++++++-------------------- test/web_server.py | 4 +- 4 files changed, 53 insertions(+), 69 deletions(-) diff --git a/src/file.cpp b/src/file.cpp index 4a4ded39f..d09e46612 100644 --- a/src/file.cpp +++ b/src/file.cpp @@ -1949,10 +1949,10 @@ typedef struct _FILE_ALLOCATED_RANGE_BUFFER { } #endif - bool file::set_size(boost::int64_t s, error_code& ec) - { - TORRENT_ASSERT(is_open()); - TORRENT_ASSERT(s >= 0); + bool file::set_size(boost::int64_t s, error_code& ec) + { + TORRENT_ASSERT(is_open()); + TORRENT_ASSERT(s >= 0); #ifdef TORRENT_WINDOWS diff --git a/test/socks.py b/test/socks.py index 0dfd582d3..2c6127300 100644 --- a/test/socks.py +++ b/test/socks.py @@ -60,7 +60,7 @@ def forward(source, dest, name): send(dest, CLOSE) debug('%s hung up' % name) return -# debug('Sending (%d) %r' % (len(data), data)) +# debug('Forwarding (%d) %r' % (len(data), data)) send(dest, data) def spawn_forwarder(source, dest, name): diff --git a/test/test_http_connection.cpp b/test/test_http_connection.cpp index 5699693af..ce2e1f6b7 100644 --- a/test/test_http_connection.cpp +++ b/test/test_http_connection.cpp @@ -141,21 +141,39 @@ void run_test(std::string const& url, int size, int status, int connected TEST_CHECK(http_status == status || status == -1); } -void run_suite(std::string const& protocol, proxy_settings ps, int port) +void write_test_file() { - if (ps.type != settings_pack::none) - { - ps.port = start_proxy(ps.type); - } - char const* test_name[] = {"no", "SOCKS4", "SOCKS5" - , "SOCKS5 password protected", "HTTP", "HTTP password protected"}; + std::srand(std::time(0)); + std::generate(data_buffer, data_buffer + sizeof(data_buffer), &std::rand); + error_code ec; + file test_file("test_file", file::write_only, ec); + TEST_CHECK(!ec); + if (ec) fprintf(stderr, "file error: %s\n", ec.message().c_str()); + file::iovec_t b = { data_buffer, 3216}; + test_file.writev(0, &b, 1, ec); + TEST_CHECK(!ec); + if (ec) fprintf(stderr, "file error: %s\n", ec.message().c_str()); + test_file.close(); +} - printf("\n\n********************** using %s proxy **********************\n" - , test_name[ps.type]); +void run_suite(std::string const& protocol, settings_pack::proxy_type_t proxy_type) +{ + write_test_file(); + + // starting the web server will also generate test_file.gz (from test_file) + // so it has to happen after we write test_file + int port = start_web_server(); + + proxy_settings ps; + ps.hostname = "127.0.0.1"; + ps.username = "testuser"; + ps.password = "testpass"; + ps.type = proxy_type; + + if (ps.type != settings_pack::none) + ps.port = start_proxy(ps.type); typedef boost::optional err; - // this requires the hosts file to be modified -// run_test(protocol + "://test.dns.ts:8001/test_file", 3216, 200, 1, error_code(), ps); char url[256]; snprintf(url, sizeof(url), "%s://127.0.0.1:%d/", protocol.c_str(), port); @@ -188,61 +206,25 @@ void run_suite(std::string const& protocol, proxy_settings ps, int port) } if (ps.type != settings_pack::none) stop_proxy(ps.port); + stop_web_server(); } -TORRENT_TEST(http_parser) -{ - std::srand(std::time(0)); - std::generate(data_buffer, data_buffer + sizeof(data_buffer), &std::rand); - error_code ec; - file test_file("test_file", file::write_only, ec); - TEST_CHECK(!ec); - if (ec) fprintf(stderr, "file error: %s\n", ec.message().c_str()); - file::iovec_t b = { data_buffer, 3216}; - test_file.writev(0, &b, 1, ec); - TEST_CHECK(!ec); - if (ec) fprintf(stderr, "file error: %s\n", ec.message().c_str()); - test_file.close(); - - proxy_settings ps; - ps.hostname = "127.0.0.1"; - ps.port = 8034; - ps.username = "testuser"; - ps.password = "testpass"; - int port = 0; - - port = start_web_server(); - - for (int i = 0; i < 5; ++i) - { - ps.type = (settings_pack::proxy_type_t)i; - run_suite("http", ps, port); - } - stop_web_server(); +TORRENT_TEST(no_proxy) { run_suite("http", settings_pack::none); } +TORRENT_TEST(socks4) { run_suite("http", settings_pack::socks4); } +TORRENT_TEST(socks5) { run_suite("http", settings_pack::socks5); } +TORRENT_TEST(socks5_pw) { run_suite("http", settings_pack::socks5_pw); } +TORRENT_TEST(http) { run_suite("http", settings_pack::http); } +TORRENT_TEST(http_pw) { run_suite("http", settings_pack::http_pw); } #ifdef TORRENT_USE_OPENSSL - port = start_web_server(true); - for (int i = 0; i < 5; ++i) - { - ps.type = (settings_pack::proxy_type_t)i; - run_suite("https", ps, port); - } - stop_web_server(); -#endif +TORRENT_TEST(no_proxy_ssl) { run_suite("https", settings_pack::none); } +TORRENT_TEST(socks4_ssl) { run_suite("https", settings_pack::socks4); } +TORRENT_TEST(socks5_ssl) { run_suite("https", settings_pack::socks5); } +TORRENT_TEST(socks5_pw_ssl) { run_suite("https", settings_pack::socks5_pw); } +TORRENT_TEST(http_ssl) { run_suite("https", settings_pack::http); } +TORRENT_TEST(http_pw_ssl) { run_suite("https", settings_pack::http_pw); } +#endif // USE_OPENSSL - // test chunked encoding - fprintf(stderr, "\ntest chunked encoding\n\n"); - port = start_web_server(false, true); - ps.type = settings_pack::none; - run_suite("http", ps, port); - - // test no keep-alive - fprintf(stderr, "\ntest no keep-alive\n\n"); - port = start_web_server(false, false, false); - ps.type = settings_pack::none; - run_suite("http", ps, port); - - stop_web_server(); - std::remove("test_file"); -} +TORRENT_TEST(chunked_encoding) { run_suite("http", settings_pack::none); } +TORRENT_TEST(no_keepalive) { run_suite("http", settings_pack::none); } diff --git a/test/web_server.py b/test/web_server.py index c77ec83d9..c6742d51a 100644 --- a/test/web_server.py +++ b/test/web_server.py @@ -41,6 +41,8 @@ class http_handler(SimpleHTTPServer.SimpleHTTPRequestHandler): s.path = s.path[s.path.find('/'):] file_path = os.path.normpath(s.path) + print file_path + print s.path if s.path == '/password_protected': passed = False @@ -148,7 +150,7 @@ class http_handler(SimpleHTTPServer.SimpleHTTPRequestHandler): print 'Failed to shutdown read-channel of socket: ', e s.end_headers() - + f.seek(start_range) length = end_range - start_range while length > 0: