intracom-telecom-sdn / nstat Goto Github PK
View Code? Open in Web Editor NEWNetwork Stress-Test Automation Toolkit
License: Eclipse Public License 1.0
Network Stress-Test Automation Toolkit
License: Eclipse Public License 1.0
Hi, i was trying to launch test cases with using multinet, but got some errors, with mtcbench everything is alright.
i was trying to change the version of requests and another dependencies, but it still didnt work. I open 6653,3300,3333,5555 port for multinet master worker.
boron_sb_active_scalability_multinet.txt
In the frame of Controller refactorization the build handler is wrapped
via class methon build().
This implementation runs successfully in jenkins, however it fails in travis
There is a paradox issue here, which may concerns a limitation in travis ci:
the build handler is executed successfully when it is called as a bash script:
- sudo bash ./controllers/odl_beryllium_pb/build.sh
However, it fails when it (the same script) is called within python wrapper class method:
Controller.py
def build(self):
""" Wrapper to the controller build handler
"""
logging.info('[Controller] Building')
self.status = 'BUILDING'
exit_status = util.netutil.ssh_run_command(self._ssh_conn,
' '.join([self.build_hnd]),
'[controller.build_handler]')[0]
if exit_status == 0:
self.status = 'BUILT'
logging.info("[Controller] Successful building")
else:
self.status = 'NOT BUILT'
logging.error("[Controller] Failure during building")
raise Exception('[Controller] Failure during building')
Keys
should be removed from all json
files since they are not supported by the NSTAT code.
At the moment each NSTAT node is deployed by a separate Vagrantfile
each one located under $NSTAT_SRC/vagrant
folder. Since every Vagrantfile creates a separate Host-only network, NSTAT nodes when deployed belong to different Host-only networks and therefore ssh communication between them is not feasible.
The issue has been verified for provider: virtualbox. It might apply for provider: libvirt as well.
Solution: Use of one Vagrantfile ie. packaged_multi to deploy all necessary NSTAT nodes, so that all of them belong o the same Host-only network. @panageo , @anastop
While adding the new getcontroller() method I checked that the self.status
is defined within the Controller constructor and
Where is the self.status
read. Should we remove it from everywhere? What is the meaning of setting/maintaining this attribute?
Controller handlers use lxml from python. If controller_pb_proxy image is used, the necessary image or virualenvironment (not yet implemented) should have the lxml library installed.
Hello, I have an issue during deploying docker images. Somehow, I could not create NSTAT image in dir: ..nstat/deploy/docker/no_proxy with docker-compose. Then I realized, command : "docker compose -t" is not valid for docker compose anymore. I appreciate any help and update. Thank you.
Hi,
I think there should by an error on your installation recipe.
Step 1
git clone --branch v1.0 https://github.com/intracom-telecom-sdn/nstat-cperf.git nstat-cperf.
This is the output I get when doing it:
Cloning into 'nstat-cperf'...
fatal: Remote branch v1.0 not found in upstream origin.
Let me know if I am wrong.
Thanks a lot.
NSTAT nodes deployed under packaged/multi Vagrantfile are not able to perform git clone operations (from https). apt-get operations are possible.
NSTAT project is assumed to be present on all nodes at the moment.
Run Vagrant script under /packaged_multi with no_proxy running environment to ensure that git clone operations are possible.
If not we should consider if NSTAT orchestrator will prepare in the future all necessary workspace for all NSTAT (i.e existence of handlers etc) nodes, @anastop , @panageo .
test_netutil.py calls ssh_connect* methods having the named tuple as an argument. Unit tests should be updated with ip, username, password, port. See i.e methods
def ssh_connection_open(ip, ssh_port, username, password):
and
def test01_ssh_connection_open(self):
in test_netutil.py. Testing of
removed temporarily from tracis ci. Do not forget to restore it after correcting the unit test
I would like to try nstat, but can I start it with a controller that is not on docker?
If I try to start nstat by setting up a remote controller, i have this error:
2018-05-14 09:47:21,083 INFO ] [open_ssh_connection] Initiating SSH session with ODL node.
[2018-05-14 09:47:21,083 INFO ] [utils.netutils.ssh_connect_or_return] Trying to connect to 155.185.49.81:6633 (1/10)
[2018-05-14 09:49:28,322 ERROR ] Fail to establish ssh connection with controller node. :::::::::: Exception :::::::::::
[2018-05-14 09:49:28,323 ERROR ] Fail to establish ssh connection with controller node.
[2018-05-14 09:49:28,324 ERROR ] Error number:1
[2018-05-14 09:49:28,324 ERROR ] Fail to establish ssh connection with controller node. - ODL Exception: <class 'stress_test.controller_exceptions.CtrlNodeConnectionError'>, 132
Traceback (most recent call last):
File "/opt/nstat/stress_test/controller.py", line 125, in init_ssh
self.ssh_pass, 10)
File "/opt/nstat/util/netutil.py", line 246, in ssh_connect_or_return
password=password)
File "/usr/lib/python3.4/site-packages/paramiko/client.py", line 251, in connect
retry_on_signal(lambda: sock.connect(addr))
File "/usr/lib/python3.4/site-packages/paramiko/util.py", line 270, in retry_on_signal
return function()
File "/usr/lib/python3.4/site-packages/paramiko/client.py", line 251, in
retry_on_signal(lambda: sock.connect(addr))
TimeoutError: [Errno 110] Connection timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/nstat/stress_test/controller.py", line 132, in init_ssh
raise(stress_test.controller_exceptions.
stress_test.controller_exceptions.CtrlNodeConnectionError: Fail to establish ssh connection with controller node.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/nstat/stress_test/nstat.py", line 104, in
main()
File "/opt/nstat/stress_test/nstat.py", line 101, in main
nstat_test.test_selector(args)
File "/opt/nstat/stress_test/test_type.py", line 99, in test_selector
nstat_test_type_run)
File "/opt/nstat/stress_test/test_run.py", line 44, in init
json_conf)
File "/opt/nstat/stress_test/controller.py", line 77, in new
return ODL(ctrl_base_dir, test_config)
File "/opt/nstat/stress_test/controller.py", line 554, in init
self.init_ssh()
File "/opt/nstat/stress_test/controller.py", line 135, in init_ssh
self._error_handling(e.err_msg, e.err_code)
File "/opt/nstat/stress_test/controller.py", line 105, in _error_handling
raise(stress_test.controller_exceptions.CtrlError)
stress_test.controller_exceptions.CtrlError: Controller generic exception
[2018-05-14 09:49:28,362 INFO ] Run controller stop.
[2018-05-14 09:51:35,682 ERROR ] [ssh_connection_open] error: check connection object
[2018-05-14 09:51:35,682 ERROR ] Controller stop failure. :::::::::: Exception :::::::::::
[2018-05-14 09:51:35,683 ERROR ] Controller stop failure.
[2018-05-14 09:51:35,683 ERROR ] Error number:1
[2018-05-14 09:51:35,683 ERROR ] Controller stop failure. - ODL Exception: <class 'stress_test.controller_exceptions.CtrlStopError'>, 353
[2018-05-14 09:51:35,683 INFO ] Fail stopping Controller during cleanup. Exception message: Controller generic exception
[2018-05-14 09:51:35,683 INFO ] Run controller cleanup.
[2018-05-14 09:51:35,683 INFO ] [Controller] Cleaning up
Deployment of VM with kvm hypervisor having a bridged interface with the host seems to be problematic. NSTAT needs to support this feature if NSTAT components are deployed on individual nodes (VMs) which are hosted on separate hosts. If all nodes are deployed within one single host, there is no need for bridged interfaces and therefore no need to worry for this issue @panageo , @anastop .
Vagrant files under https://github.com/intracom-telecom-sdn/nstat/tree/master/vagrant need to be updated accordingly if a solution is proposed
Functional testing for
NSTAT using Multinet is missing.
The test should should be similar with other tests however, it has to prepare necessary worker nodes that multinet needs. @panageo , @anastop please comment.
To be consistent with Multinet a conf key "topology_rest_server_stop" has been added which is not used at the moment when mininet is used as a generator. However, the mininet rest server stop takes place through stop_mininet_server() under mininet_utils.py. In Multinet this action is done by cleanup handler under /bin. I think we should be consistent in both cases since NSTAT treats both mininet and multinet as southbound generators. @panageo What do you think?
paramiko library for python3.4 is not installed
Check common provision.sh again and retest both with Dockerfile/Vagrantfile
sudo apt-get install build-essential libssl-dev libffi-dev python-dev
sudo pip --proxy http://172.28.40.9:3128 install cffi
sudo pip --proxy http://172.28.40.9:3128 install cryptography
This function sys_used_memory_bytes() in /utils/sysstats.py should return the used memory in bytes. Instead it returns the used memory in Kb
In controller.py, in new() method we check for the controller's name
if (name == 'odl')
....
where name is stored in the test_config dict which takes its value from the input json configuration file. I propose to keep one name in the JSON conf file (ie ODL) which is later on used in the plot configuration section (faster find/replace operations in json files).
Therefore the full version of the controller (ie ODL (Boron)) can be specified in the JSON file.
To resolve this, the name
can be set
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.