コード例 #1
0
    def test_15_add_ebgp_peer(self):
        q4 = QuaggaBGPContainer(name='q4', asn=65001, router_id='192.168.0.5')
        self.quaggas['q4'] = q4
        initial_wait_time = q4.run()
        time.sleep(initial_wait_time)

        self.gobgp.add_peer(q4)
        q4.add_peer(self.gobgp)

        prefix = '10.0.4.0/24'
        q4.add_route(prefix)

        self.gobgp.wait_for(expected_state=BGP_FSM_ESTABLISHED, peer=q4)

        q1 = self.quaggas['q1']
        q2 = self.quaggas['q2']
        for q in [q1, q2]:

            def _f():
                return prefix in [
                    p['nlri']['prefix'] for p in self.gobgp.get_adj_rib_out(q)
                ]

            wait_for_completion(_f)

        def f():
            return len(q2.get_global_rib(prefix)) == 1

        wait_for_completion(f)
コード例 #2
0
ファイル: gobgp.py プロジェクト: sapcc/kube-parrot
    def _wait_for_boot(self):
        for daemon in self._get_enabled_quagga_daemons():
            def _f_quagga():
                ret = self.local("vtysh -d {0} -c 'show run' > /dev/null 2>&1; echo $?".format(daemon), capture=True)
                return ret == '0'

            wait_for_completion(_f_quagga)

        wait_for_completion(self._is_running)
コード例 #3
0
ファイル: gobgp.py プロジェクト: zhulinfeng1212/gobgp
    def _wait_for_boot(self):
        for daemon in self._get_enabled_quagga_daemons():
            def _f_quagga():
                ret = self.local("vtysh -d {0} -c 'show run' > /dev/null 2>&1; echo $?".format(daemon), capture=True)
                return ret == '0'

            wait_for_completion(_f_quagga)

        wait_for_completion(self._is_running)
コード例 #4
0
 def test_04_softreset_in(self):
     self.g3.softreset(self.g1)
     wait_for_completion(lambda: len(self.g3.get_global_rib()) == 0)
     wait_for_completion(
         lambda: len(self.g3.get_global_rib(rf="vpnv4")) == 2)
     wait_for_completion(lambda: len(self.g2.get_global_rib()) == 1)
     wait_for_completion(lambda: len(self.g5.get_global_rib()) == 1)
コード例 #5
0
 def test_05_softreset_out(self):
     self.g3.softreset(self.g2, type='out')
     wait_for_completion(lambda: len(self.g3.get_global_rib()) == 0)
     wait_for_completion(
         lambda: len(self.g3.get_global_rib(rf="vpnv4")) == 2)
     wait_for_completion(lambda: len(self.g2.get_global_rib()) == 1)
     wait_for_completion(lambda: len(self.g5.get_global_rib()) == 1)
コード例 #6
0
    def _wait_for_boot(self):
        def _f():
            ret = self.local('exabgpcli version > /dev/null 2>&1; echo $?',
                             capture=True)
            return ret == '0'

        return wait_for_completion(_f)
コード例 #7
0
ファイル: bird.py プロジェクト: zwtop/gobgp
    def _wait_for_boot(self):
        def _f():
            ret = self.local('birdc show status > /dev/null 2>&1; echo $?',
                             capture=True)
            return ret == '0'

        return wait_for_completion(_f)
コード例 #8
0
    def test_06_graceful_restart(self):
        self.g1.graceful_restart()
        self.g3.wait_for(expected_state=BGP_FSM_ACTIVE, peer=self.g1)

        wait_for_completion(lambda: len(self.g3.get_global_rib(rf="vpnv4")) == 2)
        wait_for_completion(lambda: len(self.g2.get_global_rib()) == 1)

        wait_for_completion(lambda: len(self.g3.get_global_rib(rf="vpnv4")) == 1)
        wait_for_completion(lambda: len(self.g2.get_global_rib()) == 0)
コード例 #9
0
ファイル: vrf_neighbor_test2.py プロジェクト: zwtop/gobgp
    def test_06_graceful_restart(self):
        self.g1.stop_gobgp()
        self.g3.wait_for(expected_state=BGP_FSM_ACTIVE, peer=self.g1)

        wait_for_completion(lambda: len(self.g3.get_global_rib(rf="vpnv4")) == 2)
        wait_for_completion(lambda: len(self.g2.get_global_rib()) == 1)

        wait_for_completion(lambda: len(self.g3.get_global_rib(rf="vpnv4")) == 1)
        wait_for_completion(lambda: len(self.g2.get_global_rib()) == 0)
