def test_iface_discovery(mock_import, mock_provider_check):
    """ test iface discovery """
    # provider_check is none
    mock_provider_check.return_value = 'debian'
    mock_debian_iface = MagicMock()
    mock_debian_iface.iface.return_value = 'its a debian bridge'
    values = {'netshowlib.debian.iface': mock_debian_iface}
    mock_import.side_effect = mod_args_generator(values)
    assert_equals(nn.iface('eth1'), 'its a debian bridge')
    # if provider_check is not none
    mock_debian_iface = MagicMock()
    mock_debian_iface.iface.return_value = 'its a debian bridge'
    values['netshowlib.debian.iface'] = mock_debian_iface
    assert_equals(nn.iface('eth1', providername='debian'), 'its a debian bridge')
    # if cache is set provider_check is none
    mock_debian_iface.reset_mock()
    mock_debian_iface = MagicMock()
    mock_debian_iface.iface.return_value = 'its a debian bridge'
    mock_debian_cache = MagicMock()
    values = {'netshowlib.debian.iface': mock_debian_iface,
              'netshowlib.debian.cache': mock_debian_cache}
    mock_import.side_effect = mod_args_generator(values)
    all_cache = nn.feature_cache()
    assert_equals(nn.iface('eth1', cache=all_cache),
                  'its a debian bridge')
    # confirm syntax for iface_type accepts cache
    mock_debian_iface.iface.assert_called_with('eth1', cache=all_cache)
 def test_read_link_state(self, mock_read_oneline):
     """ test get link state """
     # port is admin down
     values = {
         '/sys/class/net/eth1/carrier': None,
         '/sys/class/net/eth1/operstate': 'down'
     }
     mock_read_oneline.side_effect = mod_args_generator(values)
     assert_equals(self.iface.linkstate, 0)
     # port is down
     values = {
         '/sys/class/net/eth1/carrier': '0',
         '/sys/class/net/eth1/operstate': 'down'
     }
     mock_read_oneline.side_effect = mod_args_generator(values)
     assert_equals(self.iface.linkstate, 1)
     # clear link_state
     self.iface._linkstate = None
     # port is up
     values = {
         '/sys/class/net/eth1/carrier': '1',
         '/sys/class/net/eth1/operstate': 'up'
     }
     mock_read_oneline.side_effect = mod_args_generator(values)
     self.iface._linkstate = None
     assert_equals(self.iface.linkstate, 2)
     # port is dormant
     values = {
         '/sys/class/net/eth1/carrier': '1',
         '/sys/class/net/eth1/operstate': 'dormant'
     }
     mock_read_oneline.side_effect = mod_args_generator(values)
     self.iface._linkstate = None
     assert_equals(self.iface.linkstate, 3)
 def test_bridgemem_details_classic_driver(self,
                                           mock_stp_state,
                                           mock_is_bridgemem,
                                           mock_symlink,
                                           mock_exec,
                                           mock_listdir,
                                           mock_file,
                                           mock_read_oneline):
     values4 = {('/sys/class/net',): ['swp3', 'swp3.1', 'swp3.2'],
                ('/sys/class/net/br0/brif',): ['swp3'],
                ('/sys/class/net/br1/brif',): ['swp3.1'],
                ('/sys/class/net/br2/brif',): ['swp3.2']
                }
     mock_is_bridgemem.return_value = True
     mock_stp_state.return_value = '2'
     mock_listdir.side_effect = mod_args_generator(values4)
     mock_exec.return_value = io.open(
         'tests/test_netshowlib/mstpctl_showall').read()
     values = {('bridge/stp_state',): '2',
               ('brport/vlans',): None,
               ('/sys/class/net/swp3/brport/vlans',): None}
     mock_read_oneline.side_effect = mod_args_generator(values)
     values5 = {
         ('/sys/class/net/swp3/brport/bridge',): 'br0',
         ('/sys/class/net/swp3.1/brport/bridge',): 'br1',
         ('/sys/class/net/swp3.2/brport/bridge',): 'br2'
     }
     mock_symlink.side_effect = mod_args_generator(values5)
     self.piface.iface = cumulus_bridge.BridgeMember('swp3')
     _output = self.piface.bridgemem_details()
     _outputtable = _output.split('\n')
    def test_bondmem_details(self, mock_read_from_sys, mock_file_oneline,
                             mock_lldp):
        values1 = {'carrier': '1', 'operstate': 'up',
                   'bonding/mode': '802.3ad 4',
                   'bonding/slaves': 'eth22 eth23',
                   'bonding/xmit_hash_policy': 'layer3+4 1',
                   'bonding/min_links': '2'}
        values2 = {'/sys/class/net/bond0/bonding/ad_sys_priority': '65535',
                   '/sys/class/net/bond0/bonding/lacp_rate': 'slow 0'}
        values = [{'adj_port': 'eth2',
                   'adj_hostname': 'switch1'},
                  {'adj_port': 'eth10',
                   'adj_hostname': 'switch2'}]
        mock_lldp.return_value = values
        mock_read_from_sys.side_effect = mod_args_generator(values1)
        mock_file_oneline.side_effect = mod_args_generator(values2)
        _output = self.piface.bondmem_details()
        _outputtable = _output.split('\n')
        assert_equals(len(_outputtable), 13)
        assert_equals(_outputtable[0].split(r'\s{3,}'), ['bond_details'])
        assert_equals(re.split(r'\s{3,}', _outputtable[2]), ['master_bond:', 'bond0'])
        assert_equals(re.split(r'\s{3,}', _outputtable[3]), ['state_in_bond:',
                                                             'port_not_in_bond'])
        assert_equals(re.split(r'\s{3,}', _outputtable[4]), ['link_failures:', '0'])
        assert_equals(re.split(r'\s{3,}', _outputtable[5]), ['bond_members:',
                                                             'eth22, eth23'])

        assert_equals(re.split(r'\s{3,}', _outputtable[6]), ['bond_mode:', 'lacp'])
        assert_equals(re.split(r'\s{3,}', _outputtable[7]), ['load_balancing:',
                                                             'layer3+4'])
        assert_equals(re.split(r'\s{3,}', _outputtable[8]), ['minimum_links:', '2'])
        assert_equals(re.split(r'\s{2,}', _outputtable[9]),
                      ['lacp_sys_priority:', '65535'])
        assert_equals(re.split(r'\s{3,}', _outputtable[10]), ['lacp_rate:', 'slow_lacp'])
    def test_is_bridgemem_port_type(self, mock_path_exists,
                                    mock_get_subints):
        # port is not a l2 port
        values = {'/sys/class/net/eth1/brport': False}
        mock_path_exists.side_effect = mod_args_generator(values)
        mock_get_subints.return_value = []
        assert_equals(self.iface.get_bridgemem_port_type(), 0)
        # port is not a l2 port but has subints that are l2 ports
        values = {'/sys/class/net/eth1/brport': False,
                  '/sys/class/net/eth1.100/brport': True}
        mock_get_subints.return_value = ['eth1.100']
        mock_path_exists.side_effect = mod_args_generator(values)
        assert_equals(self.iface.get_bridgemem_port_type(), 2)

        # port is an access
        mock_get_subints.return_value = []
        values = {'/sys/class/net/eth1/brport': True}
        mock_path_exists.side_effect = mod_args_generator(values)
        assert_equals(self.iface.get_bridgemem_port_type(), 1)
        # if port has native port that is in bridge and subints in bridge
        mock_get_subints.return_value = ['eth1.100']
        values = {'/sys/class/net/eth1/brport': True,
                  '/sys/class/net/eth1.100/brport': True}
        mock_path_exists.side_effect = mod_args_generator(values)
        assert_equals(self.iface.get_bridgemem_port_type(), 2)
 def test_stp_state(self, mock_read_from_sys, mock_exists, mock_subints):
     # test if iface is in stp bridge
     values = {
         '/sys/class/net/eth1/brport/bridge/bridge/stp_state': True
     }
     values2 = {
         'brport/bridge/bridge/stp_state': '2'
     }
     mock_exists.side_effect = mod_args_generator(values)
     mock_read_from_sys.side_effect = mod_args_generator(values2)
     _output = self.iface.stp_state()
     assert_equals(_output, '2')
     # test if subint is in stp bridge
     # assumption here is that only one type of stp bridge is running. either its
     # kernel or mstpd. even though in reality both I believe can coexist.
     values = {
         '/sys/class/net/eth1/brport/bridge/bridge/stp_state': False,
         '/sys/class/net/eth1.100/brport/bridge/bridge/stp_state': True
     }
     values2 = {
         'brport/bridge/bridge/stp_state': '2'
     }
     mock_exists.side_effect = mod_args_generator(values)
     mock_read_from_sys.side_effect = mod_args_generator(values2)
     mock_subints.return_value = ['eth1.100', 'eth1.101', 'eth1.110']
     _output = self.iface.stp_state()
     assert_equals(_output, '2')
 def test_read_link_state(self, mock_read_oneline):
     """ test get link state """
     # port is admin down
     values = {
         '/sys/class/net/eth1/carrier': None,
         '/sys/class/net/eth1/operstate': 'down'
     }
     mock_read_oneline.side_effect = mod_args_generator(values)
     assert_equals(self.iface.linkstate, 0)
     # port is down
     values = {
         '/sys/class/net/eth1/carrier': '0',
         '/sys/class/net/eth1/operstate': 'down'
     }
     mock_read_oneline.side_effect = mod_args_generator(values)
     assert_equals(self.iface.linkstate, 1)
     # clear link_state
     self.iface._linkstate = None
     # port is up
     values = {
         '/sys/class/net/eth1/carrier': '1',
         '/sys/class/net/eth1/operstate': 'up'
     }
     mock_read_oneline.side_effect = mod_args_generator(values)
     self.iface._linkstate = None
     assert_equals(self.iface.linkstate, 2)
     # port is dormant
     values = {
         '/sys/class/net/eth1/carrier': '1',
         '/sys/class/net/eth1/operstate': 'dormant'
     }
     mock_read_oneline.side_effect = mod_args_generator(values)
     self.iface._linkstate = None
     assert_equals(self.iface.linkstate, 3)
    def test_stp_details(self, mock_read_from_sys, mock_exec,
                         mock_os_listdir):
        mock_exec.return_value = io.open(
            'tests/test_netshowlib/mstpctl_showall').read()
        values = {('bridge/vlan_filtering', 'br1'): None,
                  ('bridge/stp_state', 'br1', True): '2'}
        mock_read_from_sys.side_effect = mod_args_generator(values)
        values4 = {
            ('/sys/class/net/br1/brif',): ['swp3.1', 'swp4.1']
        }
        mock_os_listdir.side_effect = mod_args_generator(values4)
        _output = self.piface.stp_details()
        assert_equals(re.split(r'\s{3,}', _output.split('\n')[2]),
                      ['stp_mode:', 'RSTP / per vlan instance'])

        assert_equals(re.split(r'\s{3,}', _output.split('\n')[3]),
                      ['root_port:', 'root_switch'])
        assert_equals(re.split(r'\s{3,}', _output.split('\n')[4]),
                      ['ports_in_designated_role:  swp3-4'])
        assert_equals(re.split(r'\s{3,}', _output.split('\n')[5]),
                      ['ports_in_alternate_role:', 'none'])
        assert_equals(re.split(r'\s{3,}', _output.split('\n')[6]),
                      ['root_priority:', '32768'])
        assert_equals(re.split(r'\s{3,}', _output.split('\n')[7]),
                      ['bridge_priority:', '32768'])
        assert_equals(re.split(r'\s{3,}', _output.split('\n')[8]),
                      ['last_tcn:', 'swp4.1 (15 days, 20:34:24)'])
        assert_equals(re.split(r'\s{3,}', _output.split('\n')[9]),
                      ['802.1q_tag:', '1'])
    def test_is_bridgemem_port_type(self, mock_path_exists, mock_get_subints):
        # port is not a l2 port
        values = {'/sys/class/net/eth1/brport': False}
        mock_path_exists.side_effect = mod_args_generator(values)
        mock_get_subints.return_value = []
        assert_equals(self.iface.get_bridgemem_port_type(), 0)
        # port is not a l2 port but has subints that are l2 ports
        values = {
            '/sys/class/net/eth1/brport': False,
            '/sys/class/net/eth1.100/brport': True
        }
        mock_get_subints.return_value = ['eth1.100']
        mock_path_exists.side_effect = mod_args_generator(values)
        assert_equals(self.iface.get_bridgemem_port_type(), 2)

        # port is an access
        mock_get_subints.return_value = []
        values = {'/sys/class/net/eth1/brport': True}
        mock_path_exists.side_effect = mod_args_generator(values)
        assert_equals(self.iface.get_bridgemem_port_type(), 1)
        # if port has native port that is in bridge and subints in bridge
        mock_get_subints.return_value = ['eth1.100']
        values = {
            '/sys/class/net/eth1/brport': True,
            '/sys/class/net/eth1.100/brport': True
        }
        mock_path_exists.side_effect = mod_args_generator(values)
        assert_equals(self.iface.get_bridgemem_port_type(), 2)
 def test_state_access_port(self, mock_symlink, mock_os_path,
                            mock_oneline):
     mock_subint = MagicMock()
     self.iface.get_sub_interfaces = mock_subint
     # bridgemember is access port
     mock_subint = []
     mock_symlink.return_value = 'br10'
     values = {
         '/sys/class/net/eth1/brport': True,
         '/sys/class/net/eth1/brport/bridge/bridge/stp_state': '1'
     }
     values2 = {
         '/sys/class/net/eth1/brport/state': '3',
         '/sys/class/net/eth1/brport/bridge/bridge/root_port': 'aaa',
         '/sys/class/net/eth1/brport/bridge/bridge/stp_state': '1',
         '/sys/class/net/eth1/brport/port_id': 'aaa'
     }
     mock_oneline.side_effect = mod_args_generator(values2)
     mock_os_path.side_effect = mod_args_generator(values)
     briface = linux_bridge.Bridge('br10')
     linux_bridge.BRIDGE_CACHE['br10'] = briface
     assert_equals(self.stp.state, {
         'disabled': [],
         'blocking': [],
         'forwarding': [briface],
         'root': [briface],
         'intransition': [],
         'stp_disabled': []
     })
 def test_stp_details(self, mock_read_sys, mock_listdir, mock_file_oneline,
                      mock_is_root):
     mock_is_root.return_value = False
     mock_listdir.return_value = ['eth1', 'eth2']
     values1 = {
         'bridge/stp_state': '1',
         'bridge/root_id': '4000.fe54007e7eeb',
         'bridge/bridge_id': '8000.fe54007e7111'
     }
     values2 = {
         '/sys/class/net/eth1/brport/state': '3',
         '/sys/class/net/eth1/brport/bridge/bridge/root_port': '1',
         '/sys/class/net/eth1/brport/port_id': '1',
         '/sys/class/net/eth2/brport/state': '0',
         '/sys/class/net/eth2/brport/bridge/bridge/stp_state': '1',
         '/sys/class/net/eth2/brport/bridge/bridge/root_port': '1',
         '/sys/class/net/eth2/brport/port_id': '2',
     }
     mock_read_sys.side_effect = mod_args_generator(values1)
     mock_file_oneline.side_effect = mod_args_generator(values2)
     _output = self.piface.stp_details()
     _outputtable = _output.split('\n')
     assert_equals(re.split(r'\s{2,}', _outputtable[2]),
                   ['stp_mode:', '802.1d / per bridge instance'])
     assert_equals(_outputtable[3].split(), ['root_port:', 'eth1'])
     assert_equals(_outputtable[4].split(), ['root_priority:', '16384'])
     assert_equals(_outputtable[5].split(), ['bridge_priority:', '32768'])
     assert_equals(_outputtable[6].split(), ['802.1q_tag', 'untagged'])
 def test_stp_details(self, mock_read_sys, mock_listdir,
                      mock_file_oneline, mock_is_root):
     mock_is_root.return_value = False
     mock_listdir.return_value = ['eth1', 'eth2']
     values1 = {
         'bridge/stp_state': '1',
         'bridge/root_id': '4000.fe54007e7eeb',
         'bridge/bridge_id': '8000.fe54007e7111'}
     values2 = {
         '/sys/class/net/eth1/brport/state': '3',
         '/sys/class/net/eth1/brport/bridge/bridge/root_port': '1',
         '/sys/class/net/eth1/brport/port_id': '1',
         '/sys/class/net/eth2/brport/state': '0',
         '/sys/class/net/eth2/brport/bridge/bridge/stp_state': '1',
         '/sys/class/net/eth2/brport/bridge/bridge/root_port': '1',
         '/sys/class/net/eth2/brport/port_id': '2',
     }
     mock_read_sys.side_effect = mod_args_generator(values1)
     mock_file_oneline.side_effect = mod_args_generator(values2)
     _output = self.piface.stp_details()
     _outputtable = _output.split('\n')
     assert_equals(re.split(r'\s{2,}', _outputtable[2]),
                   ['stp_mode:', '802.1d / per bridge instance'])
     assert_equals(_outputtable[3].split(),
                   ['root_port:', 'eth1'])
     assert_equals(_outputtable[4].split(),
                   ['root_priority:', '16384'])
     assert_equals(_outputtable[5].split(), ['bridge_priority:', '32768'])
     assert_equals(_outputtable[6].split(), ['802.1q_tag', 'untagged'])
 def test_stp_summary(self, mock_is_root, mock_read_from_sys,
                      mock_listdir, mock_oneline):
     # if stp is disabled
     mock_read_from_sys.return_value = '0'
     assert_equals(self.piface.stp_summary().split(), ['stp:', 'disabled'])
     # if stp is root
     values = {
         'bridge/stp_state': '1',
         'bridge/root_id': '4000.fe54007e7eeb',
         'bridge/bridge_id': '4000.fe54007e7eeb'}
     mock_read_from_sys.side_effect = mod_args_generator(values)
     mock_is_root.return_value = True
     assert_equals(self.piface.stp_summary().split(), ['stp:', 'rootswitch(16384)'])
     # if stp is not root
     values = {
         'bridge/stp_state': '1',
         'bridge/root_id': '4000.fe54007e7eeb',
         'bridge/bridge_id': '8000.fe54007e7111'}
     values2 = {
         '/sys/class/net/eth1/brport/state': '3',
         '/sys/class/net/eth1/brport/bridge/bridge/root_port': '1',
         '/sys/class/net/eth1/brport/port_id': '1',
         '/sys/class/net/eth2/brport/state': '0',
         '/sys/class/net/eth2/brport/bridge/bridge/stp_state': '1',
         '/sys/class/net/eth2/brport/bridge/bridge/root_port': '1',
         '/sys/class/net/eth2/brport/port_id': '2',
     }
     mock_oneline.side_effect = mod_args_generator(values2)
     mock_read_from_sys.side_effect = mod_args_generator(values)
     mock_is_root.return_value = False
     mock_listdir.return_value = ['eth1', 'eth2']
     assert_equals(self.piface.stp_summary().split(),
                   ['stp:', 'eth1(root)', '16384(root_priority)'])
    def test_cli_output(self, mock_read_from_sys, mock_exec,
                        mock_os_listdir):
        values10 = {('/sbin/mstpctl showall',):
                    io.open('tests/test_netshowlib/mstpctl_showall').read()}
        mock_exec.side_effect = mod_args_generator(values10)
        values = {('bridge/vlan_filtering', 'br1'): None,
                  ('bridge/stp_state', 'br1', True): '2',
                  ('carrier', 'br1', True): '1',
                  ('operstate', 'br1', True): 'up',
                  ('address', 'br1', True): '11:22:33:44:55:66',
                  ('speed', 'br1', True): '10000',
                  ('ifalias', 'br1', True): None,
                  ('operstate', 'br1', True): 'up',
                  ('mtu', 'br1', True): '1500'}
        mock_read_from_sys.side_effect = mod_args_generator(values)
        values4 = {
            ('/sys/class/net/br1/brif',): ['swp3.1', 'swp4.1']
        }
        mock_os_listdir.side_effect = mod_args_generator(values4)
        _output = self.piface.cli_output()
        _outputtable = _output.split('\n')
        # checks to make sure stp details is there
        assert_equals(re.split(r'\s{3,}', _outputtable[10]),
                      ['root_priority:', '32768'])

        assert_equals(_outputtable[17], 'ports in Forwarding state')
        assert_equals(_outputtable[19], 'swp3-4')
    def test_bondstate(self, mock_read_from_sys):
        values = {"carrier": "0", "operstate": "down", "bonding/mode": "active-backup 2"}
        mock_read_from_sys.side_effect = mod_args_generator(values)
        # mock_read_from_sys.return_value = 'active-backup 2'
        # if lacp is not set and linkstate is not up
        assert_equals(self.iface.bondstate, 0)

        # if lacp is not set and linkstate is up
        values = {"carrier": "1", "operstate": "up", "bonding/mode": "active-backup 2"}
        mock_read_from_sys.side_effect = mod_args_generator(values)
        assert_equals(self.iface.bondstate, 1)

        # if lacp is set and agg_id is same
        values = {"carrier": "1", "operstate": "up", "bonding/mode": "802.3ad 4"}
        mock_read_from_sys.side_effect = mod_args_generator(values)
        bondingfile = io.open("tests/test_netshowlib/proc_net_bonding_agg_id_match.txt")
        with mock.patch("io.open") as mock_open:
            mock_open.return_value = bondingfile
            assert_equals(self.iface.bondstate, 1)

        # if lacp is set and agg_id is different
        bondingfile = io.open("tests/test_netshowlib/proc_net_bonding_agg_id_no_match.txt")
        with mock.patch("io.open") as mock_open:
            mock_open.return_value = bondingfile
            assert_equals(self.iface.bondstate, 0)
