Skip to content
Ben Knoll edited this page Dec 6, 2022 · 4 revisions

Developer stuff

Assumptions

For python, it's assumed you are working from a Python 3.7+ virtual environment.

python3 -m venv venv
source venv/bin/activate

For Java you should have JDK 9+ installed (https://adoptium.net/).

Building

Generate proto files

Install tools:

pip install grpcio-tools

Generate protos:

python -m grpc_tools.protoc -Ithird_party/api-common-protos-0.1.0 -Iproto --python_out=python --pyi_out=python --grpc_python_out=python proto/mtap/api/v1/*.proto

Building a python distributable

Install build:

pip install build 

Build distributables:

python -m build

Building the Java Framework

cd java
./gradlew build shadowJar

Building the Go HTTP API Gateway distributables

First time setup, follow the instructions for gRPC Gateway requirements.

Build stuff:

cd go
make proto release

Installing the Go API Gateway

cd go
go install mtap-gateway/mtap-gateway.go 

Testing

Running Python unit tests

The python unit tests run using the version of MTAP installed to the site-packages:

pip install .[tests]
pytest python/tests

Running the Java unit tests

cd java
./gradlew test

Running integration tests

First, the go gateway needs to be installed and $GOROOT/bin needs to be on your $PATH (https://go.dev/dl/). From the root directory:

cd go
go install mtap-gateway/mtap-gateway.go

Second, the Java framework shadow jar needs to be built. From the root directory:

cd java
./gradlew build shadowJar

If you want to test service discovery via consul, consul needs to be [installed (it is not provided by mtap) and] started. From another terminal:

consul agent -dev

Now we're ready to run the integration tests, from the root directory:

pip install .[tests]
pytest python/tests --consul --integration --gateway