import pytest
import kperf
def test_init_count_null_evt():
"""测试初始化计数任务时,事件列表为空的情况"""
evtList = []
pmu_attr = kperf.PmuAttr(evtList=evtList)
pd = kperf.open(kperf.PmuTaskType.COUNTING, pmu_attr)
assert pd == -1, f"Expected failure, but got pd={pd}"
print(f"error number: {kperf.errorno()} error message: {kperf.error()}")
def test_init_sample_null_evt():
"""测试初始化采样任务时,事件列表为空的情况"""
evtList = []
pmu_attr = kperf.PmuAttr(evtList=evtList)
pd = kperf.open(kperf.PmuTaskType.SAMPLING, pmu_attr)
assert pd == -1, f"Expected failure, but got pd={pd}"
print(f"error number: {kperf.errorno()} error message: {kperf.error()}")
def test_init_bad_pid():
"""测试初始化任务时,PID 列表无效的情况"""
pidList = [-1]
pmu_attr = kperf.PmuAttr(pidList=pidList)
pd = kperf.open(kperf.PmuTaskType.COUNTING, pmu_attr)
assert pd == -1, f"Expected failure, but got pd={pd}"
print(f"error number: {kperf.errorno()} error message: {kperf.error()}")
def test_init_bad_cpu():
"""测试初始化任务时,CPU 列表无效的情况"""
cpuList = [5000, 0, 0, 0]
pmu_attr = kperf.PmuAttr(cpuList=cpuList)
pd = kperf.open(kperf.PmuTaskType.COUNTING, pmu_attr)
assert pd == -1, f"Expected failure, but got pd={pd}"
print(f"error number: {kperf.errorno()} error message: {kperf.error()}")
def test_sample_collect_bad_evt():
"""测试采样任务时,事件列表无效的情况"""
evtList = ["abc"]
pmu_attr = kperf.PmuAttr(evtList=evtList)
pd = kperf.open(kperf.PmuTaskType.SAMPLING, pmu_attr)
assert pd == -1, f"Expected failure, but got pd={pd}"
print(f"error number: {kperf.errorno()} error message: {kperf.error()}")
def test_spe_init_busy():
"""测试 SPE 初始化时资源忙的情况"""
pmu_attr = kperf.PmuAttr(
sampleRate=1000,
symbolMode=kperf.SymbolMode.RESOLVE_ELF,
dataFilter=kperf.SpeFilter.SPE_DATA_ALL,
evFilter=kperf.SpeEventFilter.SPE_EVENT_RETIRED,
minLatency=0x40
)
pd = kperf.open(kperf.PmuTaskType.SPE_SAMPLING, pmu_attr)
assert pd != -1, f"Failed to open SPE sampling task: {kperf.error()}"
badpd = kperf.open(kperf.PmuTaskType.SPE_SAMPLING, pmu_attr)
assert badpd == -1, f"Expected failure, but got badpd={badpd}"
print(f"badpd error number: {kperf.errorno()} badpd error message: {kperf.error()}")
kperf.close(pd)
def test_open_invalid_task_type():
"""测试使用无效的任务类型初始化的情况"""
evtList = ["r11", "cycles"]
pmu_attr = kperf.PmuAttr(evtList=evtList)
pd = kperf.open(99, pmu_attr)
assert pd == -1, f"Expected failure, but got pd={pd}"
print(f"error number: {kperf.errorno()} error message: {kperf.error()}")
if __name__ == '__main__':
print("This is a pytest script. Run it using the 'pytest' command.")
print("For example: pytest test_*.py -v")
print("if need print the run log, use pytest test_*.py -s -v")