From b734b60a299cea520fff4977fb688f46f8ae213e Mon Sep 17 00:00:00 2001 From: smit-gardhariya Date: Tue, 28 Nov 2023 17:13:19 +0530 Subject: [PATCH] Create CPU/Memory/FileIO perf test using sysbench This commit has changes to add testcases for CPU/Memory/FileIO using sysbench tool of LISA. Signed-off-by: Smit Gardhariya --- microsoft/testsuites/sysbench/sysbenchperf.py | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 microsoft/testsuites/sysbench/sysbenchperf.py diff --git a/microsoft/testsuites/sysbench/sysbenchperf.py b/microsoft/testsuites/sysbench/sysbenchperf.py new file mode 100644 index 0000000000..cc41174d17 --- /dev/null +++ b/microsoft/testsuites/sysbench/sysbenchperf.py @@ -0,0 +1,103 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. +from pathlib import Path +from typing import Any, Dict, List + +from lisa import ( + Environment, + Logger, + Node, + TestCaseMetadata, + TestSuite, + TestSuiteMetadata, +) +from lisa.testsuite import TestResult +from lisa.tools import Sysbench + + +@TestSuiteMetadata( + area="sysbench", + category="performance", + description=""" + This test suite is for executing the sysbench tests + """, +) +class SysbenchTestSuite(TestSuite): + @TestCaseMetadata( + description=""" + Runs Sysbench test for cpu + """, + priority=3, + ) + def perf_sysbench_cpu( + self, + log: Logger, + node: Node, + environment: Environment, + log_path: Path, + result: TestResult, + variables: Dict[str, Any], + ) -> None: + node.tools[Sysbench].run_cpu_perf( + test_result=result, + ) + + @TestCaseMetadata( + description=""" + Runs Sysbench test for fileio + """, + priority=3, + ) + def perf_sysbench_fileio( + self, + log: Logger, + node: Node, + environment: Environment, + log_path: Path, + result: TestResult, + variables: Dict[str, Any], + ) -> None: + io_ops = variables.get( + "io_ops", + [ + "seqwr", + "seqrd", + "rndrd", + "rndwr", + "seqrewr", + "rndrw", + ], + ) + sysbench = node.tools[Sysbench] + sysbench.run_fileio_perf( + test_result=result, + total_file=1, + io_ops=io_ops, + ) + + @TestCaseMetadata( + description=""" + Runs Sysbench test for memory + """, + priority=3, + ) + def perf_sysbench_memory( + self, + log: Logger, + node: Node, + environment: Environment, + log_path: Path, + result: TestResult, + variables: Dict[str, Any], + ) -> None: + memory_operation: List[str] = ["read", "write"] + memory_access_mode: List[str] = ["seq", "rnd"] + sysbench = node.tools[Sysbench] + + for op in memory_operation: + for access_mode in memory_access_mode: + sysbench.run_memory_perf( + test_result=result, + memory_access_mode=access_mode, + memory_oper=op, + )