Example #16
0
 def test_bond_details(self, mock_read_from_sys, mock_file_oneline):
     # with lacp
     values1 = {
         'bonding/mode': '802.3ad 4',
         'bonding/xmit_hash_policy': 'layer3+4 2',
         'bonding/min_links': '2'
     }
     values2 = {
         '/sys/class/net/bond0/bonding/ad_sys_priority': '65535',
         '/sys/class/net/bond0/bonding/lacp_rate': 'fast 1'
     }
     mock_read_from_sys.side_effect = mod_args_generator(values1)
     mock_file_oneline.side_effect = mod_args_generator(values2)
     _output = self.piface.bond_details()
     _outputtable = _output.split('\n')
     assert_equals(_outputtable[0], 'bond_details')
     assert_equals(_outputtable[2].split(), ['bond_mode:', 'lacp'])
     assert_equals(_outputtable[3].split(), ['load_balancing:', 'layer2+3'])
     assert_equals(_outputtable[4].split(), ['minimum_links:', '2'])
     assert_equals(_outputtable[5].split(), ['lacp_sys_priority:', '65535'])
     assert_equals(_outputtable[6].split(), ['lacp_rate:', 'fast_lacp'])
     assert_equals(len(_output.split('\n')), 9)
     # without lacp
     values1 = {
         'bonding/mode': 'something_else 2',
         'bonding/xmit_hash_policy': 'layer3+4 2',
         'bonding/min_links': '2'
     }
     mock_read_from_sys.side_effect = mod_args_generator(values1)
     _output = self.piface.bond_details()
     assert_equals(len(_output.split('\n')), 7)
