Skip to content

Commit

Permalink
chore: add tests for rpcPriority (googleapis#672)
Browse files Browse the repository at this point in the history
  • Loading branch information
rahul2393 committed Nov 17, 2021
1 parent b4cc056 commit 1e85d0d
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 5 deletions.
2 changes: 2 additions & 0 deletions src/main/java/com/google/cloud/spanner/jdbc/JdbcDriver.java
Expand Up @@ -108,6 +108,8 @@
* <li>maxSessions (int): Sets the maximum number of sessions in the backing session pool.
* Defaults to 400.
* <li>numChannels (int): Sets the number of gRPC channels to use. Defaults to 4.
* <li>rpcPriority (String): Sets the priority for all RPC invocations from this connection.
* Defaults to HIGH.
* </ul>
*/
public class JdbcDriver implements Driver {
Expand Down
Expand Up @@ -51,6 +51,12 @@ public void testDefaultOptions() throws SQLException {
assertThat(rs.getString("OPTIMIZER_STATISTICS_PACKAGE")).isEqualTo("");
assertThat(rs.next()).isFalse();
}
try (java.sql.ResultSet rs =
connection.createStatement().executeQuery("SHOW VARIABLE RPC_PRIORITY")) {
assertThat(rs.next()).isTrue();
assertThat(rs.getString("RPC_PRIORITY")).isEqualTo("PRIORITY_UNSPECIFIED");
assertThat(rs.next()).isFalse();
}
}
}

Expand All @@ -59,8 +65,8 @@ public void testOptionsInConnectionUrl() throws SQLException {
try (java.sql.Connection connection =
DriverManager.getConnection(
String.format(
"jdbc:%s;optimizerVersion=%s;optimizerStatisticsPackage=%s",
getBaseUrl(), "100", "url_package"))) {
"jdbc:%s;optimizerVersion=%s;optimizerStatisticsPackage=%s;rpcPriority=%s",
getBaseUrl(), "100", "url_package", "LOW"))) {
try (java.sql.ResultSet rs =
connection.createStatement().executeQuery("SHOW VARIABLE OPTIMIZER_VERSION")) {
assertThat(rs.next()).isTrue();
Expand All @@ -73,6 +79,12 @@ public void testOptionsInConnectionUrl() throws SQLException {
assertThat(rs.getString("OPTIMIZER_STATISTICS_PACKAGE")).isEqualTo("url_package");
assertThat(rs.next()).isFalse();
}
try (java.sql.ResultSet rs =
connection.createStatement().executeQuery("SHOW VARIABLE RPC_PRIORITY")) {
assertThat(rs.next()).isTrue();
assertThat(rs.getString("RPC_PRIORITY")).isEqualTo("LOW");
assertThat(rs.next()).isFalse();
}
}
}

Expand Down Expand Up @@ -122,6 +134,28 @@ public void testSetOptions() throws SQLException {
assertThat(rs.getString("OPTIMIZER_STATISTICS_PACKAGE")).isEqualTo("");
assertThat(rs.next()).isFalse();
}

connection.createStatement().execute("SET RPC_PRIORITY='LOW'");
try (java.sql.ResultSet rs =
connection.createStatement().executeQuery("SHOW VARIABLE RPC_PRIORITY")) {
assertThat(rs.next()).isTrue();
assertThat(rs.getString("RPC_PRIORITY")).isEqualTo("LOW");
assertThat(rs.next()).isFalse();
}
connection.createStatement().execute("SET RPC_PRIORITY='MEDIUM'");
try (java.sql.ResultSet rs =
connection.createStatement().executeQuery("SHOW VARIABLE RPC_PRIORITY")) {
assertThat(rs.next()).isTrue();
assertThat(rs.getString("RPC_PRIORITY")).isEqualTo("MEDIUM");
assertThat(rs.next()).isFalse();
}
connection.createStatement().execute("SET RPC_PRIORITY='NULL'");
try (java.sql.ResultSet rs =
connection.createStatement().executeQuery("SHOW VARIABLE RPC_PRIORITY")) {
assertThat(rs.next()).isTrue();
assertThat(rs.getString("RPC_PRIORITY")).isEqualTo("PRIORITY_UNSPECIFIED");
assertThat(rs.next()).isFalse();
}
}
}

