From 2de8dce705d6f65f8f6016017b9b0342106359c9 Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Fri, 22 Sep 2023 14:09:43 +0100 Subject: [PATCH 1/2] add adsimdetector test --- tests/Dockerfile.adsimdetector | 62 ++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 tests/Dockerfile.adsimdetector diff --git a/tests/Dockerfile.adsimdetector b/tests/Dockerfile.adsimdetector new file mode 100644 index 0000000..5bdce4e --- /dev/null +++ b/tests/Dockerfile.adsimdetector @@ -0,0 +1,62 @@ +##### build stage ############################################################## + +ARG TARGET_ARCHITECTURE +ARG BASE=23.9.3 +ARG REGISTRY=ghcr.io/epics-containers + +FROM ${REGISTRY}/epics-base-${TARGET_ARCHITECTURE}-developer:${BASE} AS developer + +# In a devcontainer this folder is mounted on the host's clone of ioc-adsimdetector +WORKDIR /workspaces/ioc-adsimdetector/ibek-support + +# copy the global ibek files +COPY ibek-support/_global/ _global + +COPY ibek-support/iocStats/ iocStats +RUN iocStats/install.sh 3.1.16 + +COPY ibek-support/asyn/ asyn/ +RUN asyn/install.sh R4-42 + +COPY ibek-support/autosave/ autosave/ +RUN autosave/install.sh R5-10-2 + +COPY ibek-support/busy/ busy/ +RUN busy/install.sh R1-7-3 + +COPY ibek-support/ADCore/ ADCore/ +RUN ADCore/install.sh R3-12-1 + +COPY ibek-support/ADSimDetector/ ADSimDetector/ +RUN ADSimDetector/install.sh R2-10 + +# Make the IOC +RUN ibek ioc generate-makefile +RUN ibek ioc compile + +##### runtime preparation stage ################################################ + +FROM developer AS runtime_prep + +# get the products from the build stage and reduce to runtime assets only +WORKDIR /min_files +RUN bash /epics/scripts/minimize.sh ${IOC} $(ls -d ${SUPPORT}/*/) + +##### runtime stage ############################################################ + +FROM ${REGISTRY}/epics-base-${TARGET_ARCHITECTURE}-runtime:${BASE} AS runtime + +# get the virtual environment from the developer stage +COPY --from=developer /venv /venv +# add products from build stage +COPY --from=runtime_prep /min_files / + +# install runtime system dependencies, collected from install.sh scripts +RUN ibek support apt-install --runtime + +# add ioc sample startup scripts +COPY ioc ${IOC} + +ENV TARGET_ARCHITECTURE ${TARGET_ARCHITECTURE} + +ENTRYPOINT ["/bin/bash", "-c", "${IOC}/start.sh"] From 01ac24cc9131641617a4484c0f51d6cfcf55b9f0 Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Fri, 22 Sep 2023 15:03:11 +0100 Subject: [PATCH 2/2] adding IOC verifcation to adsim test --- tests/Verify.adsimdetector.sh | 36 +++++++++++++++++++++++++++++++++++ tests/Verify.asyn.sh | 2 +- tests/Verify.busy.sh | 2 +- tests/_test_support_build.sh | 4 ++-- 4 files changed, 40 insertions(+), 4 deletions(-) create mode 100755 tests/Verify.adsimdetector.sh mode change 100644 => 100755 tests/Verify.asyn.sh mode change 100644 => 100755 tests/Verify.busy.sh diff --git a/tests/Verify.adsimdetector.sh b/tests/Verify.adsimdetector.sh new file mode 100755 index 0000000..9158e60 --- /dev/null +++ b/tests/Verify.adsimdetector.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +set -xe + +tmpdir=$(mktemp -d) + +# TODO - we should really be sending ibek IOC YAML here instead of +# a hand coded startup script - baby steps ... +echo ' +cd "$(TOP)" + +dbLoadDatabase "dbd/ioc.dbd" +ioc_registerRecordDeviceDriver(pdbbase) +simDetectorConfig("TEST.CAM", 2560, 2160, 1, 50, 0) + +dbLoadRecords (simDetector.template, "P=TEST, R=:CAM:, PORT=TEST.CAM, TIMEOUT=1, ADDR=0") + +iocInit +' > ${tmpdir}/st.cmd + +$docker cp ${tmpdir}/st.cmd test_me:/epics/ioc/config/st.cmd +$docker exec -dit test_me bash -c "cd /epics/ioc; ./start.sh" + +# verify that the IOC is running +$docker exec test_me caget TEST:CAM:Acquire +# now try and run the simdetector and verify that it delivers some frames +$docker exec test_me caput TEST:CAM:Acquire 1 + +first=$($docker exec test_me caget TEST:CAM:ArrayCounter_RBV) +second=$($docker exec test_me caget TEST:CAM:ArrayCounter_RBV) +if [[ $first == 0 || $first == $second ]] ; then + echo "ERROR: simdetector did not deliver any frames" + exit 1 +fi + + diff --git a/tests/Verify.asyn.sh b/tests/Verify.asyn.sh old mode 100644 new mode 100755 index ce1ae74..92d2dda --- a/tests/Verify.asyn.sh +++ b/tests/Verify.asyn.sh @@ -1,3 +1,3 @@ #!/bin/bash -echo "HELLO WORLD" \ No newline at end of file +# TODO add tests for asyn here see adsimdetector example \ No newline at end of file diff --git a/tests/Verify.busy.sh b/tests/Verify.busy.sh old mode 100644 new mode 100755 index 8ce1569..92d2dda --- a/tests/Verify.busy.sh +++ b/tests/Verify.busy.sh @@ -1,3 +1,3 @@ #!/bin/bash -echo TODO add tests for busy support module +# TODO add tests for asyn here see adsimdetector example \ No newline at end of file diff --git a/tests/_test_support_build.sh b/tests/_test_support_build.sh index dd45bdb..14c1ddb 100755 --- a/tests/_test_support_build.sh +++ b/tests/_test_support_build.sh @@ -35,10 +35,10 @@ fi # decide on container build tool if which docker > /dev/null ; then - docker=docker + export docker=docker else echo using podman - docker=podman + export docker=podman fi NEWCACHE=${CACHE}-new