Blame test/param.py

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