diff options
Diffstat (limited to 'ACE/protocols/tests/HTBP/Send_Recv_Tests/client.cpp')
-rw-r--r-- | ACE/protocols/tests/HTBP/Send_Recv_Tests/client.cpp | 232 |
1 files changed, 0 insertions, 232 deletions
diff --git a/ACE/protocols/tests/HTBP/Send_Recv_Tests/client.cpp b/ACE/protocols/tests/HTBP/Send_Recv_Tests/client.cpp deleted file mode 100644 index c8d224c9380..00000000000 --- a/ACE/protocols/tests/HTBP/Send_Recv_Tests/client.cpp +++ /dev/null @@ -1,232 +0,0 @@ -// $Id$ - -// =========================================================================== -// -// = LIBRARY -// tests -// -// = FILENAME -// Send_Recv_Test.cpp -// -// = DESCRIPTION This is a test of the <ACE_SOCK>'s various send and -// receive methods, over HTBP. The test forks two processes or spawns -// two threads (depending upon the platform) and then executes client -// and server allowing them to connect and exchange data in ways -// designed to exercise the send and recv functions. -// -// Right now, it primarily tests the iov-like send and recv -// functions, but others should be added to completely cover the -// possible scenarios. -// -// = AUTHOR -// Steve Huston <shuston@riverace.com> -// -// ============================================================================ - -#include "ace/HTBP/HTBP_Stream.h" -#include "ace/HTBP/HTBP_Session.h" -#include "ace/HTBP/HTBP_ID_Requestor.h" -#include "ace/HTBP/HTBP_Environment.h" - -#include "ace/OS.h" -#include "ace/Thread.h" -#include "ace/Thread_Manager.h" -#include "ace/SOCK_Connector.h" -#include "ace/SOCK_Acceptor.h" -#include "ace/SOCK_Stream.h" -#include "ace/Get_Opt.h" - -// Change to non-zero if test fails -static int Test_Result = 0; - -const size_t Test3_Send_Size = 4*1024; -const size_t Test3_Loops = 10; -const size_t Test3_Total_Size = Test3_Send_Size * Test3_Loops; - -const ACE_TCHAR * remote_host = 0; -const ACE_TCHAR * config_file = 0; -unsigned remote_port = 8088; - -int -parse_args (int argc, ACE_TCHAR *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("p:h:c:")); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'p': - remote_port = static_cast<unsigned>(ACE_OS::atoi (get_opts.opt_arg())); - break; - case 'h': - remote_host = get_opts.opt_arg (); - break; - case 'c': - config_file = get_opts.opt_arg (); - break; - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - ACE_TEXT ("usage: %s ") - ACE_TEXT ("-h remote_host ") - ACE_TEXT ("-p remote_port ") - ACE_TEXT ("-c config_file ") - ACE_TEXT ("\n"), - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} - -int -ACE_TMAIN (int argc, ACE_TCHAR *argv[]) -{ - ACE_OS::socket_init (ACE_WSOCK_VERSION); - - if (parse_args(argc, argv) != 0) - return 1; - if (remote_host == 0) - ACE_ERROR_RETURN ((LM_ERROR, - ACE_TEXT ("Client: No remote host specified\n")),1); - - ACE::HTBP::Environment env; - if (config_file != 0) - env.import_config (config_file); - - ACE::HTBP::ID_Requestor req (&env); - ACE::HTBP::Addr local(ACE_TEXT_ALWAYS_CHAR(req.get_HTID())); - - unsigned proxy_port = 0; - ACE_TString proxy_host; - - if (env.get_proxy_port(proxy_port) != 0 || - env.get_proxy_host(proxy_host) != 0) - { - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT("(%P|%t) Client: ") - ACE_TEXT("no proxy address in ") - ACE_TEXT("config, using direct connect\n"))); - proxy_port = remote_port; - proxy_host = remote_host; - } - - ACE_INET_Addr proxy(proxy_port,proxy_host.c_str()); - ACE::HTBP::Addr remote (remote_port, - ACE_TEXT_ALWAYS_CHAR(remote_host)); - - ACE::HTBP::Session session(remote, - local, - ACE::HTBP::Session::next_session_id(), - &proxy); - - ACE::HTBP::Stream stream(&session); - - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) Connecting to port %d\n"), - remote.get_port_number())); - - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) connected to %s\n"), - ACE_TEXT_CHAR_TO_TCHAR(remote.get_host_name ()))); - - ACE_DEBUG ((LM_DEBUG, "(%P) ***** client TEST 1 ***** \n")); - - //******************* TEST 1 ****************************** - // - // Do a iovec sendv - send the 255 byte buffer in 5 chunks. The - // server will verify that the correct data is sent, and that there - // is no more and no less. - - u_char buffer[255]; - size_t i; - ssize_t len; - - // The server will verify that this data pattern gets there intact. - - for (i = 0; i < sizeof buffer; ++i) - buffer[i] = static_cast<u_char> (i); - - iovec iov[5]; - - iov[0].iov_base = reinterpret_cast<char *> (&buffer[0]); - iov[0].iov_len = 50; - - iov[1].iov_base = reinterpret_cast<char *> (&buffer[50]); - iov[1].iov_len = 25; - - iov[2].iov_base = reinterpret_cast<char *> (&buffer[75]); - iov[2].iov_len = 150; - - iov[3].iov_base = reinterpret_cast<char *> (&buffer[225]); - iov[3].iov_len = 29; - - iov[4].iov_base = reinterpret_cast<char *> (&buffer[254]); - iov[4].iov_len = 1; - - len = stream.sendv (iov, 5); - ACE_DEBUG ((LM_DEBUG,"(%P) after send, len = %d\n")); - if (len == -1) - { - ACE_ERROR ((LM_ERROR, - ACE_TEXT ("(%P|%t) %p\n"), - ACE_TEXT ("Test 1, sendv failed"))); - Test_Result = 1; - } - else - if (len != 255) - { - ACE_ERROR ((LM_ERROR, - ACE_TEXT ("(%P|%t) %p\n"), - ACE_TEXT ("Test 1, len = %d != 255\n"), len)); - Test_Result = 1; - } - - // ACE_OS::sleep (10); - ACE_DEBUG ((LM_DEBUG, "(%P) ***** client TEST 2 ***** \n")); - - //******************* TEST 2 ****************************** - // - // The same data is coming back - receive it using recv (size_t n, - // ...) and compare it to the original data. - - u_char buffer2[255]; - - ssize_t total = 0; - do { - len = stream.recv (buffer2+total, 145 - total); - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT("(%P) Test 2: want %d bytes, got %d\n"), - 145 - total,len)); - if (len == -1 || errno == EWOULDBLOCK) - ACE_OS::sleep (1); - else - total += len; - } while ((len == -1 && errno == EWOULDBLOCK) || total < 145); - - if (total != 145) - Test_Result = 1; - - len = stream.recv (buffer2 + total, 110); - ACE_DEBUG ((LM_DEBUG, - ACE_TEXT("(%P) Test 2: second read want 110 bytes, got %d\n"), - len)); - - if (len != 110) - Test_Result = 1; - - for (i = 0; Test_Result == 0 && i < 255; i++) - if (buffer2[i] != buffer[i]) - { - ACE_ERROR ((LM_ERROR, - ACE_TEXT ("(%P|%t) Test 2, rcvd byte %d is %d, not %d\n"), - i, buffer2[i], buffer[i])); - Test_Result = 1; - } - - - stream.close (); - - return Test_Result; -} |