From b551a1b8ef615a3eff651d8bc10c3ffa0e8e8ec2 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 | 111 ++++++++++++++++++ 1 file changed, 111 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..bfa462fee8 --- /dev/null +++ b/microsoft/testsuites/sysbench/sysbenchperf.py @@ -0,0 +1,111 @@ +# 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] = variables.get( + "memory_operation", + [ + "read", + "write", + ], + ) + memory_access_mode: List[str] = variables.get( + "memory_access_mode", + [ + "seq", + "rnd", + ], + ) + node.tools[Sysbench].run_memory_perf( + test_result=result, + memory_access_mode=memory_access_mode, + memory_oper=memory_operation, + )