Example #17
0
 def test_lldp_details(self, mock_read_from_sys, mock_file_oneline,
                       mock_lldp):
     values1 = {
         'bonding/slaves': 'eth20 eth30',
         'bonding/mode': 'something 2',
         'operstate': 'up',
         'carrier': '1',
         'operstate': 'up'
     }
     values2 = {}
     values = [{
         'adj_port': 'eth2',
         'adj_hostname': 'switch1'
     }, {
         'adj_port': 'eth10',
         'adj_hostname': 'switch2'
     }]
     mock_lldp.return_value = values
     mock_read_from_sys.side_effect = mod_args_generator(values1)
     mock_file_oneline.side_effect = mod_args_generator(values2)
     _output = self.piface.lldp_details()
     _outputtable = _output.split('\n')
     assert_equals(_outputtable[0].split(), ['lldp'])
     assert_equals(_outputtable[2].split(),
                   ['eth20(P)', '====', 'eth2(switch1)'])
     assert_equals(_outputtable[3].split(), ['====', 'eth10(switch2)'])
     assert_equals(_outputtable[4].split(),
                   ['eth30(P)', '====', 'eth10(switch2)'])
Example #18
0
 def test_vlan_filtering(self, mock_read_from_sys):
     values = {('bridge/vlan_filtering', 'br0'): '1'}
     mock_read_from_sys.side_effect = mod_args_generator(values)
     assert_equals(self.iface.vlan_filtering, 1)
     values = {('bridge/vlan_filtering', 'br0'): None}
     mock_read_from_sys.side_effect = mod_args_generator(values)
     assert_equals(self.iface.vlan_filtering, 0)
 def test_cache_feature_runs(self, mock_import):
     # test if features=None
     mock_ip_addr = MagicMock()
     mock_lldp = MagicMock()
     mock_ip_neighbor = MagicMock()
     values = {
         'netshowlib.linux.ip_address': mock_ip_addr,
         'netshowlib.linux.lldp': mock_lldp,
         'netshowlib.linux.ip_neighbor': mock_ip_neighbor
     }
     mock_import.side_effect = mod_args_generator(values)
     self.cache.run()
     assert_equals(mock_ip_neighbor.cacheinfo.call_count, 1)
     assert_equals(mock_lldp.cacheinfo.call_count, 1)
     assert_equals(mock_ip_addr.cacheinfo.call_count, 1)
     mock_import.reset_mock()
     # test if features=['ipaddr']
     mock_ipaddr = MagicMock()
     mock_ipaddr.cacheinfo.return_value = 'ip cache info'
     values = {'netshowlib.linux.ip_address': mock_ipaddr}
     mock_import.side_effect = mod_args_generator(values)
     self.cache.run(features={'ip_address': 'linux'})
     assert_equals(mock_import.call_args_list,
                   [mock.call('netshowlib.linux.ip_address')])
     assert_equals(self.cache.ip_address, 'ip cache info')
 def test_bond_details(self, mock_read_from_sys, mock_file_oneline):
     # with lacp
     values1 = {'bonding/mode': '802.3ad 4',
                'bonding/xmit_hash_policy': 'layer3+4 2',
                'bonding/min_links': '2'}
     values2 = {
         '/sys/class/net/bond0/bonding/ad_sys_priority': '65535',
         '/sys/class/net/bond0/bonding/lacp_rate': 'fast 1'
     }
     mock_read_from_sys.side_effect = mod_args_generator(values1)
     mock_file_oneline.side_effect = mod_args_generator(values2)
     _output = self.piface.bond_details()
     _outputtable = _output.split('\n')
     assert_equals(_outputtable[0], 'bond_details')
     assert_equals(_outputtable[2].split(), ['bond_mode:', 'lacp'])
     assert_equals(_outputtable[3].split(), ['load_balancing:', 'layer2+3'])
     assert_equals(_outputtable[4].split(), ['minimum_links:', '2'])
     assert_equals(_outputtable[5].split(), ['lacp_sys_priority:', '65535'])
     assert_equals(_outputtable[6].split(), ['lacp_rate:', 'fast_lacp'])
     assert_equals(len(_output.split('\n')), 9)
     # without lacp
     values1 = {'bonding/mode': 'something_else 2',
                'bonding/xmit_hash_policy': 'layer3+4 2',
                'bonding/min_links': '2'}
     mock_read_from_sys.side_effect = mod_args_generator(values1)
     _output = self.piface.bond_details()
     assert_equals(len(_output.split('\n')), 7)
 def test_abbrev_linksummary(self, mock_read_from_sys):
     values = {'carrier': '1', 'operstate': 'up'}
     mock_read_from_sys.side_effect = mod_args_generator(values)
     assert_equals(self.piface.abbrev_linksummary(self.piface.iface), 'U')
     values = {'carrier': '0', 'operstate': 'down'}
     mock_read_from_sys.side_effect = mod_args_generator(values)
     assert_equals(self.piface.abbrev_linksummary(self.piface.iface), 'D')
 def test_state_access_port(self, mock_symlink, mock_os_path, mock_oneline):
     mock_subint = MagicMock()
     self.iface.get_sub_interfaces = mock_subint
     # bridgemember is access port
     mock_subint = []
     mock_symlink.return_value = 'br10'
     values = {
         '/sys/class/net/eth1/brport': True,
         '/sys/class/net/eth1/brport/bridge/bridge/stp_state': '1'
     }
     values2 = {
         '/sys/class/net/eth1/brport/state': '3',
         '/sys/class/net/eth1/brport/bridge/bridge/root_port': 'aaa',
         '/sys/class/net/eth1/brport/bridge/bridge/stp_state': '1',
         '/sys/class/net/eth1/brport/port_id': 'aaa'
     }
     mock_oneline.side_effect = mod_args_generator(values2)
     mock_os_path.side_effect = mod_args_generator(values)
     briface = linux_bridge.Bridge('br10')
     linux_bridge.BRIDGE_CACHE['br10'] = briface
     assert_equals(
         self.stp.state, {
             'disabled': [],
             'blocking': [],
             'forwarding': [briface],
             'root': [briface],
             'intransition': [],
             'stp_disabled': []
         })
 def test_summary(self, mock_read_from_sys, mock_file_oneline):
     values1 = {'carrier': '1', 'operstate': 'up',
                'operstate': 'up',
                'bonding/mode': 'something 2'}
     values2 = {}
     mock_read_from_sys.side_effect = mod_args_generator(values1)
     mock_file_oneline.side_effect = mod_args_generator(values2)
     assert_equals(self.piface.summary, ['master: bond0(UP)'])
    def test_is_vlan_aware_bridge(self, mock_read_from_sys):
        values = {('bridge/vlan_filtering', 'br1'): '1'}
        mock_read_from_sys.side_effect = mod_args_generator(values)
        assert_equals(self.piface.is_vlan_aware_bridge(), 'vlan_aware_bridge')

        values = {('bridge/vlan_filtering', 'br1'): None}
        mock_read_from_sys.side_effect = mod_args_generator(values)
        assert_equals(self.piface.is_vlan_aware_bridge(), '')
 def test_get_stp_root_state(self, mock_read_oneline):
     values = {'/sys/class/net/br0/bridge/root_id': '8000.3332222111',
               '/sys/class/net/br0/bridge/bridge_id': '8000.3332222111'}
     mock_read_oneline.side_effect = mod_args_generator(values)
     assert_equals(self.stp.is_root(), True)
     values = {'/sys/class/net/br0/bridge/root_id': '8000.3332222222',
               '/sys/class/net/br0/bridge/bridge_id': '8000.3332222111'}
     mock_read_oneline.side_effect = mod_args_generator(values)
     assert_equals(self.stp.is_root(), False)
