Esempio n. 1
0
    def runTest(self):
        import pytrap
        a = pytrap.UnirecTemplate(
            "ipaddr IP, macaddr MAC,time TIME,uint64 U64,uint32 U32,uint16 U16,uint8 U8,int64 I64,int32 I32,int16 I16,int8 I8,float FL,double DB,char CHR,string TEXT,bytes STREAMBYTES"
        )
        a.createMessage(100)
        a.IP = pytrap.UnirecIPAddr("1.2.3.4")
        a.MAC = pytrap.UnirecMACAddr("1:2:3:4:5:6")
        a.TIME = pytrap.UnirecTime(123456)
        a.U64 = 0x100000000
        a.U32 = 0x10000
        a.U16 = 0x100
        a.U8 = 0x1
        a.I64 = -1
        a.I32 = -1
        a.I16 = -1
        a.I8 = -1
        a.FL = 1.234
        a.DB = 1.234
        #a.CHR = "a"
        a.TEXT = "text"
        a.STREAMBYTES = b"streambytes"

        self.assertTrue(a.IP == pytrap.UnirecIPAddr("1.2.3.4"))
        self.assertTrue(a.MAC == pytrap.UnirecMACAddr("1:2:3:4:5:6"))
        self.assertTrue(a.TIME == pytrap.UnirecTime(123456))
        self.assertTrue(a.U64 == 0x100000000)
        self.assertTrue(a.U32 == 0x10000)
        self.assertTrue(a.U16 == 0x100)
        self.assertTrue(a.U8 == 0x1)
        self.assertTrue(a.I64 == -1)
        self.assertTrue(a.I32 == -1)
        self.assertTrue(a.I16 == -1)
        self.assertTrue(a.I8 == b'\xff')
        self.assertTrue(1.234 - a.FL < 1e-7)
        self.assertTrue(a.DB == 1.234)
        #self.assertTrue(a.CHR == "a")
        self.assertTrue(a.TEXT == "text")
        self.assertTrue(a.STREAMBYTES == b"streambytes")

        # Check types
        self.assertEqual(type(a.IP), pytrap.UnirecIPAddr)
        self.assertEqual(type(a.MAC), pytrap.UnirecMACAddr)
        self.assertEqual(type(a.TIME), pytrap.UnirecTime)
        self.assertEqual(type(a.U64), long)
        self.assertEqual(type(a.U32), int)
        self.assertEqual(type(a.U16), int)
        self.assertEqual(type(a.U8), int)
        self.assertEqual(type(a.I64), long)
        self.assertEqual(type(a.I32), int)
        self.assertEqual(type(a.I16), int)
        self.assertEqual(type(a.I8), bytes)
        self.assertEqual(type(a.CHR), int)
        self.assertEqual(type(a.FL), float)
        self.assertEqual(type(a.DB), float)
        self.assertEqual(type(a.TEXT), str)
        self.assertEqual(type(a.STREAMBYTES), bytearray)

        self.assertEqual(a.getFieldType("IP"), pytrap.UnirecIPAddr)
        self.assertEqual(a.getFieldType("MAC"), pytrap.UnirecMACAddr)
        self.assertEqual(a.getFieldType("TIME"), pytrap.UnirecTime)
        self.assertEqual(a.getFieldType("U64"), long)
        self.assertEqual(a.getFieldType("U32"), long)
        self.assertEqual(a.getFieldType("U16"), long)
        self.assertEqual(a.getFieldType("U8"), long)
        self.assertEqual(a.getFieldType("I64"), long)
        self.assertEqual(a.getFieldType("I32"), long)
        self.assertEqual(a.getFieldType("I16"), long)
        self.assertEqual(a.getFieldType("I8"), long)
        self.assertEqual(a.getFieldType("CHR"), long)
        self.assertEqual(a.getFieldType("FL"), float)
        self.assertEqual(a.getFieldType("DB"), float)
        self.assertEqual(a.getFieldType("TEXT"), str)
        self.assertEqual(a.getFieldType("STREAMBYTES"), bytearray)
