X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FNetdeviceController.test.cc;h=ed401f8690439fbdb98910e0a7b5a14aadf71008;hb=5443435c4c2b6e4386c5334b5b8358273f2bae93;hp=825afeb6b9877a98a7fc5c9f5c2cf855fcdadbd9;hpb=6d527cd9cf4d928926e5bf164ea470eb419fcbf8;p=senf.git diff --git a/Socket/NetdeviceController.test.cc b/Socket/NetdeviceController.test.cc index 825afeb..ed401f8 100644 --- a/Socket/NetdeviceController.test.cc +++ b/Socket/NetdeviceController.test.cc @@ -1,9 +1,9 @@ // $Id$ // // Copyright (C) 2007 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Thorsten Horstmann +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Thorsten Horstmann // // 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,13 +20,16 @@ // Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// Unit tests +/** \file + \brief NetdeviceController unit tests */ //#include "NetdeviceController.test.hh" //#include "NetdeviceController.test.ih" // Custom includes #include "NetdeviceController.hh" +#include "Protocols/Raw/MACAddress.hh" +#include #include "../Utils/auto_unit_test.hh" #include @@ -34,10 +37,40 @@ #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// -BOOST_AUTO_UNIT_TEST(NetdeviceController) -{ -// senf::NetdeviceController ctrl ("eth0"); -// std::cout << ctrl.hardwareAddress() << "\n"; +BOOST_AUTO_UNIT_TEST(NetdeviceController) { + + std::string ifname ("lo"); + senf::NetdeviceController ctrl (ifname); + BOOST_CHECK_EQUAL( ctrl.interfaceName(), ifname); + + int index = ctrl.interfaceIndex(); + BOOST_CHECK_EQUAL( index, senf::NetdeviceController(index).interfaceIndex() ); + BOOST_CHECK_EQUAL( index, if_nametoindex( ifname.c_str()) ); + + BOOST_CHECK_THROW( senf::NetdeviceController("invalid_interfacename"), senf::SystemException ); + + int oldMTU; + SENF_CHECK_NO_THROW( oldMTU = ctrl.mtu()); + + bool promisc; + SENF_CHECK_NO_THROW( promisc = ctrl.promisc()); + + BOOST_CHECK( ctrl.isUp()); + + if (getuid() != 0) { + BOOST_WARN_MESSAGE(false, "Cannot run some tests of senf::NetdeviceController as non-root user"); + return; + } + + SENF_CHECK_NO_THROW( ctrl.mtu(oldMTU-16)); + BOOST_CHECK_EQUAL( ctrl.mtu(), oldMTU-16); + SENF_CHECK_NO_THROW( ctrl.mtu(oldMTU)); + BOOST_CHECK_EQUAL( ctrl.mtu(), oldMTU); + + SENF_CHECK_NO_THROW( ctrl.promisc( !promisc)); + BOOST_CHECK_EQUAL( ctrl.promisc(), !promisc); + SENF_CHECK_NO_THROW( ctrl.promisc( promisc)); + BOOST_CHECK_EQUAL( ctrl.promisc(), promisc); } ///////////////////////////////cc.e////////////////////////////////////////