Skip to content

Enable CI tests for discovery node #10575

Enable CI tests for discovery node

Enable CI tests for discovery node #10575

Workflow file for this run

name: UDMI Test Suite
on:
push:
branches:
- '**'
workflow_dispatch:
pull_request:
schedule:
- cron: '0 13 * * *'
concurrency:
group: ci-${{ github.repository }}
cancel-in-progress: true
jobs:
# unit:
# name: Unit Tests
# runs-on: ubuntu-24.04
# timeout-minutes: 10
# steps:
# - uses: actions/setup-java@v4
# with:
# distribution: 'temurin'
# java-version: '17'
# - uses: actions/setup-python@v5
# with:
# python-version: '3.10'
# - name: Checkout source
# uses: actions/checkout@v4
# - name: start and test local servers
# run: |
# bin/setup_base
# bin/clone_model
# bin/start_pubsub
# - name: bin/run_tests all_tests
# run: bin/run_tests all_tests
# - name: all test output
# if: ${{ !cancelled() }}
# run: more out/test_*
# - name: gencode test output
# if: ${{ !cancelled() }}
# run: more out/test_bin+gencode+check
# - name: validator test output
# if: ${{ !cancelled() }}
# run: more out/test_validator+bin+build+check
# - name: pubber test output
# if: ${{ !cancelled() }}
# run: more out/test_pubber+bin+build+check
# - name: udmis test output
# if: ${{ !cancelled() }}
# run: more out/test_udmis+bin+build+check
# - name: site test output
# if: ${{ !cancelled() }}
# run: more out/test_bin+test_sites
# spelling:
# name: Docs Spelling Checks
# runs-on: ubuntu-24.04
# timeout-minutes: 2
# steps:
# - uses: actions/checkout@v4
# - name: Check Spelling
# uses: rojopolis/[email protected]
# with:
# config_path: .spellcheck.yml
# task_name: Markdown
# automapping:
# name: Automapping capability
# runs-on: ubuntu-24.04
# timeout-minutes: 10
# if: ${{ vars.TARGET_PROJECT != '' && !cancelled() }}
# env:
# TARGET_PROJECT: ${{ vars.TARGET_PROJECT }}
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-java@v4
# with:
# distribution: 'temurin'
# java-version: '17'
# - name: base setup
# run: |
# bin/setup_base
# bin/clone_model
# - name: local setup
# run: |
# bin/start_local sites/udmi_site_model $TARGET_PROJECT
# bin/pull_messages ${TARGET_PROJECT}%ZZ-TRI-FECTA > /tmp/message_capture.log 2>&1 &
# - name: bin/test_automapper
# run: bin/test_automapper $TARGET_PROJECT
# - name: extra devices
# run: |
# find sites/udmi_site_model/extras/ -type f | xargs sed -i '$a\'
# find sites/udmi_site_model/extras/ -type f | xargs more
# - name: udmis log
# if: ${{ !cancelled() }}
# run: cat /tmp/udmis.log
# - name: pubber log
# if: ${{ !cancelled() }}
# run: cat out/pubber.log.GAT-123
# - name: captured messages
# if: ${{ !cancelled() }}
# run: |
# cat /tmp/message_capture.log
# mkdir -p out/registries && cd out/registries/
# find . -type f | sort | xargs more
# - name: support bundle
# if: ${{ !cancelled() }}
# run: bin/support ${{ github.repository_owner }}_${{ github.job }}_
# - uses: actions/upload-artifact@v4
# if: ${{ !cancelled() }}
# with:
# if-no-files-found: error
# name: udmi-support_${{ github.run_id }}-m
# path: '*_udmi-support_*.tgz'
# baseline:
# name: Baseline Tests
# runs-on: ubuntu-24.04
# timeout-minutes: 15
# needs: automapping
# if: vars.TARGET_PROJECT != ''
# env:
# TARGET_PROJECT: ${{ vars.TARGET_PROJECT }}
# UDMI_ALT_REGISTRY: ZZ-REDIRECT-NA
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-java@v4
# with:
# distribution: 'temurin'
# java-version: '17'
# - name: base setup
# run: bin/run_tests install_dependencies
# - name: local setup
# run: bin/start_local sites/udmi_site_model $TARGET_PROJECT
# - name: registrar clean
# run: bin/test_regclean solo $TARGET_PROJECT
# - name: special sequences
# if: ${{ !cancelled() }}
# run: bin/test_special $TARGET_PROJECT
# - name: telemetry validator
# if: ${{ !cancelled() }}
# run: bin/test_validator $TARGET_PROJECT
# - name: validator result
# if: ${{ !cancelled() }}
# run: more out/validator.out || true
# - name: message captures
# if: ${{ !cancelled() }}
# run: |
# cd sites/udmi_site_model/out
# find . -type f | sort | xargs ls -l
# find . -type f | sort | xargs more | cat
# - name: nostate sequences
# if: ${{ !cancelled() }}
# run: bin/test_sequencer nostate full $TARGET_PROJECT
# - name: support bundle
# if: ${{ !cancelled() }}
# run: UDMI_REGISTRY_SUFFIX=_b bin/support ${{ github.repository_owner }}_${{ github.job }}_
# - uses: actions/upload-artifact@v4
# if: ${{ !cancelled() }}
# with:
# if-no-files-found: error
# name: udmi-support_${{ github.run_id }}-b
# path: '*_udmi-support_*.tgz'
# sequencer:
# name: Sequencer Tests
# runs-on: ubuntu-24.04
# timeout-minutes: 20
# strategy:
# fail-fast: false
# matrix:
# shard: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# if: vars.TARGET_PROJECT != ''
# env:
# TARGET_PROJECT: ${{ vars.TARGET_PROJECT }}
# UDMI_ALT_REGISTRY: ZZ-REDIRECT-NA
# UDMI_REGISTRY_SUFFIX: _${{ matrix.shard }}
# MATRIX_SHARD_COUNT: 10
# MATRIX_SHARD_INDEX: ${{ matrix.shard }}
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-java@v4
# with:
# distribution: 'temurin'
# java-version: '17'
# - name: base setup
# run: bin/run_tests install_dependencies
# - name: local setup
# run: bin/start_local sites/udmi_site_model $TARGET_PROJECT
# - name: registrar clean
# run: bin/test_regclean $TARGET_PROJECT
# - name: sequence tests clean
# if: ${{ !cancelled() }}
# run: bin/test_sequencer clean nocheck $TARGET_PROJECT
# - name: sequence tests alpha
# if: ${{ !cancelled() }}
# run: bin/test_sequencer alpha nocheck $TARGET_PROJECT
# - name: sequence test post-process
# if: ${{ !cancelled() }}
# run: egrep ' test .* after .*s ' out/sequencer.log | tee out/timing_sequencer.out
# - name: itemized sequencer tests
# if: ${{ !cancelled() }}
# run: bin/test_itemized $TARGET_PROJECT
# - name: output files
# if: ${{ !cancelled() }}
# run: more out/*.out* | cat
# - name: pubber logs
# if: ${{ !cancelled() }}
# run: more out/pubber.log* pubber/out/*.json | cat
# - name: udmis log
# if: ${{ !cancelled() }}
# run: cat /tmp/udmis.log
# - name: itemized test post-process
# if: ${{ !cancelled() }}
# run: egrep ' test .* after .*s ' out/sequencer.log-* | tee out/timing_itemized.out
# - name: support bundle
# if: ${{ !cancelled() }}
# run: |
# bin/support ${{ github.repository_owner }}_${{ github.job }}_
# tar -tzvf *udmi-support*.tgz
# - uses: actions/upload-artifact@v4
# if: ${{ !cancelled() }}
# with:
# if-no-files-found: error
# name: udmi-support_${{ github.run_id }}-${{ matrix.shard }}
# path: '*_udmi-support_*.tgz'
# runlocal:
# name: UDMIS Local Setup
# runs-on: ubuntu-24.04
# timeout-minutes: 20
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-java@v4
# with:
# distribution: 'temurin'
# java-version: '17'
# - name: base setup
# run: |
# bin/setup_base
# bin/clone_model
# bin/registrar sites/udmi_site_model
# - name: local setup
# run: bin/start_local sites/udmi_site_model //mqtt/localhost
# - name: bin/test_etcd
# run: bin/test_etcd
# - name: bin/test_mosquitto
# run: bin/test_mosquitto
# - name: bin/test_regclean
# run: bin/test_regclean //mqtt/localhost
# - name: bin/test_sequencer
# run: bin/test_sequencer local full //mqtt/localhost $(< etc/local_tests.txt)
# - name: bin/test_udmis
# run: bin/test_udmis
# - name: mosquitto debug
# if: ${{ !cancelled() }}
# run: |
# mosquitto -h || true
# sudo more /etc/mosquitto/* /etc/mosquitto/conf.d/* || true
# - name: udmis log
# if: ${{ !cancelled() }}
# run: cat /tmp/udmis.log
# - name: mosquitto logs
# if: ${{ !cancelled() }}
# run: cat /var/log/mosquitto/mosquitto.log || true
# - name: support bundle
# if: ${{ !cancelled() }}
# run: bin/support ${{ github.repository_owner }}_${{ github.job }}_
# - uses: actions/upload-artifact@v4
# if: ${{ !cancelled() }}
# with:
# if-no-files-found: error
# name: udmi-support_${{ github.run_id }}-l
# path: '*_udmi-support_*.tgz'
# endpoint:
# name: Endpoint Redirection
# runs-on: ubuntu-24.04
# timeout-minutes: 15
# env:
# UDMI_ALT_REGISTRY: ZZ-REDIRECT-NA
# TARGET_PROJECT: //mqtt/localhost
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-java@v4
# with:
# distribution: 'temurin'
# java-version: '17'
# - name: base setup
# run: bin/run_tests install_dependencies
# - name: local setup
# run: bin/start_local sites/udmi_site_model $TARGET_PROJECT
# - name: regclean
# run: bin/test_regclean $TARGET_PROJECT
# - name: bin/test_proxy
# if: ${{ env.MQTT_PROXY_HOST != '' }}
# run: bin/test_proxy $TARGET_PROJECT $MQTT_PROXY_HOST
# - name: bin/test_redirect
# run: bin/test_redirect $TARGET_PROJECT
# - name: pubber.log
# if: ${{ !cancelled() }}
# run: more out/pubber.log* | cat
# - name: support bundle
# if: ${{ !cancelled() }}
# run: UDMI_REGISTRY_SUFFIX=_r bin/support ${{ github.repository_owner }}_${{ github.job }}_
# - uses: actions/upload-artifact@v4
# if: ${{ !cancelled() }}
# with:
# if-no-files-found: error
# name: udmi-support_${{ github.run_id }}-r
# path: '*_udmi-support_*.tgz'
# posttest:
# name: Post-test Summarization
# runs-on: ubuntu-24.04
# timeout-minutes: 5
# needs: [ baseline, sequencer, endpoint, runlocal ]
# if: ${{ !cancelled() && vars.TARGET_PROJECT != '' }}
# env:
# TARGET_PROJECT: ${{ vars.TARGET_PROJECT }}
# UDMI_ALT_REGISTRY: ZZ-REDIRECT-NA
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-python@v5
# with:
# python-version: '3.10'
# - name: Base setup
# run: bin/setup_base
# - name: Download all sharded support packages
# uses: actions/download-artifact@v4
# with:
# path: udmi-support_${{ github.run_id }}
# pattern: udmi-support_${{ github.run_id }}-*
# merge-multiple: true
# - name: Upload merged support package
# uses: actions/upload-artifact@v4
# with:
# if-no-files-found: error
# name: udmi-support_${{ github.run_id }}
# path: 'udmi-support_${{ github.run_id }}/*_udmi-support_*.tgz'
# - name: Processing support package
# run: bin/support_process udmi-support_*
# - name: Test run index
# run: |
# ls -d sites/udmi_site_model*/out*/devices/AHU-1/tests/*
# find out* -name 'schema*.out*' -size +0 | xargs more | cat
# - name: Sequencer validation
# if: ${{ !cancelled() }}
# run: bin/test_sequcheck
# - name: Itemized validation
# if: ${{ !cancelled() }}
# run: bin/test_itemcheck
discovery:
name: Discovery Tests
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Setup prerequisites
run: |
bin/setup_base
bin/clone_model
ln -s sites/udmi_site_model/ site_model
(cd site_model; git log -n 1)
docker network create udminet --subnet 192.168.99.0/24
- name: Build UDMIS
run: |
udmis/bin/build check
bin/container udmis build --no-check latest
echo Built local UDMIS
- name: Start UDMIS container
run: |
docker run -d --net udminet --name udmis -p 8883:8883 \
-v $PWD/site_model:/root/site_model \
-v $PWD/var/tmp:/tmp \
-v $PWD/var/etcd:/root/udmi/var/etcd \
-v $PWD/var/mosquitto:/etc/mosquitto \
udmis udmi/bin/start_local block site_model/cloud_iot_config.json
for count in `seq 0 30`; do
echo Waiting for UDMIS startup $((30 - count))
[[ ! -f var/tmp/pod_ready.txt ]] || break
(docker ps | fgrep -q udmis) || break
sleep 1
done
ls -l var/tmp/pod_ready.txt 2>&1
- name: Run Tests
run: misc/discoverynode/testing/e2e/test_local site_model