Esempio n. 1
0
    def test_multi_isl_port_down(self):
        sw_alpha = make_datapath_id(1)
        sw_beta = make_datapath_id(2)
        sw_gamma = make_datapath_id(3)

        isl_alpha_beta = model.InterSwitchLink(
            model.NetworkEndpoint(sw_alpha, 2),
            model.NetworkEndpoint(sw_beta, 2), None)
        isl_beta_alpha = isl_alpha_beta.reversed()
        isl_beta_gamma = model.InterSwitchLink(
            model.NetworkEndpoint(sw_beta, 2),
            model.NetworkEndpoint(sw_gamma, 3), None)
        isl_gamma_beta = isl_beta_gamma.reversed()

        for dpid in sw_alpha, sw_beta, sw_gamma:
            self.assertTrue(make_switch_add(dpid))

        self.assertTrue(share.exec_isl_discovery(isl_alpha_beta))
        self.assertTrue(share.exec_isl_discovery(isl_beta_alpha))
        self.assertTrue(share.exec_isl_discovery(isl_beta_gamma))
        self.assertTrue(share.exec_isl_discovery(isl_gamma_beta))

        self.assertTrue(make_port_down(isl_alpha_beta.dest))
        self.ensure_isl_props(neo4j_connect, isl_alpha_beta,
                              ISL_STATUS_PROPS_HALF_UP)
        self.ensure_isl_props(neo4j_connect, isl_beta_alpha,
                              ISL_STATUS_PROPS_DOWN)
        self.ensure_isl_props(neo4j_connect, isl_beta_gamma,
                              ISL_STATUS_PROPS_DOWN)
        self.ensure_isl_props(neo4j_connect, isl_gamma_beta,
                              ISL_STATUS_PROPS_HALF_UP)
Esempio n. 2
0
    def test_isl_status(self):
        src_endpoint, dst_endpoint = self.src_endpoint, self.dst_endpoint
        forward = model.InterSwitchLink(src_endpoint, dst_endpoint, None)
        reverse = forward.reversed()

        make_switch_add(src_endpoint.dpid)
        make_switch_add(dst_endpoint.dpid)

        status_down = {
            'actual': ISL_STATUS_INACTIVE,
            'status': ISL_STATUS_INACTIVE
        }
        status_half_up = {
            'actual': ISL_STATUS_ACTIVE,
            'status': ISL_STATUS_INACTIVE
        }
        status_up = {'actual': ISL_STATUS_ACTIVE, 'status': ISL_STATUS_ACTIVE}

        # 0 0
        self.assertTrue(share.exec_isl_discovery(forward))

        # 1 0
        self.ensure_isl_props(neo4j_connect, forward, status_half_up)
        self.ensure_isl_props(neo4j_connect, reverse, status_down)
        self.assertTrue(share.exec_isl_discovery(reverse))

        # 1 1
        self.ensure_isl_props(neo4j_connect, forward, status_up)
        self.ensure_isl_props(neo4j_connect, reverse, status_up)
        self.assertTrue(make_isl_failed(src_endpoint))

        # 0 1
        self.ensure_isl_props(neo4j_connect, forward, status_down)
        self.ensure_isl_props(neo4j_connect, reverse, status_half_up)
        self.assertTrue(share.exec_isl_discovery(forward))

        # 1 1
        self.ensure_isl_props(neo4j_connect, forward, status_up)
        self.ensure_isl_props(neo4j_connect, reverse, status_up)
        self.assertTrue(make_isl_failed(dst_endpoint))

        # 1 0
        self.ensure_isl_props(neo4j_connect, forward, status_half_up)
        self.ensure_isl_props(neo4j_connect, reverse, status_down)
        self.assertTrue(share.exec_isl_discovery(reverse))

        # 1 1
        self.ensure_isl_props(neo4j_connect, forward, status_up)
        self.ensure_isl_props(neo4j_connect, reverse, status_up)
        self.assertTrue(make_isl_failed(src_endpoint))

        # 0 1
        self.ensure_isl_props(neo4j_connect, forward, status_down)
        self.ensure_isl_props(neo4j_connect, reverse, status_half_up)
        self.assertTrue(make_isl_failed(dst_endpoint))

        # 0 0
        self.ensure_isl_props(neo4j_connect, forward, status_down)
        self.ensure_isl_props(neo4j_connect, reverse, status_down)
