---
title: 执行测试
description: "本节主要关注Istio的时延测试。以下操作均在“tools/perf/benchmark”目录的虚拟Python环境中运行。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/ecosystemEnable/Istio/kunpeng_istio_zn_011.html
sourcePath: /source/zh/kunpengcpfs/ecosystemEnable/Istio/kunpeng_istio_zn_011.html
indexId: b7aa486b0d893e809051cc764d082aee00c34a585efb0ae826febae217db9c0970
---
# 执行测试

本节主要关注Istio的时延测试。以下操作均在“tools/perf/benchmark”目录的虚拟Python环境中运行。

1. 进入虚拟Python环境。

```
cd tools/perf/benchmark
pipenv shell
```


2. 执行测试。
- 在pipenv shell中，可用的python可执行文件名可能为python3、python3.xx等，此时需要将下述测试命令的python替换为对应可执行文件名。
- 下述测试命令仅按配置文件的要求运行一轮测试，为了避免数据波动的影响，可连续运行多次测试命令，对最终结果求取均值。


下载的测试工具中包含了Benchmark测试脚本runner.py，所处位置位于“tools/perf/benchmark/runner/runner.py”，可通过提供命令行参数或配置文件进行测试。本文直接以测试工具中提供的配置文件进行测试：

```
python runner/runner.py --config_file ./configs/istio/telemetryv2_stats/latency.yaml
```

测试成功执行截图示例如下图，其中红框中的文字说明程序正在运行both sidecar模式测试。
配置文件“./configs/istio/telemetryv2_stats/latency.yaml”主要参数解释如下。

  - conn：连接并发数。
  - qps：所有连接每秒总的查询数。
  - duration：每个子测试运行的时间（单位：秒），应大于92。
  - run_bothsidecar：是否运行both sidecar模式测试，默认值：true。
  - run_serversidecar：是否进行server-only sidecar模式测试，默认值false，将其修改为true可为测试流程引入对应的模式测试。
  - run_clientsidecar：是否进行client-only sidecar模式测试，默认值false，将其修改为true可为测试流程引入对应的模式测试。
  - run_no_istio：是否进行无sidecar模式测试，默认值false，将其修改为true可为测试流程引入对应的模式测试。
3. 导出测试结果。
在进行多轮测试时，若使用的测试Pod没有被删除重建，一般只需要在所有测试完成后导出结果即可。但为了避免数据遗失，还是建议在每轮测试完成后导出测试数据。


  a. 设置端口转发以便获取结果。

```
kubectl -n twopods-istio port-forward svc/fortioclient 9076:9076 &
```


  b. 获取测试结果并输出至主机，可修改--csv_output后的参数更改结果输出路径。

```
python ./runner/fortio.py http://localhost:9076 --prometheus=$PROMETHEUS_URL --csv StartTime,ActualDuration,Labels,NumThreads,ActualQPS,p50,p90,p99,p999 --csv_output "./istio-result.csv"
```
