Skip to content

Commit

Permalink
fixup! Migrate device provisioning service
Browse files Browse the repository at this point in the history
  • Loading branch information
Danielius1922 committed Sep 6, 2024
1 parent f7dac75 commit 7ec74ef
Show file tree
Hide file tree
Showing 35 changed files with 4,721 additions and 173 deletions.
6 changes: 5 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
.github/
.clang-format
.clang-tidy
**/*.o
**/*.gcno
**/*.gcda
sonar-project.properties
Dockerfile.*
build/
build*/
docker/
images/
port/esp32/build/
port/esp32/esp-idf/
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/check-format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ concurrency:
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [master]
pull_request:
branches: [master]
# push:
# branches: [master]
# pull_request:
# branches: [master]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/cmake-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ concurrency:
cancel-in-progress: ${{ github.ref_name != 'master' }}

on:
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened]
# push:
# branches:
# - master
# pull_request:
# types: [opened, synchronize, reopened]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
Expand Down Expand Up @@ -56,13 +56,13 @@ jobs:
- args: "-DOC_IPV4_ENABLED=ON -DOC_TCP_ENABLED=ON -DOC_PKI_ENABLED=OFF"
# cloud on (ipv4+tcp on), dynamic allocation off, push notifications off
- args: "-DOC_CLOUD_ENABLED=ON -DOC_DYNAMIC_ALLOCATION_ENABLED=OFF -DOC_PUSH_ENABLED=OFF"
# cloud on (ipv4+tcp on), collections create on, oscore off, device provisioning on
- args: "-DOC_CLOUD_ENABLED=ON -DOC_COLLECTIONS_IF_CREATE_ENABLED=ON -DOC_OSCORE_ENABLED=OFF -DPLGD_DEV_DEVICE_PROVISIONING_ENABLED=ON"
# cloud on (ipv4+tcp on), collections create on
- args: "-DOC_CLOUD_ENABLED=ON -DOC_COLLECTIONS_IF_CREATE_ENABLED=ON"
# cloud on (ipv4+tcp on), collections create on, custom message buffer size, custom message buffer pool size, custom app data buffer size, custom app data buffer pool size
- args: "-DOC_CLOUD_ENABLED=ON -DOC_COLLECTIONS_IF_CREATE_ENABLED=ON -DOC_INOUT_BUFFER_SIZE=2048 -DOC_INOUT_BUFFER_POOL=4 -DOC_APP_DATA_BUFFER_SIZE=2048 -DOC_APP_DATA_BUFFER_POOL=4"
# debug on
- args: "-DOC_DEBUG_ENABLED=ON"
# debug on, cloud on (ipv4+tcp on)
# debug on, cloud on (ipv4+tcp on), plgd time off
- args: "-DOC_CLOUD_ENABLED=ON -DPLGD_DEV_TIME_ENABLED=OFF -DOC_DEBUG_ENABLED=ON"
# secure off, tcp on
- args: "-DOC_SECURITY_ENABLED=OFF -DOC_TCP_ENABLED=ON"
Expand Down Expand Up @@ -138,7 +138,7 @@ jobs:
# install_faketime: true
uses: ./.github/workflows/unit-test-with-cfg.yml
with:
build_args: -DOC_LOG_MAXIMUM_LOG_LEVEL=INFO -DOC_CLOUD_ENABLED=ON -DOC_COLLECTIONS_IF_CREATE_ENABLED=ON -DOC_MNT_ENABLED=ON -DOC_WKCORE_ENABLED=ON -DOC_SOFTWARE_UPDATE_ENABLED=ON -DOC_DISCOVERY_RESOURCE_OBSERVABLE_ENABLED=ON -DOC_PUSH_ENABLED=ON -DOC_RESOURCE_ACCESS_IN_RFOTM_ENABLED=ON -DPLGD_DEV_TIME_ENABLED=ON -DOC_ETAG_ENABLED=ON ${{ matrix.args }}
build_args: -DOC_LOG_MAXIMUM_LOG_LEVEL=INFO -DOC_CLOUD_ENABLED=ON -DOC_COLLECTIONS_IF_CREATE_ENABLED=ON -DOC_MNT_ENABLED=ON -DOC_WKCORE_ENABLED=ON -DOC_SOFTWARE_UPDATE_ENABLED=ON -DOC_DISCOVERY_RESOURCE_OBSERVABLE_ENABLED=ON -DOC_PUSH_ENABLED=ON -DOC_RESOURCE_ACCESS_IN_RFOTM_ENABLED=ON -DPLGD_DEV_TIME_ENABLED=ON -DOC_ETAG_ENABLED=ON -DPLGD_DEV_DEVICE_PROVISIONING_ENABLED=ON -DPLGD_DEV_DEVICE_PROVISIONING_TEST_PROPERTIES_ENABLED=ON ${{ matrix.args }}
build_type: ${{ (github.event_name == 'workflow_dispatch' && inputs.build_type) || 'Debug' }}
clang: ${{ ((github.event_name == 'workflow_dispatch' && inputs.clang) || matrix.clang) || false }}
coverage: false
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/cmake-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ concurrency:

# Controls when the action will run.
on:
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened]
# push:
# branches:
# - master
# pull_request:
# types: [opened, synchronize, reopened]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/doxygen-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ concurrency:
cancel-in-progress: ${{ github.ref_name != 'master' }}

on:
push:
branches: [master]
pull_request:
branches: [master]
types: [closed]
# push:
# branches: [master]
# pull_request:
# branches: [master]
# types: [closed]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/doxygen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ concurrency:
cancel-in-progress: ${{ github.ref_name != 'master' }}

