Working with Source Code
Go Source Code Development.
Development related commands can be found in the Makefile file.
Compile from the source
Make sure you have go
, make
, docker
, and docker-compose
installed.
# Prepare dependencies
make vendor
# Compile and run the data plane and control plane
make run
One can open the local swagger UI to test the APIs:
- Default DataPlane Swagger URL: http://127.0.0.1:28000/swagger/index.html
- Default ControlPlane Swagger URL: http://127.0.0.1:27999/swagger/index.html
# Compile and run the proxy plane
# It requires at least a "GET/POST /api/v1/facts" grant token to work
OPV_PROXY_PLANE_DEFAULT_DP_GRANT_TOKEN=v1:sandbox.example.com:Iy8TJZcuhicocCklFdwA make run_proxyplane
Generate swagger 2.0
When you make any change to APIs (e.g. pkg/dataplane
, pkg/controlplane
, pkg/apimodel
), you may want to regenerate
the swagger 2.0 API doc. This is done by swag.
# Regenerate swagger 2.0 docs
make swag
Notice that dataplane and controlplane’s entrypoints are separated, and they are defined in cmd/dataplane
and cmd/controlplane
.
Generate ent models
If you want to migrate or change the schema of the data models, please change the schema files and then run the following command to re-generate the ent related data models.
# Regenerate ent data models
make ent
Note that ent will run the auto migration for schema changes.
Generate dbdoc with tbls
This is to generate the dbdoc for Database Visualization →. We leverage a tool called https://github.com/k1LoW/tbls.
make run
# Once make run is running, open a new terminal to generate the
# database tables visualization from the default _opv.sqlite db locally.
make tbls
Tests
Unit tests:
make test
Functional tests (i.e. the integration tests):
# Note the functional tests will try to start 3 planes if they don't open ports locally
make local_functional_test
CI/CD
All the CI are run on github. Please refer to https://github.com/open-privacy/opv/blob/main/.github/workflows/ci.yml.
Currently the playground is deployed and triggered by https://github.com/open-privacy/opv/blob/main/.github/workflows/deploy_opv_playground.yml.