Example #26
0
    def todo_single_iface_json(self, mock_stp_state, mock_is_bridgemem,
                               mock_symlink, mock_exec, mock_listdir,
                               mock_file, mock_read_oneline,
                               mock_os_path_exists):

        values10 = {
            ('/sys/class/net/swp3/brif', ): False,
            ('/sys/class/net/swp3', ): True,
            ('/sys/class/net/swp3/bonding', ): False,
            ('/sys/class/net/swp3/master/bonding', ): False,
            ('sys/class/net/swp3/brport/vlans', ): True,
            ('/sys/class/net/swp3/carrier', ): True,
            ('/sys/class/net/swp3.1/brport', ): True,
        }
        mock_os_path_exists.side_effect = mod_args_generator(values10)
        values4 = {
            ('/sys/class/net', ): ['swp3', 'swp3.1', 'swp3.2'],
            ('/sys/class/net/br0/brif', ): ['swp3'],
            ('/sys/class/net/br1/brif', ): ['swp3.1'],
            ('/sys/class/net/br2/brif', ): ['swp3.2']
        }
        mock_is_bridgemem.return_value = True
        mock_stp_state.return_value = '2'
        mock_listdir.side_effect = mod_args_generator(values4)
        values3 = {
            ('lspci -nn', ):
            '',
            ('/sbin/ethtool -S swp3', ):
            '',
            ('/sbin/mstpctl showall', ):
            open('tests/test_netshowlib/mstpctl_showall').read(),
            ('/usr/sbin/lldpctl -f xml', ):
            '<xml></xml>'
        }
        mock_exec.side_effect = mod_args_generator(values3)
        values = {
            ('bridge/stp_state', ): '2',
            ('brport/vlans', ): None,
            ('/sys/class/net/swp3/carrier', ): '1',
            ('/sys/class/net/swp3/speed', ): '1000',
            ('/sys/class/net/swp3/brport/vlans', ): None
        }
        mock_read_oneline.side_effect = mod_args_generator(values)
        values5 = {
            ('/sys/class/net/swp3/brport/bridge', ): 'br0',
            ('/sys/class/net/swp3.1/brport/bridge', ): 'br1',
            ('/sys/class/net/swp3.2/brport/bridge', ): 'br2'
        }
        mock_symlink.side_effect = mod_args_generator(values5)
        self.showint.single_iface = 'swp3'
        self.showint.use_json = True
        _output = self.showint.print_single_iface()
        from nose.tools import set_trace
        set_trace()
