# 测试计划执行

我们可以在 https://tcms.pingcap.net/dashboard/executions 这个页面查看提交的试运行或者 daily run 的测试计划的执行情况。

![](static/plan-execution.png)

测试计划执行分为一下几种状态：

| 状态      | 备注                                                                                                                  |
| --------- | --------------------------------------------------------------------------------------------------------------------- |
| `pending` | 等待被调度                                                                                                            |
| `running` | 测试计划执行中                                                                                                        |
| `failure` | 测试计划执行失败, 点击 `View details` 查看失败的用例                                                                  |
| `success` | 测试计划执行成功                                                                                                      |
| `error`   | 发生异常, 例如测试资源不够导致测试计划未能执行, 或者测试执行完成后资源回收时遇到异常, 通常由 @test-infra 研发进行排查 |

## 查看测试计划执行详情

我们可以点击 `View details` 按钮展开要查看的测试计划的执行详情。

![](static/plan-execution-detail.png)

在详情页中，可以看到测试计划中包含的测试用例的执行情况，测试用例的状态分为：

| 状态      | 备注                                                                                                   |
| --------- | ------------------------------------------------------------------------------------------------------ |
| `pending` | 等待执行                                                                                               |
| `running` | 执行中                                                                                                 |
| `failure` | 测试用例执行失败, 点击 `View on Argo` 查看用例的失败原因                                               |
| `success` | 测试用例执行成功                                                                                       |
| `skipped` | 跳过的测试用例，例如设置了 `failFast: true` 的测试计划，当前一个测试用例失败后，整个测试计划会立刻终止 |

## 终止测试计划

点开测试计划执行详情页, 点击右上角 `Cancel execution` 按钮即可终止一个测试计划。

注意，当测试计划已经开始执行后，终止测试计划后测试资源仍然会按照配置的 `reclaimPolicy` 进行处置而`不会立马进行资源回收`。

## 排查测试计划执行问题

测试计划具体由 `Argo` 负责执行，因此下文简单介绍如何使用 `Argo` Dashboard 排查测试计划执行情况。在[查看测试计划执行详情](#查看测试计划执行详情)，点击 `View on Argo` 打开 Argo 页面。

| 功能                   | 备注                                                                                                               |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------ |
| 总览                   | ![](static/argo-execution.png)                                                                                     |
| 查看测试用例 Summary   | 在总览中选择要查看的节点, 默认跳到 `SUMMARY` 页面, ![](static/argo-nodesummary.png)                                |
| 查看测试用例的执行日志 | 在总览中选择要查看的节点, 点击侧边栏 `INPUTS/OUTPUTS` 标签页, 翻到最下面找到 `main-logs` ![](static/argo-logs.png) |
| 获取 Testbed 名称      | 查看 `plan-abc-setup` 节点的 `INPUTS/OUTPUTS`, 搜索 testbed 关键字 ![](static/argo-get-testbed.png)                |
| 重建监控               | `tcctl testbed restore-monitor $testbed`                                                                           |

## 重建监控

当我们在测试计划配置了 `testbed.reclaimPolicy.gcStrategy.onFailure.artifact.monitor` 时, 执行计划在运行结束后会对集群的 prometheus 数据进行归档。

归档后可根据 testbed name 恢复监控, 如 testbed 为 `brie-acceptance-qlrvq`

使用 tcctl 重建集群：

```bash
$ tcctl testbed restore-monitor brie-acceptance-qlrvq
I1020 15:46:06.004790   72482 log.go:15] monitor restored, to access: kubectl -n testbed-restore-monitor-b8rcw port-forward pods/grafana-0 8088:3000
I1020 15:46:06.004863   72482 log.go:15] Dashboard in: http://127.0.0.1:8088, wait 1 minute till it works
```

等待约 1 分钟后，打开 http://127.0.0.1:8088, 可以看到数据。 (等待期间 grafana 在自动调整 time range 便于查看数据)

<br></br>
对于重建 TiUP 集群的监控，需要指定 `--prom-tarball-url` (prometheus 备份的 URL) 和 `--cluster-type` (tiup) 参数，如：

```
tcctl testbed restore-monitor --prom-tarball-url "http://minio.pingcap.net:9000/test-infra-testground/archive/perftest-stability-001-76jnt/prometheus.tar?X-Amz-Date=20211111T151406Z&X-Amz-Expires=432000&X-Amz-SignedHeaders=host&X-Amz-Signature=a2cd8da70db23a99f531546eaf40cfe6c08d4bf93e684c03cde161ef1e20cca6" --cluster-type tiup
```

## 查看日志

目前对 TiDBCluster 部署了 Loki 做准实时的日志收集，对于 **operator 部署的 TiDBCluster**，可以在 [Grafana](http://172.16.4.67:30698/explore?orgId=1&left=%5B%22now-1h%22,%22now%22,%22test-infra-prod-Loki%22,%7B%7D%5D) 中搜索日志

![](static/Loki-log1.png)<br></br>
![](static/Loki-log2.png)<br></br>

也收集了物理机的 syslog (/var/log/messages) 可用于排查 OOM 问题，步骤如下:
![](static/Loki-syslog1.png)<br></br>
![](static/Loki-syslog2.png)
