The On-board Artificial Intelligence Research (OnAIR) Platform is a framework that enables AI algorithms written in Python to interact with NASA's cFS. It is intended to explore research concepts in autonomous operations in a simulated environment.
Create a conda environment with the necessary packages
conda create --name onair --file requirements_pip.txt
Instructions on how to run unit tests for OnAIR
pytest, pytest-mock, coverage
pytest-randomly
From the parent directory of your local repository:
python driver.py -t
For the equivalent of the driver.py run:
python -m coverage run --branch --source=onair,plugins -m pytest ./test/
python -m - invokes the python runtime on the library following the -m
coverage run - runs coverage data collection during testing, wrapping itself on the test runner used
--branch - includes code branching information in the coverage report
--source=onair,plugins - tells coverage where the code under test exists for reporting line hits
-m pytest - tells coverage what test runner (framework) to wrap
./test - run all tests found in this directory and subdirectories
Options that may be added to the command line test run. Use these at your own discretion.
--disable-warnings - removes the warning reports, but displays count (i.e., 124 passed, 1 warning in 0.65s)
-p no:randomly - ONLY required to stop random order testing IFF pytest-randomly installed
NOTE: you may or may not need the python -m to run coverage report or html
coverage report - prints basic results in terminal
or
coverage html - creates htmlcov/index.html, automatic when using driver.py for testing
then
<browser_here> htmlcov/index.html - browsable coverage (i.e., firefox htmlcov/index.html)
Please refer to NOSA GSC-19165-1 OnAIR.pdf and COPYRIGHT.
Please open an issue if you find any problems. We are a small team, but will try to respond in a timely fashion.
If you would like to contribute to the repository, GREAT! First you will need to complete the Individual Contributor License Agreement (pdf). Then, email it to gsfc-softwarerequest@mail.nasa.gov with james.marshall-1@nasa.gov CCed.
Next, please create an issue for the fix or feature and note that you intend to work on it. Fork the repository and create a branch with a name that starts with the issue number. Once done, submit your pull request and we'll take a look. You may want to make draft pull requests to solicit feedback on larger changes.