Add Dummy context and scenario type 85/5385/1
authorQiLiang <liangqi1@huawei.com>
Thu, 31 Dec 2015 02:11:21 +0000 (02:11 +0000)
committerQiLiang <liangqi1@huawei.com>
Thu, 31 Dec 2015 03:08:24 +0000 (03:08 +0000)
Dummy Context Usage:

- if no context specified in the task file then automatically use
  Dummy Context

- or specify the context with type Dummy in the task file, like

    context:
      type: Dummy

Note: context without type name default use Heat Context.
      (e.g. samples/fio.yaml)

JIRA: -

Change-Id: I7f798a7260bdd6ac24902e2c835a3b121319fd8c
Signed-off-by: QiLiang <liangqi1@huawei.com>
samples/dummy-no-context.yaml [new file with mode: 0644]
samples/dummy.yaml [new file with mode: 0644]
tests/unit/benchmark/contexts/test_dummy.py [new file with mode: 0644]
tests/unit/benchmark/scenarios/dummy/__init__.py [new file with mode: 0644]
tests/unit/benchmark/scenarios/dummy/test_dummy.py [new file with mode: 0644]
yardstick/benchmark/contexts/dummy.py [new file with mode: 0644]
yardstick/benchmark/scenarios/dummy/__init__.py [new file with mode: 0644]
yardstick/benchmark/scenarios/dummy/dummy.py [new file with mode: 0644]
yardstick/cmd/commands/task.py

diff --git a/samples/dummy-no-context.yaml b/samples/dummy-no-context.yaml
new file mode 100644 (file)
index 0000000..5ab97a3
--- /dev/null
@@ -0,0 +1,14 @@
+---
+# Sample benchmark task config file
+
+schema: "yardstick:task:0.1"
+
+scenarios:
+-
+  type: Dummy
+
+  runner:
+    type: Duration
+    duration: 5
+    interval: 1
+
diff --git a/samples/dummy.yaml b/samples/dummy.yaml
new file mode 100644 (file)
index 0000000..e41ab9f
--- /dev/null
@@ -0,0 +1,17 @@
+---
+# Sample benchmark task config file
+
+schema: "yardstick:task:0.1"
+
+scenarios:
+-
+  type: Dummy
+
+  runner:
+    type: Duration
+    duration: 5
+    interval: 1
+
+context:
+  type: Dummy
+
diff --git a/tests/unit/benchmark/contexts/test_dummy.py b/tests/unit/benchmark/contexts/test_dummy.py
new file mode 100644 (file)
index 0000000..5214e66
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+
+##############################################################################
+# 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
+##############################################################################
+
+# Unittest for yardstick.benchmark.contexts.dummy
+
+import unittest
+
+from yardstick.benchmark.contexts import dummy
+
+
+class DummyContextTestCase(unittest.TestCase):
+
+    def setUp(self):
+        self.test_context = dummy.DummyContext()
+
+    def test__get_server(self):
+        self.test_context.init(None)
+        self.test_context.deploy()
+
+        result = self.test_context._get_server(None)
+        self.assertEqual(result, None)
+
+        self.test_context.undeploy()
diff --git a/tests/unit/benchmark/scenarios/dummy/__init__.py b/tests/unit/benchmark/scenarios/dummy/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tests/unit/benchmark/scenarios/dummy/test_dummy.py b/tests/unit/benchmark/scenarios/dummy/test_dummy.py
new file mode 100644 (file)
index 0000000..1f9b729
--- /dev/null
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+
+##############################################################################
+# 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
+##############################################################################
+
+# Unittest for yardstick.benchmark.scenarios.dummy.dummy
+
+import unittest
+
+from yardstick.benchmark.scenarios.dummy import dummy
+
+
+class DummyTestCase(unittest.TestCase):
+
+    def setUp(self):
+        self.test_context = dummy.Dummy(None, None)
+
+        self.assertIsNone(self.test_context.scenario_cfg)
+        self.assertIsNone(self.test_context.context_cfg)
+        self.assertEqual(self.test_context.setup_done, False)
+
+    def test_run(self):
+        result = {}
+        self.test_context.run(result)
+
+        self.assertEqual(result["hello"], "yardstick")
+        self.assertEqual(self.test_context.setup_done, True)
diff --git a/yardstick/benchmark/contexts/dummy.py b/yardstick/benchmark/contexts/dummy.py
new file mode 100644 (file)
index 0000000..6901b26
--- /dev/null
@@ -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 logging
+
+from yardstick.benchmark.contexts.base import Context
+
+
+LOG = logging.getLogger(__name__)
+
+
+class DummyContext(Context):
+    '''Class that handle dummy info'''
+
+    __context_type__ = "Dummy"
+
+    def __init__(self):
+        super(self.__class__, self).__init__()
+
+    def init(self, attrs):
+        pass
+
+    def deploy(self):
+        '''don't need to deploy'''
+        pass
+
+    def undeploy(self):
+        '''don't need to undeploy'''
+        pass
+
+    def _get_server(self, attr_name):
+        return None
diff --git a/yardstick/benchmark/scenarios/dummy/__init__.py b/yardstick/benchmark/scenarios/dummy/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/yardstick/benchmark/scenarios/dummy/dummy.py b/yardstick/benchmark/scenarios/dummy/dummy.py
new file mode 100644 (file)
index 0000000..de6742c
--- /dev/null
@@ -0,0 +1,36 @@
+##############################################################################
+# 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 logging
+
+from yardstick.benchmark.scenarios import base
+
+LOG = logging.getLogger(__name__)
+
+
+class Dummy(base.Scenario):
+    """Execute Dummy echo
+    """
+    __scenario_type__ = "Dummy"
+
+    def __init__(self, scenario_cfg, context_cfg):
+        self.scenario_cfg = scenario_cfg
+        self.context_cfg = context_cfg
+        self.setup_done = False
+
+    def setup(self):
+        '''scenario setup'''
+        self.setup_done = True
+
+    def run(self, result):
+        """execute the benchmark"""
+        if not self.setup_done:
+            self.setup()
+
+        result["hello"] = "yardstick"
+        LOG.info("Dummy echo hello yardstick!")
index a56824a..fbbca29 100755 (executable)
@@ -233,8 +233,10 @@ class TaskParser(object):
         # TODO: support hybrid context type
         if "context" in cfg:
             context_cfgs = [cfg["context"]]
-        else:
+        elif "contexts" in cfg:
             context_cfgs = cfg["contexts"]
+        else:
+            context_cfgs = [{"type": "Dummy"}]
 
         for cfg_attrs in context_cfgs:
             context_type = cfg_attrs.get("type", "Heat")