From aff9370027d939f6fff053fca2127420cae84607 Mon Sep 17 00:00:00 2001 From: Sofia Leon Date: Thu, 17 Nov 2022 17:14:01 -0800 Subject: [PATCH] build: add a quickstart test --- .../google-cloud-compute/samples/package.json | 2 +- .../samples/quickstart.js | 60 +++++++++++++++++++ .../samples/test/quickstart.test.js | 33 ++++++++++ 3 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 packages/google-cloud-compute/samples/quickstart.js create mode 100644 packages/google-cloud-compute/samples/test/quickstart.test.js diff --git a/packages/google-cloud-compute/samples/package.json b/packages/google-cloud-compute/samples/package.json index ee0c75b9780..14d8f213044 100644 --- a/packages/google-cloud-compute/samples/package.json +++ b/packages/google-cloud-compute/samples/package.json @@ -26,4 +26,4 @@ "proxyquire": "^2.0.1", "uuid": "^9.0.0" } -} \ No newline at end of file +} diff --git a/packages/google-cloud-compute/samples/quickstart.js b/packages/google-cloud-compute/samples/quickstart.js new file mode 100644 index 00000000000..65464db0a7f --- /dev/null +++ b/packages/google-cloud-compute/samples/quickstart.js @@ -0,0 +1,60 @@ +// Copyright 2021 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. + +/** + * Gets all instances present in a project, grouped by their zone. + * + * @param {string} projectId - ID or number of the project you want to use. + */ +function main(projectId) { + // [START compute_instances_list_all] + /** + * TODO(developer): Uncomment and replace these variables before running the sample. + */ + // const projectId = 'YOUR_PROJECT_ID'; + + const compute = require('@google-cloud/compute'); + + // List all instances in the specified project. + async function listAllInstances() { + const instancesClient = new compute.InstancesClient(); + + //Use the `maxResults` parameter to limit the number of results that the API returns per response page. + const aggListRequest = instancesClient.aggregatedListAsync({ + project: projectId, + maxResults: 5, + }); + + console.log('Instances found:'); + + // Despite using the `maxResults` parameter, you don't need to handle the pagination + // yourself. The returned object handles pagination automatically, + // requesting next pages as you iterate over the results. + for await (const [zone, instancesObject] of aggListRequest) { + const instances = instancesObject.instances; + + if (instances && instances.length > 0) { + console.log(` ${zone}`); + for (const instance of instances) { + console.log(` - ${instance.name} (${instance.machineType})`); + } + } + } + } + + listAllInstances(); + // [END compute_instances_list_all] +} + +main(...process.argv.slice(2)); diff --git a/packages/google-cloud-compute/samples/test/quickstart.test.js b/packages/google-cloud-compute/samples/test/quickstart.test.js new file mode 100644 index 00000000000..685a850b6c7 --- /dev/null +++ b/packages/google-cloud-compute/samples/test/quickstart.test.js @@ -0,0 +1,33 @@ +// Copyright 2021 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. + +'use strict'; + +const compute = require('@google-cloud/compute'); + +const {describe, it} = require('mocha'); +const cp = require('child_process'); +const {assert} = require('chai'); + +const instancesClient = new compute.InstancesClient({fallback: 'rest'}); + +const execSync = cmd => cp.execSync(cmd, {encoding: 'utf-8'}); + +describe('samples', () => { + it('should print all instances list', async () => { + const projectId = await instancesClient.getProjectId(); + const output = execSync(`node quickstart.js ${projectId}`); + assert.match(output, /Instances found:/); + }); +});