summaryrefslogtreecommitdiffstats
path: root/docs/arm/container4nfv_on_arm.rst
diff options
context:
space:
mode:
authorGuo Ruijing <ruijing.guo@intel.com>2017-11-02 11:38:38 -0700
committerGuo Ruijing <ruijing.guo@intel.com>2017-11-02 11:48:39 -0700
commitf687064ebb1a1bab94ce3d8c928dbb70290140aa (patch)
tree52290436b640a8b234458cbf9a0177677cd94c62 /docs/arm/container4nfv_on_arm.rst
parent03f6fa24dd607c7ad446f990db28e1ec2491ea2f (diff)
add container4nfv in daily jenkins
Change-Id: Icfa4fed9d8a671befb32581b06ac617b6410d3a7 Signed-off-by: Guo Ruijing <ruijing.guo@intel.com>
Diffstat (limited to 'docs/arm/container4nfv_on_arm.rst')
0 files changed, 0 insertions, 0 deletions
id='n146' href='#n146'>146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
##############################################################################
# Copyright (c) 2016 Dan Radez (Red Hat)
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################

from apex.common.constants import (
    EXTERNAL_NETWORK,
    STORAGE_NETWORK,
    ADMIN_NETWORK,
)

from apex.network_settings import (
    NetworkSettings,
    NetworkSettingsException,
)

from nose.tools import (
    assert_equal,
    assert_is_instance,
    assert_raises
)

files_dir = '../config/network/'


class TestNetworkSettings(object):
    @classmethod
    def setup_class(klass):
        """This method is run once for each class before any tests are run"""

    @classmethod
    def teardown_class(klass):
        """This method is run once for each class _after_ all tests are run"""

    def setUp(self):
        """This method is run once before _each_ test method is executed"""

    def teardown(self):
        """This method is run once after _each_ test method is executed"""

    def test_init(self):
        assert_is_instance(
            NetworkSettings(files_dir+'network_settings.yaml'),
            NetworkSettings)

    def test_init_vlans(self):
        assert_is_instance(
            NetworkSettings(files_dir+'network_settings_vlans.yaml'),
            NetworkSettings)

# TODO, v6 test is stuck
    # def test_init_v6(self):
    #     assert_is_instance(
    #         NetworkSettings(files_dir+'network_settings_v6.yaml', True),
    #         NetworkSettings)

    def test_init_admin_disabled_or_missing(self):
        ns = NetworkSettings(files_dir+'network_settings.yaml')
        # remove admin, apex section will re-add it
        ns['networks'].pop('admin', None)
        assert_raises(NetworkSettingsException, NetworkSettings, ns)
        # remove admin and apex
        ns.pop('apex', None)
        ns['networks'].pop('admin', None)
        assert_raises(NetworkSettingsException, NetworkSettings, ns)

    def test_init_collapse_storage(self):
        ns = NetworkSettings(files_dir+'network_settings.yaml')
        # remove storage
        ns['networks'].pop('storage', None)
        assert_is_instance(NetworkSettings(ns), NetworkSettings)

    def test_init_missing_dns_domain(self):
        ns = NetworkSettings(files_dir+'network_settings.yaml')
        # remove storage
        ns.pop('dns-domain', None)
        assert_is_instance(NetworkSettings(ns), NetworkSettings)

    def test_dump_bash(self):
        ns = NetworkSettings('../config/network/network_settings.yaml')
        assert_equal(ns.dump_bash(), None)
        assert_equal(ns.dump_bash(path='/dev/null'), None)

    def test_get_network_settings(self):
        ns = NetworkSettings('../config/network/network_settings.yaml')
        assert_is_instance(ns, NetworkSettings)
        for role in ['controller', 'compute']:
            nic_index = 1
            print(ns.nics)
            for network in ns.enabled_network_list:
                nic = 'nic' + str(nic_index)
                assert_equal(ns.nics[role][network], nic)
                nic_index += 1

    def test_get_enabled_networks(self):
        ns = NetworkSettings('../config/network/network_settings.yaml')
        assert_is_instance(ns.enabled_network_list, list)

    def test_invalid_nic_members(self):
        ns = NetworkSettings(files_dir+'network_settings.yaml')
        storage_net_nicmap = ns['networks'][STORAGE_NETWORK]['nic_mapping']
        # set duplicate nic
        storage_net_nicmap['compute']['members'][0] = 'nic1'
        assert_raises(NetworkSettingsException, NetworkSettings, ns)
        # remove nic members
        storage_net_nicmap['compute']['members'] = []
        assert_raises(NetworkSettingsException, NetworkSettings, ns)

    def test_missing_vlan(self):
        ns = NetworkSettings(files_dir+'network_settings.yaml')
        storage_net_nicmap = ns['networks'][STORAGE_NETWORK]['nic_mapping']
        # remove vlan from storage net
        storage_net_nicmap['compute'].pop('vlan', None)
        assert_is_instance(NetworkSettings(ns), NetworkSettings)

# TODO
# need to manipulate interfaces some how
# maybe for ip_utils to return something to pass this
#    def test_admin_auto_detect(self):
#        ns = NetworkSettings(files_dir+'network_settings.yaml')
#        # remove cidr to force autodetection
#        ns['networks'][ADMIN_NETWORK].pop('cidr', None)
#        assert_is_instance(NetworkSettings(ns), NetworkSettings)

    def test_admin_fail_auto_detect(self):
        ns = NetworkSettings(files_dir+'network_settings.yaml')
        # remove cidr and installer_vm to fail autodetect
        ns['networks'][ADMIN_NETWORK].pop('cidr', None)
        ns['networks'][ADMIN_NETWORK].pop('installer_vm', None)
        assert_raises(NetworkSettingsException, NetworkSettings, ns)

    def test_exception(self):
        e = NetworkSettingsException("test")
        print(e)
        assert_is_instance(e, NetworkSettingsException)

    def test_config_ip(self):
        ns = NetworkSettings(files_dir+'network_settings.yaml')
        # set the provisioner ip to None to force _gen_ip to generate one
        ns['networks'][ADMIN_NETWORK]['installer_vm']['ip'] = None
        ns['networks'][EXTERNAL_NETWORK][0]['installer_vm']['ip'] = None
        # Now rebuild network settings object and check for repopulated values
        ns = NetworkSettings(ns)
        assert_equal(ns['networks'][ADMIN_NETWORK]['installer_vm']['ip'],
                     '192.0.2.1')
        assert_equal(ns['networks'][EXTERNAL_NETWORK][0]['installer_vm']['ip'],
                     '192.168.37.1')

    def test_config_gateway(self):
        ns = NetworkSettings(files_dir+'network_settings.yaml')
        # set the gateway ip to None to force _config_gateway to generate one
        ns['networks'][EXTERNAL_NETWORK][0]['gateway'] = None
        # Now rebuild network settings object and check for a repopulated value
        ns = NetworkSettings(ns)
        assert_equal(ns['networks'][EXTERNAL_NETWORK][0]['gateway'],
                     '192.168.37.1')