X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FINet%2FTCPSocketHandle.test.cc;h=b4e8e613f11a8c06ab9d3c9edb830e708b4f538e;hb=d001b1fe2a8fb121145d2a111d737219abae20d7;hp=3b4d0494f6a816ca10d24a1d38715bd9be6ece8c;hpb=d6abda313f70c8a849c5e3f3bbfc12ce301789f1;p=senf.git diff --git a/Socket/Protocols/INet/TCPSocketHandle.test.cc b/Socket/Protocols/INet/TCPSocketHandle.test.cc index 3b4d049..b4e8e61 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 @@ -61,9 +61,12 @@ 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); } void wait() @@ -158,27 +161,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); @@ -201,25 +202,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) ); } } @@ -237,21 +238,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); @@ -271,14 +272,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) ); } } @@ -348,7 +349,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); @@ -374,7 +375,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);