diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index e1e9366b..bdabf37d 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -33,6 +33,11 @@
+
+ com.google.protobuf
+ protobuf-java-util
+ 3.13.0
+
junit
junit
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index b6faee30..bcdade0c 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -32,6 +32,11 @@
+
+ com.google.protobuf
+ protobuf-java-util
+ 3.13.0
+
junit
junit
@@ -80,4 +85,4 @@
-
\ No newline at end of file
+
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 13ae0dcc..7fc0dd66 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -43,6 +43,11 @@
0.3.1
+
+ com.google.protobuf
+ protobuf-java-util
+ 3.13.0
+
junit
junit
diff --git a/samples/snippets/src/main/java/com/example/bigqueryconnection/UpdateConnection.java b/samples/snippets/src/main/java/com/example/bigqueryconnection/UpdateConnection.java
new file mode 100644
index 00000000..b3efce6a
--- /dev/null
+++ b/samples/snippets/src/main/java/com/example/bigqueryconnection/UpdateConnection.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.bigqueryconnection;
+
+// [START bigqueryconnection_update_connection]
+import com.google.cloud.bigquery.connection.v1.Connection;
+import com.google.cloud.bigquery.connection.v1.ConnectionName;
+import com.google.cloud.bigquery.connection.v1.UpdateConnectionRequest;
+import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
+import com.google.protobuf.FieldMask;
+import com.google.protobuf.util.FieldMaskUtil;
+import java.io.IOException;
+
+// Sample to update connection
+public class UpdateConnection {
+
+ public static void main(String[] args) throws IOException {
+ // TODO(developer): Replace these variables before running the sample.
+ String projectId = "MY_PROJECT_ID";
+ String location = "MY_LOCATION";
+ String connectionId = "MY_CONNECTION_ID";
+ String description = "MY_DESCRIPTION";
+ Connection connection = Connection.newBuilder().setDescription(description).build();
+ updateConnection(projectId, location, connectionId, connection);
+ }
+
+ public static void updateConnection(
+ String projectId, String location, String connectionId, Connection connection)
+ throws IOException {
+ try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
+ ConnectionName name = ConnectionName.of(projectId, location, connectionId);
+ FieldMask updateMask = FieldMaskUtil.fromString("description");
+ UpdateConnectionRequest request =
+ UpdateConnectionRequest.newBuilder()
+ .setName(name.toString())
+ .setConnection(connection)
+ .setUpdateMask(updateMask)
+ .build();
+ Connection response = client.updateConnection(request);
+ System.out.println("Connection updated successfully :" + response.getDescription());
+ }
+ }
+}
+// [END bigqueryconnection_update_connection]
diff --git a/samples/snippets/src/test/java/com/example/bigqueryconnection/UpdateConnectionIT.java b/samples/snippets/src/test/java/com/example/bigqueryconnection/UpdateConnectionIT.java
new file mode 100644
index 00000000..d769b72a
--- /dev/null
+++ b/samples/snippets/src/test/java/com/example/bigqueryconnection/UpdateConnectionIT.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2020 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.bigqueryconnection;
+
+import static com.google.common.truth.Truth.assertThat;
+import static junit.framework.TestCase.assertNotNull;
+
+import com.google.cloud.bigquery.connection.v1.CloudSqlCredential;
+import com.google.cloud.bigquery.connection.v1.CloudSqlProperties;
+import com.google.cloud.bigquery.connection.v1.Connection;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.UUID;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class UpdateConnectionIT {
+
+ private static final Logger LOG = Logger.getLogger(UpdateConnectionIT.class.getName());
+ private static final String LOCATION = "US";
+ private static final String REGION = "us-central1";
+ private static final String PROJECT_ID = requireEnvVar("GOOGLE_CLOUD_PROJECT");
+ private static final String MY_SQL_DATABASE = requireEnvVar("MY_SQL_DATABASE");
+ private static final String MY_SQL_INSTANCE = requireEnvVar("MY_SQL_INSTANCE");
+ private static final String DB_USER = requireEnvVar("DB_USER");
+ private static final String DB_PWD = requireEnvVar("DB_PWD");
+
+ private String connectionId;
+ private ByteArrayOutputStream bout;
+ private PrintStream out;
+ private PrintStream originalPrintStream;
+
+ private static String requireEnvVar(String varName) {
+ String value = System.getenv(varName);
+ assertNotNull(
+ "Environment variable " + varName + " is required to perform these tests.",
+ System.getenv(varName));
+ return value;
+ }
+
+ @BeforeClass
+ public static void checkRequirements() {
+ requireEnvVar("GOOGLE_CLOUD_PROJECT");
+ requireEnvVar("MY_SQL_DATABASE");
+ requireEnvVar("MY_SQL_INSTANCE");
+ requireEnvVar("DB_USER");
+ requireEnvVar("DB_PWD");
+ }
+
+ @Before
+ public void setUp() throws IOException {
+ bout = new ByteArrayOutputStream();
+ out = new PrintStream(bout);
+ originalPrintStream = System.out;
+ System.setOut(out);
+ // create a temporary connection
+ connectionId = "MY_CONNECTION_TEST_" + UUID.randomUUID().toString().substring(0, 8);
+ String instanceId = String.format("%s:%s:%s", PROJECT_ID, REGION, MY_SQL_INSTANCE);
+ CloudSqlCredential cloudSqlCredential =
+ CloudSqlCredential.newBuilder().setUsername(DB_USER).setPassword(DB_PWD).build();
+ CloudSqlProperties cloudSqlProperties =
+ CloudSqlProperties.newBuilder()
+ .setType(CloudSqlProperties.DatabaseType.MYSQL)
+ .setDatabase(MY_SQL_DATABASE)
+ .setInstanceId(instanceId)
+ .setCredential(cloudSqlCredential)
+ .build();
+ Connection connection = Connection.newBuilder().setCloudSql(cloudSqlProperties).build();
+ CreateConnection.createConnection(PROJECT_ID, LOCATION, connectionId, connection);
+ }
+
+ @After
+ public void tearDown() throws IOException {
+ // Clean up
+ DeleteConnection.deleteConnection(PROJECT_ID, LOCATION, connectionId);
+ // restores print statements in the original method
+ System.out.flush();
+ System.setOut(originalPrintStream);
+ LOG.log(Level.INFO, bout.toString());
+ }
+
+ @Test
+ public void testUpdateConnection() throws IOException {
+ String description = "MY_DESCRIPTION";
+ Connection connection = Connection.newBuilder().setDescription(description).build();
+ UpdateConnection.updateConnection(PROJECT_ID, LOCATION, connectionId, connection);
+ assertThat(bout.toString()).contains("Connection updated successfully :");
+ }
+}