Added a longer timeout to host job and host stat, as they do not
inherit from atest_list.
Added a --max-query option (default 20) to limit the number of jobs displayed.
Signed-off-by: Jean-Marc Eurin <jmeurin@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@1977 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/cli/host.py b/cli/host.py
index a2de6d8..06826ed 100755
--- a/cli/host.py
+++ b/cli/host.py
@@ -27,7 +27,7 @@
"""
-import os, sys
+import os, sys, socket
from autotest_lib.cli import topic_common, action_common
@@ -153,6 +153,7 @@
usage_action = 'stat'
def execute(self):
+ socket.setdefaulttimeout(topic_common.LIST_SOCKET_TIMEOUT)
results = []
# Convert wildcards into real host stats.
existing_hosts = []
@@ -197,7 +198,23 @@
"""atest host jobs --mlist <file>|<hosts>"""
usage_action = 'jobs'
+ def __init__(self):
+ super(host_jobs, self).__init__()
+ self.parser.add_option('-q', '--max-query',
+ help='Limits the number of results '
+ '(20 by default)',
+ type='int', default=20)
+
+
+ def parse(self):
+ """Consume the specific options"""
+ (options, leftover) = super(host_jobs, self).parse(req_items=None)
+ self.max_queries = options.max_query
+ return (options, leftover)
+
+
def execute(self):
+ socket.setdefaulttimeout(topic_common.LIST_SOCKET_TIMEOUT)
results = []
real_hosts = []
for host in self.hosts:
@@ -213,7 +230,8 @@
for host in real_hosts:
queue_entries = self.execute_rpc('get_host_queue_entries',
- host__hostname=host)
+ host__hostname=host,
+ query_limit=self.max_queries)
queue_entries.sort(key=lambda qe: qe['job']['id'])
queue_entries.reverse()
jobs = []
diff --git a/cli/host_unittest.py b/cli/host_unittest.py
index ae564c5..ea782ef 100755
--- a/cli/host_unittest.py
+++ b/cli/host_unittest.py
@@ -654,7 +654,7 @@
self.run_cmd(argv=['atest', 'host', 'jobs', 'host0',
'--ignore_site_file'],
rpcs=[('get_host_queue_entries',
- {'host__hostname': 'host0'},
+ {'host__hostname': 'host0', 'query_limit': 20},
True,
[{u'status': u'Failed',
u'complete': 1,
@@ -743,7 +743,7 @@
u'platform': u'plat0',
u'id': 2}]),
('get_host_queue_entries',
- {'host__hostname': 'host1'},
+ {'host__hostname': 'host1', 'query_limit': 20},
True,
[{u'status': u'Failed',
u'complete': 1,
@@ -801,7 +801,7 @@
u'active': 0,
u'id': 3167}]),
('get_host_queue_entries',
- {'host__hostname': 'host0'},
+ {'host__hostname': 'host0', 'query_limit': 20},
True,
[{u'status': u'Failed',
u'complete': 1,
@@ -863,6 +863,74 @@
'289', 'user1', 'Aborted',
'testjob'])
+
+ def test_execute_jobs_one_host_limit(self):
+ self.run_cmd(argv=['atest', 'host', 'jobs', 'host0',
+ '--ignore_site_file', '-q', '10'],
+ rpcs=[('get_host_queue_entries',
+ {'host__hostname': 'host0', 'query_limit': 10},
+ True,
+ [{u'status': u'Failed',
+ u'complete': 1,
+ u'host': {u'status': u'Ready',
+ u'locked': 1,
+ u'locked_by': 'user0',
+ u'hostname': u'host0',
+ u'invalid': 0,
+ u'id': 3232,
+ u'synch_id': None},
+ u'priority': 0,
+ u'meta_host': u'meta0',
+ u'job': {u'control_file':
+ (u"def step_init():\n"
+ "\tjob.next_step([step_test])\n"
+ "\ttestkernel = job.kernel("
+ "'kernel-smp-2.6.xyz.x86_64.rpm')\n"
+ "\ttestkernel.install()\n"
+ "\ttestkernel.boot()\n\n"
+ "def step_test():\n"
+ "\tjob.run_test('kernbench')\n\n"),
+ u'name': u'kernel-smp-2.6.xyz.x86_64',
+ u'control_type': u'Client',
+ u'synchronizing': None,
+ u'priority': u'Low',
+ u'owner': u'user0',
+ u'created_on': u'2008-01-09 10:45:12',
+ u'synch_count': None,
+ u'synch_type': u'Asynchronous',
+ u'id': 216},
+ u'active': 0,
+ u'id': 2981},
+ {u'status': u'Aborted',
+ u'complete': 1,
+ u'host': {u'status': u'Ready',
+ u'locked': 1,
+ u'locked_by': 'user0',
+ u'hostname': u'host0',
+ u'invalid': 0,
+ u'id': 3232,
+ u'synch_id': None},
+ u'priority': 0,
+ u'meta_host': None,
+ u'job': {u'control_file':
+ u"job.run_test('sleeptest')\n\n",
+ u'name': u'testjob',
+ u'control_type': u'Client',
+ u'synchronizing': 0,
+ u'priority': u'Low',
+ u'owner': u'user1',
+ u'created_on': u'2008-01-17 15:04:53',
+ u'synch_count': None,
+ u'synch_type': u'Asynchronous',
+ u'id': 289},
+ u'active': 0,
+ u'id': 3167}])],
+ out_words_ok=['216', 'user0', 'Failed',
+ 'kernel-smp-2.6.xyz.x86_64', 'Aborted',
+ '289', 'user1', 'Aborted',
+ 'testjob'])
+
+
class host_mod_unittest(cli_mock.cli_unittest):
def test_parse_ready_dead(self):
sys.argv = ['atest', 'host', 'mod', '--ready', '--dead']