Пример #1
0
    def test_serialize_field(self):
        test_data = b"\x00\x64\x00\x00\x00\x00\x00\x38\x00\x00\x00\xc8\x00\x00\x00\x01\x00\x00\x01\x2c\x01\x00\x00\x00\x00\x00\x00\x16\x00\x54\x00\x65\x00\x73\x00\x74\x00\x20\x00\x53\x00\x74\x00\x72\x00\x69\x00\x6e\x00\x67\x00\x00\x00\x00\x00\x00"
        test_data_no_padding = b"\x00\x64\x00\x00\x00\x00\x00\x30\x00\x00\x00\xc8\x00\x00\x00\x01\x00\x00\x01\x2c\x01\x00\x00\x00\x00\x00\x00\x14\x00\x50\x00\x41\x00\x44\x00\x44\x00\x49\x00\x4e\x00\x47\x00\x50\x00\x41\x00\x44"
        test_data_unicode = b"\x00\x64\x00\x00\x00\x00\x00\x60\x00\x00\x00\xc8\x00\x00\x00\x01\x00\x00\x01\x2c\x01\x00\x00\x00\x00\x00\x00\x44\x04\x20\x04\x43\x04\x41\x04\x41\x04\x3a\x04\x38\x04\x39\x00\x20\x04\x22\x04\x35\x04\x3a\x04\x41\x04\x42\x00\x2c\x00\x20\x06\x27\x06\x44\x06\x46\x06\x35\x00\x20\x06\x28\x06\x27\x06\x44\x06\x44\x06\x3a\x06\x29\x00\x20\x06\x27\x06\x44\x06\x39\x06\x31\x06\x28\x06\x4a\x06\x29"
        test_data_binary = b"\x00\x64\x00\x00\x00\x00\x00\x28\x00\x00\x00\xc8\x00\x00\x00\x01\x00\x00\x01\x2c\x04\x00\x00\x00\x00\x00\x00\x05\x01\x02\x03\x04\x05\x00\x00\x00\x00\x00\x00\x00"

        m = netxms.Message(Command(100))
        m.message_id = 200
        m.set(Variable(300), "Test String")
        serialized = m.serialize()
        self.assertEqual(serialized, test_data)

        # test aligned message with zero padding
        m = netxms.Message(Command(100))
        m.message_id = 200
        m.set(Variable(300), "PADDINGPAD")
        serialized = m.serialize()
        self.assertEqual(serialized, test_data_no_padding)

        m = netxms.Message(Command(100))
        m.message_id = 200
        m.set(Variable(300), "Русский Текст, النص باللغة العربية")
        serialized = m.serialize()
        self.assertEqual(serialized, test_data_unicode)

        m = netxms.Message(Command(100), 200)
        m.set(Variable(300), b"\x01\x02\x03\x04\x05")
        serialized = m.serialize()
        self.assertEqual(serialized, test_data_binary)
Пример #2
0
    def test_deserialize_multiple_fields(self):
        test_data = b"\x00\x64\x00\x00\x00\x00\x00\x60\x00\x00\x00\xc8\x00\x00\x00\x04\x00\x00\x01\x2c\x01\x00\x00\x00\x00\x00\x00\x16\x00\x54\x00\x65\x00\x73\x00\x74\x00\x20\x00\x53\x00\x74\x00\x72\x00\x69\x00\x6e\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x01\x2d\x03\x00\x03\xe8\x00\x00\x01\x2e\x00\x00\x00\x00\x00\x00\x03\xe9\x00\x00\x00\x00\x00\x00\x01\x2f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xea"
        m = netxms.Message.from_binary(test_data)

        f = m.get(Variable(300))
        self.assertIsNotNone(f)
        assert f is not None
        self.assertEqual(f.field_id, 300)
        self.assertEqual(f.field_type, netxms.message.FieldType.STRING)
        self.assertEqual(f.value, "Test String")

        f = m.get(Variable(301))
        self.assertIsNotNone(f)
        assert f is not None
        self.assertEqual(f.field_id, 301)
        self.assertEqual(f.field_type, netxms.message.FieldType.INT16)
        self.assertEqual(f.value, 1000)

        f = m.get(Variable(302))
        self.assertIsNotNone(f)
        assert f is not None
        self.assertEqual(f.field_id, 302)
        self.assertEqual(f.field_type, netxms.message.FieldType.INTEGER)
        self.assertEqual(f.value, 1001)

        f = m.get(Variable(303))
        self.assertIsNotNone(f)
        assert f is not None
        self.assertEqual(f.field_id, 303)
        self.assertEqual(f.field_type, netxms.message.FieldType.INT64)
        self.assertEqual(f.value, 1002)