Example #27
0
 def test_summary(self, mock_read_from_sys, mock_file_oneline):
     values1 = {
         ('carrier', 'bond0', True): '0',
         ('carrier', 'eth22', True): '1',
         ('operstate', 'bond0', True): 'down',
         ('operstate', 'eth22', True): 'up',
         ('bonding/mode', 'bond0', True): 'something 1'
     }
     values2 = {}
     mock_read_from_sys.side_effect = mod_args_generator(values1)
     mock_file_oneline.side_effect = mod_args_generator(values2)
     assert_equals(self.piface.summary, ['master: bond0(DP)'])
 def test_designated_ports(self, mock_read_from_sys, mock_exec,
                           mock_os_listdir):
     mock_exec.return_value = io.open(
         'tests/test_netshowlib/mstpctl_showall').read()
     values = {('bridge/vlan_filtering', 'br1', True): None,
               ('bridge/stp_state', 'br1', True): '2'}
     mock_read_from_sys.side_effect = mod_args_generator(values)
     values4 = {
         ('/sys/class/net/br1/brif',): ['swp3.1', 'swp4.1']
     }
     mock_os_listdir.side_effect = mod_args_generator(values4)
     assert_equals(self.piface.designated_ports(), ['swp3-4'])
    def test_state_trunk_port(self, mock_symlink, mock_os_path,
                              mock_oneline):
        mock_subint = MagicMock()
        mock_subint.return_value = ['eth1.11', 'eth1.20', 'eth1.30']
        self.iface.get_sub_interfaces = mock_subint
        # bridgemember is trunk port
        values = {
            '/sys/class/net/eth1/brport/bridge/bridge/stp_state': True,
            '/sys/class/net/eth1.11/brport/bridge/bridge/stp_state': True,
            '/sys/class/net/eth1.20/brport/bridge/bridge/stp_state': True,
            '/sys/class/net/eth1.30/brport/bridge/bridge/stp_state': True,
            '/sys/class/net/eth1/brport': True,
            '/sys/class/net/eth1.11/brport': True,
            '/sys/class/net/eth1.20/brport': False,
            '/sys/class/net/eth1.30/brport': True,
        }
        values2 = {
            '/sys/class/net/eth1/brport/state': '3',
            '/sys/class/net/eth1/brport/bridge/bridge/root_port': 'aaa',
            '/sys/class/net/eth1/brport/bridge/bridge/stp_state': '1',
            '/sys/class/net/eth1/brport/port_id': 'aaa',
            '/sys/class/net/eth1.11/brport/state': '0',
            '/sys/class/net/eth1.11/brport/bridge/bridge/stp_state': '1',
            '/sys/class/net/eth1.11/brport/bridge/bridge/root_port': 'aaa',
            '/sys/class/net/eth1.11/brport/port_id': 'aaa',
            '/sys/class/net/eth1.30/brport/state': '0',
            '/sys/class/net/eth1.30/brport/bridge/bridge/stp_state': '0'

        }
        values3 = {
            '/sys/class/net/eth1/brport/bridge': 'br10',
            '/sys/class/net/eth1.11/brport/bridge': 'br11',
            '/sys/class/net/eth1.20/brport/bridge': None,
            '/sys/class/net/eth1.30/brport/bridge': 'br30'
        }
        mock_symlink.side_effect = mod_args_generator(values3)
        mock_oneline.side_effect = mod_args_generator(values2)
        mock_os_path.side_effect = mod_args_generator(values)
        br10 = linux_bridge.Bridge('br10')
        br11 = linux_bridge.Bridge('br11')
        br30 = linux_bridge.Bridge('br30')
        linux_bridge.BRIDGE_CACHE['br10'] = br10
        linux_bridge.BRIDGE_CACHE['br11'] = br11
        linux_bridge.BRIDGE_CACHE['br30'] = br30
        assert_equals(self.stp.state, {
            'disabled': [br11],
            'blocking': [],
            'forwarding': [br10],
            'root': [br10],
            'stp_disabled': [br30],
            'intransition': []
        })
 def test_alternate_ports(self, mock_read_from_sys, mock_exec,
                          mock_os_listdir):
     self.piface.iface = cumulus_bridge.Bridge('br0')
     mock_exec.return_value = io.open(
         'tests/test_netshowlib/mstpctl_showall').read()
     values = {('bridge/vlan_filtering', 'br0'): None,
               ('bridge/stp_state', 'br0', True): '2'}
     mock_read_from_sys.side_effect = mod_args_generator(values)
     values4 = {
         ('/sys/class/net/br0/brif',): ['swp3', 'swp4']
     }
     mock_os_listdir.side_effect = mod_args_generator(values4)
     assert_equals(self.piface.alternate_ports(), ['swp4'])