Esempio n. 2
0
    def runTest(self):
        import pytrap
        mac1 = pytrap.UnirecMACAddr("11:22:33:44:55:66")
        self.assertEqual(mac1, mac1)
        self.assertEqual(type(mac1), pytrap.UnirecMACAddr,
                         "Bad type of MAC address object.")
        self.assertEqual(str(mac1), "11:22:33:44:55:66",
                         "MAC address is not equal to its str().")
        self.assertEqual(repr(mac1), "UnirecMACAddr('11:22:33:44:55:66')",
                         "MAC address is not equal to its repr().")

        mac2 = pytrap.UnirecMACAddr("10:20:30:40:50:60")
        mac3 = pytrap.UnirecMACAddr("11:22:33:44:55:66")
        self.assertFalse(mac1 == mac2,
                         "Comparison of different MAC addresses failed.")
        self.assertFalse(mac1 <= mac2,
                         "Comparison of the same MAC addresses failed.")
        self.assertFalse(mac2 >= mac1,
                         "Comparison of the same MAC addresses failed.")
        self.assertFalse(mac1 != mac3,
                         "Comparison of the same MAC addresses failed.")
        self.assertFalse(mac1 < mac3,
                         "Comparison of the same MAC addresses failed.")
        self.assertFalse(mac1 > mac3,
                         "Comparison of the same MAC addresses failed.")

        mac4 = mac1
        for i in range(0, 256):
            mac4 = mac4.inc()

        self.assertTrue(mac4 == pytrap.UnirecMACAddr("11:22:33:44:56:66"),
                        "Incrementation failed.")

        for i in range(0, 256):
            mac4 = mac4.dec()

        self.assertTrue(mac4 == mac1, "Decrementation failed.")

        mac5 = pytrap.UnirecMACAddr("FF:FF:FF:FF:FF:FF").inc()
        mac6 = pytrap.UnirecMACAddr("00:00:00:00:00:00").dec()
        self.assertTrue(mac5 == pytrap.UnirecMACAddr("00:00:00:00:00:00"),
                        "Incrementation failed.")
        self.assertTrue(mac6 == pytrap.UnirecMACAddr("FF:FF:FF:FF:FF:FF"),
                        "Decrementation failed.")

        # test mac address bytes conversion to integer (bytes consist of uint32_t part and uint16_t part)
        mac7 = pytrap.UnirecMACAddr("12:34:FF:FF:FF:FF").inc()
        mac8 = pytrap.UnirecMACAddr("12:34:56:78:FF:FF").inc()
        self.assertTrue(mac7 == pytrap.UnirecMACAddr("12:35:00:00:00:00"),
                        "uint32_t test failed.")
        self.assertTrue(mac8 == pytrap.UnirecMACAddr("12:34:56:79:00:00"),
                        "uint16_t test failed.")

        d = dict()
        m1 = pytrap.UnirecMACAddr("1:2:3:4:5:6")
        m2 = pytrap.UnirecMACAddr("6:5:4:3:2:1")
        m3 = pytrap.UnirecMACAddr("FF:FF:FF:FF:FF:FF")
        d[m1] = 1
        d[m2] = 2
        d[m3] = 3
        self.assertEqual(d[m3], 3)
        self.assertEqual(d[m1], 1)
        self.assertEqual(d[m2], 2)
        m4 = pytrap.UnirecMACAddr("1:2:3:0:0:0")
        try:
            print(d[m4])
            self.fail("MAC address shouldn't be in dict")
        except KeyError:
            pass
        try:
            i = pytrap.UnirecMACAddr(0)
            self.fail("Only string is a valid argument of UnirecMACAddr()")
        except TypeError:
            pass
        try:
            i = pytrap.UnirecMACAddr(bytes([11, 22, 33, 44, 55, 66]))
            self.fail("Only string is a valid argument of UnirecMACAddr()")
        except pytrap.TrapError:
            pass
        except TypeError:
            pass

        i = pytrap.UnirecMACAddr("00:00:00:00:00:00")
        self.assertTrue(i.isNull())
        self.assertFalse(i)
        i = pytrap.UnirecMACAddr("00:00:00:00:00:01")
        self.assertFalse(i.isNull())
        self.assertTrue(i)

        # __contains__
        self.assertFalse(m3 in m4)
        self.assertTrue(m4 in m4)
        self.assertTrue(
            pytrap.UnirecMACAddr("d:e:a:d:be:ef") in pytrap.UnirecMACAddr(
                "d:e:a:d:be:ef"))
