def test_traffic_stream_frags(self): myrpkt = RulePkt("to client", "/abcdef/i", 3, 2, 500, True, True) mytsrule = TrafficStreamRule('tcp', '1.1.1', '2.2.2', '[100:200]', '[10,20,30,40,50]', -1, 4, False, True, True) mytsrule.addPktRule(myrpkt) myConfig = SnifflesConfig() myConfig.setPktLength(500) myConfig.setIPV6Percent(0) myConfig.setTCPACK(True) myConfig.setTCPHandshake(True) myConfig.setTCPTeardown(True) myConfig.setFullMatch(True) myts = rtgen.TrafficStream(mytsrule, myConfig) mypkt = myts.getNextPacket() myseq = mypkt.transport_hdr.get_seq_num() self.assertEqual(mypkt.transport_hdr.get_flags(), rtgen.SYN) mypkt = myts.getNextPacket() self.assertEqual(mypkt.transport_hdr.get_flags(), (rtgen.SYN + rtgen.ACK)) mypkt = myts.getNextPacket() self.assertEqual(mypkt.transport_hdr.get_flags(), rtgen.ACK) self.assertEqual(mypkt.transport_hdr.get_seq_num(), myseq + 1) mypkt = myts.getNextPacket() self.assertNotEqual(mypkt.network_hdr.get_frag_id(), 0) self.assertIn(mypkt.network_hdr.get_frag_offset(), [8192, 8213, 42]) self.assertIn(mypkt.get_size(), [202, 218]) mypkt = myts.getNextPacket() self.assertIn(mypkt.get_size(), [202, 218]) self.assertIn(mypkt.network_hdr.get_frag_offset(), [8192, 8213, 42]) mypkt = myts.getNextPacket() self.assertIn(mypkt.network_hdr.get_frag_offset(), [8192, 8213, 42]) self.assertIn(mypkt.get_size(), [202, 218]) mypkt = myts.getNextPacket() self.assertEqual(mypkt.get_size(), 54) self.assertEqual(mypkt.transport_hdr.get_flags(), rtgen.ACK) mypkt = myts.getNextPacket() self.assertNotEqual(mypkt.network_hdr.get_frag_id(), 0) self.assertIn(mypkt.network_hdr.get_frag_offset(), [8192, 8213, 42]) self.assertIn(mypkt.get_size(), [202, 218]) mypkt = myts.getNextPacket() self.assertIn(mypkt.get_size(), [202, 218]) self.assertIn(mypkt.network_hdr.get_frag_offset(), [8192, 8213, 42]) mypkt = myts.getNextPacket() self.assertIn(mypkt.network_hdr.get_frag_offset(), [8192, 8213, 42]) self.assertIn(mypkt.get_size(), [202, 218]) mypkt = myts.getNextPacket() self.assertEqual(mypkt.get_size(), 54) self.assertEqual(mypkt.transport_hdr.get_flags(), rtgen.ACK)
def test_traffic_stream_rand(self): myts = rtgen.TrafficStream() self.assertEqual(myts.hasPackets(), True) myp = myts.getNextPacket() self.assertNotEqual(myp.get_size(), 0) myConfig = SnifflesConfig() myConfig.setPktLength(100) myConfig.setPktsPerStream(5) myts = rtgen.TrafficStream(None, myConfig) mycount = 0 while myts.hasPackets(): mypkt = myts.getNextPacket() if mypkt.get_proto() == 'tcp': self.assertEqual(mypkt.get_size(), 154) elif mypkt.get_proto() == 'udp': self.assertEqual(mypkt.get_size(), 142) elif mypkt.get_proto() == 'icmp': self.assertEqual(mypkt.get_size(), 142) mycount += 1 self.assertEqual(mycount, 5) myConfig = SnifflesConfig() myConfig.setPktLength(200) myConfig.setPktsPerStream(1) myConfig.setTCPACK(True) myConfig.setTCPHandshake(True) myConfig.setTCPTeardown(True) myts = rtgen.TrafficStream(None, myConfig) mypkt = myts.getNextPacket() while mypkt.get_proto() != 'tcp': myts = rtgen.TrafficStream(None, myConfig) mypkt = myts.getNextPacket() myseq = mypkt.transport_hdr.get_seq_num() self.assertEqual(mypkt.transport_hdr.get_flags(), rtgen.SYN) mypkt = myts.getNextPacket() self.assertEqual(mypkt.transport_hdr.get_flags(), (rtgen.SYN + rtgen.ACK)) myack = mypkt.transport_hdr.get_seq_num() mypkt = myts.getNextPacket() self.assertEqual(mypkt.transport_hdr.get_flags(), rtgen.ACK) self.assertEqual(mypkt.transport_hdr.get_seq_num(), myseq + 1) self.assertEqual(mypkt.transport_hdr.get_ack_num(), myack + 1) self.assertEqual(mypkt.get_size(), 254) mypkt = myts.getNextPacket() self.assertEqual(mypkt.transport_hdr.get_ack_num(), (myseq + 201)) self.assertEqual(mypkt.get_size(), 54) self.assertEqual(mypkt.get_content().get_size(), 0) mypkt = myts.getNextPacket() self.assertEqual(mypkt.transport_hdr.get_flags(), rtgen.FIN + rtgen.ACK) mypkt = myts.getNextPacket() self.assertEqual(mypkt.transport_hdr.get_flags(), rtgen.ACK) mypkt = myts.getNextPacket() self.assertEqual(mypkt.transport_hdr.get_flags(), rtgen.FIN + rtgen.ACK) mypkt = myts.getNextPacket() self.assertEqual(mypkt.transport_hdr.get_flags(), rtgen.ACK)