8.2.34 | Linux | www-data (uid:33)
👁 View: ping.py
📁 //snap/google-cloud-cli/current/lib/surface/firestore/databases/ping.py
# -*- coding: utf-8 -*- # # Copyright 2025 Google LLC. All Rights Reserved. # # 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. """The gcloud Firestore databases ping command.""" import itertools import statistics import textwrap import time from googlecloudsdk.api_lib.firestore import databases from googlecloudsdk.calliope import base from googlecloudsdk.command_lib.firestore import connection_util from googlecloudsdk.command_lib.firestore import flags from googlecloudsdk.core import properties @base.DefaultUniverseOnly @base.ReleaseTracks( base.ReleaseTrack.ALPHA, base.ReleaseTrack.BETA, base.ReleaseTrack.GA ) class Ping(base.Command): """Times the connection and ping time for a Firestore with MongoDB compatibility database. ## EXAMPLES To time the connection and ping times for a Firestore with MongoDB compatibility database `testdb`: $ {command} --database=testdb """ _NUM_CONNECTS = 5 _NUM_PINGS = 10 @staticmethod def Args(parser): flags.AddDatabaseIdFlag(parser, required=True) def Run(self, args): project = properties.VALUES.core.project.Get(required=True) db = databases.GetDatabase(project, args.database) hostname = f'{db.uid}.{db.locationId}.firestore.goog' timing_results = [] print(f'Testing connectivity latency to {hostname}.') for _ in range(self._NUM_CONNECTS): try: timing_results.append( connection_util.ConnectAndPing(hostname, self._NUM_PINGS) ) except IOError as e: print(f'Failed to establish connection to {hostname}: {e}') time.sleep(1) # Compute the timing statistics and build the output summary. connect_times = list( filter(None, [result[0] for result in timing_results if result]) ) connection_time_avg = ( f'{sum(connect_times) / len(connect_times):.3f}' if connect_times else 'N/A' ) ping_time_lists = [result[1] for result in timing_results if result] ping_times = list( filter(None, itertools.chain.from_iterable(ping_time_lists)) ) ping_time_avg = ( f'{sum(ping_times) / len(ping_times):.3f}' if ping_times else 'N/A' ) ping_time_stddev = ( f'{statistics.stdev(ping_times):.3f}' if len(ping_times) > 1 else 'N/A' ) summary = f""" Successful connections: {len(connect_times)} / {self._NUM_CONNECTS} Average connection setup latency (s): {connection_time_avg} Successful pings: {len(ping_times)} / {self._NUM_PINGS * self._NUM_CONNECTS} Ping time average (s): {ping_time_avg} Ping time standard deviation (s): {ping_time_stddev} """ print(textwrap.dedent(summary))
← Back
💻 Terminal
📤 Upload
📂
Click or Drag & Drop
📁 //snap/google-cloud-cli/current/lib/surface/firestore/databases
NameSizePermModifiedActions
📁 __pycache__/-07752026-09-29 12:17🗑 Delete
__init__.py815B06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
clone.py3.3K06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
connection_string.py4.1K06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
connection_string.yaml91B06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
create.py12K06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
create.yaml92B06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
delete.py2.2K06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
delete.yaml92B06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
describe.py1.6K06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
describe.yaml91B06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
list.py1.6K06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
list.yaml91B06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
ping.py3.1K06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
ping.yaml91B06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
restore.py2.9K06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
restore.yaml92B06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del
update.yaml1.3K06441980-01-01 08:00👁 View ✏️ Edit 📝 Rename 📦 Move 🗑 Del