Example #31
0
 def test_stp_mode(self, mock_read_from_sys, mock_exec):
     mock_exec.return_value = io.open(
         'tests/test_netshowlib/mstpctl_showall').read()
     values = {('bridge/vlan_filtering', 'br0'): '1',
               ('bridge/stp_state', 'br0', True): '2'}
     mock_read_from_sys.side_effect = mod_args_generator(values)
     # CIST RSTP
     assert_equals(self.iface.stp.mode, 3)
     values = {('bridge/vlan_filtering', 'br0'): None,
               ('bridge/stp_state', 'br0', True): '2'}
     mock_read_from_sys.side_effect = mod_args_generator(values)
     # PSVT RSTP
     assert_equals(self.iface.stp.mode, 2)
 def test_get_stp_root_state(self, mock_read_oneline):
     values = {
         '/sys/class/net/br0/bridge/root_id': '8000.3332222111',
         '/sys/class/net/br0/bridge/bridge_id': '8000.3332222111'
     }
     mock_read_oneline.side_effect = mod_args_generator(values)
     assert_equals(self.stp.is_root(), True)
     values = {
         '/sys/class/net/br0/bridge/root_id': '8000.3332222222',
         '/sys/class/net/br0/bridge/bridge_id': '8000.3332222111'
     }
     mock_read_oneline.side_effect = mod_args_generator(values)
     assert_equals(self.stp.is_root(), False)
