googleapis / googleapis/google-cloud-cpp
Make integration tests more tolerant of transient failures
- Lingua principale
- C++
- Stelle
- 659
- Fork
- 462
- Merge medio
- 1g 2h
- PR unite (30g)
- 89
Descrizione
Our integration tests often perform "non-idempotent" operations, but these can fail even if our code is working fine. A typical test may have this structure:
```cc
auto create = client.CreateFoo(....);
ASSERT_STATUS_OK(create);
auto update = client.UpdateFoo(...);
ASSERT_STATUS_OK(update);
auto del = client.DeleteFoo(...);
ASSERT_STATUS_OK(del);
```
None of those operations are retried by default, as the operations are non-idempotent. I think we could rewirte the tests as follows:
```cc
auto create = client.CreateFoo(... Options{}.set(RetryEverything()));
ASSERT_THAT(create, StatusIs(AnyOf(StatusCode::kOk, StatusCode::kAlreadyExists)));
```
Or if we don't want to retry the operation, we can write it as:
```cc
auto create = client.CreateFoo(...);
if (IsTransient(...)) GTEST_SKIP() << create.status();
```
This probably requires a mini-design doc, and will require breaking down the work per test.
For now I am going to consolidate all existing "transient error on non-idempotent operation" flakes to this one.
Guida per i contributori
Apri la guida per i contributori
Valutazione
Questa issue non è ancora stata valutata.