コード例 #10
0
    def test_16_add_best_path_from_ibgp(self):
        q1 = self.quaggas['q1']
        q2 = self.quaggas['q2']

        prefix = '10.0.4.0/24'
        q1.add_route(prefix)

        def f1():
            l = self.gobgp.get_global_rib(prefix)
            return len(l) == 1 and len(l[0]['paths']) == 2

        wait_for_completion(f1)

        def f2():
            return prefix not in [
                p['nlri']['prefix'] for p in self.gobgp.get_adj_rib_out(q2)
            ]

        wait_for_completion(f2)

        def f3():
            l = q2.get_global_rib(prefix)
            # route from ibgp so aspath should be empty
            return len(l) == 1 and len(l[0]['aspath']) == 0

        wait_for_completion(f3)
コード例 #11
0
 def test_03_disable(self):
     self.g3.disable_peer(self.g1)
     wait_for_completion(lambda: len(self.g3.get_global_rib(rf="vpnv4")) == 1)
     wait_for_completion(lambda: len(self.g2.get_global_rib()) == 0)
     wait_for_completion(lambda: len(self.g5.get_global_rib()) == 1)
     self.g3.enable_peer(self.g1)
     self.g3.wait_for(expected_state=BGP_FSM_ESTABLISHED, peer=self.g1)
コード例 #12
0
ファイル: vrf_neighbor_test2.py プロジェクト: zwtop/gobgp
 def test_03_disable(self):
     self.g3.disable_peer(self.g1)
     wait_for_completion(lambda: len(self.g3.get_global_rib(rf="vpnv4")) == 1)
     wait_for_completion(lambda: len(self.g2.get_global_rib()) == 0)
     wait_for_completion(lambda: len(self.g5.get_global_rib()) == 1)
     self.g3.enable_peer(self.g1)
     self.g3.wait_for(expected_state=BGP_FSM_ESTABLISHED, peer=self.g1)
コード例 #13
0
 def test_02_add_routes(self):
     self.g1.local("gobgp global rib add 10.0.0.0/24")
     self.g4.local("gobgp global rib add 10.0.0.0/24")
     wait_for_completion(
         lambda: len(self.g3.get_global_rib(rf="vpnv4")) == 2)
     wait_for_completion(lambda: len(self.g2.get_global_rib()) == 1)
     wait_for_completion(lambda: len(self.g5.get_global_rib()) == 1)
コード例 #14
0
ファイル: ibgp_router_test.py プロジェクト: a16/gobgp
    def test_15_add_ebgp_peer(self):
        q4 = QuaggaBGPContainer(name='q4', asn=65001, router_id='192.168.0.5')
        self.quaggas['q4'] = q4
        initial_wait_time = q4.run()
        time.sleep(initial_wait_time)

        self.gobgp.add_peer(q4)
        q4.add_peer(self.gobgp)

        prefix = '10.0.4.0/24'
        q4.add_route(prefix)

        self.gobgp.wait_for(expected_state=BGP_FSM_ESTABLISHED, peer=q4)

        q1 = self.quaggas['q1']
        q2 = self.quaggas['q2']
        for q in [q1, q2]:
            def _f():
                return prefix in [p['nlri']['prefix'] for p in self.gobgp.get_adj_rib_out(q)]
            wait_for_completion(_f)

        def f():
            return len(q2.get_global_rib(prefix)) == 1
        wait_for_completion(f)
コード例 #15
0
    def test_20_check_withdrawal_2(self):
        g1 = self.gobgp
        g2 = self.quaggas['g2']

        prefix = '40.10.0.0/24'
        g1.add_route(prefix)
        wait_for_completion(lambda: len(g1.get_global_rib(prefix)) == 1)
        wait_for_completion(lambda: len(g2.get_global_rib(prefix)) == 1)

        r = g2.local('gobgp monitor global rib -j', stream=True, tty=False)

        g1.local('gobgp global rib del 40.10.0.0/24')
        del g1.routes[prefix]

        wait_for_completion(lambda: len(g1.get_global_rib(prefix)) == 0)
        wait_for_completion(lambda: len(g2.get_global_rib(prefix)) == 0)

        ret = json.loads(r.next())
        self.assertTrue(ret[0]['nlri']['prefix'] == prefix)
        self.assertTrue('withdrawal' in ret[0])
