Skip to content

Commit

Permalink
test: workaround existing bug in gax that prevents conformance tests …
Browse files Browse the repository at this point in the history
…from passing (#1772)


Change-Id: I80254c0613e2bac8752d361434a3711c8f9a31b4

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a [bug/issue](https://togithub.com/googleapis/java-bigtable/issues/new/choose) before writing your code!  That way we can discuss the change, evaluate designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)

Fixes #<issue_number_goes_here> ☕️

If you write sample code, please follow the [samples format](
https://togithub.com/GoogleCloudPlatform/java-docs-samples/blob/main/SAMPLE_FORMAT.md).
  • Loading branch information
igorbernstein2 committed May 30, 2023
1 parent a6ac97c commit c3ecc1b
Showing 1 changed file with 25 additions and 41 deletions.
Expand Up @@ -23,6 +23,7 @@
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.api.gax.core.NoCredentialsProvider;
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
import com.google.api.gax.retrying.RetrySettings;
import com.google.api.gax.rpc.ApiException;
import com.google.api.gax.rpc.ServerStream;
import com.google.auth.oauth2.GoogleCredentials;
Expand Down Expand Up @@ -146,51 +147,34 @@ public static CbtTestProxy createEncrypted(
*/
private static BigtableDataSettings.Builder overrideTimeoutSetting(
Duration newTimeout, BigtableDataSettings.Builder settingsBuilder) {
// TODO(developer): remove the initialRpcTimeout update below by updating the client library.
Duration initialRpcTimeout =
settingsBuilder
.stubSettings()
.bulkMutateRowsSettings()
.getRetrySettings()
.getInitialRpcTimeout();
if (initialRpcTimeout.compareTo(newTimeout) > 0) {
// Total timeout is smaller than initialRpcTimeout, which will cause deadline-related problem.
initialRpcTimeout = newTimeout;
}
settingsBuilder
.stubSettings()
.bulkMutateRowsSettings()
.retrySettings()
.setTotalTimeout(newTimeout)
.setInitialRpcTimeout(initialRpcTimeout);

settingsBuilder.stubSettings().mutateRowSettings().retrySettings().setTotalTimeout(newTimeout);

settingsBuilder.stubSettings().readRowSettings().retrySettings().setTotalTimeout(newTimeout);

settingsBuilder.stubSettings().readRowsSettings().retrySettings().setTotalTimeout(newTimeout);

settingsBuilder
.stubSettings()
.sampleRowKeysSettings()
.retrySettings()
.setTotalTimeout(newTimeout);

settingsBuilder
.stubSettings()
.checkAndMutateRowSettings()
.retrySettings()
.setTotalTimeout(newTimeout);

settingsBuilder
.stubSettings()
.readModifyWriteRowSettings()
.retrySettings()
.setTotalTimeout(newTimeout);

updateTimeout(
settingsBuilder.stubSettings().bulkMutateRowsSettings().retrySettings(), newTimeout);
updateTimeout(settingsBuilder.stubSettings().mutateRowSettings().retrySettings(), newTimeout);
updateTimeout(settingsBuilder.stubSettings().readRowSettings().retrySettings(), newTimeout);
updateTimeout(settingsBuilder.stubSettings().readRowsSettings().retrySettings(), newTimeout);
updateTimeout(
settingsBuilder.stubSettings().checkAndMutateRowSettings().retrySettings(), newTimeout);
updateTimeout(
settingsBuilder.stubSettings().readModifyWriteRowSettings().retrySettings(), newTimeout);
updateTimeout(
settingsBuilder.stubSettings().sampleRowKeysSettings().retrySettings(), newTimeout);

return settingsBuilder;
}

private static void updateTimeout(RetrySettings.Builder settings, Duration newTimeout) {
Duration rpcTimeout = settings.getInitialRpcTimeout();

// TODO: this should happen in gax
// Clamp the rpcTimeout to the overall timeout
if (rpcTimeout != null && rpcTimeout.compareTo(newTimeout) > 0) {
settings.setInitialRpcTimeout(newTimeout).setMaxRpcTimeout(newTimeout);
}

settings.setTotalTimeout(newTimeout);
}

/** Helper method to get a client object by its id. */
private CbtClient getClient(String id) throws StatusException {
CbtClient client = idClientMap.get(id);
Expand Down

0 comments on commit c3ecc1b

Please sign in to comment.