we are running a CI setup at sysmocom to test pySim against real physical smartcards and readers.
these tests are controlled by https://jenkins.osmocom.org/ and run on a dedicated jenkins node https://jenkins.osmocom.org/jenkins/computer/simtester/
- the jenkins node is run inside a KVM VM on AMD APU based hardware.
- there are 6 Omnikey 3121 Smart Card Readers connected to a usb-hub; the resulting usbdevices are passed through to the vm.
The tests for pySim are executed by this jenkins job https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/. The job is triggered by gerrit and acts as build verification job for any proposed pySim changes that are pushed into gerrit for review.
The same hardware rig is also used for other tests (scheduled by jenkins), but this is out of scope for pySim.
It does so via a script https://gitea.osmocom.org/sim-card/pysim/src/branch/master/contrib/jenkins.sh
which in turn calls https://gitea.osmocom.org/sim-card/pysim/src/branch/master/tests/pysim-test.sh from the /pysim-testdata directory.
https://gitea.osmocom.org/sim-card/pysim/src/branch/master/pysim-testdata holds all the information to access the cards and which output each test expects as result.