将成功响应检查移动到 tempest 客户端

https://blueprints.launchpad.net/tempest/+spec/client-checks-success

为了确保 API 的稳定性,tempest 中的 API 调用应该检查成功情况下的响应代码是否为期望值。目前这些检查由 API 的调用者执行,并且方式不一致。没有关于何时进行检查的策略或指南。如果始终检查响应代码,并且 API 调用者无需担心这一点,那就更好了。

问题描述

一直以来的策略是,API 的测试应该验证响应代码。失败由客户端通过抛出异常来处理,但调用者应该在成功时检查响应。但是,许多 API 测试也会在准备实际测试调用时调用其他 API。在某些情况下,我们会检查这些 API 的响应,而在另一些情况下则不会,但实际上所有调用都应该被检查。期望调用 API 的代码来处理这一点是不必要的,并且容易出错。

新添加到验证 nova API 的代码使用 schemas 在客户端中进行检查。我们应该将所有检查移动到客户端,除非存在多种可能的成功返回代码。

RestClient 上有两个方法来处理这个问题

validate_response(cls, schema, resp, body)

这与新的 schema 验证一起使用。

expected_success(self, expected_code, read_code)

这是早期尝试理清响应检查的一种尝试,但仅由 image 客户端使用。

提议的变更

将所有响应检查移动到客户端。使用 validate_response 检查成功代码,并为尚未拥有 schemas 的 API 添加 schemas。然后,我们可以删除测试代码本身中的所有检查,除非期望从 API 返回的多个 2xx 响应中获得一个特定的值。在这种情况下,调用者也应该检查一个特定的值。

替代方案

继续用一组不一致的检查来使测试代码混乱,这些检查将在每次 API 调用后都需要进行。

实现

负责人

主要负责人

David Kranz <dkranz@redhat.com>

里程碑

完成目标里程碑

  • Juno

工作项

  • 更改 tempest 客户端中的所有 API 调用,以检查响应代码,并根据需要添加新的 schemas。

  • 除非期望从 API 返回的多个响应中获得一个特定的值,否则删除测试中对 2xx 的所有检查。