提交 20af5164 编写于 作者: L Lukáš Doktor

avocado.plugins.remote: Move required params checking into activate

Check required params in plugin.activate() and set RemoteTestResults
urls during __init__.
Signed-off-by: NLukáš Doktor <ldoktor@redhat.com>
上级 1bd41e53
......@@ -18,7 +18,6 @@ import os
import getpass
import json
from avocado.core import exceptions
from avocado.core import status
from avocado.core import data_dir
from avocado.runner import TestRunner
......@@ -103,7 +102,10 @@ class RemoteTestResult(TestResult):
TestResult.__init__(self, stream, args)
self.test_dir = os.getcwd()
self.remote_test_dir = '~/avocado/tests'
self.urls = self.args.url
self.remote = None # Remote runner initialized during setup
self.output = '-'
self.command_line_arg_name = '--remote-hostname'
def _copy_tests(self):
self.remote.makedir(self.remote_test_dir)
......@@ -117,12 +119,6 @@ class RemoteTestResult(TestResult):
self.remote.send_files(test_path, self.remote_test_dir)
def setup(self):
self.urls = self.args.url
if self.args.remote_hostname is None:
e_msg = ('Please set remote machine hostname with option '
'--remote-hostname.')
self.stream.notify(event='error', msg=e_msg)
raise exceptions.TestSetupFail(e_msg)
self.stream.notify(event='message', msg="REMOTE LOGIN : %s@%s:%d" % (self.args.remote_username,
self.args.remote_hostname,
self.args.remote_port))
......@@ -256,10 +252,33 @@ class RunRemote(plugin.Plugin):
help='Specify the password to login on remote machine')
self.configured = True
@staticmethod
def _check_required_args(app_args, enable_arg, required_args):
"""
:return: True when enable_arg enabled and all required args are set
:raise sys.exit: When missing required argument.
"""
if (not hasattr(app_args, enable_arg)
or not getattr(app_args, enable_arg)):
return False
missing = []
for arg in required_args:
if not getattr(app_args, arg):
missing.append(arg)
if missing:
from avocado.core import output, exit_codes
import sys
view = output.View(app_args=app_args, use_paginator=True)
e_msg = ('Use of %s requires %s arguments to be set. Please set %s'
'.' % (enable_arg, ', '.join(required_args),
', '.join(missing)))
view.notify(event='error', msg=e_msg)
return sys.exit(exit_codes.AVOCADO_FAIL)
return True
def activate(self, app_args):
try:
if app_args.remote_hostname is not None:
self.remote_parser.set_defaults(remote_result=RemoteTestResult,
test_runner=RemoteTestRunner)
except AttributeError:
pass
if self._check_required_args(app_args, 'remote_hostname',
('remote_hostname',)):
self.remote_parser.set_defaults(remote_result=RemoteTestResult,
test_runner=RemoteTestRunner)
......@@ -37,13 +37,17 @@ class _Stream(object):
pass
class Args(list):
def __init__(self):
self.url = 'sleeptest'
class RemoteResultTest(unittest.TestCase):
def setUp(self):
args = argparse.Namespace()
stream = _Stream()
stream.logfile = 'debug.log'
self.test_result = remote.RemoteTestResult(stream, args)
self.test_result = remote.RemoteTestResult(stream, Args())
j = '''{"tests": [{"test": "sleeptest.1", "url": "sleeptest", "status": "PASS",
"time": 1.23, "start": 0, "end": 1.23}],
"debuglog": "/home/user/avocado/logs/run-2014-05-26-15.45.37/debug.log",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册