summaryrefslogtreecommitdiffstats
path: root/test/vpp_controler.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/vpp_controler.py')
-rw-r--r--test/vpp_controler.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/test/vpp_controler.py b/test/vpp_controler.py
new file mode 100644
index 0000000..561f5a0
--- /dev/null
+++ b/test/vpp_controler.py
@@ -0,0 +1,67 @@
+#
+# Copyright (c) 2019 PANTHEON.tech.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+import subprocess
+import time
+import psutil
+
+class Vpp_controler:
+ def __init__(self):
+ self.cmd = "vpp"
+ self.ccmd = "vppctl"
+ self.configuration = "/root/src/sweetcomb/test/conf/vpp.conf"
+ self.process = None
+
+ def __del__(self):
+ #self.kill()
+ self.terminate()
+
+ def _default_conf_vpp(self):
+ if self.process is None:
+ return
+
+ subprocess.run(self.ccmd + " create host name vpp1", shell=True)
+ subprocess.run(self.ccmd + " create host name vpp2", shell=True)
+
+ def spawn(self):
+ self.process = subprocess.Popen([self.cmd, "-c", self.configuration],
+ stdout=subprocess.PIPE)
+ time.sleep(4)
+ self._default_conf_vpp()
+
+ def kill(self):
+ if self.process is None:
+ return
+
+ self.process.kill()
+ self.process = None
+
+ def terminate(self):
+ if self.process is None:
+ return
+
+ self.process.terminate()
+ for proc in psutil.process_iter(attrs=['pid', 'name']):
+ if 'vpp' in proc.info['name']:
+ proc.kill()
+
+ self.process = None
+
+ def show_interface(self):
+ subprocess.run(self.ccmd + " show int", shell=True)
+
+ def show_address(self):
+ subprocess.run(self.ccmd + " show int addr", shell=True)