From 84ab6e07ef9abef13b44b69d41d5886a253751de Mon Sep 17 00:00:00 2001 From: QiLiang Date: Mon, 10 Aug 2015 00:48:17 +0800 Subject: Add test result dispatcher This patch is the initial implementation of DB result storage. Having implemented a dispathcer which enable user select different ways to store test results according to different requirements. This patch can support not only local file storage, but also remote storage by using http request(it will call common-db-api when available). Later, local DB sotrage will be supported. This patch is raw and simple, which is implemented with reference to openstack ceilometer. Any comment is welcome. JIRA: YARDSTICK-61 Change-Id: Icaf8369edfab5d05f0819eb02d5b05dc8a04d69d Signed-off-by: QiLiang --- yardstick/dispatcher/base.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 yardstick/dispatcher/base.py (limited to 'yardstick/dispatcher/base.py') diff --git a/yardstick/dispatcher/base.py b/yardstick/dispatcher/base.py new file mode 100644 index 000000000..28c4c1ae6 --- /dev/null +++ b/yardstick/dispatcher/base.py @@ -0,0 +1,38 @@ +############################################################################## +# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +import abc +import six + +import yardstick.common.utils as utils + + +@six.add_metaclass(abc.ABCMeta) +class Base(object): + + def __init__(self, conf): + self.conf = conf + + @staticmethod + def get_cls(dispatcher_type): + '''Return class of specified type.''' + for dispatcher in utils.itersubclasses(Base): + if dispatcher_type == dispatcher.__dispatcher_type__: + return dispatcher + raise RuntimeError("No such dispatcher_type %s" % dispatcher_type) + + @staticmethod + def get(config): + """Returns instance of a dispatcher for dispatcher type. + """ + return Base.get_cls(config["type"])(config) + + @abc.abstractmethod + def record_result_data(self, data): + """Recording result data interface.""" -- cgit 1.2.3-korg