summaryrefslogtreecommitdiffhomepage
path: root/test/scenario_test/lib
diff options
context:
space:
mode:
Diffstat (limited to 'test/scenario_test/lib')
-rw-r--r--test/scenario_test/lib/base.py5
-rw-r--r--test/scenario_test/lib/gobgp.py19
2 files changed, 22 insertions, 2 deletions
diff --git a/test/scenario_test/lib/base.py b/test/scenario_test/lib/base.py
index 35686973..119e188c 100644
--- a/test/scenario_test/lib/base.py
+++ b/test/scenario_test/lib/base.py
@@ -29,6 +29,11 @@ BGP_FSM_IDLE = 'BGP_FSM_IDLE'
BGP_FSM_ACTIVE = 'BGP_FSM_ACTIVE'
BGP_FSM_ESTABLISHED = 'BGP_FSM_ESTABLISHED'
+BGP_ATTR_TYPE_ORIGIN = 1
+BGP_ATTR_TYPE_AS_PATH = 2
+BGP_ATTR_TYPE_NEXT_HOP = 3
+BGP_ATTR_TYPE_MULTI_EXIT_DISC = 4
+BGP_ATTR_TYPE_LOCAL_PREF = 5
def get_bridges():
return local("brctl show | awk 'NR > 1{print $1}'",
diff --git a/test/scenario_test/lib/gobgp.py b/test/scenario_test/lib/gobgp.py
index d9115f1b..4e26b922 100644
--- a/test/scenario_test/lib/gobgp.py
+++ b/test/scenario_test/lib/gobgp.py
@@ -70,10 +70,25 @@ class GoBGPContainer(BGPContainer):
gobgp,
prefix,
rf)
+ output = local(cmd, capture=True)
+ return json.loads(output)
+ def _get_adj_rib(self, adj_type, peer, prefix='', rf='ipv4'):
+ if peer not in self.peers:
+ raise Exception('not found peer {0}'.format(peer.router_id))
+ peer_addr = self.peers[peer]['neigh_addr'].split('/')[0]
+ gobgp = '/go/bin/gobgp'
+ cmd = 'docker exec {0} {1} neighbor {2}'\
+ ' adj-{3} {4} -a {5} -j'.format(self.name, gobgp, peer_addr,
+ adj_type, prefix, rf)
output = local(cmd, capture=True)
- n = json.loads(output)
- return n
+ return json.loads(output)
+
+ def get_adj_rib_in(self, peer, prefix='', rf='ipv4'):
+ return self._get_adj_rib('in', peer, prefix, rf)
+
+ def get_adj_rib_out(self, peer, prefix='', rf='ipv4'):
+ return self._get_adj_rib('out', peer, prefix, rf)
def get_neighbor_state(self, peer):
if peer not in self.peers: