From 1ce534f64402fd7b2fd85328dda12af9b2ba0c18 Mon Sep 17 00:00:00 2001 From: Yujun Zhang Date: Tue, 6 Dec 2016 17:26:36 +0800 Subject: Implement PerfTest prototype Change-Id: I5988cb65d0e50fa88beaac8f48b5b1da70ed687a Signed-off-by: Yujun Zhang --- qtip/runner/benchmark.py | 6 +----- qtip/runner/perftest.py | 20 ++++++-------------- tests/data/perftest/iperf | 0 tests/unit/runner/perftest_test.py | 32 ++++++++++++++++++++++++++++++-- 4 files changed, 37 insertions(+), 21 deletions(-) create mode 100644 tests/data/perftest/iperf diff --git a/qtip/runner/benchmark.py b/qtip/runner/benchmark.py index 46cb069d..56b5b30e 100644 --- a/qtip/runner/benchmark.py +++ b/qtip/runner/benchmark.py @@ -21,13 +21,10 @@ class Property: class Benchmark: """Abstract class of QTIP benchmarks""" - # paths to search for suites _paths = [path.join(path.dirname(__file__), path.pardir, path.pardir, 'benchmarks')] def __init__(self, name): - """:param name: suite name""" - # TODO(yujunz) check existence and expand to full path self.name = name self._abspath = self._find(name) @@ -47,8 +44,7 @@ class Benchmark: def describe(self): """description of benchmark""" - # TODO(yujunz) - # - read description from benchmark content + # TODO(yujunz) read description from benchmark content return { Property.NAME: self.name, Property.DESCRIPTION: 'QTIP benchmark', diff --git a/qtip/runner/perftest.py b/qtip/runner/perftest.py index 835f2a81..c6d58397 100644 --- a/qtip/runner/perftest.py +++ b/qtip/runner/perftest.py @@ -7,21 +7,13 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +from os import path -class PerfTest: - """A perf test collects raw performance metrics by running test tools""" +from benchmark import Benchmark - def __init__(self): - pass - @staticmethod - def list_all(): - """list all available perf tests""" - pass +class PerfTest(Benchmark): + """PerfTest is the driver of external performance test tools""" - def desc(self): - """description of the perf test""" - pass - - def run(self): - pass + # paths to search for perftest + _paths = [path.join(p, 'perftest') for p in Benchmark._paths] diff --git a/tests/data/perftest/iperf b/tests/data/perftest/iperf new file mode 100644 index 00000000..e69de29b diff --git a/tests/unit/runner/perftest_test.py b/tests/unit/runner/perftest_test.py index 798afadd..b3e6e8e2 100644 --- a/tests/unit/runner/perftest_test.py +++ b/tests/unit/runner/perftest_test.py @@ -1,4 +1,4 @@ -############################################################################## +############################################################### # Copyright (c) 2016 ZTE Corp and others. # # All rights reserved. This program and the accompanying materials @@ -7,7 +7,35 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +from os import path +import pytest + +from qtip.runner.perftest import PerfTest +from qtip.runner.benchmark import Property + + +class TestPerfTestClass: + def test_attr(self): + assert len(PerfTest._paths) is 1 + class TestPerfTest: + PerfTest._paths = [path.join(path.dirname(__file__), path.pardir, + path.pardir, 'data', 'perftest')] + + def test_init(self): + perftest = PerfTest('test-a') + assert perftest.name == 'test-a' + + with pytest.raises(TypeError) as excinfo: + PerfTest() + assert '__init__() takes exactly 2 arguments (1 given)' \ + in str(excinfo.value) + def test_list(self): - assert True + perftest_list = PerfTest.list_all() + assert len(list(perftest_list)) is 1 + for desc in perftest_list: + assert Property.NAME in desc + assert Property.DESCRIPTION in desc + assert Property.ABSPATH in desc -- cgit 1.2.3-korg