CABE is a performance benchmark A/B experiment analysis service.
See the Design Doc.
//cabe:cabeserver
//cabe/go/analysisserver
//cabe/go/cmd/...
go_binary
targets)//cabe/go/cmd/cabeserver
//cabe/go/analysisserver
for the actual request handler implementations//cabe/go/proto
grpcurl
To make a GetAnalysis
request for a specific pinpoint job, you can use the grpcurl command line utility.
For this command to work, you should also have gcloud
installed, and run gcloud auth login
so you're logged in using an authorized account.
grpcurl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -d '{"pinpoint_job_id":"<PINPOINT JOB ID>"}' \ cabe.skia.org:443 cabe.proto.Analysis/GetAnalysis
If successful, this command will write a textproto encoding of the cabe.proto.GetAnalysisResponse
from the server to stdout.
To start the server, in one terminal run:
bazelisk run //cabe/go/cmd/cabeserver -- -disable_grpcsp
This should start the gRPC service and print out some log messages including the port that server is listening on. Currently, the default is 50051
though you can specify it (and other flags) like so:
bazelisk run //cabe/go/cmd/cabeserver -- -disable_grpcsp -grpc_port <some other port>
Once the server process has started, you should be able to use grpcurl to make calls to it on your workstation. For example:
grpcurl -vv -plaintext 127.0.0.1:50051 cabe.proto.Analysis/GetAnalysis
Hopefully you will never need to do this, but just in case you need to debug problems with authentication or authorization here‘s how to run skia’s auth-proxy
in front of cabe
, both running on your workstation.
In one terminal, run auth-proxy:
bazelisk run //kube/cmd/auth-proxy -- \ --prom-port=:20001 \ --role=viewer=google.com \ --authtype=mocked \ --mock_user=$USER@google.com \ --port=:8003 \ --target_port=https://127.0.0.1:50051 \ --self_sign_localhost_tls \ --local
In another terminal, start cabserver (no not use -disable_grpcsp
with this method):
bazelisk run //cabe/go/cmd/cabeserver
Then in a third terminal, use grpcurl to send a request through the auth-proxy to the cabeserver (make sure you have the -insecure
flag set):
grpcurl -vv -insecure 127.0.0.1:8003 cabe.proto.Analysis/GetAnalysis
Note that this command will produce a warning message (which you can ignore for local debugging purposes) about disabling SSL verification.
cabserver
should be able to see the auth headers set by auth-proxy
now, and the user identity should be the $USER@google.com
specified in the mock_user
flag passed to the auth-proxy
command.