Currently, we are testing the error message strings emitted from ate-api-server in functional_test.go. This is pretty fraught, since those messages aren't necessarily going to be stable as code is refactored.
Instead, we should use the Status.Details field with an ate-specific details proto. We can define a fine-grained code for each logical error, in case clients need to distinguish situations beyond just the canonical code.
For example,
- If we can't find a free worker, we might return a status error where code=RESOURCE_EXHAUSTED, and details has an ateapipb.ErrorDetails proto with fine_grained_code=NO_FREE_WORKERS
Currently, we are testing the error message strings emitted from ate-api-server in functional_test.go. This is pretty fraught, since those messages aren't necessarily going to be stable as code is refactored.
Instead, we should use the Status.Details field with an ate-specific details proto. We can define a fine-grained code for each logical error, in case clients need to distinguish situations beyond just the canonical code.
For example,