This document describes how to set up your development environment to build and test the qpp-conversion-tool. Please read the main README that outlines the initial software required and how to get the source.
- Prerequisite Software
- Building
- Running Tests Locally
- Integration Environment
- SonarQube
- Third Party Extensions
See the contribution guidelines if you'd like to contribute to qpp-conversion-tool.
The additional prerequisites that were not already outlined in the main README are...
- Java Development Kit (version
>= 17
). The Java Runtime will not suffice. - Maven.
Use Maven to compile. Dependencies will automatically be downloaded.
# Build qpp-conversion-tool
mvn clean compile
Use Maven to run the tests.
# Run all the basic tests
mvn clean verify
You should run the test suite before submitting a PR. All the tests are executed on our Continuous Integration infrastructure and a PR can only be merged once the tests pass.
The -DrunLoadTests
flag will enable the load tests as part of the build. If the converter does not meet a threshold of
conversions, the tests will not pass and the build will fail.
# Run the basic tests and the load tests.
mvn clean verify -DrunLoadTests
In addition, there are some extreme JMeter load tests that execute only when passing in -DskipJmeterSuite=false
. To run these
tests, one must fill in the host
, path
, port
, and cookie
fields in the benchmark pom.xml to
correctly connect to the test environment. Make sure you have time, the CPU performance, and network performance before deciding
to run these tests.
In addition to converting input files to QPP, the ReST API can do the following...
- Call the submission validation API to validate the QPP JSON.
- Write the input file and output JSON to a S3 bucket.
- Write metadata to a DynamoDB table.
This additional functionality depends on the environment variables set. See the .env file for descriptions of what the environment variables are for.
The ReST API depends on AWS for some of the additional functionality. Currently, a real account with AWS must be used.
Ensure that credentials are set such that the
Default Credential Provider Chain can find them.
Also ensure that a region is set such that the
Default Region Provider Chain
can find it. If not, us-east-1
is used by default.
The DynamoDB table requires the partition key be named Uuid
and of type String
.
We have a SonarQube server to measure how clean the codebase is.
Finished a cool new feature or fix for the conversion tool? Please feel free submit a pull request to our repository for any changes made. We appreciate and thank you for your patronage! See the contribution guidelines on how to submit a Pull Request.
In order to retrieve files from FMS, local.env
should contain values for below parameters. These contain sensitive information and cannot be committed to the repository.
auth_url='url'
fms_url='url'
fms_token='token'
fms_path='folder/file.ext'
s3_bucket='aws-pii-bucket'
With access to the conversion tool environment, update your local ~/.aws/credentials
file with new short-term AWS credentials before initiating the request (learn more).