X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FINet%2FTCPSocketHandle.test.cc;h=b9952c180828c85d0919e5313fb4f30f14d52b8f;hb=a1fdb7bb122f0b05be809a922d4b7ef5e125fa67;hp=8896f716d22686f06da3d26934038b761c927c17;hpb=44c966bc9d744d0926cffd5184fdb77a62564c16;p=senf.git diff --git a/Socket/Protocols/INet/TCPSocketHandle.test.cc b/Socket/Protocols/INet/TCPSocketHandle.test.cc index 8896f71..b9952c1 100644 --- a/Socket/Protocols/INet/TCPSocketHandle.test.cc +++ b/Socket/Protocols/INet/TCPSocketHandle.test.cc @@ -1,9 +1,9 @@ // $Id$ // // Copyright (C) 2006 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Stefan Bund +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Stefan Bund // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -20,7 +20,8 @@ // Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// Unit tests +/** \file + \brief TCPSocketHandle unit tests */ //#include "TCPSocketHandle.test.hh" //#include "TCPSocketHandle.test.ih" @@ -32,8 +33,8 @@ #include #include #include -#include "TCPSocketHandle.hh" #include +#include "TCPSocketHandle.hh" #include "../../../Utils/auto_unit_test.hh" #include @@ -61,9 +62,11 @@ namespace { server_pid = ::fork(); if (server_pid < 0) BOOST_FAIL("fork()"); if (server_pid == 0) { + signal(SIGCHLD, SIG_IGN); (*fn)(); _exit(0); } + signal(SIGCHLD, SIG_DFL); ::sleep(1); } @@ -159,27 +162,25 @@ BOOST_AUTO_UNIT_TEST(tcpv4ClientSocketHandle) BOOST_CHECK_THROW( sock.connect(senf::INet4SocketAddress("127.0.0.1:12345")), senf::SystemException ); - BOOST_CHECK_THROW( sock.protocol().connect(senf::INet4SocketAddress("127.0.0.1:12345")), - senf::SystemException ); } try { alarm(10); start(server_v4); senf::TCPv4ClientSocketHandle sock; - BOOST_CHECK_NO_THROW( sock.bind(senf::INet4SocketAddress("127.0.0.1:23456")) ); - BOOST_CHECK_NO_THROW( sock.connect(senf::INet4SocketAddress("127.0.0.1:12345")) ); + SENF_CHECK_NO_THROW( sock.bind(senf::INet4SocketAddress("127.0.0.1:23456")) ); + SENF_CHECK_NO_THROW( sock.connect(senf::INet4SocketAddress("127.0.0.1:12345")) ); BOOST_CHECK( sock.peer() == senf::INet4SocketAddress("127.0.0.1:12345") ); BOOST_CHECK( sock.local() == senf::INet4SocketAddress("127.0.0.1:23456") ); BOOST_CHECK( sock.blocking() ); - BOOST_CHECK_NO_THROW( sock.rcvbuf(2048) ); - BOOST_CHECK_EQUAL( sock.rcvbuf(), 2048u ); - BOOST_CHECK_NO_THROW( sock.sndbuf(2048) ); - BOOST_CHECK_EQUAL( sock.sndbuf(), 2048u ); - BOOST_CHECK_NO_THROW( sock.write("TEST-WRITE") ); - BOOST_CHECK_EQUAL( sock.read(), "TEST-WRITE" ); + SENF_CHECK_NO_THROW( sock.protocol().rcvbuf(2048) ); + BOOST_CHECK_EQUAL( sock.protocol().rcvbuf(), 2048u ); + SENF_CHECK_NO_THROW( sock.protocol().sndbuf(2048) ); + BOOST_CHECK_EQUAL( sock.protocol().sndbuf(), 2048u ); + SENF_CHECK_NO_THROW( sock.write(std::string("TEST-WRITE")) ); + BOOST_CHECK_EQUAL( sock.read(), std::string("TEST-WRITE") ); BOOST_CHECK( !sock.eof() ); - sock.write("QUIT"); + sock.write(std::string("QUIT")); sleep(1); stop(); sleep(1); @@ -202,25 +203,25 @@ BOOST_AUTO_UNIT_TEST(tcpv4ClientSocketHandle) // are at least not sensible ... // I'll have to move those to a UDPSocket test ... they should // realy only be in the UDP Protocol implementation -// BOOST_CHECK_NO_THROW( sock.protocol().mcTTL() ); +// SENF_CHECK_NO_THROW( sock.protocol().mcTTL() ); // BOOST_CHECK_THROW( sock.protocol().mcTTL(1), senf::SystemException ); -// BOOST_CHECK_NO_THROW( sock.protocol().mcLoop() ); -// BOOST_CHECK_NO_THROW( sock.protocol().mcLoop(false) ); -// BOOST_CHECK_NO_THROW( sock.protocol().mcAddMembership("224.0.0.1:0") ); -// BOOST_CHECK_NO_THROW( sock.protocol().mcAddMembership("224.0.0.1:0","127.0.0.1:0") ); -// BOOST_CHECK_NO_THROW( sock.protocol().mcDropMembership("224.0.0.1:0","127.0.0.1:0") ); -// BOOST_CHECK_NO_THROW( sock.protocol().mcDropMembership("224.0.0.1:0") ); +// SENF_CHECK_NO_THROW( sock.protocol().mcLoop() ); +// SENF_CHECK_NO_THROW( sock.protocol().mcLoop(false) ); +// SENF_CHECK_NO_THROW( sock.protocol().mcAddMembership("224.0.0.1:0") ); +// SENF_CHECK_NO_THROW( sock.protocol().mcAddMembership("224.0.0.1:0","127.0.0.1:0") ); +// SENF_CHECK_NO_THROW( sock.protocol().mcDropMembership("224.0.0.1:0","127.0.0.1:0") ); +// SENF_CHECK_NO_THROW( sock.protocol().mcDropMembership("224.0.0.1:0") ); // BOOST_CHECK_THROW( sock.protocol().mcIface("lo"), senf::SystemException ); // The following setsockopts are hard to REALLY test ... - BOOST_CHECK_NO_THROW( sock.protocol().nodelay(true) ); + SENF_CHECK_NO_THROW( sock.protocol().nodelay(true) ); BOOST_CHECK( sock.protocol().nodelay() ); BOOST_CHECK_EQUAL( sock.protocol().siocinq(), 0u ); BOOST_CHECK_EQUAL( sock.protocol().siocoutq(), 0u ); - BOOST_CHECK_NO_THROW( sock.protocol().reuseaddr(true) ); + SENF_CHECK_NO_THROW( sock.protocol().reuseaddr(true) ); BOOST_CHECK( sock.protocol().reuseaddr() ); - BOOST_CHECK_NO_THROW( sock.protocol().linger(true,0) ); + SENF_CHECK_NO_THROW( sock.protocol().linger(true,0) ); BOOST_CHECK( sock.protocol().linger() == std::make_pair(true, 0u) ); } } @@ -238,21 +239,21 @@ BOOST_AUTO_UNIT_TEST(tcpv6ClientSocketHandle) alarm(10); start(server_v6); senf::TCPv6ClientSocketHandle sock; - BOOST_CHECK_NO_THROW( sock.bind(senf::INet6SocketAddress("[::1]:23456")) ); - BOOST_CHECK_NO_THROW( sock.connect(senf::INet6SocketAddress("[::1]:12345")) ); + SENF_CHECK_NO_THROW( sock.bind(senf::INet6SocketAddress("[::1]:23456")) ); + SENF_CHECK_NO_THROW( sock.connect(senf::INet6SocketAddress("[::1]:12345")) ); BOOST_CHECK( sock.peer() == senf::INet6SocketAddress("[::1]:12345") ); BOOST_CHECK( sock.local() == senf::INet6SocketAddress("[::1]:23456") ); BOOST_CHECK( sock.blocking() ); - BOOST_CHECK_NO_THROW( sock.rcvbuf(2048) ); - BOOST_CHECK_EQUAL( sock.rcvbuf(), 2048u ); - BOOST_CHECK_NO_THROW( sock.sndbuf(2048) ); - BOOST_CHECK_EQUAL( sock.sndbuf(), 2048u ); - BOOST_CHECK_NO_THROW( sock.write("TEST-WRITE") ); - BOOST_CHECK_EQUAL( sock.read(), "TEST-WRITE" ); + SENF_CHECK_NO_THROW( sock.protocol().rcvbuf(2048) ); + BOOST_CHECK_EQUAL( sock.protocol().rcvbuf(), 2048u ); + SENF_CHECK_NO_THROW( sock.protocol().sndbuf(2048) ); + BOOST_CHECK_EQUAL( sock.protocol().sndbuf(), 2048u ); + SENF_CHECK_NO_THROW( sock.write(std::string("TEST-WRITE")) ); + BOOST_CHECK_EQUAL( sock.read(), std::string("TEST-WRITE") ); // this fails with ENOFILE ... why ???? - // BOOST_CHECK_NO_THROW( sock.protocol().timestamp() ); + // SENF_CHECK_NO_THROW( sock.protocol().timestamp() ); BOOST_CHECK( !sock.eof() ); - sock.write("QUIT"); + sock.write(std::string("QUIT")); sleep(1); stop(); sleep(1); @@ -272,14 +273,14 @@ BOOST_AUTO_UNIT_TEST(tcpv6ClientSocketHandle) senf::TCPv6ClientSocketHandle sock; // The following setsockopts are hard to REALLY test ... - BOOST_CHECK_NO_THROW( sock.protocol().nodelay(true) ); + SENF_CHECK_NO_THROW( sock.protocol().nodelay(true) ); BOOST_CHECK( sock.protocol().nodelay() ); BOOST_CHECK_EQUAL( sock.protocol().siocinq(), 0u ); BOOST_CHECK_EQUAL( sock.protocol().siocoutq(), 0u ); - BOOST_CHECK_NO_THROW( sock.protocol().reuseaddr(true) ); + SENF_CHECK_NO_THROW( sock.protocol().reuseaddr(true) ); BOOST_CHECK( sock.protocol().reuseaddr() ); - BOOST_CHECK_NO_THROW( sock.protocol().linger(true,0) ); + SENF_CHECK_NO_THROW( sock.protocol().linger(true,0) ); BOOST_CHECK( sock.protocol().linger() == std::make_pair(true, 0u) ); } } @@ -349,7 +350,7 @@ BOOST_AUTO_UNIT_TEST(tcpv4ServerSocketHandle) BOOST_CHECKPOINT("Accepting connection"); senf::TCPv4ClientSocketHandle client = server.accept(); - BOOST_CHECK_NO_THROW(client.write("QUIT")); + SENF_CHECK_NO_THROW(client.write(std::string("QUIT"))); BOOST_CHECKPOINT("Stopping client"); sleep(1); @@ -375,7 +376,7 @@ BOOST_AUTO_UNIT_TEST(tcpv6ServerSocketHandle) BOOST_CHECKPOINT("Accepting connection"); senf::TCPv6ClientSocketHandle client = server.accept(); - BOOST_CHECK_NO_THROW(client.write("QUIT")); + SENF_CHECK_NO_THROW(client.write(std::string("QUIT"))); BOOST_CHECKPOINT("Stopping client"); sleep(1);