def test_main_menu_config_run(self,
prediag_mock,
main_log_handler_mock,
debug_log_handler_mock,
mkdir_mock,
copyfile_mock,
chdir_mock,
write_config_mock,
logging_fh_mock):
"""Test running ec2rl from the menu."""
# Setup the instance of Main
responses.add(responses.GET, "http://169.254.169.254/latest/meta-data/instance-id", body="i-deadbeef",
status=200)
path_to_ec2rl = os.path.abspath("ec2rl")
test_path = os.path.sep.join([os.path.split(path_to_ec2rl)[0], "test", "modules", "ec2rl"])
sys.argv = [test_path, "menu-config"]
module_path = os.path.join(self.callpath, "test/modules/single_diagnose/")
ec2rl_run_test = ec2rlcore.main.Main(debug=True, full_init=True)
ec2rl_run_test._prediags = ec2rlcore.moduledir.ModuleDir(module_path)
ec2rl_run_test._modules = ec2rlcore.moduledir.ModuleDir(module_path)
ec2rl_run_test._postdiags = ec2rlcore.moduledir.ModuleDir(module_path)
# We don't need to run pre/post modules for this test
ec2rl_run_test._prediags = []
ec2rl_run_test._postdiags = []
# Setup the input buffer for curses to grab from
curses.initscr()
# main menu -> run
curses.ungetch("\n")
curses.ungetch(curses.KEY_DOWN)
curses.ungetch(curses.KEY_DOWN)
curses.ungetch(curses.KEY_DOWN)
curses.ungetch(curses.KEY_DOWN)
curses.ungetch(curses.KEY_DOWN)
with contextlib.redirect_stdout(self.output):
ec2rl_run_test()
self.assertTrue(self.output.getvalue().startswith("\n-----------[Backup Creation]-----------\n\nNo backup op"))
self.assertTrue(self.output.getvalue().endswith(
"/SV_3KrcrMZ2quIDzjn?InstanceID=i-deadbeef&Version={}\n\n".format(ec2rlcore.main.Main.PROGRAM_VERSION)))
self.assertTrue("-\n\nRunning Modules:\nxennetrocket\n\n-" in self.output.getvalue())
self.assertEqual(len(self.output.getvalue()), 1635)
self.assertTrue(prediag_mock.called)
self.assertTrue(main_log_handler_mock.called)
self.assertTrue(debug_log_handler_mock.called)
self.assertTrue(mkdir_mock.called)
self.assertTrue(copyfile_mock.called)
self.assertTrue(chdir_mock.called)
self.assertTrue(write_config_mock.called)
self.assertTrue(logging_fh_mock.called)
# The resulting subcommand should be "run"
self.assertEqual(ec2rl_run_test.subcommand, "run")
评论列表
文章目录