Пример #3
0
    def test_serialize_multuple_fields(self):
        test_data = b"\x00\x64\x00\x00\x00\x00\x00\x60\x00\x00\x00\xc8\x00\x00\x00\x04\x00\x00\x01\x2c\x01\x00\x00\x00\x00\x00\x00\x16\x00\x54\x00\x65\x00\x73\x00\x74\x00\x20\x00\x53\x00\x74\x00\x72\x00\x69\x00\x6e\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x01\x2d\x03\x00\x03\xe8\x00\x00\x01\x2e\x00\x00\x00\x00\x00\x00\x03\xe9\x00\x00\x00\x00\x00\x00\x01\x2f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\xea"

        m = netxms.Message(Command(100))
        m.message_id = 200
        m.set(Variable(300), "Test String")
        m.set_int16(Variable(301), 1000)
        m.set(Variable(302), 1001)
        m.set_int64(Variable(303), 1002)

        serialized = m.serialize()
        self.assertEqual(serialized, test_data)
Пример #4
0
    def test_serialize_field_inetaddr(self):
        test_data_ipv4 = b"\x00\x64\x00\x00\x00\x00\x00\x30\x00\x00\x00\xc8\x00\x00\x00\x01\x00\x00\x01\x2c\x06\x00\x00\x00\x01\x02\x03\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00"
        test_data_ipv6 = b"\x00\x64\x00\x00\x00\x00\x00\x30\x00\x00\x00\xc8\x00\x00\x00\x01\x00\x00\x01\x2c\x06\x00\x00\x00\x20\x01\x0d\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x80\x00\x00\x00\x00\x00\x00"

        m = netxms.Message(Command(100), 200)
        m.set(Variable(300), ipaddress.IPv4Network('1.2.3.4/32'))
        serialized = m.serialize()
        self.assertEqual(serialized, test_data_ipv4)

        m = netxms.Message(Command(100), 200)
        m.set(Variable(300), ipaddress.IPv6Network('2001:db8::1/128'))
        serialized = m.serialize()
        self.assertEqual(serialized, test_data_ipv6)
Пример #5
0
 def __repr__(self):
     return 'MessageField{id=%s(%d), type=%s, value=%s}' % (
         Variable(self.field_id).name,
         self.field_id,
         self.field_type,
         self.value
     )
Пример #6
0
    def test_deserialize_field(self):
        test_data = b"\x00\x64\x00\x00\x00\x00\x00\x38\x00\x00\x00\xc8\x00\x00\x00\x01\x00\x00\x01\x2c\x01\x00\x00\x00\x00\x00\x00\x16\x00\x54\x00\x65\x00\x73\x00\x74\x00\x20\x00\x53\x00\x74\x00\x72\x00\x69\x00\x6e\x00\x67\x00\x00\x00\x00\x00\x00"
        test_data_no_padding = b"\x00\x64\x00\x00\x00\x00\x00\x30\x00\x00\x00\xc8\x00\x00\x00\x01\x00\x00\x01\x2c\x01\x00\x00\x00\x00\x00\x00\x14\x00\x50\x00\x41\x00\x44\x00\x44\x00\x49\x00\x4e\x00\x47\x00\x50\x00\x41\x00\x44"
        test_data_unicode = b"\x00\x64\x00\x00\x00\x00\x00\x60\x00\x00\x00\xc8\x00\x00\x00\x01\x00\x00\x01\x2c\x01\x00\x00\x00\x00\x00\x00\x44\x04\x20\x04\x43\x04\x41\x04\x41\x04\x3a\x04\x38\x04\x39\x00\x20\x04\x22\x04\x35\x04\x3a\x04\x41\x04\x42\x00\x2c\x00\x20\x06\x27\x06\x44\x06\x46\x06\x35\x00\x20\x06\x28\x06\x27\x06\x44\x06\x44\x06\x3a\x06\x29\x00\x20\x06\x27\x06\x44\x06\x39\x06\x31\x06\x28\x06\x4a\x06\x29"
        test_data_binary = b"\x00\x64\x00\x00\x00\x00\x00\x28\x00\x00\x00\xc8\x00\x00\x00\x01\x00\x00\x01\x2c\x04\x00\x00\x00\x00\x00\x00\x05\x01\x02\x03\x04\x05\x00\x00\x00\x00\x00\x00\x00"

        m = netxms.Message.from_binary(test_data)
        self.assertEqual(m.message_code, 100)
        self.assertEqual(m.message_id, 200)
        f = m.get(Variable(300))
        self.assertIsNotNone(f)
        assert f is not None
        self.assertEqual(f.field_id, 300)
        self.assertEqual(f.field_type, netxms.message.FieldType.STRING)
        self.assertEqual(f.value, "Test String")

        m = netxms.Message.from_binary(test_data_no_padding)
        self.assertEqual(m.message_code, 100)
        self.assertEqual(m.message_id, 200)
        f = m.get(Variable(300))
        self.assertIsNotNone(f)
        assert f is not None
        self.assertEqual(f.field_id, 300)
        self.assertEqual(f.field_type, netxms.message.FieldType.STRING)
        self.assertEqual(f.value, "PADDINGPAD")

        m = netxms.Message.from_binary(test_data_unicode)
        self.assertEqual(m.message_code, 100)
        self.assertEqual(m.message_id, 200)
        f = m.get(Variable(300))
        self.assertIsNotNone(f)
        assert f is not None
        self.assertEqual(f.field_id, 300)
        self.assertEqual(f.field_type, netxms.message.FieldType.STRING)
        self.assertEqual(f.value, "Русский Текст, النص باللغة العربية")

        m = netxms.Message.from_binary(test_data_binary)
        self.assertEqual(m.message_code, 100)
        self.assertEqual(m.message_id, 200)
        f = m.get(Variable(300))
        self.assertIsNotNone(f)
        assert f is not None
        self.assertEqual(f.field_id, 300)
        self.assertEqual(f.field_type, netxms.message.FieldType.BINARY)
        self.assertEqual(f.value, b"\x01\x02\x03\x04\x05")