on:
push:
branches: [master]
pull_request:
branches: [master]
# push:
# branches: [master]
# pull_request:
# branches: [master]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
Expand Down
154 changes: 154 additions & 0 deletions .github/workflows/plgd-dps-test-with-cfg.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Run plgd/hub/dps tests with dps_cloud_server and a single configuration

on:
workflow_call:
inputs:
build_args:
description: build arguments forwarded to CMake in docker/apps/Dockerfile.cloud-server-debug
type: string
required: false
default: ""
build_type:
type: string
required: false
default: Debug
coverage:
description: gather and upload coverage data
type: boolean
required: false
default: false
skip:
description: Skip this run of the job
type: boolean
required: false
default: false
env:
TEST_DPS_IMAGE: ghcr.io/plgd-dev/hub/test-device-provisioning-service:latest

jobs:
plgd-hub-test-with-cfg:
if: ${{ !inputs.skip }}
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: "true"

- name: Configure vm.mmap_rnd_bits for sanitizers
if: contains(inputs.build_args, 'OC_ASAN_ENABLED') || contains(inputs.build_args, 'OC_LSAN_ENABLED') || contains(inputs.build_args, 'OC_TSAN_ENABLED') || contains(inputs.build_args, 'OC_UBSAN_ENABLED')
run: |
sudo sysctl vm.mmap_rnd_bits
sudo sysctl -w vm.mmap_rnd_bits=28
- name: Build dps-cloudserver docker image
uses: docker/build-push-action@v5
with:
context: .
push: false
build-args: |
BUILD_ARGS=${{ inputs.build_args }}
BUILD_TYPE=${{ inputs.build_type }}
file: docker/apps/Dockerfile.dps-cloud-server-debug
tags: dps-dbg:latest

- name: Pull device-provisioning-service tests image
run: docker pull ${{ env.TEST_DPS_IMAGE }}

- name: Prepare test environment
run: >
mkdir -p "/tmp/data/certs/device";
chmod -R 0777 "/tmp/data";
docker run --rm --log-driver local --network=host
-e PREPARE_ENV=true
-e RUN=false
-v /tmp/data:/data
-v /var/run/docker.sock:/var/run/docker.sock
${{ env.TEST_DPS_IMAGE }}
- name: Run dps cloud server docker image
run: >
mkdir -p "/tmp/data/coverage";
chmod -R 0777 "/tmp/data/coverage";
docker run --privileged -d --network=host --log-driver local
-v /tmp/data/certs/device:/device-provisioning-client/build/apps/pki_certs
-v /tmp/data/coverage:/data/coverage
--name dps-devsim
dps-dbg:latest
--create-conf-resource
--no-verify-ca
--cloud-observer-max-retry 10
--expiration-limit 10
--retry-configuration 5
--log-level="debug"
--wait-for-reset
dps-devsim-$(hostname)
- name: Run dps cloud server docker image for onboarding
run: >
docker run --privileged -d --network=host --log-driver local
-v /tmp/data/certs/device:/device-provisioning-client/build/apps/pki_certs
-v /tmp/data/coverage:/data/coverage
--name dps-devsim-obt
dps-dbg:latest
--create-conf-resource
--cloud-observer-max-retry 10
--expiration-limit 10
--retry-configuration 5
--log-level="debug"
dps-devsim-obt-$(hostname) ""
- name: Run device-provisioning-service tests image
run: >
docker run --rm --log-driver local --network=host --hostname=$(hostname)
-e PREPARE_ENV=false
-e RUN=true
-v /tmp/data:/data
-v /var/run/docker.sock:/var/run/docker.sock
--name dps-tests
${{ env.TEST_DPS_IMAGE }}
- name: Gather coverage data
if: ${{ inputs.coverage }}
run: |
# stop to generate .gcda files
docker stop dps-devsim
# restart to generate report from the .gcda files
docker start dps-devsim
docker exec --workdir "/device-provisioning-client/tools" dps-devsim /bin/bash -c "./collect-coverage.sh --output /data/coverage/plgd-dps-coverage.json"
docker stop dps-devsim
# stop to generate .gcda files
docker stop dps-devsim-obt
# restart to generate report from the .gcda files
docker start dps-devsim-obt
docker exec --workdir "/device-provisioning-client/tools" dps-devsim-obt /bin/bash -c "./collect-coverage.sh --output /data/coverage/plgd-dps-obt-coverage.json"
docker stop dps-devsim-obt
- name: Upload coverage data
if: ${{ inputs.coverage }}
uses: actions/upload-artifact@v4
with:
name: dps-client-coverage
path: /tmp/data/coverage/plgd-dps*coverage.json
if-no-files-found: error
retention-days: 1

- name: Collect dps cloud server logs when the test fails
if: ${{ failure() }}
run: |
docker stop dps-devsim
docker logs dps-devsim
- name: Collect dps cloud server (obt) logs when the test fails
if: ${{ failure() }}
run: |
docker stop dps-devsim-obt
docker logs dps-devsim-obt
34 changes: 34 additions & 0 deletions .github/workflows/plgd-dps-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Run plgd/hub/dps tests with dps_cloud_server

on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
# branches: [master]
# pull_request:
# branches: [master]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
inputs:
build_type:
description: "Type of the build"
type: string
default: "Debug"

jobs:
plgd-hub-test:
strategy:
fail-fast: false
matrix:
include:
- build_args: ""
uses: ./.github/workflows/plgd-dps-test-with-cfg.yml
with:
build_args: ${{ matrix.build_args }}
build_type: ${{ (github.event_name == 'workflow_dispatch' && inputs.build_type) || (matrix.build_type || 'Debug') }}
skip: ${{ matrix.skip || false }}
Loading

0 comments on commit 7ec74ef

Please sign in to comment.