Esempio n. 3
0
    def test_switch_unplug(self):
        src_endpoint, dst_endpoint = self.src_endpoint, self.dst_endpoint
        forward = model.InterSwitchLink(src_endpoint, dst_endpoint, None)
        reverse = forward.reversed()

        self.assertTrue(make_switch_add(src_endpoint.dpid))
        self.assertTrue(make_switch_add(dst_endpoint.dpid))
        self.assertTrue(share.exec_isl_discovery(forward))
        self.assertTrue(share.exec_isl_discovery(reverse))

        self.ensure_isl_props(neo4j_connect, forward, ISL_STATUS_PROPS_UP)
        self.ensure_isl_props(neo4j_connect, reverse, ISL_STATUS_PROPS_UP)

        self.assertTrue(make_switch_remove(src_endpoint.dpid))

        self.ensure_isl_props(neo4j_connect, forward, ISL_STATUS_PROPS_DOWN)
        self.ensure_isl_props(neo4j_connect, reverse, ISL_STATUS_PROPS_HALF_UP)
Esempio n. 4
0
    def test_isl_without_life_cycle_fields(self):
        sw_alpha = make_datapath_id(1)
        sw_beta = make_datapath_id(2)
        isl_alpha_beta = model.InterSwitchLink(
            model.NetworkEndpoint(sw_alpha, 2),
            model.NetworkEndpoint(sw_beta, 2), None)

        self.assertTrue(make_switch_add(sw_alpha))
        self.assertTrue(make_switch_add(sw_beta))

        self.assertTrue(share.exec_isl_discovery(isl_alpha_beta))

        with neo4j_connect.begin() as tx:
            neo4j_connect.pull(isl_utils.fetch(tx, isl_alpha_beta))
            isl_utils.set_props(tx, isl_alpha_beta, {
                'time_create': None,
                'time_modify': None
            })

        self.assertTrue(share.exec_isl_discovery(isl_alpha_beta))
Esempio n. 5
0
    def test_port_down_with_cost_as_string(self):
        sw_alpha = make_datapath_id(1)
        sw_beta = make_datapath_id(2)
        isl_alpha_beta = model.InterSwitchLink(
            model.NetworkEndpoint(sw_alpha, 2),
            model.NetworkEndpoint(sw_beta, 2), None)
        self.assertTrue(share.exec_isl_discovery(isl_alpha_beta))

        with neo4j_connect.begin() as tx:
            isl_utils.set_props(tx, isl_alpha_beta, {"cost": "10"})

        self.assertTrue(make_port_down(isl_alpha_beta.source))
Esempio n. 6
0
    def _cost_raise_on_port_down(self, initial, down, recover):
        src_endpoint, dst_endpoint = self.src_endpoint, self.dst_endpoint
        isl = model.InterSwitchLink(src_endpoint, dst_endpoint, None)

        self.ensure_isl_costs((src_endpoint, initial), (dst_endpoint, initial))

        self.assertTrue(make_port_down(src_endpoint),
                        'Port DOWN command have failed')

        self.ensure_isl_costs((src_endpoint, down), (dst_endpoint, down))

        self.assertTrue(share.exec_isl_discovery(isl),
                        'ISL discovery command have failed')

        self.ensure_isl_costs((src_endpoint, recover), (dst_endpoint, recover))
Esempio n. 7
0
    def test_no_cost_raise_on_isl_down(self):
        self.setup_initial_data()

        src_endpoint, dst_endpoint = self.src_endpoint, self.dst_endpoint
        isl = model.InterSwitchLink(src_endpoint, dst_endpoint, None)

        self.ensure_isl_costs((src_endpoint, 10), (dst_endpoint, 10))

        self.assertTrue(make_isl_failed(src_endpoint),
                        'Port DOWN command have failed')

        self.ensure_isl_costs((src_endpoint, 10), (dst_endpoint, 10))

        self.assertTrue(share.exec_isl_discovery(isl),
                        'ISL discovery command have failed')

        self.ensure_isl_costs((src_endpoint, 10), (dst_endpoint, 10))