Esempio n. 3
0
    def runTest(self):
        import pytrap
        mac = pytrap.UnirecMACAddr("d:e:a:d:be:ef")
        bl1 = pytrap.UnirecMACAddr("d:e:a:d:be:ef")
        bl2 = pytrap.UnirecMACAddrRange(pytrap.UnirecMACAddr("d:0:0:0:0:0"),
                                        pytrap.UnirecMACAddr("d:f:f:f:f:f"))
        bl3 = pytrap.UnirecMACAddr("b:e:a:d:de:ef")
        bl4 = pytrap.UnirecMACAddrRange(pytrap.UnirecMACAddr("0:0:0:FF:FF:FF"),
                                        pytrap.UnirecMACAddr("1:2:3:4:5:6"))
        bl5 = pytrap.UnirecMACAddrRange(pytrap.UnirecMACAddr("0:0:0:FF:FF:FF"),
                                        pytrap.UnirecMACAddr("1:0:0:0:0:0"))
        bl6 = pytrap.UnirecMACAddrRange(pytrap.UnirecMACAddr("1:0:0:FF:FF:FF"),
                                        pytrap.UnirecMACAddr("c:0:0:0:0:0"))

        self.assertEqual(type(bl2), pytrap.UnirecMACAddrRange,
                         "Bad type of MAC address object.")
        self.assertEqual(
            str(bl6), "1:0:0:ff:ff:ff - c:0:0:0:0:0",
            "String representation of UnirecMACAddrRange not equal to expected string."
        )
        self.assertEqual(
            repr(bl6),
            "UnirecMACAddrRange(UnirecMACAddr('1:0:0:ff:ff:ff'), UnirecMACAddr('c:0:0:0:0:0'))",
            "String representation of UnirecMACAddrRange not equal to expected string."
        )

        # both are True:
        self.assertTrue(mac in bl1)
        self.assertTrue(mac in bl2)
        # both are False
        self.assertFalse(mac in bl3)
        self.assertFalse(mac in bl4)

        self.assertTrue(bl2.isIn(mac) == 0)
        self.assertTrue(bl4.isIn(mac) == 1)
        self.assertTrue(bl4.isIn(pytrap.UnirecMACAddr("0:0:0:0:0:1")) == -1)

        self.assertTrue(bl4.isOverlap(bl4))
        self.assertTrue(bl4.isOverlap(bl5))
        self.assertTrue(bl5.isOverlap(bl4))
        self.assertTrue(bl4.isOverlap(bl6))
        self.assertTrue(not bl6.isOverlap(bl2))
        self.assertTrue(not bl2.isOverlap(bl4))

        self.assertTrue(not bl2 == bl4)
        self.assertTrue(bl2 == bl2)

        mac1 = pytrap.UnirecMACAddr("d:e:ad:be:e:f")
        mac2 = pytrap.UnirecMACAddr("b:a:d:f0:0:d")
        rangemap = dict()
        rangemap[mac1] = 1
        rangemap[mac2] = 2
        if mac1 not in rangemap:
            self.fail("mac1 should be already in dict.")
        if mac2 not in rangemap:
            self.fail("mac2 should be already in dict.")
        s = 0
        for key in rangemap:
            s += rangemap[key]
        self.assertEqual(s, 3)
    def runTest(self):
        import pytrap
        a = pytrap.UnirecTemplate(
            "uint32 FOO, uint32 BAR, ipaddr IP, string STR, int32* ARR1, ipaddr* IPs, macaddr* MACs, uint64* ARR2, time* TIMEs"
        )
        data = bytearray(
            b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x61\x4e\xff\xff\xff\xff\x31\xd4\x00\x00\x39\x30\x00\x00\x00\x00\x0c\x00\x0c\x00\x28\x00\x34\x00\x12\x00\x46\x00\x50\x00\x96\x00\x18\x00\xae\x00\x50\x00\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21\xf7\xff\xff\xff\xf8\xff\xff\xff\xf9\xff\xff\xff\xfa\xff\xff\xff\xfb\xff\xff\xff\xfc\xff\xff\xff\xfd\xff\xff\xff\xfe\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x11\x11\x11\x11\x11\x22\x22\x22\x22\x22\x22\x0a\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xc0\x33\x5b\x00\x00\x00\x80\xe6\xc0\x33\x5b\x00\x00\x00\x00\xe6\xc0\x33\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x01\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x02\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x00\x00\x01\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x61\x4e\xff\xff\xff\xff'
        )
        a.setData(data)
        self.assertEqual(len(a), 9, "Number of fields differs, 9 expected.")
        self.assertEqual(
            str(a),
            "(ipaddr IP,uint32 BAR,uint32 FOO,string STR,int32* ARR1,macaddr* MACs,uint64* ARR2,time* TIMEs,ipaddr* IPs)"
        )
        d = a.getFieldsDict()
        self.assertEqual(type(d), dict)
        self.assertEqual(
            set(d.keys()),
            set([
                'IP', 'BAR', 'FOO', 'STR', 'ARR1', 'MACs', 'ARR2', 'TIMEs',
                'IPs'
            ]))

        self.assertEqual(a.getFieldType("ARR1"), list)
        self.assertEqual(a.getFieldType("ARR2"), list)
        self.assertEqual(a.getFieldType("IPs"), list)
        self.assertEqual(a.getFieldType("TIMEs"), list)

        self.assertEqual(a.get(data, "FOO"), 12345)
        self.assertEqual(a.get(data, "FOO"), a.getByID(data, 6))
        self.assertEqual(a.get(data, "FOO"), a.FOO)

        self.assertEqual(a.get(data, "BAR"), 54321)
        self.assertEqual(a.get(data, "BAR"), a.getByID(data, 7))
        self.assertEqual(a.get(data, "BAR"), a.BAR)

        self.assertEqual(a.get(data, "IP"), pytrap.UnirecIPAddr("0.188.97.78"))
        self.assertEqual(a.get(data, "IP"), a.getByID(data, 8))
        self.assertEqual(a.get(data, "IP"), a.IP)

        self.assertEqual(a.get(data, "STR"), "Hello World!")
        self.assertEqual(a.get(data, "STR"), a.getByID(data, 9))
        self.assertEqual(a.get(data, "STR"), a.STR)

        self.assertEqual(a.get(data, "ARR1"),
                         [-9, -8, -7, -6, -5, -4, -3, -2, -1, 0])
        self.assertEqual(a.get(data, "ARR1"), a.getByID(data, 10))
        self.assertEqual(a.get(data, "ARR1"), a.ARR1)

        self.assertEqual(a.get(data, "IPs"), [
            pytrap.UnirecIPAddr("10.0.0.1"),
            pytrap.UnirecIPAddr("10.0.0.2"),
            pytrap.UnirecIPAddr("::1"),
            pytrap.UnirecIPAddr("127.0.0.1"),
            pytrap.UnirecIPAddr("0.188.97.78")
        ])
        self.assertEqual(a.get(data, "IPs"), a.getByID(data, 11))
        self.assertEqual(a.get(data, "IPs"), a.IPs)

        self.assertEqual(a.get(data, "MACs"), [
            pytrap.UnirecMACAddr("0:0:0:0:0:0"),
            pytrap.UnirecMACAddr("11:11:11:11:11:11"),
            pytrap.UnirecMACAddr("22:22:22:22:22:22")
        ])
        self.assertEqual(a.get(data, "MACs"), a.getByID(data, 12))
        self.assertEqual(a.get(data, "MACs"), a.MACs)

        self.assertEqual(a.get(data, "ARR2"),
                         [10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
        self.assertEqual(a.get(data, "ARR2"), a.getByID(data, 13))
        self.assertEqual(a.get(data, "ARR2"), a.ARR2)

        self.assertEqual(a.get(data, "TIMEs"), [
            pytrap.UnirecTime("2018-06-27T16:52:54"),
            pytrap.UnirecTime("2018-06-27T16:52:54.500"),
            pytrap.UnirecTime("2018-06-27T16:52:54Z"),
        ])
        self.assertEqual(a.get(data, "TIMEs"), a.getByID(data, 14))
        self.assertEqual(a.get(data, "TIMEs"), a.TIMEs)

        f_str = "Hello Unirec!"
        f_arr1 = [-42, 7, 11, 13, -17, 19]
        f_ips = [
            pytrap.UnirecIPAddr("10.200.4.1"),
            pytrap.UnirecIPAddr("192.168.0.200"),
            pytrap.UnirecIPAddr("2000::1")
        ]
        f_macs = [
            pytrap.UnirecMACAddr("6:5:4:3:2:1"),
            pytrap.UnirecMACAddr("FF:FF:FF:FF:FF:FF"),
            pytrap.UnirecMACAddr("1:1:1:1:1:1"),
            pytrap.UnirecMACAddr("1:2:3:4:5:6")
        ]
        f_arr2 = [123467890, 987654321]
        f_times = [
            pytrap.UnirecTime(1466706915, 999),
            pytrap.UnirecTime(146324234, 999),
            pytrap.UnirecTime(0, 1),
            pytrap.UnirecTime(1466700000, 0)
        ]

        a.set(data, "STR", f_str)
        a.set(data, "ARR1", f_arr1)
        a.set(data, "IPs", f_ips)
        a.MACs = f_macs
        a.ARR2 = f_arr2
        a.set(data, "TIMEs", f_times)

        self.assertEqual(a.get(data, "STR"), f_str)
        self.assertEqual(a.get(data, "ARR1"), f_arr1)
        self.assertEqual(a.get(data, "IPs"), f_ips)
        self.assertEqual(a.get(data, "MACs"), f_macs)
        self.assertEqual(a.get(data, "ARR2"), f_arr2)
        self.assertEqual(a.get(data, "TIMEs"), f_times)

        f_arr2 = []
        a.ARR2 = f_arr2
        self.assertEqual(a.get(data, "ARR2"), f_arr2)

        f_arr1 = -42
        a.ARR1 = f_arr1
        self.assertEqual(a.get(data, "ARR1"), [f_arr1])