Пример #7
0
    def test_deserialize_field_inetaddr(self):
        test_data_ipv4 = b"\x00\x64\x00\x00\x00\x00\x00\x30\x00\x00\x00\xc8\x00\x00\x00\x01\x00\x00\x01\x2c\x06\x00\x00\x00\x01\x02\x03\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00"
        test_data_ipv6 = b"\x00\x64\x00\x00\x00\x00\x00\x30\x00\x00\x00\xc8\x00\x00\x00\x01\x00\x00\x01\x2c\x06\x00\x00\x00\x20\x01\x0d\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x80\x00\x00\x00\x00\x00\x00"

        m = netxms.Message.from_binary(test_data_ipv4)
        self.assertEqual(m.message_code, 100)
        self.assertEqual(m.message_id, 200)
        f = m.get(Variable(300))
        self.assertIsNotNone(f)
        assert f is not None
        self.assertEqual(f.field_id, 300)
        self.assertEqual(f.field_type, netxms.message.FieldType.INETADDR)
        self.assertEqual(f.value, ipaddress.IPv4Network('1.2.3.4/32'))

        m = netxms.Message.from_binary(test_data_ipv6)
        self.assertEqual(m.message_code, 100)
        self.assertEqual(m.message_id, 200)
        f = m.get(Variable(300))
        self.assertIsNotNone(f)
        assert f is not None
        self.assertEqual(f.field_id, 300)
        self.assertEqual(f.field_type, netxms.message.FieldType.INETADDR)
        self.assertEqual(f.value, ipaddress.IPv6Network('2001:db8::1/128'))
Пример #8
0
 def test_fieldtypes(self):
     m = netxms.Message(Command(100))
     m.set(Variable(100), "Test")
     self.assertEqual(m.fields[100].field_type,
                      netxms.message.FieldType.STRING)
     m.set(Variable(100), 1)
     self.assertEqual(m.fields[100].field_type,
                      netxms.message.FieldType.INTEGER)
     m.set(Variable(100), 1.0)
     self.assertEqual(m.fields[100].field_type,
                      netxms.message.FieldType.FLOAT)
     m.set_int16(Variable(100), 1)
     self.assertEqual(m.fields[100].field_type,
                      netxms.message.FieldType.INT16)
     m.set_int64(Variable(100), 1)
     self.assertEqual(m.fields[100].field_type,
                      netxms.message.FieldType.INT64)
     m.set(Variable(100), ipaddress.ip_address('1.2.3.4'))
     self.assertEqual(m.fields[100].field_type,
                      netxms.message.FieldType.INETADDR)
     m.set(Variable(100), b'')
     self.assertEqual(m.fields[100].field_type,
                      netxms.message.FieldType.BINARY)