From 17d96af5d616aba0866b8740c408b595efb81fb7 Mon Sep 17 00:00:00 2001 From: stephwang Date: Fri, 24 Jan 2020 16:24:30 -0500 Subject: [PATCH 1/8] feat: new sample - Models: List Models --- .../com/example/bigquery/ListDatasets.java | 9 ++- .../java/com/example/bigquery/ListModels.java | 57 ++++++++++++++++ .../com/example/bigquery/ListModelsIT.java | 66 +++++++++++++++++++ 3 files changed, 129 insertions(+), 3 deletions(-) create mode 100644 samples/src/main/java/com/example/bigquery/ListModels.java create mode 100644 samples/src/test/java/com/example/bigquery/ListModelsIT.java diff --git a/samples/src/main/java/com/example/bigquery/ListDatasets.java b/samples/src/main/java/com/example/bigquery/ListDatasets.java index 2c86c71aa..96f5c4997 100644 --- a/samples/src/main/java/com/example/bigquery/ListDatasets.java +++ b/samples/src/main/java/com/example/bigquery/ListDatasets.java @@ -39,9 +39,12 @@ public static void listDatasets(String projectId) { BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService(); Page datasets = bigquery.listDatasets(projectId, DatasetListOption.pageSize(100)); - for (Dataset dataset : datasets.iterateAll()) { - System.out.println(dataset.getDatasetId() + " dataset in project listed successfully"); - } + datasets + .iterateAll() + .forEach( + dataset -> + System.out.println( + dataset.getDatasetId() + " dataset in project listed successfully")); } catch (BigQueryException e) { System.out.println("Project does not contain any datasets \n" + e.toString()); } diff --git a/samples/src/main/java/com/example/bigquery/ListModels.java b/samples/src/main/java/com/example/bigquery/ListModels.java new file mode 100644 index 000000000..4f21052d5 --- /dev/null +++ b/samples/src/main/java/com/example/bigquery/ListModels.java @@ -0,0 +1,57 @@ +/* + * 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.bigquery; + +import com.google.api.gax.paging.Page; +import com.google.cloud.bigquery.BigQuery; +import com.google.cloud.bigquery.BigQuery.ModelListOption; +import com.google.cloud.bigquery.BigQueryException; +import com.google.cloud.bigquery.BigQueryOptions; +import com.google.cloud.bigquery.Model; + +// [START bigquery_list_models] +public class ListModels { + + public static void runListModels() { + // TODO(developer): Replace these variables before running the sample. + String datasetName = "MY_DATASET_NAME"; + listModels(datasetName); + } + + public static void listModels(String datasetName) { + try { + // Initialize client that will be used to send requests. This client only needs to be created + // once, and can be reused for multiple requests. + BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService(); + + try { + Page models = bigquery.listModels(datasetName, ModelListOption.pageSize(100)); + models + .iterateAll() + .forEach( + model -> + System.out.println( + model.getModelId() + " models in dataset listed successfully.")); + } catch (NullPointerException e) { + System.out.print("Dataset does not contain any models"); + } + } catch (BigQueryException e) { + System.out.println("Models not listed in dataset due to error: \n" + e.toString()); + } + } +} +// [END bigquery_list_models] diff --git a/samples/src/test/java/com/example/bigquery/ListModelsIT.java b/samples/src/test/java/com/example/bigquery/ListModelsIT.java new file mode 100644 index 000000000..454927514 --- /dev/null +++ b/samples/src/test/java/com/example/bigquery/ListModelsIT.java @@ -0,0 +1,66 @@ +/* + * 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.bigquery; + +import static com.google.common.truth.Truth.assertThat; +import static junit.framework.TestCase.assertNotNull; +import static org.hamcrest.core.StringContains.containsString; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +public class ListModelsIT { + private ByteArrayOutputStream bout; + private PrintStream out; + + private static final String BIGQUERY_MODEL_TEST_PROJECT_ID = System.getenv("BIGQUERY_MODEL_TEST_PROJECT_ID"); + + private static void requireEnvVar(String varName) { + assertNotNull( + "Environment variable " + varName + " is required to perform these tests.", + System.getenv(varName)); + } + + @BeforeClass + public static void checkRequirements() { + requireEnvVar("BIGQUERY_MODEL_TEST_PROJECT_ID"); + } + + @Before + public void setUp() { + bout = new ByteArrayOutputStream(); + out = new PrintStream(bout); + System.setOut(out); + } + + @After + public void tearDown() { + System.setOut(null); + } + + @Test + public void testListModels() { + String datasetName = "samples"; + ListModels.listModels(datasetName); + assertThat(bout.toString()), either(containsString("color")).or(containsString("colour"))); + assertThat(bout.toString()).contains("models in dataset listed successfully.") || bout.toString().contains("models in dataset listed successfully.")); + } +} From 9198d8593371c6f2600f3f77aee76b4ddd1ffe1a Mon Sep 17 00:00:00 2001 From: stephwang Date: Fri, 24 Jan 2020 17:20:08 -0500 Subject: [PATCH 2/8] update to use hamcrest truth --- .../com/example/bigquery/ListModelsIT.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/samples/src/test/java/com/example/bigquery/ListModelsIT.java b/samples/src/test/java/com/example/bigquery/ListModelsIT.java index 454927514..b5499fd11 100644 --- a/samples/src/test/java/com/example/bigquery/ListModelsIT.java +++ b/samples/src/test/java/com/example/bigquery/ListModelsIT.java @@ -16,9 +16,10 @@ package com.example.bigquery; -import static com.google.common.truth.Truth.assertThat; import static junit.framework.TestCase.assertNotNull; -import static org.hamcrest.core.StringContains.containsString; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.either; +import static org.hamcrest.MatcherAssert.assertThat; import java.io.ByteArrayOutputStream; import java.io.PrintStream; @@ -31,7 +32,7 @@ public class ListModelsIT { private ByteArrayOutputStream bout; private PrintStream out; - private static final String BIGQUERY_MODEL_TEST_PROJECT_ID = System.getenv("BIGQUERY_MODEL_TEST_PROJECT_ID"); + private static final String BIGQUERY_DATASET_NAME = System.getenv("BIGQUERY_DATASET_NAME"); private static void requireEnvVar(String varName) { assertNotNull( @@ -41,7 +42,7 @@ private static void requireEnvVar(String varName) { @BeforeClass public static void checkRequirements() { - requireEnvVar("BIGQUERY_MODEL_TEST_PROJECT_ID"); + requireEnvVar("BIGQUERY_DATASET_NAME"); } @Before @@ -58,9 +59,10 @@ public void tearDown() { @Test public void testListModels() { - String datasetName = "samples"; - ListModels.listModels(datasetName); - assertThat(bout.toString()), either(containsString("color")).or(containsString("colour"))); - assertThat(bout.toString()).contains("models in dataset listed successfully.") || bout.toString().contains("models in dataset listed successfully.")); + ListModels.listModels(BIGQUERY_DATASET_NAME); + assertThat( + bout.toString(), + either(containsString("models in dataset listed successfully")) + .or(containsString("Dataset does not contain any models"))); } } From 635d891bccd2a6cdfb30ee4a8a067d74ca2f5c90 Mon Sep 17 00:00:00 2001 From: stephwang Date: Mon, 27 Jan 2020 14:04:01 -0500 Subject: [PATCH 3/8] update base on comments --- .../src/main/java/com/example/bigquery/ListModels.java | 2 +- .../src/test/java/com/example/bigquery/ListModelsIT.java | 9 ++------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/samples/src/main/java/com/example/bigquery/ListModels.java b/samples/src/main/java/com/example/bigquery/ListModels.java index 4f21052d5..c0a261a67 100644 --- a/samples/src/main/java/com/example/bigquery/ListModels.java +++ b/samples/src/main/java/com/example/bigquery/ListModels.java @@ -47,7 +47,7 @@ public static void listModels(String datasetName) { System.out.println( model.getModelId() + " models in dataset listed successfully.")); } catch (NullPointerException e) { - System.out.print("Dataset does not contain any models"); + throw new NullPointerException("Dataset does not contain any models"); } } catch (BigQueryException e) { System.out.println("Models not listed in dataset due to error: \n" + e.toString()); diff --git a/samples/src/test/java/com/example/bigquery/ListModelsIT.java b/samples/src/test/java/com/example/bigquery/ListModelsIT.java index b5499fd11..4c4f544e4 100644 --- a/samples/src/test/java/com/example/bigquery/ListModelsIT.java +++ b/samples/src/test/java/com/example/bigquery/ListModelsIT.java @@ -17,10 +17,8 @@ package com.example.bigquery; import static junit.framework.TestCase.assertNotNull; -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.CoreMatchers.either; -import static org.hamcrest.MatcherAssert.assertThat; +import com.google.common.truth.Truth; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import org.junit.After; @@ -60,9 +58,6 @@ public void tearDown() { @Test public void testListModels() { ListModels.listModels(BIGQUERY_DATASET_NAME); - assertThat( - bout.toString(), - either(containsString("models in dataset listed successfully")) - .or(containsString("Dataset does not contain any models"))); + Truth.assertThat(bout.toString()).contains("models in dataset listed successfully"); } } From 3c6a4f6e9e331a283d432bca1562369ea77cb129 Mon Sep 17 00:00:00 2001 From: stephwang Date: Mon, 27 Jan 2020 16:57:12 -0500 Subject: [PATCH 4/8] update base on comment --- .../java/com/example/bigquery/ListDatasets.java | 16 ++++++++++------ .../java/com/example/bigquery/ListModels.java | 8 ++++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/samples/src/main/java/com/example/bigquery/ListDatasets.java b/samples/src/main/java/com/example/bigquery/ListDatasets.java index 96f5c4997..7b4075b50 100644 --- a/samples/src/main/java/com/example/bigquery/ListDatasets.java +++ b/samples/src/main/java/com/example/bigquery/ListDatasets.java @@ -39,12 +39,16 @@ public static void listDatasets(String projectId) { BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService(); Page datasets = bigquery.listDatasets(projectId, DatasetListOption.pageSize(100)); - datasets - .iterateAll() - .forEach( - dataset -> - System.out.println( - dataset.getDatasetId() + " dataset in project listed successfully")); + if (datasets == null) { + System.out.println("Dataset does not contain any models"); + } else { + datasets + .iterateAll() + .forEach( + dataset -> + System.out.println( + dataset.getDatasetId() + " dataset in project listed successfully")); + } } catch (BigQueryException e) { System.out.println("Project does not contain any datasets \n" + e.toString()); } diff --git a/samples/src/main/java/com/example/bigquery/ListModels.java b/samples/src/main/java/com/example/bigquery/ListModels.java index c0a261a67..934e728c1 100644 --- a/samples/src/main/java/com/example/bigquery/ListModels.java +++ b/samples/src/main/java/com/example/bigquery/ListModels.java @@ -38,16 +38,16 @@ public static void listModels(String datasetName) { // once, and can be reused for multiple requests. BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService(); - try { - Page models = bigquery.listModels(datasetName, ModelListOption.pageSize(100)); + Page models = bigquery.listModels(datasetName, ModelListOption.pageSize(100)); + if (models == null) { + System.out.println("Dataset does not contain any models"); + } else { models .iterateAll() .forEach( model -> System.out.println( model.getModelId() + " models in dataset listed successfully.")); - } catch (NullPointerException e) { - throw new NullPointerException("Dataset does not contain any models"); } } catch (BigQueryException e) { System.out.println("Models not listed in dataset due to error: \n" + e.toString()); From f44e683fd4338b221060798b4d1a972b56362d46 Mon Sep 17 00:00:00 2001 From: stephwang Date: Mon, 27 Jan 2020 16:58:57 -0500 Subject: [PATCH 5/8] nit --- samples/src/main/java/com/example/bigquery/ListModels.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/src/main/java/com/example/bigquery/ListModels.java b/samples/src/main/java/com/example/bigquery/ListModels.java index 934e728c1..4905fde4f 100644 --- a/samples/src/main/java/com/example/bigquery/ListModels.java +++ b/samples/src/main/java/com/example/bigquery/ListModels.java @@ -47,7 +47,7 @@ public static void listModels(String datasetName) { .forEach( model -> System.out.println( - model.getModelId() + " models in dataset listed successfully.")); + model.getModelId() + " model in dataset listed successfully.")); } } catch (BigQueryException e) { System.out.println("Models not listed in dataset due to error: \n" + e.toString()); From 4fc6d59c4355295870159d57d51d21eb2451079f Mon Sep 17 00:00:00 2001 From: stephwang Date: Mon, 27 Jan 2020 17:09:22 -0500 Subject: [PATCH 6/8] nit --- samples/src/test/java/com/example/bigquery/ListModelsIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/src/test/java/com/example/bigquery/ListModelsIT.java b/samples/src/test/java/com/example/bigquery/ListModelsIT.java index 4c4f544e4..c3096cb00 100644 --- a/samples/src/test/java/com/example/bigquery/ListModelsIT.java +++ b/samples/src/test/java/com/example/bigquery/ListModelsIT.java @@ -58,6 +58,6 @@ public void tearDown() { @Test public void testListModels() { ListModels.listModels(BIGQUERY_DATASET_NAME); - Truth.assertThat(bout.toString()).contains("models in dataset listed successfully"); + Truth.assertThat(bout.toString()).contains("model in dataset listed successfully"); } } From 734876952a39e2f0ccb1df32b7211d026b1379a0 Mon Sep 17 00:00:00 2001 From: stephwang Date: Mon, 27 Jan 2020 18:38:31 -0500 Subject: [PATCH 7/8] nit update --- .../main/java/com/example/bigquery/ListDatasets.java | 11 ++++------- .../main/java/com/example/bigquery/ListModels.java | 11 +++-------- .../java/com/example/bigquery/ListDatasetsIT.java | 2 +- .../test/java/com/example/bigquery/ListModelsIT.java | 2 +- 4 files changed, 9 insertions(+), 17 deletions(-) diff --git a/samples/src/main/java/com/example/bigquery/ListDatasets.java b/samples/src/main/java/com/example/bigquery/ListDatasets.java index 7b4075b50..8edaebf88 100644 --- a/samples/src/main/java/com/example/bigquery/ListDatasets.java +++ b/samples/src/main/java/com/example/bigquery/ListDatasets.java @@ -41,14 +41,11 @@ public static void listDatasets(String projectId) { Page datasets = bigquery.listDatasets(projectId, DatasetListOption.pageSize(100)); if (datasets == null) { System.out.println("Dataset does not contain any models"); - } else { - datasets - .iterateAll() - .forEach( - dataset -> - System.out.println( - dataset.getDatasetId() + " dataset in project listed successfully")); + return; } + datasets + .iterateAll() + .forEach(dataset -> System.out.printf("Success! Dataset ID: %s ", dataset.getDatasetId())); } catch (BigQueryException e) { System.out.println("Project does not contain any datasets \n" + e.toString()); } diff --git a/samples/src/main/java/com/example/bigquery/ListModels.java b/samples/src/main/java/com/example/bigquery/ListModels.java index 4905fde4f..fe6a149ab 100644 --- a/samples/src/main/java/com/example/bigquery/ListModels.java +++ b/samples/src/main/java/com/example/bigquery/ListModels.java @@ -40,15 +40,10 @@ public static void listModels(String datasetName) { Page models = bigquery.listModels(datasetName, ModelListOption.pageSize(100)); if (models == null) { - System.out.println("Dataset does not contain any models"); - } else { - models - .iterateAll() - .forEach( - model -> - System.out.println( - model.getModelId() + " model in dataset listed successfully.")); + System.out.println("Dataset does not contain any models."); + return; } + models.iterateAll().forEach(model -> System.out.printf("Success! Model ID: %s", model.getModelId())); } catch (BigQueryException e) { System.out.println("Models not listed in dataset due to error: \n" + e.toString()); } diff --git a/samples/src/test/java/com/example/bigquery/ListDatasetsIT.java b/samples/src/test/java/com/example/bigquery/ListDatasetsIT.java index 6150390af..6e44e599b 100644 --- a/samples/src/test/java/com/example/bigquery/ListDatasetsIT.java +++ b/samples/src/test/java/com/example/bigquery/ListDatasetsIT.java @@ -44,6 +44,6 @@ public void tearDown() { public void listDatasets() { // List datasets in bigquery-public-data project ListDatasets.listDatasets("bigquery-public-data"); - assertThat(bout.toString()).contains("dataset in project listed successfully"); + assertThat(bout.toString()).contains("Success! Dataset ID"); } } diff --git a/samples/src/test/java/com/example/bigquery/ListModelsIT.java b/samples/src/test/java/com/example/bigquery/ListModelsIT.java index c3096cb00..a94f4ea8b 100644 --- a/samples/src/test/java/com/example/bigquery/ListModelsIT.java +++ b/samples/src/test/java/com/example/bigquery/ListModelsIT.java @@ -58,6 +58,6 @@ public void tearDown() { @Test public void testListModels() { ListModels.listModels(BIGQUERY_DATASET_NAME); - Truth.assertThat(bout.toString()).contains("model in dataset listed successfully"); + Truth.assertThat(bout.toString()).contains("Success! Model ID"); } } From 8b4a09b48159d3c99e2df27d36aa119586b02fb5 Mon Sep 17 00:00:00 2001 From: stephwang Date: Mon, 27 Jan 2020 19:28:37 -0500 Subject: [PATCH 8/8] nit update --- samples/src/main/java/com/example/bigquery/ListDatasets.java | 3 ++- samples/src/main/java/com/example/bigquery/ListModels.java | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/samples/src/main/java/com/example/bigquery/ListDatasets.java b/samples/src/main/java/com/example/bigquery/ListDatasets.java index 8edaebf88..cbeaea25e 100644 --- a/samples/src/main/java/com/example/bigquery/ListDatasets.java +++ b/samples/src/main/java/com/example/bigquery/ListDatasets.java @@ -45,7 +45,8 @@ public static void listDatasets(String projectId) { } datasets .iterateAll() - .forEach(dataset -> System.out.printf("Success! Dataset ID: %s ", dataset.getDatasetId())); + .forEach( + dataset -> System.out.printf("Success! Dataset ID: %s ", dataset.getDatasetId())); } catch (BigQueryException e) { System.out.println("Project does not contain any datasets \n" + e.toString()); } diff --git a/samples/src/main/java/com/example/bigquery/ListModels.java b/samples/src/main/java/com/example/bigquery/ListModels.java index fe6a149ab..3a0cbae4e 100644 --- a/samples/src/main/java/com/example/bigquery/ListModels.java +++ b/samples/src/main/java/com/example/bigquery/ListModels.java @@ -43,7 +43,9 @@ public static void listModels(String datasetName) { System.out.println("Dataset does not contain any models."); return; } - models.iterateAll().forEach(model -> System.out.printf("Success! Model ID: %s", model.getModelId())); + models + .iterateAll() + .forEach(model -> System.out.printf("Success! Model ID: %s", model.getModelId())); } catch (BigQueryException e) { System.out.println("Models not listed in dataset due to error: \n" + e.toString()); }