# TiCDC Test-infra 相关说明

## testcase

包含 TiCDC 相关的 case

通过 `make build` 在本地生成 binary。

docker image 应该在 main 分支被构建，通过 `make image` 执行。image 地址为 `hub.pingcap.net/ticdc/ticdc-testcases`

## manifests

manifests 中的文件和 testcase 中的文件一一对应，提供参数配置功能。当前支持的参数如下：

* case：指定 case 的名字
* workload：指定 workload 相关参数

启动 cdc 的 case 时，需要指定至少一个 manifests 中的文件，比如:

```
./bin/case --spec manifests/basic_real_time_sync.yaml
```

## Kafka consumer

Kafka consumer 由 [TiFlow](https://github.com/pingcap/tiflow/tree/master/cmd/kafka-consumer) 维护，主要用于 Kafka 相关 case 的数据消费问题，它将指定 Topic 中的数据同步到下游 target 节点 (一般是 MySQL) 中，然后用于做上下游一致性校验。

TiFlow 侧在更新 Kafka consumer 之后，应该更新相应的 docker image，操作如下:

```
docker build -t hub.pingcap.net/ticdc/kafka-consumer -f ./deployments/ticdc/docker/kafka-consumer.Dockerfile . --platform linux/amd64
docker push hub.pingcap.net/ticdc/kafka-consumer
```

## Triage 过程

1. 获取到失败 `execution` 的 `kubeconfig` 文件。

```
tcctl testbed get ${testbed-name} -r http://rms.pingcap.net:30007
```

2. 更新 `kubectl` 使用的环境变量

```
export KUBECONFIG=kubeconfig.yml
```

3. 常用命令

* `kubectl get` 查看 k8s 资源信息
* `kubectl describe` 查看 pod 的运行周期信息
* `kubectl cp` 可以用作从 pod 中复制文件到本地文件系统。