Skip to content

Use system time for CDASim (#153) #41

Use system time for CDASim (#153)

Use system time for CDASim (#153) #41

Workflow file for this run

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