# pylint: disable=missing-docstring # Copyright (c) 2014 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. def any_call(*args, **kwargs): """An empty method to handle any call. """ pass def decorate(f): """A noop decorator. """ return f def decorate_wrapper(f): """Wrapper of the noop decorator. Calling this method with any args will return the noop decorator function. """ return decorate class mock_class_type(type): """Type class for the mock class to handle any class methods.""" def __getattr__(self, attr): # This is to support decorators like "@metrics.SecondsTimerDecorator" # In this case, the call returns a function which returns a noop # decorator function ("decorate"). if 'Decorator' in attr: return decorate_wrapper else: return mock_class_base class mock_class_base(object): """Base class for a mock es class.""" __metaclass__ = mock_class_type def __init__(self, *args, **kwargs): pass def __getattribute__(self, name): # TODO(dshi): Remove this method after all reference of timer.get_client # is removed. def get_client(*args, **kwargs): return self # get_client is to support call like "timer.get_client", which returns # a class supporting Context when being called. if name == 'get_client': return get_client elif name == 'indices': return mock_class_base() return any_call def __enter__(self, *args, **kwargs): """Method to support Context class.""" return self def __exit__(self, *args, **kwargs): """Method to support Context class.""" def __getitem__(self, key): """Method to override __getitem__.""" return self def __setitem__(self, key, value): """Method to override __setitem__."""