diff --git a/network_driver/network.py b/network_driver/network.py index 554683c0..1c2995fc 100644 --- a/network_driver/network.py +++ b/network_driver/network.py @@ -4,7 +4,7 @@ import uuid import copy import time -from node import Node +from .node import Node CHAIN_GENESIS = {"genesis_time": "0001-01-01T00:00:00Z", "chain_id": "", diff --git a/network_driver/node.py b/network_driver/node.py index 54bdd21d..a710ac90 100644 --- a/network_driver/node.py +++ b/network_driver/node.py @@ -2,13 +2,14 @@ import json import time import uuid import copy +import requests import kubernetes from kubernetes.client.rest import ApiException from kubernetes.stream import stream TENDERMINT_PORT = 46656 - +TENDERMINT_HTTP_PORT = 46657 # TODO: create a default pod spec of BDB MONGODB_SPEC = {"name": "mongodb", @@ -120,6 +121,14 @@ class Node(): else: return False + @property + def tendermint_http_uri(self): + ip = self.ip + if ip: + return 'http://{}:{}'.format(ip, TENDERMINT_HTTP_PORT) + else: + return False + def stop_tendermint(self): self._exec_command('tendermint', 'pkill tendermint') @@ -168,6 +177,11 @@ class Node(): self.stop_tendermint() self.start_tendermint() + def get_peers(self): + uri = '{}/net_info'.format(self.tendermint_http_uri) + r = requests.get(uri) + return r.json()['result']['peers'] + def _create_namespace(self, namespace): namespace_spec = kubernetes.client.V1Namespace() namespace_spec.api_version = 'v1' diff --git a/setup.py b/setup.py index 49325444..cfd40c8c 100644 --- a/setup.py +++ b/setup.py @@ -84,6 +84,7 @@ install_requires = [ 'python-rapidjson-schema==0.1.1', 'statsd==3.2.1', 'abci~=0.3.0', + 'kubernetes~=4.0.0', ] setup( diff --git a/tests/test_network_driver.py b/tests/test_network_driver.py new file mode 100644 index 00000000..62366527 --- /dev/null +++ b/tests/test_network_driver.py @@ -0,0 +1,16 @@ +from network_driver.network import Network + + +def test_peers_connected(): + n = Network(2) + n.ensure_started() + + assert n.nodes[0].get_peers() == [] + assert n.nodes[1].get_peers() == [] + + n.ensure_connected() + + assert len(n.nodes[0].get_peers()) == 1 + assert len(n.nodes[1].get_peers()) == 1 + + n.stop()