Expand All @@ -130,6 +164,7 @@ public void testSetAndUseOptions() throws SQLException {
try (java.sql.Connection connection = createJdbcConnection()) {
connection.createStatement().execute("SET OPTIMIZER_VERSION='20'");
connection.createStatement().execute("SET OPTIMIZER_STATISTICS_PACKAGE='20210609'");
connection.createStatement().execute("SET RPC_PRIORITY='LOW'");
try (java.sql.ResultSet rs =
connection.createStatement().executeQuery(SELECT_COUNT_STATEMENT.getSql())) {
assertThat(rs.next()).isTrue();
Expand All @@ -140,10 +175,12 @@ public void testSetAndUseOptions() throws SQLException {
ExecuteSqlRequest request = getLastExecuteSqlRequest();
assertThat(request.getQueryOptions().getOptimizerVersion()).isEqualTo("20");
assertThat(request.getQueryOptions().getOptimizerStatisticsPackage()).isEqualTo("20210609");
assertThat(request.getRequestOptions().getPriority().toString()).isEqualTo("PRIORITY_LOW");
}

connection.createStatement().execute("SET OPTIMIZER_VERSION='latest'");
connection.createStatement().execute("SET OPTIMIZER_STATISTICS_PACKAGE='latest'");
connection.createStatement().execute("SET RPC_PRIORITY='MEDIUM'");
try (java.sql.ResultSet rs =
connection.createStatement().executeQuery(SELECT_COUNT_STATEMENT.getSql())) {
assertThat(rs.next()).isTrue();
Expand All @@ -152,12 +189,15 @@ public void testSetAndUseOptions() throws SQLException {
ExecuteSqlRequest request = getLastExecuteSqlRequest();
assertThat(request.getQueryOptions().getOptimizerVersion()).isEqualTo("latest");
assertThat(request.getQueryOptions().getOptimizerStatisticsPackage()).isEqualTo("latest");
assertThat(request.getRequestOptions().getPriority().toString())
.isEqualTo("PRIORITY_MEDIUM");
}

// Set the options to ''. This will do a fallback to the default, meaning that it will be read
// from the environment variables as we have nothing set on the connection URL.
connection.createStatement().execute("SET OPTIMIZER_VERSION=''");
connection.createStatement().execute("SET OPTIMIZER_STATISTICS_PACKAGE=''");
connection.createStatement().execute("SET RPC_PRIORITY='NULL'");
try (java.sql.ResultSet rs =
connection.createStatement().executeQuery(SELECT_COUNT_STATEMENT.getSql())) {
assertThat(rs.next()).isTrue();
Expand All @@ -170,6 +210,8 @@ public void testSetAndUseOptions() throws SQLException {
.isEqualTo(MoreObjects.firstNonNull(System.getenv("SPANNER_OPTIMIZER_VERSION"), ""));
assertThat(request.getQueryOptions().getOptimizerStatisticsPackage())
.isEqualTo(MoreObjects.firstNonNull(System.getenv("OPTIMIZER_STATISTICS_PACKAGE"), ""));
assertThat(request.getRequestOptions().getPriority().toString())
.isEqualTo("PRIORITY_UNSPECIFIED");
}
}
}
Expand All @@ -179,7 +221,7 @@ public void testUseOptionsFromConnectionUrl() throws SQLException {
try (java.sql.Connection connection =
DriverManager.getConnection(
String.format(
"jdbc:%s;optimizerVersion=10;optimizerStatisticsPackage=20210609_10_00_00",
"jdbc:%s;optimizerVersion=10;optimizerStatisticsPackage=20210609_10_00_00;rpcPriority=LOW",
getBaseUrl()))) {
// Do a query and verify that the version from the connection URL is used.
try (java.sql.ResultSet rs =
Expand All @@ -192,6 +234,7 @@ public void testUseOptionsFromConnectionUrl() throws SQLException {
assertThat(request.getQueryOptions().getOptimizerVersion()).isEqualTo("10");
assertThat(request.getQueryOptions().getOptimizerStatisticsPackage())
.isEqualTo("20210609_10_00_00");
assertThat(request.getRequestOptions().getPriority().toString()).isEqualTo("PRIORITY_LOW");
}
}
}
Expand Down
Expand Up @@ -107,7 +107,7 @@ public void testConnectWithURLWithDefaultValues() throws SQLException {
@Test
public void testConnectWithURLWithNonDefaultValues() throws SQLException {
String url = createBaseUrl();
url = url + ";autocommit=false;readonly=true;retryAbortsInternally=false";
url = url + ";autocommit=false;readonly=true;retryAbortsInternally=false;rpcPriority=LOW";
if (hasValidKeyFile()) {
url = url + ";credentials=" + getKeyFile();
}
Expand Down Expand Up @@ -138,6 +138,7 @@ public void testConnectWithPropertiesWithNonDefaultValues() throws SQLException
properties.setProperty("autocommit", "false");
properties.setProperty("readonly", "true");
properties.setProperty("retryAbortsInternally", "false");
properties.setProperty("rpcPriority", "LOW");
try (Connection connection = DriverManager.getConnection(url, properties)) {
testNonDefaultConnection(connection);
}
Expand All @@ -146,14 +147,15 @@ public void testConnectWithPropertiesWithNonDefaultValues() throws SQLException
@Test
public void testConnectWithPropertiesWithConflictingValues() throws SQLException {
String url = createBaseUrl();
url = url + ";autocommit=false;readonly=true;retryAbortsInternally=false";
url = url + ";autocommit=false;readonly=true;retryAbortsInternally=false;rpcPriority=LOW";
if (hasValidKeyFile()) {
url = url + ";credentials=" + getKeyFile();
}
Properties properties = new Properties();
properties.setProperty("autocommit", "true");
properties.setProperty("readonly", "false");
properties.setProperty("retryAbortsInternally", "true");
properties.setProperty("rpcPriority", "MEDIUM");
try (Connection connection = DriverManager.getConnection(url, properties)) {
testNonDefaultConnection(connection);
}
Expand Down

0 comments on commit 1e85d0d

Please sign in to comment.