コード例 #16
0
ファイル: bgp_router_test.py プロジェクト: sapcc/kube-parrot
    def test_21_check_withdrawal_2(self):
        g1 = self.gobgp
        g2 = self.quaggas['g2']

        prefix = '40.10.0.0/24'
        g1.add_route(prefix)
        wait_for_completion(lambda: len(g1.get_global_rib(prefix)) == 1)
        wait_for_completion(lambda: len(g2.get_global_rib(prefix)) == 1)

        r = g2.local('gobgp monitor global rib -j', stream=True, tty=False)

        g1.local('gobgp global rib del 40.10.0.0/24')
        del g1.routes[prefix]

        wait_for_completion(lambda: len(g1.get_global_rib(prefix)) == 0)
        wait_for_completion(lambda: len(g2.get_global_rib(prefix)) == 0)

        ret = json.loads(r.next())
        self.assertTrue(ret[0]['nlri']['prefix'] == prefix)
        self.assertTrue('withdrawal' in ret[0])
コード例 #17
0
ファイル: ibgp_router_test.py プロジェクト: a16/gobgp
    def test_16_add_best_path_from_ibgp(self):
        q1 = self.quaggas['q1']
        q2 = self.quaggas['q2']

        prefix = '10.0.4.0/24'
        q1.add_route(prefix)

        def f1():
            l = self.gobgp.get_global_rib(prefix)
            return len(l) == 1 and len(l[0]['paths']) == 2
        wait_for_completion(f1)

        def f2():
            return prefix not in [p['nlri']['prefix'] for p in self.gobgp.get_adj_rib_out(q2)]
        wait_for_completion(f2)

        def f3():
            l = q2.get_global_rib(prefix)
            # route from ibgp so aspath should be empty
            return len(l) == 1 and len(l[0]['aspath']) == 0
        wait_for_completion(f3)
コード例 #18
0
ファイル: quagga.py プロジェクト: zboya/gobgp
 def _wait_for_boot(self):
     wait_for_completion(self._is_running)
コード例 #19
0
ファイル: yabgp.py プロジェクト: a16/gobgp
 def _wait_for_boot(self):
     return wait_for_completion(self._curl_is_running)
コード例 #20
0
 def _wait_for_boot(self):
     return wait_for_completion(self._curl_is_running)
コード例 #21
0
 def test_04_softreset_in(self):
     self.g3.softreset(self.g1)
     wait_for_completion(lambda: len(self.g3.get_global_rib()) == 0)
     wait_for_completion(lambda: len(self.g3.get_global_rib(rf="vpnv4")) == 2)
     wait_for_completion(lambda: len(self.g2.get_global_rib()) == 1)
     wait_for_completion(lambda: len(self.g5.get_global_rib()) == 1)
コード例 #22
0
 def test_05_softreset_out(self):
     self.g3.softreset(self.g2, type='out')
     wait_for_completion(lambda: len(self.g3.get_global_rib()) == 0)
     wait_for_completion(lambda: len(self.g3.get_global_rib(rf="vpnv4")) == 2)
     wait_for_completion(lambda: len(self.g2.get_global_rib()) == 1)
     wait_for_completion(lambda: len(self.g5.get_global_rib()) == 1)
コード例 #23
0
 def test_02_add_routes(self):
     self.g1.local("gobgp global rib add 10.0.0.0/24")
     self.g4.local("gobgp global rib add 10.0.0.0/24")
     wait_for_completion(lambda: len(self.g3.get_global_rib(rf="vpnv4")) == 2)
     wait_for_completion(lambda: len(self.g2.get_global_rib()) == 1)
     wait_for_completion(lambda: len(self.g5.get_global_rib()) == 1)
コード例 #24
0
ファイル: quagga.py プロジェクト: sapcc/kube-parrot
 def _wait_for_boot(self):
     wait_for_completion(self._is_running)
コード例 #25
0
ファイル: bird.py プロジェクト: a16/gobgp
    def _wait_for_boot(self):
        def _f():
            ret = self.local('birdc show status > /dev/null 2>&1; echo $?', capture=True)
            return ret == '0'

        return wait_for_completion(_f)
コード例 #26
0
ファイル: exabgp.py プロジェクト: a16/gobgp
    def _wait_for_boot(self):
        def _f():
            ret = self.local('exabgpcli version > /dev/null 2>&1; echo $?', capture=True)
            return ret == '0'

        return wait_for_completion(_f)