11 gi.require_version('RwcalYang', '1.0')
12 gi.require_version('RwCal', '1.0')
13 gi.require_version('RwLog', '1.0')
20 SYS_CMD = "demos/launchpad.py -m ethsim --skip-prepare-vm -c"
21 CLOUDSIM_CMD = "cloudsim start"
24 def rift_install(self):
25 return os.getenv('RIFT_INSTALL')
28 def account_script(self):
31 "usr/rift/systemtest/pytest/mission_control/test_mission_control.py")
34 def onboard_script(self):
37 "usr/rift/systemtest/pytest/mission_control/pingpong_vnf/test_onboard_vnf.py")
40 def records_script(self):
43 "usr/rift/systemtest/pytest/mission_control/pingpong_vnf/test_records.py")
45 def run_cmd(self, scripts=None, cal_account="mock"):
46 scripts = scripts or [self.account_script, self.onboard_script]
50 # In mock-cal mode we don't need the images.
51 if cal_account == "mock":
52 cmd += "--{} --lp-standalone --network-service pingpong_noimg ".format(cal_account)
54 cmd += "--{} --lp-standalone --network-service pingpong ".format(cal_account)
56 cmd += " ".join(scripts)
57 subprocess.call(cmd, shell=True)
59 @contextlib.contextmanager
60 def system_start(self, debug_mode=False, cal_account="mock"):
63 os.environ['LD_PRELOAD'] = os.path.join(
65 "usr/lib/rift/preloads/librwxercespreload.so")
67 sys_cmd = os.path.join(self.rift_install, self.SYS_CMD)
69 sys_cmd += " --mock-cli"
71 process = subprocess.Popen(
76 cloudsim_process = None
77 if cal_account == "lxc":
78 # If in LXC start the cloudsim server.
79 cloudsim_process = subprocess.Popen(
80 PyTestRunner.CLOUDSIM_CMD,
85 os.killpg(process.pid, signal.SIGTERM)
87 os.killpg(cloudsim_process.pid, signal.SIGTERM)
88 cloudsim_process.wait()
92 signal.signal(signal.SIGHUP, kill)
93 signal.signal(signal.SIGTERM, kill)
100 def test_launchpad(args):
101 pytest = PyTestRunner()
104 if args.cal == "lxc":
105 scripts = [pytest.account_script, pytest.onboard_script, pytest.records_script]
107 with pytest.system_start(cal_account=args.cal):
108 pytest.run_cmd(scripts=scripts, cal_account=args.cal)
111 def parse(arguments):
112 parser = argparse.ArgumentParser(description=__doc__,
113 formatter_class=argparse.RawDescriptionHelpFormatter)
118 choices=["INFO", "DEBUG", "WARNING", "ERROR"],
119 help="Set log level, defaults to warning and above.")
121 subparsers = parser.add_subparsers()
123 start_parser = subparsers.add_parser(TEST_PARSER, help="Test the LP")
124 start_parser.add_argument(
126 help="Run the server in the foreground. The logs are sent to console.",
128 choices=["lxc", "mock"])
129 start_parser.set_defaults(which=TEST_PARSER)
131 args = parser.parse_args(arguments)
140 if args.which == TEST_PARSER:
144 if __name__ == "__main__":