-
Notifications
You must be signed in to change notification settings - Fork 123
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Leader Aware Routing in Connection API #2308
Changes from 2 commits
f8c63b1
42f64b5
c3d22c9
1938945
e7840fc
b886651
12af533
c709781
35a5176
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -49,6 +49,9 @@ public class ConnectionOptionsTest { | |
private static final String FILE_TEST_PATH = | ||
ConnectionOptionsTest.class.getResource("test-key.json").getFile(); | ||
private static final String DEFAULT_HOST = "https://spanner.googleapis.com"; | ||
private static final String TEST_PROJECT = "test-project-123"; | ||
private static final String TEST_INSTANCE = "test-instance-123"; | ||
private static final String TEST_DATABASE = "test-database-123"; | ||
|
||
@Test | ||
public void testBuildWithURIWithDots() { | ||
|
@@ -151,21 +154,19 @@ public void testBuildWithAutoConfigEmulator() { | |
|
||
@Test | ||
public void testBuildWithRouteToLeader() { | ||
final String BASE_URI = | ||
"cloudspanner:/projects/test-project-123/instances/test-instance-123/databases/test-database-123"; | ||
ConnectionOptions.Builder builder = ConnectionOptions.newBuilder(); | ||
builder.setUri( | ||
"cloudspanner:/projects/test-project-123/instances/test-instance-123/databases/test-database-123?routeToLeader=false"); | ||
builder.setUri(BASE_URI + "?routeToLeader=false"); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nit: Prefer StringBuilder() . There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think for single statement, the compiler would use |
||
ConnectionOptions options = builder.build(); | ||
assertEquals(options.getHost(), DEFAULT_HOST); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. While the asserts here are consistent with what is used in the test class, we should try having a single assert statement. For ex - This provides benefits where you asserting the entire object and not picking few of the members and can help to pick code side-effects where any member got modified by mistake. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I understand your concern here. I'll want to take this up as a separate effort, as it's changing the way we have been writing unit tests so far. Let's discuss more in details offline, and take it forward from there. Keeping this thread open until then. |
||
assertEquals(options.getProjectId(), "test-project-123"); | ||
assertEquals(options.getInstanceId(), "test-instance-123"); | ||
assertEquals(options.getDatabaseName(), "test-database-123"); | ||
assertEquals(options.getProjectId(), TEST_PROJECT); | ||
assertEquals(options.getInstanceId(), TEST_INSTANCE); | ||
assertEquals(options.getDatabaseName(), TEST_DATABASE); | ||
assertFalse(options.isRouteToLeader()); | ||
|
||
// Test for default behavior for routeToLeader property. | ||
builder = | ||
ConnectionOptions.newBuilder() | ||
.setUri( | ||
"cloudspanner:/projects/test-project-123/instances/test-instance-123/databases/test-database-123"); | ||
builder = ConnectionOptions.newBuilder().setUri(BASE_URI); | ||
options = builder.build(); | ||
assertTrue(options.isRouteToLeader()); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: Can be defined as private static.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are several places in this file where this can be done and replace the hard-codings with constants. We can take it as a follow-up task in a separate PR.