Skip to content
This repository was archived by the owner on Jan 23, 2024. It is now read-only.

feat: add Firebase RTDB backend #48

Merged
merged 24 commits into from
Jul 26, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
fa23143
Create firebase client, test app, and start implementing
mctavish Jul 5, 2022
468a1a7
checkpoint: registering and listening for breakpoints
mctavish Jul 6, 2022
6933034
WIP: handle breakpoint updates
mctavish Jul 6, 2022
ee78737
Checkpoint: breakpoints successfully set, triggered, and saved
mctavish Jul 6, 2022
570b31b
fix: breakpoints can come in via patch or put
mctavish Jul 7, 2022
7325e39
Merge branch 'GoogleCloudPlatform:main' into firebase-backend
mctavish Jul 7, 2022
e1e12ed
format code
mctavish Jul 7, 2022
21f9cbb
Add flag to control which backend is used
mctavish Jul 7, 2022
525119a
Add debuggee id generation and clean up some unused code
mctavish Jul 7, 2022
7f2afb1
Merge branch 'GoogleCloudPlatform:main' into firebase-backend
mctavish Jul 7, 2022
0a76a27
formatting
mctavish Jul 7, 2022
3c0190d
Clean up more linter errors and shorten debuggee ids
mctavish Jul 7, 2022
68a5fc2
fix remaining linter errors
mctavish Jul 7, 2022
9075d96
Remove unused constant
mctavish Jul 7, 2022
81995e8
Address review comments
mctavish Jul 11, 2022
f9357ff
Add firebase client unit tests
mctavish Jul 19, 2022
01d902a
Fix some linter issues
mctavish Jul 19, 2022
741cbcb
Apply capture_collector bugfix
mctavish Jul 25, 2022
55b8bbf
Remove references to googeapiclient
mctavish Jul 25, 2022
9ded0f2
Tidy up the firebase sample app
mctavish Jul 26, 2022
3b5c4c1
Remove old firebase sample.
mctavish Jul 26, 2022
66a2604
Address some linter issues
mctavish Jul 26, 2022
989671d
Remove some unused code.
mctavish Jul 26, 2022
ac7c1dd
Remove some completed TODOs
mctavish Jul 26, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions firebase-sample/app.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import googleclouddebugger
googleclouddebugger.enable(use_firebase= True)

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
return "<p>Hello World!</p>"

20 changes: 20 additions & 0 deletions firebase-sample/build-and-run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/bin/bash -e

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
cd "${SCRIPT_DIR}/.."

cd src
./build.sh
cd ..

python3 -m venv /tmp/cdbg-venv
source /tmp/cdbg-venv/bin/activate
pip3 install -r requirements.txt
pip3 install src/dist/* --force-reinstall

cd firebase-sample
pip3 install -r requirements.txt
python3 -m flask run
cd ..

deactivate
1 change: 1 addition & 0 deletions firebase-sample/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
flask
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
google-auth-httplib2
google-api-python-client
google-api-core
firebase_admin
pyyaml
1 change: 1 addition & 0 deletions requirements_dev.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
-r requirements.txt
absl-py
pytest
requests-mock
38 changes: 24 additions & 14 deletions src/googleclouddebugger/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
from . import collector
from . import error_data_visibility_policy
from . import gcp_hub_client
from . import firebase_client
from . import glob_data_visibility_policy
from . import yaml_data_visibility_config_reader
from . import cdbg_native
Expand All @@ -38,42 +39,51 @@
__version__ = version.__version__

_flags = None
_hub_client = None
_backend_client = None
_breakpoints_manager = None


def _StartDebugger():
"""Configures and starts the debugger."""
global _hub_client
global _backend_client
global _breakpoints_manager

cdbg_native.InitializeModule(_flags)
cdbg_native.LogInfo(
f'Initializing Cloud Debugger Python agent version: {__version__}')

_hub_client = gcp_hub_client.GcpHubClient()
use_firebase = _flags.get('use_firebase')
if use_firebase:
_backend_client = firebase_client.FirebaseClient()
_backend_client.SetupAuth(
_flags.get('project_id'), _flags.get('service_account_json_file'),
_flags.get('firebase_db_url'))
else:
_backend_client = gcp_hub_client.GcpHubClient()
_backend_client.SetupAuth(
_flags.get('project_id'), _flags.get('project_number'),
_flags.get('service_account_json_file'))
_backend_client.SetupCanaryMode(
_flags.get('breakpoint_enable_canary'),
_flags.get('breakpoint_allow_canary_override'))

visibility_policy = _GetVisibilityPolicy()

_breakpoints_manager = breakpoints_manager.BreakpointsManager(
_hub_client, visibility_policy)
_backend_client, visibility_policy)

# Set up loggers for logpoints.
collector.SetLogger(logging.getLogger())

collector.CaptureCollector.pretty_printers.append(
appengine_pretty_printers.PrettyPrinter)

_hub_client.on_active_breakpoints_changed = (
_backend_client.on_active_breakpoints_changed = (
_breakpoints_manager.SetActiveBreakpoints)
_hub_client.on_idle = _breakpoints_manager.CheckBreakpointsExpiration
_hub_client.SetupAuth(
_flags.get('project_id'), _flags.get('project_number'),
_flags.get('service_account_json_file'))
_hub_client.SetupCanaryMode(
_flags.get('breakpoint_enable_canary'),
_flags.get('breakpoint_allow_canary_override'))
_hub_client.InitializeDebuggeeLabels(_flags)
_hub_client.Start()
_backend_client.on_idle = _breakpoints_manager.CheckBreakpointsExpiration

_backend_client.InitializeDebuggeeLabels(_flags)
_backend_client.Start()


def _GetVisibilityPolicy():
Expand Down
Loading