def test_tcpdump_execute(self): """Check tcpdump filter monitors ping using execute""" self.ping_all_when_learned() from_host = self.net.hosts[0] to_host = self.net.hosts[1] tcpdump_filter = ('icmp') tcpdump_helper = TcpdumpHelper(to_host, tcpdump_filter, [ lambda: from_host.cmd('ping -c1 %s' % to_host.IP())]) tcpdump_txt = tcpdump_helper.execute() self.assertTrue(re.search( '%s: ICMP echo request' % to_host.IP(), tcpdump_txt)) self._terminate_with_zero(tcpdump_helper)
def test_tcpdump_pcap(self): """Check tcpdump creates pcap output""" self.ping_all_when_learned() from_host = self.net.hosts[0] to_host = self.net.hosts[1] tcpdump_filter = ('icmp') pcap_file = os.path.join(self.tmpdir, 'out.pcap') tcpdump_helper = TcpdumpHelper( to_host, tcpdump_filter, [lambda: from_host.cmd('ping -c3 %s' % to_host.IP())], pcap_out=pcap_file, packets=None) tcpdump_helper.execute() self._terminate_with_zero(tcpdump_helper) result = from_host.cmd('tcpdump -en -r %s' % pcap_file) self.assertEqual(result.count('ICMP echo reply'), 3, 'three icmp echo replies')
def test_tcpdump_noblock(self): """Check tcpdump uses nonblocking next_line""" self.ping_all_when_learned() from_host = self.net.hosts[0] to_host = self.net.hosts[1] tcpdump_filter = ('icmp') tcpdump_helper = TcpdumpHelper( to_host, tcpdump_filter, [lambda: from_host.cmd('ping -c10 %s' % to_host.IP())], blocking=False, packets=None) count = 0 while tcpdump_helper.next_line(): count = count + 1 self.assertTrue(count < 10, 'Too many ping results before noblock') self._terminate_with_nonzero(tcpdump_helper)
def test_tcpdump_nextline(self): """Check tcpdump filter monitors ping using next_line""" self.ping_all_when_learned() from_host = self.net.hosts[0] to_host = self.net.hosts[1] tcpdump_filter = ('icmp') tcpdump_helper = TcpdumpHelper(to_host, tcpdump_filter, [ lambda: from_host.cmd('ping -c5 -i2 %s' % to_host.IP())]) self.assertTrue(re.search('proto ICMP', tcpdump_helper.next_line())) next_line = tcpdump_helper.next_line() self.assertTrue(re.search('%s: ICMP echo request' % to_host.IP(), next_line), next_line) self.assertTrue(re.search('proto ICMP', tcpdump_helper.next_line())) next_line = tcpdump_helper.next_line() self.assertTrue(re.search('%s: ICMP echo reply' % from_host.IP(), next_line), next_line) self.assertFalse(re.search('ICMP', tcpdump_helper.next_line())) while tcpdump_helper.next_line(): pass self._terminate_with_zero(tcpdump_helper)