#!/usr/bin/env python # # mtr -- a network diagnostic tool # Copyright (C) 2016 Matt Kimball # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # '''Test probe customization parameters''' import sys import unittest import mtrpacket @unittest.skipIf(sys.platform == 'cygwin', 'No Cygwin test') class TestParameters(mtrpacket.MtrPacketTest): 'Use parameter arguments to mtr-packet and examine the resulting packet' def test_size(self): 'Test probes sent with an explicit packet size' with mtrpacket.PacketListen('-4') as listen: cmd = '20 send-probe ip-4 127.0.0.1 size 512' self.write_command(cmd) self.assertEqual(listen.attrib['size'], '512') def test_pattern(self): 'Test probes are filled with the requested bit pattern' with mtrpacket.PacketListen('-4') as listen: cmd = '20 send-probe ip-4 127.0.0.1 bit-pattern 44' self.write_command(cmd) self.assertEqual(listen.attrib['bitpattern'], '44') def test_tos(self): 'Test setting the TOS field' with mtrpacket.PacketListen('-4') as listen: cmd = '20 send-probe ip-4 127.0.0.1 tos 62' self.write_command(cmd) self.assertEqual(listen.attrib['tos'], '62') @unittest.skipIf(sys.platform == 'cygwin', 'No Cygwin test') class TestIPv6Parameters(mtrpacket.MtrPacketTest): 'Test packet parameter customization for IPv6' @unittest.skipUnless(mtrpacket.HAVE_IPV6, 'No IPv6') def test_param(self): 'Test a variety of packet parameters' with mtrpacket.PacketListen('-6') as listen: param = 'size 256 bit-pattern 51 tos 77' cmd = '20 send-probe ip-6 ::1 ' + param self.write_command(cmd) self.assertEqual(listen.attrib['size'], '256') self.assertEqual(listen.attrib['bitpattern'], '51') if __name__ == '__main__': mtrpacket.check_running_as_root() unittest.main()