Example #33
0
    def test_get_vlan_list(self, mock_symlink, mock_os_path, mock_oneline,
                           mock_os_listdir):
        mock_subint = MagicMock()
        mock_subint.return_value = ['bond0.11', 'bond0.20', 'bond0.30']
        self.iface.get_sub_interfaces = mock_subint
        # bridgemember is trunk port
        values = {
            '/sys/class/net/bond0/brport': True,
            '/sys/class/net/bond0.11/brport': True,
            '/sys/class/net/bond0.20/brport': False,
            '/sys/class/net/bond0.30/brport': True,
        }
        values2 = {
            '/sys/class/net/bond0/brport/state': '3',
            '/sys/class/net/bond0/brport/bridge/bridge/root_port': 'aaa',
            '/sys/class/net/bond0/brport/port_id': 'aaa',
            '/sys/class/net/bond0.11/brport/state': '0',
            '/sys/class/net/bond0.11/brport/bridge/bridge/stp_state': '1',
            '/sys/class/net/bond0.11/brport/bridge/bridge/root_port': 'aaa',
            '/sys/class/net/bond0.11/brport/port_id': 'aaa',
            '/sys/class/net/bond0.30/brport/state': '0',
            '/sys/class/net/bond0.30/brport/bridge/bridge/stp_state': '0'
        }
        values3 = {
            '/sys/class/net/bond0/brport/bridge': 'br10',
            '/sys/class/net/bond0.11/brport/bridge': 'br11',
            '/sys/class/net/bond0.20/brport/bridge': None,
            '/sys/class/net/bond0.30/brport/bridge': 'br30'
        }
        values4 = {
            '/sys/class/net/br30/brif': ['bond0.30'],
            '/sys/class/net/br11/brif': ['bond0.11'],
            '/sys/class/net/br10/brif': ['bond0']
        }

        mock_os_listdir.side_effect = mod_args_generator(values4)
        mock_symlink.side_effect = mod_args_generator(values3)
        mock_oneline.side_effect = mod_args_generator(values2)
        mock_os_path.side_effect = mod_args_generator(values)
        br10 = linux_bridge.Bridge('br10')
        br11 = linux_bridge.Bridge('br11')
        br30 = linux_bridge.Bridge('br30')
        linux_bridge.BRIDGE_CACHE['br10'] = br10
        linux_bridge.BRIDGE_CACHE['br11'] = br11
        linux_bridge.BRIDGE_CACHE['br30'] = br30
        vlanlist = self.iface.vlan_list
        assert_equals(vlanlist, {
            'br30': ['30'],
            'br10': ['0'],
            'br11': ['11']
        })
 def test_state_trunk_port(self, mock_symlink, mock_os_path, mock_oneline):
     mock_subint = MagicMock()
     mock_subint.return_value = ['eth1.11', 'eth1.20', 'eth1.30']
     self.iface.get_sub_interfaces = mock_subint
     # bridgemember is trunk port
     values = {
         '/sys/class/net/eth1/brport/bridge/bridge/stp_state': True,
         '/sys/class/net/eth1.11/brport/bridge/bridge/stp_state': True,
         '/sys/class/net/eth1.20/brport/bridge/bridge/stp_state': True,
         '/sys/class/net/eth1.30/brport/bridge/bridge/stp_state': True,
         '/sys/class/net/eth1/brport': True,
         '/sys/class/net/eth1.11/brport': True,
         '/sys/class/net/eth1.20/brport': False,
         '/sys/class/net/eth1.30/brport': True,
     }
     values2 = {
         '/sys/class/net/eth1/brport/state': '3',
         '/sys/class/net/eth1/brport/bridge/bridge/root_port': 'aaa',
         '/sys/class/net/eth1/brport/bridge/bridge/stp_state': '1',
         '/sys/class/net/eth1/brport/port_id': 'aaa',
         '/sys/class/net/eth1.11/brport/state': '0',
         '/sys/class/net/eth1.11/brport/bridge/bridge/stp_state': '1',
         '/sys/class/net/eth1.11/brport/bridge/bridge/root_port': 'aaa',
         '/sys/class/net/eth1.11/brport/port_id': 'aaa',
         '/sys/class/net/eth1.30/brport/state': '0',
         '/sys/class/net/eth1.30/brport/bridge/bridge/stp_state': '0'
     }
     values3 = {
         '/sys/class/net/eth1/brport/bridge': 'br10',
         '/sys/class/net/eth1.11/brport/bridge': 'br11',
         '/sys/class/net/eth1.20/brport/bridge': None,
         '/sys/class/net/eth1.30/brport/bridge': 'br30'
     }
     mock_symlink.side_effect = mod_args_generator(values3)
     mock_oneline.side_effect = mod_args_generator(values2)
     mock_os_path.side_effect = mod_args_generator(values)
     br10 = linux_bridge.Bridge('br10')
     br11 = linux_bridge.Bridge('br11')
     br30 = linux_bridge.Bridge('br30')
     linux_bridge.BRIDGE_CACHE['br10'] = br10
     linux_bridge.BRIDGE_CACHE['br11'] = br11
     linux_bridge.BRIDGE_CACHE['br30'] = br30
     assert_equals(
         self.stp.state, {
             'disabled': [br11],
             'blocking': [],
             'forwarding': [br10],
             'root': [br10],
             'stp_disabled': [br30],
             'intransition': []
         })
 def test_bondmem_details(self, mock_read_from_sys, mock_file_oneline):
     values1 = {'bonding/slaves': 'eth20 eth30',
                'carrier': '1', 'operstate': 'up',
                'bonding/mode': 'something 2',
                'speed': '1000',
                'ifalias': None}
     values2 = {}
     mock_read_from_sys.side_effect = mod_args_generator(values1)
     mock_file_oneline.side_effect = mod_args_generator(values2)
     _output = self.piface.bondmem_details()
     _outputtable = _output.split('\n')
     assert_equals(_outputtable[0].split(), ['port', 'speed', 'link_failures'])
     assert_equals(_outputtable[2].split(), ['up', 'eth20(P)', '1G', '0'])
     assert_equals(_outputtable[3].split(), ['up', 'eth30(P)', '1G', '0'])
    def test_trunk_summary(self, mock_symlink, mock_os_path, mock_oneline,
                           mock_os_listdir, mock_is_trunk):
        mock_is_trunk.return_value = True
        mock_subint = mock.MagicMock()
        mock_subint.return_value = ['eth22.11', 'eth22.20', 'eth22.30']
        self.piface.iface = linux_bridge.BridgeMember('eth22')
        self.piface.iface.get_sub_interfaces = mock_subint
        # bridgemember is trunk port
        values = {
            '/sys/class/net/eth22/brport': True,
            '/sys/class/net/eth22.11/brport': True,
            '/sys/class/net/eth22.20/brport': False,
            '/sys/class/net/eth22.30/brport': True,
        }
        values2 = {
            '/sys/class/net/eth22/brport/state': '3',
            '/sys/class/net/eth22/brport/bridge/bridge/root_port': 'aaa',
            '/sys/class/net/eth22/brport/port_id': 'aaa',
            '/sys/class/net/eth22.11/brport/state': '0',
            '/sys/class/net/eth22.11/brport/bridge/bridge/stp_state': '1',
            '/sys/class/net/eth22.11/brport/bridge/bridge/root_port': 'aaa',
            '/sys/class/net/eth22.11/brport/port_id': 'aaa',
            '/sys/class/net/eth22.30/brport/state': '0',
            '/sys/class/net/eth22.30/brport/bridge/bridge/stp_state': '0'
        }
        values3 = {
            '/sys/class/net/eth22/brport/bridge': 'br10',
            '/sys/class/net/eth22.11/brport/bridge': 'br11',
            '/sys/class/net/eth22.20/brport/bridge': None,
            '/sys/class/net/eth22.30/brport/bridge': 'br30'
        }
        values4 = {
            '/sys/class/net/br30/brif': ['eth22.30'],
            '/sys/class/net/br11/brif': ['eth22.11'],
            '/sys/class/net/br10/brif': ['eth22']
        }

        mock_os_listdir.side_effect = mod_args_generator(values4)
        mock_symlink.side_effect = mod_args_generator(values3)
        mock_oneline.side_effect = mod_args_generator(values2)
        mock_os_path.side_effect = mod_args_generator(values)
        br10 = linux_bridge.Bridge('br10')
        br11 = linux_bridge.Bridge('br11')
        br30 = linux_bridge.Bridge('br30')
        linux_bridge.BRIDGE_CACHE['br10'] = br10
        linux_bridge.BRIDGE_CACHE['br11'] = br11
        linux_bridge.BRIDGE_CACHE['br30'] = br30
        _output = self.piface.trunk_summary()
        assert_equals(_output[1], 'tagged: br11(11), br30(30)')
        assert_equals(_output[2], 'untagged: br10')
    def todo_single_iface_json(self,
                               mock_stp_state,
                               mock_is_bridgemem,
                               mock_symlink,
                               mock_exec,
                               mock_listdir,
                               mock_file,
                               mock_read_oneline,
                               mock_os_path_exists):

        values10 = {('/sys/class/net/swp3/brif',): False,
                    ('/sys/class/net/swp3',): True,
                    ('/sys/class/net/swp3/bonding',): False,
                    ('/sys/class/net/swp3/master/bonding',): False,
                    ('sys/class/net/swp3/brport/vlans',): True,
                    ('/sys/class/net/swp3/carrier',): True,
                    ('/sys/class/net/swp3.1/brport',): True,
                    }
        mock_os_path_exists.side_effect = mod_args_generator(values10)
        values4 = {('/sys/class/net',): ['swp3', 'swp3.1', 'swp3.2'],
                   ('/sys/class/net/br0/brif',): ['swp3'],
                   ('/sys/class/net/br1/brif',): ['swp3.1'],
                   ('/sys/class/net/br2/brif',): ['swp3.2']
                   }
        mock_is_bridgemem.return_value = True
        mock_stp_state.return_value = '2'
        mock_listdir.side_effect = mod_args_generator(values4)
        values3 = {('lspci -nn',): '',
                   ('/sbin/ethtool -S swp3', ): '',
                   ('/sbin/mstpctl showall',): open(
                       'tests/test_netshowlib/mstpctl_showall').read(),
                   ('/usr/sbin/lldpctl -f xml',): '<xml></xml>'}
        mock_exec.side_effect = mod_args_generator(values3)
        values = {('bridge/stp_state',): '2',
                  ('brport/vlans',): None,
                  ('/sys/class/net/swp3/carrier',): '1',
                  ('/sys/class/net/swp3/speed',): '1000',
                  ('/sys/class/net/swp3/brport/vlans',): None}
        mock_read_oneline.side_effect = mod_args_generator(values)
        values5 = {
            ('/sys/class/net/swp3/brport/bridge',): 'br0',
            ('/sys/class/net/swp3.1/brport/bridge',): 'br1',
            ('/sys/class/net/swp3.2/brport/bridge',): 'br2'
        }
        mock_symlink.side_effect = mod_args_generator(values5)
        self.showint.single_iface = 'swp3'
        self.showint.use_json = True
        _output = self.showint.print_single_iface()
        assert_equals(_output, '')
    def test_get_vlan_list(self, mock_symlink, mock_os_path,
                           mock_oneline, mock_os_listdir):
        mock_subint = MagicMock()
        mock_subint.return_value = ['eth1.11', 'eth1.20', 'eth1.30']
        self.iface.get_sub_interfaces = mock_subint
        # bridgemember is trunk port
        values = {
            '/sys/class/net/eth1/brport': True,
            '/sys/class/net/eth1.11/brport': True,
            '/sys/class/net/eth1.20/brport': False,
            '/sys/class/net/eth1.30/brport': True,
        }
        values2 = {
            '/sys/class/net/eth1/brport/state': '3',
            '/sys/class/net/eth1/brport/bridge/bridge/root_port': 'aaa',
            '/sys/class/net/eth1/brport/port_id': 'aaa',
            '/sys/class/net/eth1.11/brport/state': '0',
            '/sys/class/net/eth1.11/brport/bridge/bridge/stp_state': '1',
            '/sys/class/net/eth1.11/brport/bridge/bridge/root_port': 'aaa',
            '/sys/class/net/eth1.11/brport/port_id': 'aaa',
            '/sys/class/net/eth1.30/brport/state': '0',
            '/sys/class/net/eth1.30/brport/bridge/bridge/stp_state': '0'

        }
        values3 = {
            '/sys/class/net/eth1/brport/bridge': 'br10',
            '/sys/class/net/eth1.11/brport/bridge': 'br11',
            '/sys/class/net/eth1.20/brport/bridge': None,
            '/sys/class/net/eth1.30/brport/bridge': 'br30'
        }
        values4 = {
            '/sys/class/net/br30/brif': ['eth1.30'],
            '/sys/class/net/br11/brif': ['eth1.11'],
            '/sys/class/net/br10/brif': []
        }

        mock_os_listdir.side_effect = mod_args_generator(values4)
        mock_symlink.side_effect = mod_args_generator(values3)
        mock_oneline.side_effect = mod_args_generator(values2)
        mock_os_path.side_effect = mod_args_generator(values)
        br10 = linux_bridge.Bridge('br10')
        br11 = linux_bridge.Bridge('br11')
        br30 = linux_bridge.Bridge('br30')
        linux_bridge.BRIDGE_CACHE['br10'] = br10
        linux_bridge.BRIDGE_CACHE['br11'] = br11
        linux_bridge.BRIDGE_CACHE['br30'] = br30
        vlanlist = self.iface.vlan_list
        vlanlist = common.group_ports(vlanlist.keys())
        assert_equals(vlanlist, ['br10-11', 'br30'])
    def test_stp_summary(self,
                         mock_read_sys,
                         mock_symlink,
                         mock_exec):

        values2 = {('/sbin/mstpctl showall',): io.open(
            'tests/test_netshowlib/mstpctl_showall').read()}
        mock_exec.side_effect = mod_args_generator(values2)

        # vlans are 1-10,20-24,29-30,32,64,4092
        values = {('bridge/stp_state',): '2'}
        mock_read_sys.side_effect = mod_args_generator(values)

        _output = self.piface.stp_summary()
        assert_equals(_output, 'stp: rootswitch(32768)')
