我从这里使用 google-cloud-cpp SDK ,我正在尝试测试一个不正确的端点场景,根据我在传入不正确的端点 url 时设置的策略,我期望在 100 毫秒内出现错误。但是,我的测试却挂了很长时间。对于这种特殊情况,我只需要为 ListObjects 案例覆盖现有 gcs::Client 的策略,并希望重新使用我已经创建的客户端。我写了一个小程序来模拟我在代码库中的实际问题的行为。我不确定为什么LimitedTimeRetryPolicy的重试策略没有转发到我创建的新客户端?感谢任何帮助和/或示例。
using namespace google::cloud::storage;
using ::google::cloud::StatusOr;
// Ex: ./wrongEndpoint
int main(int argc, char* argv[]) {
    auto options = ClientOptions::CreateDefaultClientOptions();
    options.value().set_enable_http_tracing(true);
    options.value().set_enable_raw_client_tracing(true);
    options.value().set_endpoint("https://somegarbage.com");
    options.value().set_download_stall_timeout(std::chrono::seconds(1));
    // Original Client in the codebase
    Client clientX(*options);
    // Creating new client for ListObjects from the raw_client with a retry policy
    std::shared_ptr<internal::RawClient> Rclient = clientX.raw_client();
    Client client = Client(Rclient, LimitedTimeRetryPolicy(std::chrono::milliseconds(100)));
    try{
        for (auto&& object_metadata : client.ListObjects("march30")) {
            if (!object_metadata) {
                throw std::runtime_error(object_metadata.status().message());
            }
            std::cout << "bucket_name=" << object_metadata->bucket()
                << ", object_name=" << object_metadata->name() << "\n";
        }
    } catch(std::exception &ex) {
        std::cout << ex.what() << "\n";
    }
}