blob: 25d3d493b0f91842f242a2f1dc390068e38013f8 [file] [log] [blame]
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Comparitors for use in dynamic_suite module unit tests."""
import mox
class StatusContains(mox.Comparator):
def CreateFromStrings(status=None, test_name=None, reason=None):
status_comp = mox.StrContains(status) if status else mox.IgnoreArg()
name_comp = mox.StrContains(test_name) if test_name else mox.IgnoreArg()
reason_comp = mox.StrContains(reason) if reason else mox.IgnoreArg()
return StatusContains(status_comp, name_comp, reason_comp)
def __init__(self, status=mox.IgnoreArg(), test_name=mox.IgnoreArg(),
Takes mox.Comparator objects to apply to job_status.Status
member variables.
@param status: status code, e.g. 'INFO', 'START', etc.
@param test_name: expected test name.
@param reason: expected reason
self._status = status
self._test_name = test_name
self._reason = reason
def equals(self, rhs):
"""Check to see if fields match base_job.status_log_entry obj in rhs.
@param rhs: base_job.status_log_entry object to match.
@return boolean
return (self._status.equals(rhs.status_code) and
self._test_name.equals(rhs.operation) and
def __repr__(self):
return '<Status containing \'%s\t%s\t%s\'>' % (self._status,
class InHostList(mox.Comparator):
"""PyMox comparator that matches given Host.hostname to a stored list."""
def __init__(self, host_list):
self._hostname_list = [h.hostname for h in host_list]
def equals(self, rhs):
"""Check to see if rhs.hostname is in stored hostname list.
@param rhs: Host object to match.
@return boolean
return rhs.hostname in self._hostname_list
class AllInHostList(mox.Comparator):
"""PyMox comparator that matches a list of Host base on hostname.
Matches if, for each Host to be matched, its hostname is in the list of
hostnames provided at initialization.
def __init__(self, host_list):
self._in_host_list = InHostList(host_list)
def equals(self, rhs):
"""Check to see if all hostnames in rhs are in stored hostname list.
@param rhs: iterable of Host objects to match.
@return False if rhs is []; otherwise checks all objects in rhs.
tests = map(self._in_host_list.equals, rhs)
if tests:
return reduce(lambda a,b: a and b, tests, True)
return False