示例#1
0
    def test_transaction_abort(self):
        self.start_transaction()
        self.send_message(messages.KZorpAddZoneMessage('zone'))
        self.end_transaction()
        self.check_zone_num(1)

        # Start a transaction
        self.start_transaction()

        self.send_message(messages.KZorpAddZoneMessage('a'))
        self.check_zone_num(1, False)

        # Abort the transaction
        self.reopen_handle()

        self.check_zone_num(1, False)
示例#2
0
    def __create_one_zone_with_subnets_do_not_fit_into_one_netlink_packet(
            self):
        zone_name = 'zone'
        zone_subnet_count_that_not_fit_in_netlink_packet = self._get_netlink_packet_size(
        )
        zone_subnet_family = socket.AF_INET
        zone_subnet_format = '192.168.%d.%d'

        zone_messages = []

        add_zone_message = messages.KZorpAddZoneMessage(
            zone_name,
            subnet_num=zone_subnet_count_that_not_fit_in_netlink_packet)
        zone_messages.append(add_zone_message)

        for subnet_num in range(
                zone_subnet_count_that_not_fit_in_netlink_packet):
            add_zone_subnet_message = messages.KZorpAddZoneSubnetMessage(
                zone_name,
                family=zone_subnet_family,
                address=socket.inet_pton(
                    zone_subnet_family, zone_subnet_format % (
                        subnet_num % (2**16) / 256,
                        subnet_num % (2**8),
                    )),
                mask=socket.inet_pton(
                    zone_subnet_family,
                    testutil.size_to_mask(zone_subnet_family, 32)))
            zone_messages.append(add_zone_subnet_message)

        return zone_messages
示例#3
0
    def __create_several_zones_that_do_not_fit_into_one_netlink_packet(self):
        zone_name_format = 'zone_with_subnets_do_not_fit_into_one_netlink_packet_%d'
        zone_messages = []

        for zone_num in range(self._get_netlink_packet_size()):
            add_zone_message = messages.KZorpAddZoneMessage(zone_name_format %
                                                            (zone_num, ),
                                                            subnet_num=0)
            zone_messages.append(add_zone_message)

        return zone_messages
示例#4
0
    def test_add_subnet_to_zone_with_zero_subnet_num(self):
        self.start_transaction()

        self.send_message(
            messages.KZorpAddZoneMessage('name', pname=None, subnet_num=0))

        res = self.send_message(self._create_add_zone_subnet_internet('name'),
                                assert_on_error=False)
        self.assertEqual(res, -errno.ENOMEM)

        self.end_transaction()
示例#5
0
    def _add_zone_with_internet_subnet(self):
        self.start_transaction()
        self.send_message(
            messages.KZorpAddZoneMessage(self.internet_zone_name,
                                         None,
                                         subnet_num=1))
        add_zone_subnet_msg = self._create_add_zone_subnet_internet(
            self.internet_zone_name)
        self.send_message(add_zone_subnet_msg)
        self.end_transaction()

        self._check_add_zone_subnet_internet(add_zone_subnet_msg)
 def _addzones(self):
   for zone in self._zones:
       #print "zone=%s\n"%(zone,)
       subnets = zone['subnets']
       self.send_message(messages.KZorpAddZoneMessage(
                         zone['name'],
                         pname=zone['admin_parent'],
                         subnet_num=len(subnets)))
       for subnet in subnets:
         self.send_message(messages.KZorpAddZoneSubnetMessage(
                           zone['name'],
                           family=zone['family'],
                           address = testutil.subnet_base(zone['family'], subnet),
                           mask = testutil.subnet_mask(zone['family'], subnet)))
示例#7
0
    def __test_add_zone_subnet_different_transaction(self):
        self.start_transaction()
        self.send_message(
            messages.KZorpAddZoneMessage(self.internet_zone_name,
                                         None,
                                         subnet_num=0))
        self.end_transaction()

        self.start_transaction()
        add_zone_subnet_msg = self._create_add_zone_subnet_internet(
            self.internet_zone_name)
        self.send_message(add_zone_subnet_msg)
        self.end_transaction()

        self._check_add_zone_subnet_internet(add_zone_subnet_msg)
示例#8
0
    def newSetUp(self):
        self.start_transaction()

        for zone in self._zones:
            add_zone_message = messages.KZorpAddZoneMessage(
                zone['name'], pname=zone['pname'], subnet_num=1)
            self.send_message(add_zone_message)

            family = zone['family']
            add_zone_subnet_message = messages.KZorpAddZoneSubnetMessage(
                zone['name'],
                family=family,
                address=socket.inet_pton(family, zone['address']),
                mask=socket.inet_pton(
                    family, testutil.size_to_mask(family, zone['mask'])))
            self.send_message(add_zone_subnet_message)

        self.end_transaction()
        self._index = -1
        self._add_zone_message = None
        self._add_zone_messages = []
示例#9
0
 def test_delete_and_add_zone_used_by_rule(self):
     self.start_transaction()
     self.send_message(messages.KZorpDeleteZoneMessage('AAA'))
     self.send_message(messages.KZorpAddZoneMessage('AAA', 'AA', 0))
     self.end_transaction()
示例#10
0
 def test_zero_subnet_is_valid(self):
     self.start_transaction()
     self.send_message(
         messages.KZorpAddZoneMessage('name', None, subnet_num=0))
     self.end_transaction()
示例#11
0
    def test_add_zone_errors(self):
        zones = [
            {
                'desc': 'nonexistent parent',
                'name': 'x1',
                'pname': 'x',
                'error': -errno.ENOENT
            },
            {
                'desc': 'no parent',
                'name': 'a',
                'pname': None,
                'error': 0
            },
            {
                'desc': 'existing name',
                'name': 'a',
                'pname': None,
                'error': -errno.EEXIST
            },
            {
                'desc': 'nonexistent name',
                'name': 'x2',
                'pname': None,
                'error': 0
            },
            {
                'desc': 'empty name',
                'name': '',
                'pname': None,
                'error': -errno.EINVAL
            },
            {
                'desc': 'empty parent',
                'name': 'fake',
                'pname': '',
                'error': -errno.EINVAL
            },
        ]

        #add_zone_message = messages.KZorpAddZoneMessage('a');
        #res = self.send_message(add_zone_message, assert_on_error = False)
        #self.assertEqual(res, -errno.ENOENT)
        #import pdb
        #pdb.set_trace()
        for zone in zones:
            self.start_transaction()
            add_zone_message = messages.KZorpAddZoneMessage(
                zone['name'], pname=zone['pname'])

            res = self.send_message(add_zone_message, assert_on_error=False)
            tr_res = self.end_transaction(assert_on_error=False)
            expected_result = zone['error']
            if expected_result == 0:
                self.assertEqual(res, 0)
                self.assertEqual(tr_res, 0)
            else:
                if res != 0:
                    self.assertEqual(res, expected_result)
                else:
                    self.assertEqual(tr_res, expected_result)