def test_provider_check(mock_pkg_requires, mock_import,
                        mock_glob,
                        mock_os_dirname):
    """ test os discovery """
    # return a directory with 3 OS types, each will return different priorities
    # choose the one with the highest priority
    mock_glob.return_value = ['path/providers/linux',
                              'path/providers/debian',
                              'path/providers/ubuntu']
    mock_linux = MagicMock()
    mock_linux.name_and_priority.return_value = {'Linux': 0}
    mock_debian = MagicMock()
    mock_debian.name_and_priority.return_value = {'Debian': 1}
    mock_debian = MagicMock()
    mock_debian.name_and_priority.return_value = {'Ubuntu': 2}
    mock_os_dirname.return_value = 'netshowlib'
    values = {
        'netshowlib.linux.provider_discovery': mock_linux,
        'netshowlib.debian.provider_discovery': mock_debian,
        'netshowlib.ubuntu.provider_discovery': mock_debian
    }
    mock_import.side_effect = mod_args_generator(values)
    mock_me = MagicMock()
    mock_me.location = '/me/and/my/loc'
    mock_pkg_requires.return_value = [mock_me]
    assert_equals(nn.provider_check(), 'ubuntu')
    mock_glob.assert_called_with('/me/and/my/loc/../../../share/netshow-lib/providers/*')
 def test_speed(self, mock_read_sys):
     values = {('speed', ): '1000',
               ('carrier',): '1',
               ('operstate',): 'up'}
     self.piface.iface._asic = {'asicname': 'xe2', 'initial_speed': '10000'}
     mock_read_sys.side_effect = mod_args_generator(values)
     assert_equals(self.piface.speed, '1G(sfp)')
Example #42
0
    def test_bondmem_details(self, mock_read_from_sys, mock_file_oneline,
                             mock_lldp):
        values1 = {
            'carrier': '1',
            'operstate': 'up',
            'bonding/mode': '802.3ad 4',
            'bonding/slaves': 'eth22 eth23',
            'bonding/xmit_hash_policy': 'layer3+4 1',
            'bonding/min_links': '2'
        }
        values2 = {
            '/sys/class/net/bond0/bonding/ad_sys_priority': '65535',
            '/sys/class/net/bond0/bonding/lacp_rate': 'slow 0'
        }
        values = [{
            'adj_port': 'eth2',
            'adj_hostname': 'switch1'
        }, {
            'adj_port': 'eth10',
            'adj_hostname': 'switch2'
        }]
        mock_lldp.return_value = values
        mock_read_from_sys.side_effect = mod_args_generator(values1)
        mock_file_oneline.side_effect = mod_args_generator(values2)
        _output = self.piface.bondmem_details()
        _outputtable = _output.split('\n')
        assert_equals(len(_outputtable), 13)
        assert_equals(_outputtable[0].split(r'\s{3,}'), ['bond_details'])
        assert_equals(re.split(r'\s{3,}', _outputtable[2]),
                      ['master_bond:', 'bond0'])
        assert_equals(re.split(r'\s{3,}', _outputtable[3]),
                      ['state_in_bond:', 'port_not_in_bond'])
        assert_equals(re.split(r'\s{3,}', _outputtable[4]),
                      ['link_failures:', '0'])
        assert_equals(re.split(r'\s{3,}', _outputtable[5]),
                      ['bond_members:', 'eth22, eth23'])

        assert_equals(re.split(r'\s{3,}', _outputtable[6]),
                      ['bond_mode:', 'lacp'])
        assert_equals(re.split(r'\s{3,}', _outputtable[7]),
                      ['load_balancing:', 'layer3+4'])
        assert_equals(re.split(r'\s{3,}', _outputtable[8]),
                      ['minimum_links:', '2'])
        assert_equals(re.split(r'\s{2,}', _outputtable[9]),
                      ['lacp_sys_priority:', '65535'])
        assert_equals(re.split(r'\s{3,}', _outputtable[10]),
                      ['lacp_rate:', 'slow_lacp'])
Example #43
0
 def test_abbver_bondstate(self, mock_parse_proc, mock_read_from_sys):
     values = {'bonding/mode': '802.3ad 4'}
     mock_read_from_sys.side_effect = mod_args_generator(values)
     bondmem = linux_bond.BondMember('eth22')
     bondmem._bondstate = 1
     assert_equals(self.piface.abbrev_bondstate(bondmem), 'P')
     bondmem._bondstate = 0
     assert_equals(self.piface.abbrev_bondstate(bondmem), 'N')
 def todo_bridgemem_details_vlan_aware_driver(self,
                                              mock_read_from_sys,
                                              mock_is_bridgemem,
                                              mock_symlink,
                                              mock_exec):
     values = {('/sbin/mstpctl showall',): open(
         'tests/test_netshowlib/mstpctl_showall').read()}
     mock_exec.side_effect = mod_args_generator(values)
     values2 = {('/sys/class/net/swp22/brport/bridge',): 'br22'}
     mock_symlink.side_effect = mod_args_generator(values2)
     values3 = {('brport/vlans', 'swp22',): open(
         'tests/test_netshowlib/all_vlans.txt').readlines()}
     mock_read_from_sys.side_effect = mod_args_generator(values3)
     _output = self.piface.bridgemem_details()
     _outputtable = _output.split('\n')
     assert_equals(_outputtable[0], 'vlans in disabled state')
     assert_equals(_outputtable[2], '1-10, 20-24, 29-30, 32, 64, 4092')
 def test_speed(self, mock_initial_speed, mock_read_from_sys):
     # admin down
     values = {('carrier',): None,
               ('operstate',): None}
     mock_read_from_sys.side_effect = mod_args_generator(values)
     mock_initial_speed.return_value = 'initial_speed'
     assert_equals(self.iface.speed, 'initial_speed')
     # carrier down, but admin up
     self.iface._speed = None
     values = {('operstate',): 'up', ('carrier',): '0', ('speed',): '0'}
     mock_read_from_sys.side_effect = mod_args_generator(values)
     assert_equals(self.iface.speed, '0')
     # carrier up, but admin up
     self.iface._speed = None
     values = {('operstate',): 'up', ('carrier',): '1', ('speed',): '1000'}
     mock_read_from_sys.side_effect = mod_args_generator(values)
     assert_equals(self.iface.speed, '1000')
    def test_is_svi(self, mock_read_from_sys, mock_subint):
        # is not subint
        assert_equals(self.iface.is_svi(), False)

        # is subint but bridge parent does not have vlan_filtering
        self.iface._name = 'br10.100'
        mock_subint.return_value = True
        values = {('bridge/vlan_filtering', 'br10'): '0'}
        mock_read_from_sys.side_effect = mod_args_generator(values)
        assert_equals(self.iface.is_svi(), False)

        # is subint but bridge parent does have vlan filtering
        self.iface._name = 'br10.100'
        mock_subint.return_value = True
        values = {('bridge/vlan_filtering', 'br10'): '1'}
        mock_read_from_sys.side_effect = mod_args_generator(values)
        assert_equals(self.iface.is_svi(), True)
 def test_abbver_bondstate(self, mock_parse_proc, mock_read_from_sys):
     values = {'bonding/mode': '802.3ad 4'}
     mock_read_from_sys.side_effect = mod_args_generator(values)
     bondmem = linux_bond.BondMember('eth22')
     bondmem._bondstate = 1
     assert_equals(self.piface.abbrev_bondstate(bondmem), 'P')
     bondmem._bondstate = 0
     assert_equals(self.piface.abbrev_bondstate(bondmem), 'N')
Example #48
0
 def test_bondmem_details(self, mock_read_from_sys, mock_file_oneline):
     values1 = {
         'bonding/slaves': 'eth20 eth30',
         'carrier': '1',
         'operstate': 'up',
         'bonding/mode': 'something 2',
         'speed': '1000',
         'ifalias': None
     }
     values2 = {}
     mock_read_from_sys.side_effect = mod_args_generator(values1)
     mock_file_oneline.side_effect = mod_args_generator(values2)
     _output = self.piface.bondmem_details()
     _outputtable = _output.split('\n')
     assert_equals(_outputtable[0].split(),
                   ['port', 'speed', 'link_failures'])
     assert_equals(_outputtable[2].split(), ['up', 'eth20(P)', '1G', '0'])
     assert_equals(_outputtable[3].split(), ['up', 'eth30(P)', '1G', '0'])