blob: 46fd90c61ddbcf1631658e93ba2c89c23b04410b [file] [log] [blame] [view]
# worker
## Endpoints
### `/merge/?date=<YYYY-MM-DD>`
The merge endpoint reads the set of reports from the upload bucket prefixed with
the value of the data param and encodes each report as newline separated JSON in
a merged report. It returns the number of reports merged and the location of the
merged report.
### `/chart/?date=<YYYY-MM-DD>`
The chart endpoint reads the report from the merge bucket from the given date
and generates chart data for that report. It returns the number of reports used
in generated the report and the location of the chart data.
## Local Development
For local development, simply build and run. It serves on localhost:8082.
go run ./godev/cmd/worker
By default, the server will use the filesystem for storage object I/O. Use the
-gcs flag to use the Cloud Storage API.
go run ./godev/cmd/worker --gcs
Optionally, use the localstorage devtool the emulate the GCS server on your
machine.
./godev/devtools/localstorage.sh
STORAGE_EMULATOR_HOST=localhost:8081 go run ./godev/cmd/worker --gcs
### Environment Variables
| Name | Default | Description |
| ------------------------------ | --------------------- | --------------------------------------------------------- |
| GO_TELEMETRY_PROJECT_ID | go-telemetry | GCP project ID |
| GO_TELEMETRY_LOCAL_STORAGE | .localstorage | Directory for storage emulator I/O or file system storage |
| GO_TELEMETRY_UPLOAD_CONFIG | ../config/config.json | Location of the upload config used for report validation |
| GO_TELEMETRY_MAX_REQUEST_BYTES | 102400 | Maximum request body size the server allows |
| GO_TELEMETRY_ENV | local | Deployment environment (e.g. prod, dev, local, ... ) |
| GO_TELEMETRY_LOCATION_ID | | GCP location of the service (e.g, us-east1) |
| GO_TELEMETRY_SERVICE_ACCOUNT | | GCP service account used for queueing work tasks |
| GO_TELEMETRY_CLIENT_ID | | GCP OAuth client used in authentication for queue tasks |
| GO_TELEMETRY_WORKER_URL | http://localhost:8082 | |
## Testing
The worker servie has a suite of regression tests that can be run with:
go test golang.org/x/telemetry/...
## Deploying
Each time a CL is reviewed and submitted, the site is automatically deployed to
Cloud Run. If it passes its serving-readiness checks, it will be automatically
promoted to handle traffic.
If the automatic deployment is not working, or to check on the status of a
pending deployment, see the worker trigger in the
[Cloud Build history](https://console.cloud.google.com/cloud-build/builds?project=go-telemetry).
### Test Instance
To deploy a test instance of this service, push to a branch and manually trigger
the deploy job from the
[Cloud Build console](https://console.cloud.google.com/cloud-build/triggers?project=go-telemetry)
with the desired values for branch and service name.