Esempio n. 8
0
    def test_isl_replug(self):
        sw_alpha = make_datapath_id(1)
        sw_beta = make_datapath_id(2)
        sw_gamma = make_datapath_id(3)
        sw_delta = make_datapath_id(4)

        isl_alpha_beta = model.InterSwitchLink(
            model.NetworkEndpoint(sw_alpha, 2),
            model.NetworkEndpoint(sw_beta, 2), None)
        isl_beta_alpha = isl_alpha_beta.reversed()
        isl_beta_gamma = model.InterSwitchLink(
            model.NetworkEndpoint(sw_beta, 2),
            model.NetworkEndpoint(sw_gamma, 3), None)
        isl_gamma_beta = isl_beta_gamma.reversed()
        isl_gamma_delta = model.InterSwitchLink(
            model.NetworkEndpoint(sw_gamma, 3),
            model.NetworkEndpoint(sw_delta, 3), None)
        isl_delta_gamma = isl_gamma_delta.reversed()

        for dpid in sw_alpha, sw_beta, sw_gamma, sw_delta:
            self.assertTrue(make_switch_add(dpid))

        self.assertTrue(share.exec_isl_discovery(isl_alpha_beta))
        self.assertTrue(share.exec_isl_discovery(isl_beta_alpha))
        self.assertTrue(share.exec_isl_discovery(isl_gamma_delta))
        self.assertTrue(share.exec_isl_discovery(isl_delta_gamma))

        self.ensure_isl_props(neo4j_connect, isl_alpha_beta,
                              ISL_STATUS_PROPS_UP)
        self.ensure_isl_props(neo4j_connect, isl_beta_alpha,
                              ISL_STATUS_PROPS_UP)
        self.ensure_isl_props(neo4j_connect, isl_gamma_delta,
                              ISL_STATUS_PROPS_UP)
        self.ensure_isl_props(neo4j_connect, isl_delta_gamma,
                              ISL_STATUS_PROPS_UP)

        self.assertRaises(exc.DBRecordNotFound, isl_utils.fetch, neo4j_connect,
                          isl_beta_gamma)
        self.assertRaises(exc.DBRecordNotFound, isl_utils.fetch, neo4j_connect,
                          isl_gamma_beta)

        # replug
        self.assertTrue(share.exec_isl_discovery(isl_beta_gamma))
        # alpha <-> beta is down
        self.ensure_isl_props(neo4j_connect, isl_alpha_beta,
                              ISL_STATUS_PROPS_HALF_UP)
        self.ensure_isl_props(neo4j_connect, isl_beta_alpha,
                              ISL_STATUS_PROPS_DOWN)
        # gamma -> delta is down
        self.ensure_isl_props(neo4j_connect, isl_gamma_delta,
                              ISL_STATUS_PROPS_DOWN)
        self.ensure_isl_props(neo4j_connect, isl_delta_gamma,
                              ISL_STATUS_PROPS_HALF_UP)
        # beta <-> gamma is half up
        self.ensure_isl_props(neo4j_connect, isl_beta_gamma,
                              ISL_STATUS_PROPS_HALF_UP)
        self.ensure_isl_props(neo4j_connect, isl_gamma_beta,
                              ISL_STATUS_PROPS_DOWN)

        self.assertTrue(share.exec_isl_discovery(isl_gamma_beta))
        # alpha <-> beta is down
        self.ensure_isl_props(neo4j_connect, isl_alpha_beta,
                              ISL_STATUS_PROPS_HALF_UP)
        self.ensure_isl_props(neo4j_connect, isl_beta_alpha,
                              ISL_STATUS_PROPS_DOWN)
        # gamma -> delta is down
        self.ensure_isl_props(neo4j_connect, isl_gamma_delta,
                              ISL_STATUS_PROPS_DOWN)
        self.ensure_isl_props(neo4j_connect, isl_delta_gamma,
                              ISL_STATUS_PROPS_HALF_UP)
        # beta <-> gamma is up
        self.ensure_isl_props(neo4j_connect, isl_beta_gamma,
                              ISL_STATUS_PROPS_UP)
        self.ensure_isl_props(neo4j_connect, isl_gamma_beta,
                              ISL_STATUS_PROPS_UP)
Esempio n. 9
0
def make_isl_pair(source, dest):
    forward = model.InterSwitchLink(source, dest, None)
    share.exec_isl_discovery(forward)
    share.exec_isl_discovery(forward.reversed())