Use system time for CDASim (#153) #41
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Tests" | |
on: | |
pull_request: | |
push: | |
jobs: | |
carma_cloud_bridge_coverage: | |
runs-on: ubuntu-latest | |
container: | |
image: python:3.9 | |
options: --user root | |
steps: | |
- name: Checkout ${{ github.event.repository.name }} | |
uses: actions/checkout@v3 | |
- name: Install dependencies | |
run: | | |
apt-get update | |
apt-get -y install python3-coverage python3-pip python3-pytest | |
- name: Install requirements | |
run: python3 -m pip install -r $GITHUB_WORKSPACE/telematic_system/telematic_units/carma_cloud_bridge/requirements.txt | |
- name: Run tests | |
run: | | |
export PYTHONPATH=$PYTHONPATH:/usr/lib/python3/dist-packages | |
cd $GITHUB_WORKSPACE/telematic_system/telematic_units/carma_cloud_bridge/cloud_nats_bridge/test/ | |
python3 -m coverage run -m pytest | |
python3 -m coverage xml --omit="/opt/*,/root/*,/tmp/*,/usr/*,/var/*,**/__init__.py" | |
- name: Archive code coverage results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: carma-cloud-bridge-coverage | |
path: telematic_system/telematic_units/carma_cloud_bridge/cloud_nats_bridge/test/coverage.xml | |
if-no-files-found: error | |
carma_vehicle_bridge_coverage: | |
runs-on: ubuntu-latest | |
container: | |
image: ros:foxy-ros1-bridge | |
options: --user root | |
steps: | |
- name: Checkout ${{ github.event.repository.name }} | |
uses: actions/checkout@v3 | |
- name: Install dependencies | |
shell: bash | |
run: | | |
apt-get update | |
apt-get -y install python3-coverage python3-pip python3-pytest python3-pytest-asyncio ros-foxy-rclpy unzip | |
cd $GITHUB_WORKSPACE/telematic_system/telematic_units/carma_vehicle_bridge/ros2_nats_bridge | |
source /opt/ros/foxy/setup.bash | |
rosdep update | |
rosdep install --from-paths $GITHUB_WORKSPACE/telematic_system/telematic_units/carma_vehicle_bridge/ros2_nats_bridge --ignore-src -r -y | |
- name: Install requirements | |
run: python3 -m pip install nats-py | |
- name: Run tests | |
shell: bash | |
run: | | |
export PYTHONPATH=$PYTHONPATH:/usr/lib/python3/dist-packages | |
cd $GITHUB_WORKSPACE/telematic_system/telematic_units/carma_vehicle_bridge/ros2_nats_bridge/test/ | |
source /opt/ros/foxy/setup.bash | |
# Delete connection test | |
rm -f test_prep257.py | |
python3 -m coverage run -m pytest | |
python3 -m coverage xml --omit="/opt/*,/root/*,/tmp/*,/usr/*,/var/*,**/__init__.py" | |
- name: Archive code coverage results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: carma-vehicle-bridge-coverage | |
path: telematic_system/telematic_units/carma_vehicle_bridge/ros2_nats_bridge/test/coverage.xml | |
if-no-files-found: error | |
telematic_cloud_messaging_coverage: | |
runs-on: ubuntu-latest | |
container: | |
image: openjdk:17-jdk-slim-buster | |
options: --user root | |
steps: | |
- name: Checkout ${{ github.event.repository.name }} | |
uses: actions/checkout@v3 | |
- name: Build | |
run: | | |
cd $GITHUB_WORKSPACE/telematic_system/telematic_cloud_messaging | |
./mvnw org.jacoco:jacoco-maven-plugin:prepare-agent package | |
./mvnw org.jacoco:jacoco-maven-plugin:report package | |
- name: Archive code coverage results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: telematic-cloud-messaging | |
path: telematic_system/telematic_cloud_messaging/target | |
if-no-files-found: error | |
web_app_client_coverage: | |
runs-on: ubuntu-latest | |
container: | |
image: node:16.16.0 | |
options: --user root | |
env: | |
CI: true | |
steps: | |
- name: Checkout ${{ github.event.repository.name }} | |
uses: actions/checkout@v3 | |
- name: Build | |
run: | | |
cd $GITHUB_WORKSPACE/telematic_system/telematic_apps/web_app/client | |
npm install -g nodemon | |
npm init -y | |
npm install --force | |
npm test -- --coverage || true | |
- name: Archive code coverage results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: web-app-client | |
path: telematic_system/telematic_apps/web_app/client/coverage/* | |
if-no-files-found: error | |
sonar: | |
needs: [carma_vehicle_bridge_coverage, carma_cloud_bridge_coverage, telematic_cloud_messaging_coverage, web_app_client_coverage] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout ${{ github.event.repository.name }} | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Download code coverage results | |
uses: actions/download-artifact@v3 | |
with: | |
name: carma-cloud-bridge-coverage | |
path: carma_cloud_bridge | |
- name: Download code coverage results | |
uses: actions/download-artifact@v3 | |
with: | |
name: carma-vehicle-bridge-coverage | |
path: carma_vehicle_bridge | |
- name: Download code coverage results | |
uses: actions/download-artifact@v3 | |
with: | |
name: telematic-cloud-messaging | |
path: telematic_system/telematic_cloud_messaging/target | |
- name: Download code coverage results | |
uses: actions/download-artifact@v3 | |
with: | |
name: web-app-client | |
path: web_app_client | |
- name: Find jacoco.xml | |
shell: bash | |
run: | | |
find "$GITHUB_WORKSPACE" -name "jacoco.xml" | |
- name: Find lcov.info | |
shell: bash | |
run: | | |
find "$GITHUB_WORKSPACE" -name "lcov.info" | |
- name: Rewrite workspace path in coverage.xml | |
shell: python | |
run: | | |
for coverage_file in ["/home/runner/work/cda-telematics/cda-telematics/carma_cloud_bridge/coverage.xml", "/home/runner/work/cda-telematics/cda-telematics/carma_vehicle_bridge/coverage.xml"] : | |
with open(coverage_file, 'r') as coverage : | |
coverage_content = coverage.read() | |
coverage_content = coverage_content.replace('/__w/', '/home/runner/work/') | |
with open(coverage_file, 'w') as coverage: | |
coverage.write(coverage_content) | |
- name: Setup SonarScanner | |
uses: warchant/setup-sonar-scanner@v4 | |
with: | |
version: 4.8.0.2856 | |
- name: Generate sonar properties file | |
run: | | |
cat <<EOF > /tmp/sonar-scanner.properties | |
sonar.host.url=https://sonarcloud.io | |
sonar.coverage.jacoco.xmlReportPaths=$GITHUB_WORKSPACE/telematic_system/telematic_cloud_messaging/target/site/jacoco/jacoco.xml | |
sonar.exclusions=**/__init__.py,**/*test*.py,**/test/** | |
sonar.coverage.exclusions=**/__init__.py,**/*test*.py,**/test/** | |
sonar.java.binaries=$GITHUB_WORKSPACE/telematic_system/telematic_cloud_messaging/target/ | |
sonar.javascript.lcov.reportPaths=web_app_client/lcov.info | |
sonar.modules=cloud_nats_bridge,ros2_nats_bridge,streets_nats_bridge,telematic_cloud_messaging,web_app_client,web_app_server | |
sonar.organization=usdot-fhwa-stol | |
sonar.projectBaseDir=$GITHUB_WORKSPACE | |
sonar.projectKey=usdot-fhwa-stol_cda-telematics | |
sonar.projectName=cda-telematics | |
sonar.python.coverage.reportPaths=$GITHUB_WORKSPACE/carma_cloud_bridge/coverage.xml,$GITHUB_WORKSPACE/carma_vehicle_bridge/coverage.xml | |
sonar.python.version=3.9 | |
cloud_nats_bridge.sonar.projectBaseDir=$GITHUB_WORKSPACE/telematic_system/telematic_units/carma_cloud_bridge/cloud_nats_bridge | |
cloud_nats_bridge.sonar.sources=src | |
cloud_nats_bridge.sonar.tests=test | |
ros2_nats_bridge.sonar.projectBaseDir=$GITHUB_WORKSPACE/telematic_system/telematic_units/carma_vehicle_bridge/ros2_nats_bridge | |
ros2_nats_bridge.sonar.sources=. | |
ros2_nats_bridge.sonar.tests=test | |
streets_nats_bridge.sonar.projectBaseDir=$GITHUB_WORKSPACE/telematic_system/telematic_units/carma_street_bridge/streets_nats_bridge | |
streets_nats_bridge.sonar.sources=src | |
telematic_cloud_messaging.sonar.projectBaseDir=$GITHUB_WORKSPACE/telematic_system/telematic_cloud_messaging | |
telematic_cloud_messaging.sonar.sources=src | |
telematic_cloud_messaging.sonar.tests=src/test | |
telematic_cloud_messaging.sonar.test.inclusions=src/test/** | |
web_app_client.sonar.projectBaseDir=$GITHUB_WORKSPACE/telematic_system/telematic_apps/web_app/client | |
web_app_client.sonar.sources=src | |
web_app_server.sonar.projectBaseDir=$GITHUB_WORKSPACE/telematic_system/telematic_apps/web_app/server | |
web_app_server.sonar.sources=. | |
EOF | |
- name: Run SonarScanner | |
uses: usdot-fhwa-stol/actions/sonar-scanner@main | |
with: | |
sonar-properties-path: /tmp/sonar-scanner.properties | |
sonar-token: ${{ secrets.SONAR_TOKEN }} | |
working-dir: $GITHUB_WORKSPACE |