0s autopkgtest [05:06:11]: starting date and time: 2026-01-23 05:06:11+0000 0s autopkgtest [05:06:11]: git checkout: 4b346b80 nova: make wait_reboot return success even when a no-op 0s autopkgtest [05:06:11]: host juju-7f2275-prod-proposed-migration-environment-2; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.2xuuqr38/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:omniorb-dfsg,src:apbs,src:binutils,src:ccls,src:cp2k,src:gcc-11,src:gcc-12,src:gcc-13,src:gcc-14,src:gcc-15,src:gcc-snapshot,src:gdm3,src:gnuradio,src:hkl,src:hmmer,src:ktimetracker,src:libixion,src:libreoffice,src:libsndfile,src:libzstd,src:link-grammar,src:mosquitto,src:nodejs,src:orthanc-python,src:psychopy,src:pyside2,src:python3-defaults,src:rumur,src:systemd,src:tifffile,src:vim --apt-upgrade pytango --timeout-short=300 --timeout-copy=20000 --timeout-test=20000 --timeout-build=20000 '--env=ADT_TEST_TRIGGERS=omniorb-dfsg/4.3.3+ds1-1build1 apbs/3.4.1-7build1 binutils/2.45.50.20260119-1ubuntu1 ccls/0.20250815-0ubuntu1 cp2k/2025.2-3 gcc-11/11.5.0-8ubuntu1 gcc-12/12.5.0-7ubuntu1 gcc-13/13.4.0-5ubuntu1 gcc-14/14.3.0-11ubuntu1 gcc-15/15.2.0-12ubuntu1 gcc-snapshot/1:20260121-1ubuntu1 gdm3/50~alpha.1-0ubuntu1 gnuradio/3.10.12.0-5.1 hkl/5.1.4-1 hmmer/3.4+dfsg-3 ktimetracker/4:6.0.0-1build1 libixion/0.20.0-6build1 libreoffice/4:25.8.4~rc2-0ubuntu2 libsndfile/1.2.2-4 libzstd/1.5.7+dfsg-3 link-grammar/5.13.0+dfsg-1build1 mosquitto/2.0.22-5 nodejs/22.22.0+dfsg+~cs22.19.6-1ubuntu2 orthanc-python/7.0+ds-1build1 psychopy/2023.2.4+dfsg-4 pyside2/5.15.18-1 python3-defaults/3.14.2-1 rumur/2025.08.31-1 systemd/259-1ubuntu3 tifffile/20260114-1 vim/2:9.1.1882-1ubuntu2' -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest-cpu4-ram16-disk100-ppc64el --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-2@sto01-ppc64el-18.secgroup --name adt-resolute-ppc64el-pytango-20260123-050611-juju-7f2275-prod-proposed-migration-environment-2-bf06a24d-c1c4-4454-9ba5-0b03e9c61e48 --image adt/ubuntu-resolute-ppc64el-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-2 --net-id=net_prod-autopkgtest-workers-ppc64el -e TERM=linux --mirror=http://ftpmaster.internal/ubuntu/ 5s Creating nova instance adt-resolute-ppc64el-pytango-20260123-050611-juju-7f2275-prod-proposed-migration-environment-2-bf06a24d-c1c4-4454-9ba5-0b03e9c61e48 from image adt/ubuntu-resolute-ppc64el-server-20260122.img (UUID 987e5803-394f-43eb-a969-151b6b75a57a)... 55s autopkgtest [05:07:06]: testbed dpkg architecture: ppc64el 55s autopkgtest [05:07:06]: testbed apt version: 3.1.12 55s autopkgtest [05:07:06]: @@@@@@@@@@@@@@@@@@@@ test bed setup 55s autopkgtest [05:07:06]: testbed release detected to be: None 56s autopkgtest [05:07:07]: updating testbed package index (apt update) 56s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [124 kB] 56s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 57s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 57s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 57s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [95.1 kB] 57s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [23.6 kB] 57s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [2820 B] 57s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [1181 kB] 57s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el Packages [118 kB] 57s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/universe ppc64el Packages [962 kB] 57s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse ppc64el Packages [9160 B] 57s Fetched 2516 kB in 1s (4373 kB/s) 58s Reading package lists... 58s Hit:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease 59s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 59s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 59s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 59s Reading package lists... 59s Reading package lists... 60s Building dependency tree... 60s Reading state information... 60s Calculating upgrade... 60s The following packages were automatically installed and are no longer required: 60s python3.13 python3.13-minimal 60s Use 'sudo apt autoremove' to remove them. 60s The following NEW packages will be installed: 60s libpython3.14-minimal libpython3.14-stdlib libsframe3 python3.14 60s python3.14-minimal 60s The following packages will be upgraded: 60s apt binutils binutils-common binutils-powerpc64le-linux-gnu dhcpcd-base 60s gcc-15-base libapt-pkg7.0 libatomic1 libbinutils libctf-nobfd0 libctf0 60s libgcc-s1 libnss-systemd libpam-systemd libplymouth5 libpython3-stdlib 60s libstdc++6 libsystemd-shared libsystemd0 libudev1 libzstd1 plymouth 60s plymouth-theme-ubuntu-text python3 python3-gdbm python3-minimal systemd 60s systemd-cryptsetup systemd-resolved systemd-sysv systemd-userdbd udev 60s vim-common vim-tiny xxd zstd 60s 36 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. 60s Need to get 26.5 MB of archives. 60s After this operation, 27.9 MB of additional disk space will be used. 60s Get:1 http://ftpmaster.internal/ubuntu resolute/main ppc64el libpython3.14-minimal ppc64el 3.14.2-1 [921 kB] 60s Get:2 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3.14-minimal ppc64el 3.14.2-1 [2712 kB] 60s Get:3 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3-gdbm ppc64el 3.14.2-1 [11.1 kB] 60s Get:4 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3-minimal ppc64el 3.14.2-1 [28.2 kB] 60s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3 ppc64el 3.14.2-1 [22.9 kB] 60s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libstdc++6 ppc64el 15.2.0-12ubuntu1 [922 kB] 60s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libatomic1 ppc64el 15.2.0-12ubuntu1 [11.0 kB] 60s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el gcc-15-base ppc64el 15.2.0-12ubuntu1 [59.6 kB] 60s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libgcc-s1 ppc64el 15.2.0-12ubuntu1 [40.2 kB] 60s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libzstd1 ppc64el 1.5.7+dfsg-3 [430 kB] 60s Get:11 http://ftpmaster.internal/ubuntu resolute/main ppc64el libpython3.14-stdlib ppc64el 3.14.2-1 [2444 kB] 60s Get:12 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3.14 ppc64el 3.14.2-1 [816 kB] 60s Get:13 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libpython3-stdlib ppc64el 3.14.2-1 [10.9 kB] 60s Get:14 http://ftpmaster.internal/ubuntu resolute-proposed/universe ppc64el systemd-userdbd ppc64el 259-1ubuntu3 [54.6 kB] 60s Get:15 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libnss-systemd ppc64el 259-1ubuntu3 [347 kB] 60s Get:16 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libsystemd0 ppc64el 259-1ubuntu3 [703 kB] 61s Get:17 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el systemd-sysv ppc64el 259-1ubuntu3 [9250 B] 61s Get:18 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el systemd-resolved ppc64el 259-1ubuntu3 [344 kB] 61s Get:19 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libpam-systemd ppc64el 259-1ubuntu3 [372 kB] 61s Get:20 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libsystemd-shared ppc64el 259-1ubuntu3 [2884 kB] 61s Get:21 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el systemd ppc64el 259-1ubuntu3 [3301 kB] 61s Get:22 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el systemd-cryptsetup ppc64el 259-1ubuntu3 [133 kB] 61s Get:23 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el udev ppc64el 259-1ubuntu3 [1505 kB] 62s Get:24 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libudev1 ppc64el 259-1ubuntu3 [252 kB] 62s Get:25 http://ftpmaster.internal/ubuntu resolute/main ppc64el libapt-pkg7.0 ppc64el 3.1.13 [1287 kB] 62s Get:26 http://ftpmaster.internal/ubuntu resolute/main ppc64el apt ppc64el 3.1.13 [1519 kB] 62s Get:27 http://ftpmaster.internal/ubuntu resolute/main ppc64el dhcpcd-base ppc64el 1:10.3.0-7 [295 kB] 62s Get:28 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el vim-tiny ppc64el 2:9.1.1882-1ubuntu2 [1180 kB] 62s Get:29 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el vim-common all 2:9.1.1882-1ubuntu2 [402 kB] 62s Get:30 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el xxd ppc64el 2:9.1.1882-1ubuntu2 [71.6 kB] 62s Get:31 http://ftpmaster.internal/ubuntu resolute/main ppc64el libplymouth5 ppc64el 24.004.60+git20250831.4a3c171d-0ubuntu4 [174 kB] 62s Get:32 http://ftpmaster.internal/ubuntu resolute/main ppc64el plymouth-theme-ubuntu-text ppc64el 24.004.60+git20250831.4a3c171d-0ubuntu4 [11.2 kB] 62s Get:33 http://ftpmaster.internal/ubuntu resolute/main ppc64el plymouth ppc64el 24.004.60+git20250831.4a3c171d-0ubuntu4 [160 kB] 62s Get:34 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libctf0 ppc64el 2.45.50.20260119-1ubuntu1 [118 kB] 62s Get:35 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libctf-nobfd0 ppc64el 2.45.50.20260119-1ubuntu1 [121 kB] 62s Get:36 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el binutils-powerpc64le-linux-gnu ppc64el 2.45.50.20260119-1ubuntu1 [1030 kB] 62s Get:37 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libbinutils ppc64el 2.45.50.20260119-1ubuntu1 [722 kB] 62s Get:38 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el binutils ppc64el 2.45.50.20260119-1ubuntu1 [3266 B] 62s Get:39 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el binutils-common ppc64el 2.45.50.20260119-1ubuntu1 [222 kB] 62s Get:40 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libsframe3 ppc64el 2.45.50.20260119-1ubuntu1 [23.7 kB] 62s Get:41 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el zstd ppc64el 1.5.7+dfsg-3 [845 kB] 63s dpkg-preconfigure: unable to re-open stdin: No such file or directory 63s Fetched 26.5 MB in 2s (11.9 MB/s) 63s Selecting previously unselected package libpython3.14-minimal:ppc64el. 63s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 120824 files and directories currently installed.) 63s Preparing to unpack .../libpython3.14-minimal_3.14.2-1_ppc64el.deb ... 63s Unpacking libpython3.14-minimal:ppc64el (3.14.2-1) ... 63s Selecting previously unselected package python3.14-minimal. 63s Preparing to unpack .../python3.14-minimal_3.14.2-1_ppc64el.deb ... 63s Unpacking python3.14-minimal (3.14.2-1) ... 63s Preparing to unpack .../python3-gdbm_3.14.2-1_ppc64el.deb ... 63s Unpacking python3-gdbm (3.14.2-1) over (3.13.9-1) ... 64s Setting up libpython3.14-minimal:ppc64el (3.14.2-1) ... 64s Setting up python3.14-minimal (3.14.2-1) ... 66s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121166 files and directories currently installed.) 66s Preparing to unpack .../python3-minimal_3.14.2-1_ppc64el.deb ... 66s Unpacking python3-minimal (3.14.2-1) over (3.13.7-1) ... 67s Setting up python3-minimal (3.14.2-1) ... 67s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121166 files and directories currently installed.) 67s Preparing to unpack .../python3_3.14.2-1_ppc64el.deb ... 67s running python pre-rtupdate hooks for python3.14... 67s Unpacking python3 (3.14.2-1) over (3.13.7-1) ... 67s Preparing to unpack .../libstdc++6_15.2.0-12ubuntu1_ppc64el.deb ... 67s Unpacking libstdc++6:ppc64el (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 68s Preparing to unpack .../libatomic1_15.2.0-12ubuntu1_ppc64el.deb ... 68s Unpacking libatomic1:ppc64el (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 68s Preparing to unpack .../gcc-15-base_15.2.0-12ubuntu1_ppc64el.deb ... 68s Unpacking gcc-15-base:ppc64el (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 68s Setting up gcc-15-base:ppc64el (15.2.0-12ubuntu1) ... 68s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121167 files and directories currently installed.) 68s Preparing to unpack .../libgcc-s1_15.2.0-12ubuntu1_ppc64el.deb ... 68s Unpacking libgcc-s1:ppc64el (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 68s Setting up libgcc-s1:ppc64el (15.2.0-12ubuntu1) ... 68s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121167 files and directories currently installed.) 68s Preparing to unpack .../libzstd1_1.5.7+dfsg-3_ppc64el.deb ... 68s Unpacking libzstd1:ppc64el (1.5.7+dfsg-3) over (1.5.7+dfsg-2) ... 69s Setting up libzstd1:ppc64el (1.5.7+dfsg-3) ... 69s Selecting previously unselected package libpython3.14-stdlib:ppc64el. 69s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121167 files and directories currently installed.) 69s Preparing to unpack .../0-libpython3.14-stdlib_3.14.2-1_ppc64el.deb ... 69s Unpacking libpython3.14-stdlib:ppc64el (3.14.2-1) ... 69s Selecting previously unselected package python3.14. 69s Preparing to unpack .../1-python3.14_3.14.2-1_ppc64el.deb ... 69s Unpacking python3.14 (3.14.2-1) ... 69s Preparing to unpack .../2-libpython3-stdlib_3.14.2-1_ppc64el.deb ... 69s Unpacking libpython3-stdlib:ppc64el (3.14.2-1) over (3.13.7-1) ... 69s Preparing to unpack .../3-systemd-userdbd_259-1ubuntu3_ppc64el.deb ... 69s Unpacking systemd-userdbd (259-1ubuntu3) over (259-1ubuntu2) ... 69s Preparing to unpack .../4-libnss-systemd_259-1ubuntu3_ppc64el.deb ... 69s Unpacking libnss-systemd:ppc64el (259-1ubuntu3) over (259-1ubuntu2) ... 70s Preparing to unpack .../5-libsystemd0_259-1ubuntu3_ppc64el.deb ... 70s Unpacking libsystemd0:ppc64el (259-1ubuntu3) over (259-1ubuntu2) ... 70s Setting up libsystemd0:ppc64el (259-1ubuntu3) ... 70s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121598 files and directories currently installed.) 70s Preparing to unpack .../systemd-sysv_259-1ubuntu3_ppc64el.deb ... 70s Unpacking systemd-sysv (259-1ubuntu3) over (259-1ubuntu2) ... 70s Preparing to unpack .../systemd-resolved_259-1ubuntu3_ppc64el.deb ... 70s Unpacking systemd-resolved (259-1ubuntu3) over (259-1ubuntu2) ... 70s Preparing to unpack .../libpam-systemd_259-1ubuntu3_ppc64el.deb ... 70s Unpacking libpam-systemd:ppc64el (259-1ubuntu3) over (259-1ubuntu2) ... 70s Preparing to unpack .../libsystemd-shared_259-1ubuntu3_ppc64el.deb ... 70s Unpacking libsystemd-shared:ppc64el (259-1ubuntu3) over (259-1ubuntu2) ... 70s Setting up libsystemd-shared:ppc64el (259-1ubuntu3) ... 71s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121598 files and directories currently installed.) 71s Preparing to unpack .../systemd_259-1ubuntu3_ppc64el.deb ... 71s Unpacking systemd (259-1ubuntu3) over (259-1ubuntu2) ... 71s Preparing to unpack .../systemd-cryptsetup_259-1ubuntu3_ppc64el.deb ... 71s Unpacking systemd-cryptsetup (259-1ubuntu3) over (259-1ubuntu2) ... 72s Preparing to unpack .../udev_259-1ubuntu3_ppc64el.deb ... 72s Unpacking udev (259-1ubuntu3) over (259-1ubuntu2) ... 72s Preparing to unpack .../libudev1_259-1ubuntu3_ppc64el.deb ... 72s Unpacking libudev1:ppc64el (259-1ubuntu3) over (259-1ubuntu2) ... 72s Setting up libudev1:ppc64el (259-1ubuntu3) ... 72s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121598 files and directories currently installed.) 72s Preparing to unpack .../00-libapt-pkg7.0_3.1.13_ppc64el.deb ... 72s Unpacking libapt-pkg7.0:ppc64el (3.1.13) over (3.1.12) ... 72s Preparing to unpack .../01-apt_3.1.13_ppc64el.deb ... 72s Unpacking apt (3.1.13) over (3.1.12) ... 73s Preparing to unpack .../02-dhcpcd-base_1%3a10.3.0-7_ppc64el.deb ... 73s Unpacking dhcpcd-base (1:10.3.0-7) over (1:10.3.0-3) ... 73s Preparing to unpack .../03-vim-tiny_2%3a9.1.1882-1ubuntu2_ppc64el.deb ... 73s Unpacking vim-tiny (2:9.1.1882-1ubuntu2) over (2:9.1.1882-1ubuntu1) ... 73s Preparing to unpack .../04-vim-common_2%3a9.1.1882-1ubuntu2_all.deb ... 73s Unpacking vim-common (2:9.1.1882-1ubuntu2) over (2:9.1.1882-1ubuntu1) ... 73s Preparing to unpack .../05-xxd_2%3a9.1.1882-1ubuntu2_ppc64el.deb ... 73s Unpacking xxd (2:9.1.1882-1ubuntu2) over (2:9.1.1882-1ubuntu1) ... 73s Preparing to unpack .../06-libplymouth5_24.004.60+git20250831.4a3c171d-0ubuntu4_ppc64el.deb ... 73s Unpacking libplymouth5:ppc64el (24.004.60+git20250831.4a3c171d-0ubuntu4) over (24.004.60+git20250831.4a3c171d-0ubuntu3) ... 73s Preparing to unpack .../07-plymouth-theme-ubuntu-text_24.004.60+git20250831.4a3c171d-0ubuntu4_ppc64el.deb ... 73s Unpacking plymouth-theme-ubuntu-text (24.004.60+git20250831.4a3c171d-0ubuntu4) over (24.004.60+git20250831.4a3c171d-0ubuntu3) ... 73s Preparing to unpack .../08-plymouth_24.004.60+git20250831.4a3c171d-0ubuntu4_ppc64el.deb ... 73s Unpacking plymouth (24.004.60+git20250831.4a3c171d-0ubuntu4) over (24.004.60+git20250831.4a3c171d-0ubuntu3) ... 74s Preparing to unpack .../09-libctf0_2.45.50.20260119-1ubuntu1_ppc64el.deb ... 74s Unpacking libctf0:ppc64el (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 74s Preparing to unpack .../10-libctf-nobfd0_2.45.50.20260119-1ubuntu1_ppc64el.deb ... 74s Unpacking libctf-nobfd0:ppc64el (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 74s Preparing to unpack .../11-binutils-powerpc64le-linux-gnu_2.45.50.20260119-1ubuntu1_ppc64el.deb ... 74s Unpacking binutils-powerpc64le-linux-gnu (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 74s Preparing to unpack .../12-libbinutils_2.45.50.20260119-1ubuntu1_ppc64el.deb ... 74s Unpacking libbinutils:ppc64el (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 74s Preparing to unpack .../13-binutils_2.45.50.20260119-1ubuntu1_ppc64el.deb ... 74s Unpacking binutils (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 74s Preparing to unpack .../14-binutils-common_2.45.50.20260119-1ubuntu1_ppc64el.deb ... 74s Unpacking binutils-common:ppc64el (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 74s Selecting previously unselected package libsframe3:ppc64el. 74s Preparing to unpack .../15-libsframe3_2.45.50.20260119-1ubuntu1_ppc64el.deb ... 74s Unpacking libsframe3:ppc64el (2.45.50.20260119-1ubuntu1) ... 74s Preparing to unpack .../16-zstd_1.5.7+dfsg-3_ppc64el.deb ... 74s Unpacking zstd (1.5.7+dfsg-3) over (1.5.7+dfsg-2) ... 74s Setting up libpython3.14-stdlib:ppc64el (3.14.2-1) ... 74s Setting up binutils-common:ppc64el (2.45.50.20260119-1ubuntu1) ... 74s Setting up libsframe3:ppc64el (2.45.50.20260119-1ubuntu1) ... 74s Setting up libctf-nobfd0:ppc64el (2.45.50.20260119-1ubuntu1) ... 74s Setting up libnss-systemd:ppc64el (259-1ubuntu3) ... 74s Setting up systemd (259-1ubuntu3) ... 75s /usr/lib/tmpfiles.d/legacy.conf:14: Duplicate line for path "/run/lock", ignoring. 75s /usr/lib/tmpfiles.d/legacy.conf:14: Duplicate line for path "/run/lock", ignoring. 76s Setting up xxd (2:9.1.1882-1ubuntu2) ... 76s Setting up vim-common (2:9.1.1882-1ubuntu2) ... 76s Setting up systemd-cryptsetup (259-1ubuntu3) ... 76s Setting up libatomic1:ppc64el (15.2.0-12ubuntu1) ... 76s Setting up udev (259-1ubuntu3) ... 77s Setting up dhcpcd-base (1:10.3.0-7) ... 77s Setting up libplymouth5:ppc64el (24.004.60+git20250831.4a3c171d-0ubuntu4) ... 77s Setting up python3.14 (3.14.2-1) ... 78s Setting up libbinutils:ppc64el (2.45.50.20260119-1ubuntu1) ... 78s Setting up libstdc++6:ppc64el (15.2.0-12ubuntu1) ... 78s Setting up libpython3-stdlib:ppc64el (3.14.2-1) ... 78s Setting up systemd-resolved (259-1ubuntu3) ... 79s Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 148. 79s Setting up libctf0:ppc64el (2.45.50.20260119-1ubuntu1) ... 79s Setting up systemd-userdbd (259-1ubuntu3) ... 79s Setting up systemd-sysv (259-1ubuntu3) ... 79s Setting up python3-gdbm (3.14.2-1) ... 79s Setting up plymouth (24.004.60+git20250831.4a3c171d-0ubuntu4) ... 79s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 79s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 80s Setting up python3 (3.14.2-1) ... 80s running python rtupdate hooks for python3.14... 80s running python post-rtupdate hooks for python3.14... 80s Setting up vim-tiny (2:9.1.1882-1ubuntu2) ... 80s Setting up libpam-systemd:ppc64el (259-1ubuntu3) ... 80s Setting up libapt-pkg7.0:ppc64el (3.1.13) ... 80s Setting up binutils-powerpc64le-linux-gnu (2.45.50.20260119-1ubuntu1) ... 80s Setting up zstd (1.5.7+dfsg-3) ... 80s Setting up apt (3.1.13) ... 81s Setting up binutils (2.45.50.20260119-1ubuntu1) ... 81s Processing triggers for dbus (1.16.2-2ubuntu2) ... 81s Processing triggers for shared-mime-info (2.4-5build2) ... 84s Processing triggers for procps (2:4.0.4-9ubuntu1) ... 84s Processing triggers for initramfs-tools (0.150ubuntu7) ... 84s update-initramfs: Generating /boot/initrd.img-6.18.0-9-generic 92s Processing triggers for libc-bin (2.42-2ubuntu4) ... 92s Processing triggers for man-db (2.13.1-1) ... 94s Setting up plymouth-theme-ubuntu-text (24.004.60+git20250831.4a3c171d-0ubuntu4) ... 94s Processing triggers for initramfs-tools (0.150ubuntu7) ... 94s update-initramfs: Generating /boot/initrd.img-6.18.0-9-generic 99s autopkgtest [05:07:50]: upgrading testbed (apt dist-upgrade and autopurge) 100s Reading package lists... 100s Building dependency tree... 100s Reading state information... 101s Calculating upgrade... 101s The following packages were automatically installed and are no longer required: 101s python3.13 python3.13-minimal 101s Use 'sudo apt autoremove' to remove them. 101s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 101s Reading package lists... 101s Building dependency tree... 101s Reading state information... 101s Solving dependencies... 101s The following packages will be REMOVED: 101s python3.13* python3.13-minimal* 101s 0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded. 101s After this operation, 9077 kB disk space will be freed. 101s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121598 files and directories currently installed.) 101s Removing python3.13 (3.13.11-1) ... 101s Removing python3.13-minimal (3.13.11-1) ... 103s Processing triggers for man-db (2.13.1-1) ... 103s Processing triggers for systemd (259-1ubuntu3) ... 103s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121571 files and directories currently installed.) 103s Purging configuration files for python3.13-minimal (3.13.11-1) ... 103s autopkgtest [05:07:54]: rebooting testbed after setup commands that affected boot 141s autopkgtest [05:08:32]: testbed running kernel: Linux 6.18.0-9-generic #9-Ubuntu SMP PREEMPT_DYNAMIC Mon Jan 12 16:45:54 UTC 2026 144s autopkgtest [05:08:35]: @@@@@@@@@@@@@@@@@@@@ apt-source pytango 146s Get:1 http://ftpmaster.internal/ubuntu resolute/universe pytango 10.0.2-3 (dsc) [3646 B] 146s Get:2 http://ftpmaster.internal/ubuntu resolute/universe pytango 10.0.2-3 (tar) [4854 kB] 146s Get:3 http://ftpmaster.internal/ubuntu resolute/universe pytango 10.0.2-3 (diff) [13.6 kB] 146s gpgv: Signature made Thu Oct 2 15:09:36 2025 UTC 146s gpgv: using RSA key 9B03EBB98300DF97C2B123BFCC8C6BDD1403F4CA 146s gpgv: issuer "roehling@debian.org" 146s gpgv: Can't check signature: No public key 146s dpkg-source: warning: cannot verify inline signature for ./pytango_10.0.2-3.dsc: no acceptable signature found 146s autopkgtest [05:08:37]: testing package pytango version 10.0.2-3 146s autopkgtest [05:08:37]: build not needed 147s autopkgtest [05:08:38]: test command1: preparing testbed 147s Reading package lists... 148s Building dependency tree... 148s Reading state information... 148s Solving dependencies... 148s The following NEW packages will be installed: 148s libabsl20240722 libblas3 libboost-python1.88.0 libcares2 libcos4-3 libev4t64 148s libexpat1-dev libgfortran5 libgrpc++1.51t64 libgrpc29t64 libjpeg-turbo8 148s libjpeg8 liblapack3 libnorm1t64 libomniorb4-3t64 libomnithread4 148s libpgm-5.3-0t64 libprotobuf32t64 libprotoc32t64 libpython3-all-dev 148s libpython3-dev libpython3.13-dev libpython3.14 libpython3.14-dev libre2-11 148s libsodium23 libtango-tools libtango10 libzmq5 opentelemetry-cpp python3-all 148s python3-all-dev python3-dev python3-gevent python3-greenlet 148s python3-iniconfig python3-numpy python3-numpy-dev python3-pluggy 148s python3-psutil python3-py python3-pytest python3-pytest-asyncio 148s python3-pytest-forked python3-pytest-rerunfailures python3-tango 148s python3-zope.event python3-zope.interface python3.13 python3.13-dev 148s python3.13-minimal python3.14-dev tango-common tango-starter tango-test 148s zlib1g-dev 148s 0 upgraded, 56 newly installed, 0 to remove and 0 not upgraded. 148s Need to get 49.9 MB of archives. 148s After this operation, 256 MB of additional disk space will be used. 148s Get:1 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3.13-minimal ppc64el 3.13.11-1 [2571 kB] 148s Get:2 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-numpy-dev ppc64el 1:2.3.5+ds-3 [153 kB] 148s Get:3 http://ftpmaster.internal/ubuntu resolute/main ppc64el libblas3 ppc64el 3.12.1-7ubuntu1 [291 kB] 148s Get:4 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libgfortran5 ppc64el 15.2.0-12ubuntu1 [620 kB] 148s Get:5 http://ftpmaster.internal/ubuntu resolute/main ppc64el liblapack3 ppc64el 3.12.1-7ubuntu1 [2960 kB] 149s Get:6 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-numpy ppc64el 1:2.3.5+ds-3 [5722 kB] 149s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/universe ppc64el libomnithread4 ppc64el 4.3.3+ds1-1build1 [13.2 kB] 149s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/universe ppc64el libomniorb4-3t64 ppc64el 4.3.3+ds1-1build1 [1401 kB] 149s Get:9 http://ftpmaster.internal/ubuntu resolute/main ppc64el libabsl20240722 ppc64el 20240722.0-4ubuntu1 [662 kB] 149s Get:10 http://ftpmaster.internal/ubuntu resolute/main ppc64el libcares2 ppc64el 1.34.6-1 [132 kB] 149s Get:11 http://ftpmaster.internal/ubuntu resolute/main ppc64el libprotobuf32t64 ppc64el 3.21.12-15 [992 kB] 149s Get:12 http://ftpmaster.internal/ubuntu resolute/main ppc64el libprotoc32t64 ppc64el 3.21.12-15 [716 kB] 149s Get:13 http://ftpmaster.internal/ubuntu resolute/main ppc64el libre2-11 ppc64el 20250805-1build1 [192 kB] 149s Get:14 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libgrpc29t64 ppc64el 1.51.1-7 [3028 kB] 149s Get:15 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libgrpc++1.51t64 ppc64el 1.51.1-7 [513 kB] 149s Get:16 http://ftpmaster.internal/ubuntu resolute/universe ppc64el opentelemetry-cpp ppc64el 1.23.0-3 [701 kB] 149s Get:17 http://ftpmaster.internal/ubuntu resolute/universe ppc64el tango-common all 10.0.2+dfsg1-4 [8520 B] 149s Get:18 http://ftpmaster.internal/ubuntu resolute-proposed/universe ppc64el libcos4-3 ppc64el 4.3.3+ds1-1build1 [1392 kB] 149s Get:19 http://ftpmaster.internal/ubuntu resolute/main ppc64el libjpeg-turbo8 ppc64el 2.1.5-4ubuntu2 [215 kB] 149s Get:20 http://ftpmaster.internal/ubuntu resolute/main ppc64el libjpeg8 ppc64el 8c-2ubuntu11 [2148 B] 149s Get:21 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libnorm1t64 ppc64el 1.5.9+dfsg-4 [198 kB] 149s Get:22 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libpgm-5.3-0t64 ppc64el 5.3.128~dfsg-2.1build2 [184 kB] 149s Get:23 http://ftpmaster.internal/ubuntu resolute/main ppc64el libsodium23 ppc64el 1.0.18-2 [160 kB] 149s Get:24 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libzmq5 ppc64el 4.3.5-1build3 [302 kB] 149s Get:25 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libtango10 ppc64el 10.0.2+dfsg1-4 [2031 kB] 150s Get:26 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libtango-tools ppc64el 10.0.2+dfsg1-4 [28.5 kB] 150s Get:27 http://ftpmaster.internal/ubuntu resolute/universe ppc64el tango-starter ppc64el 10.0.2+dfsg1-4 [84.1 kB] 150s Get:28 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3.13 ppc64el 3.13.11-1 [758 kB] 150s Get:29 http://ftpmaster.internal/ubuntu resolute/main ppc64el libboost-python1.88.0 ppc64el 1.88.0-1.4ubuntu3 [361 kB] 150s Get:30 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libev4t64 ppc64el 1:4.33-2.1build2 [34.6 kB] 150s Get:31 http://ftpmaster.internal/ubuntu resolute/main ppc64el libexpat1-dev ppc64el 2.7.3-1 [155 kB] 150s Get:32 http://ftpmaster.internal/ubuntu resolute/main ppc64el libpython3.14 ppc64el 3.14.2-1 [2731 kB] 150s Get:33 http://ftpmaster.internal/ubuntu resolute/main ppc64el zlib1g-dev ppc64el 1:1.3.dfsg+really1.3.1-1ubuntu2 [903 kB] 150s Get:34 http://ftpmaster.internal/ubuntu resolute/main ppc64el libpython3.14-dev ppc64el 3.14.2-1 [6406 kB] 150s Get:35 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libpython3-dev ppc64el 3.14.2-1 [11.2 kB] 150s Get:36 http://ftpmaster.internal/ubuntu resolute/main ppc64el libpython3.13-dev ppc64el 3.13.11-1 [6398 kB] 150s Get:37 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libpython3-all-dev ppc64el 3.14.2-1 [914 B] 150s Get:38 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3-all ppc64el 3.14.2-1 [890 B] 150s Get:39 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3.14-dev ppc64el 3.14.2-1 [510 kB] 150s Get:40 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3-dev ppc64el 3.14.2-1 [26.6 kB] 150s Get:41 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3.13-dev ppc64el 3.13.11-1 [508 kB] 150s Get:42 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3-all-dev ppc64el 3.14.2-1 [914 B] 150s Get:43 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-iniconfig all 2.1.0-2 [6962 B] 150s Get:44 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-pluggy all 1.6.0-2 [21.1 kB] 150s Get:45 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-psutil ppc64el 7.1.0-1ubuntu1 [192 kB] 150s Get:46 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-py all 1.11.0-6 [72.9 kB] 150s Get:47 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-pytest all 9.0.2-2 [277 kB] 150s Get:48 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-pytest-asyncio all 1.3.0-1 [13.8 kB] 150s Get:49 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-pytest-forked all 1.6.0-5 [7758 B] 150s Get:50 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-pytest-rerunfailures all 16.1-1 [14.9 kB] 150s Get:51 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-zope.event all 6.0-2 [7710 B] 150s Get:52 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-zope.interface ppc64el 8.2-1 [146 kB] 150s Get:53 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-greenlet ppc64el 3.2.4-3 [190 kB] 151s Get:54 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-gevent ppc64el 24.11.1-1build2 [1228 kB] 151s Get:55 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-tango ppc64el 10.0.2-3 [3532 kB] 151s Get:56 http://ftpmaster.internal/ubuntu resolute/universe ppc64el tango-test ppc64el 10.0.2+dfsg1-4 [116 kB] 151s Preconfiguring packages ... 151s Fetched 49.9 MB in 3s (16.1 MB/s) 151s Selecting previously unselected package python3.13-minimal. 152s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121573 files and directories currently installed.) 152s Preparing to unpack .../00-python3.13-minimal_3.13.11-1_ppc64el.deb ... 152s Unpacking python3.13-minimal (3.13.11-1) ... 152s Selecting previously unselected package python3-numpy-dev:ppc64el. 152s Preparing to unpack .../01-python3-numpy-dev_1%3a2.3.5+ds-3_ppc64el.deb ... 152s Unpacking python3-numpy-dev:ppc64el (1:2.3.5+ds-3) ... 152s Selecting previously unselected package libblas3:ppc64el. 152s Preparing to unpack .../02-libblas3_3.12.1-7ubuntu1_ppc64el.deb ... 152s Unpacking libblas3:ppc64el (3.12.1-7ubuntu1) ... 152s Selecting previously unselected package libgfortran5:ppc64el. 152s Preparing to unpack .../03-libgfortran5_15.2.0-12ubuntu1_ppc64el.deb ... 152s Unpacking libgfortran5:ppc64el (15.2.0-12ubuntu1) ... 152s Selecting previously unselected package liblapack3:ppc64el. 152s Preparing to unpack .../04-liblapack3_3.12.1-7ubuntu1_ppc64el.deb ... 152s Unpacking liblapack3:ppc64el (3.12.1-7ubuntu1) ... 152s Selecting previously unselected package python3-numpy. 152s Preparing to unpack .../05-python3-numpy_1%3a2.3.5+ds-3_ppc64el.deb ... 152s Unpacking python3-numpy (1:2.3.5+ds-3) ... 152s Selecting previously unselected package libomnithread4:ppc64el. 152s Preparing to unpack .../06-libomnithread4_4.3.3+ds1-1build1_ppc64el.deb ... 152s Unpacking libomnithread4:ppc64el (4.3.3+ds1-1build1) ... 152s Selecting previously unselected package libomniorb4-3t64:ppc64el. 152s Preparing to unpack .../07-libomniorb4-3t64_4.3.3+ds1-1build1_ppc64el.deb ... 152s Unpacking libomniorb4-3t64:ppc64el (4.3.3+ds1-1build1) ... 152s Selecting previously unselected package libabsl20240722:ppc64el. 152s Preparing to unpack .../08-libabsl20240722_20240722.0-4ubuntu1_ppc64el.deb ... 152s Unpacking libabsl20240722:ppc64el (20240722.0-4ubuntu1) ... 152s Selecting previously unselected package libcares2:ppc64el. 152s Preparing to unpack .../09-libcares2_1.34.6-1_ppc64el.deb ... 152s Unpacking libcares2:ppc64el (1.34.6-1) ... 152s Selecting previously unselected package libprotobuf32t64:ppc64el. 152s Preparing to unpack .../10-libprotobuf32t64_3.21.12-15_ppc64el.deb ... 152s Unpacking libprotobuf32t64:ppc64el (3.21.12-15) ... 152s Selecting previously unselected package libprotoc32t64:ppc64el. 152s Preparing to unpack .../11-libprotoc32t64_3.21.12-15_ppc64el.deb ... 152s Unpacking libprotoc32t64:ppc64el (3.21.12-15) ... 152s Selecting previously unselected package libre2-11:ppc64el. 152s Preparing to unpack .../12-libre2-11_20250805-1build1_ppc64el.deb ... 152s Unpacking libre2-11:ppc64el (20250805-1build1) ... 152s Selecting previously unselected package libgrpc29t64:ppc64el. 152s Preparing to unpack .../13-libgrpc29t64_1.51.1-7_ppc64el.deb ... 152s Unpacking libgrpc29t64:ppc64el (1.51.1-7) ... 152s Selecting previously unselected package libgrpc++1.51t64:ppc64el. 152s Preparing to unpack .../14-libgrpc++1.51t64_1.51.1-7_ppc64el.deb ... 152s Unpacking libgrpc++1.51t64:ppc64el (1.51.1-7) ... 152s Selecting previously unselected package opentelemetry-cpp:ppc64el. 152s Preparing to unpack .../15-opentelemetry-cpp_1.23.0-3_ppc64el.deb ... 152s Unpacking opentelemetry-cpp:ppc64el (1.23.0-3) ... 153s Selecting previously unselected package tango-common. 153s Preparing to unpack .../16-tango-common_10.0.2+dfsg1-4_all.deb ... 153s Unpacking tango-common (10.0.2+dfsg1-4) ... 153s Selecting previously unselected package libcos4-3:ppc64el. 153s Preparing to unpack .../17-libcos4-3_4.3.3+ds1-1build1_ppc64el.deb ... 153s Unpacking libcos4-3:ppc64el (4.3.3+ds1-1build1) ... 153s Selecting previously unselected package libjpeg-turbo8:ppc64el. 153s Preparing to unpack .../18-libjpeg-turbo8_2.1.5-4ubuntu2_ppc64el.deb ... 153s Unpacking libjpeg-turbo8:ppc64el (2.1.5-4ubuntu2) ... 153s Selecting previously unselected package libjpeg8:ppc64el. 153s Preparing to unpack .../19-libjpeg8_8c-2ubuntu11_ppc64el.deb ... 153s Unpacking libjpeg8:ppc64el (8c-2ubuntu11) ... 153s Selecting previously unselected package libnorm1t64:ppc64el. 153s Preparing to unpack .../20-libnorm1t64_1.5.9+dfsg-4_ppc64el.deb ... 153s Unpacking libnorm1t64:ppc64el (1.5.9+dfsg-4) ... 153s Selecting previously unselected package libpgm-5.3-0t64:ppc64el. 153s Preparing to unpack .../21-libpgm-5.3-0t64_5.3.128~dfsg-2.1build2_ppc64el.deb ... 153s Unpacking libpgm-5.3-0t64:ppc64el (5.3.128~dfsg-2.1build2) ... 153s Selecting previously unselected package libsodium23:ppc64el. 153s Preparing to unpack .../22-libsodium23_1.0.18-2_ppc64el.deb ... 153s Unpacking libsodium23:ppc64el (1.0.18-2) ... 153s Selecting previously unselected package libzmq5:ppc64el. 153s Preparing to unpack .../23-libzmq5_4.3.5-1build3_ppc64el.deb ... 153s Unpacking libzmq5:ppc64el (4.3.5-1build3) ... 153s Selecting previously unselected package libtango10:ppc64el. 153s Preparing to unpack .../24-libtango10_10.0.2+dfsg1-4_ppc64el.deb ... 153s Unpacking libtango10:ppc64el (10.0.2+dfsg1-4) ... 153s Selecting previously unselected package libtango-tools. 153s Preparing to unpack .../25-libtango-tools_10.0.2+dfsg1-4_ppc64el.deb ... 153s Unpacking libtango-tools (10.0.2+dfsg1-4) ... 153s Selecting previously unselected package tango-starter. 153s Preparing to unpack .../26-tango-starter_10.0.2+dfsg1-4_ppc64el.deb ... 153s Unpacking tango-starter (10.0.2+dfsg1-4) ... 153s Selecting previously unselected package python3.13. 153s Preparing to unpack .../27-python3.13_3.13.11-1_ppc64el.deb ... 153s Unpacking python3.13 (3.13.11-1) ... 153s Selecting previously unselected package libboost-python1.88.0. 153s Preparing to unpack .../28-libboost-python1.88.0_1.88.0-1.4ubuntu3_ppc64el.deb ... 153s Unpacking libboost-python1.88.0 (1.88.0-1.4ubuntu3) ... 153s Selecting previously unselected package libev4t64:ppc64el. 153s Preparing to unpack .../29-libev4t64_1%3a4.33-2.1build2_ppc64el.deb ... 153s Unpacking libev4t64:ppc64el (1:4.33-2.1build2) ... 153s Selecting previously unselected package libexpat1-dev:ppc64el. 153s Preparing to unpack .../30-libexpat1-dev_2.7.3-1_ppc64el.deb ... 153s Unpacking libexpat1-dev:ppc64el (2.7.3-1) ... 153s Selecting previously unselected package libpython3.14:ppc64el. 153s Preparing to unpack .../31-libpython3.14_3.14.2-1_ppc64el.deb ... 153s Unpacking libpython3.14:ppc64el (3.14.2-1) ... 153s Selecting previously unselected package zlib1g-dev:ppc64el. 153s Preparing to unpack .../32-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1ubuntu2_ppc64el.deb ... 153s Unpacking zlib1g-dev:ppc64el (1:1.3.dfsg+really1.3.1-1ubuntu2) ... 153s Selecting previously unselected package libpython3.14-dev:ppc64el. 153s Preparing to unpack .../33-libpython3.14-dev_3.14.2-1_ppc64el.deb ... 153s Unpacking libpython3.14-dev:ppc64el (3.14.2-1) ... 153s Selecting previously unselected package libpython3-dev:ppc64el. 153s Preparing to unpack .../34-libpython3-dev_3.14.2-1_ppc64el.deb ... 153s Unpacking libpython3-dev:ppc64el (3.14.2-1) ... 153s Selecting previously unselected package libpython3.13-dev:ppc64el. 153s Preparing to unpack .../35-libpython3.13-dev_3.13.11-1_ppc64el.deb ... 153s Unpacking libpython3.13-dev:ppc64el (3.13.11-1) ... 153s Selecting previously unselected package libpython3-all-dev:ppc64el. 153s Preparing to unpack .../36-libpython3-all-dev_3.14.2-1_ppc64el.deb ... 153s Unpacking libpython3-all-dev:ppc64el (3.14.2-1) ... 153s Selecting previously unselected package python3-all. 153s Preparing to unpack .../37-python3-all_3.14.2-1_ppc64el.deb ... 153s Unpacking python3-all (3.14.2-1) ... 153s Selecting previously unselected package python3.14-dev. 153s Preparing to unpack .../38-python3.14-dev_3.14.2-1_ppc64el.deb ... 153s Unpacking python3.14-dev (3.14.2-1) ... 153s Selecting previously unselected package python3-dev. 153s Preparing to unpack .../39-python3-dev_3.14.2-1_ppc64el.deb ... 153s Unpacking python3-dev (3.14.2-1) ... 153s Selecting previously unselected package python3.13-dev. 153s Preparing to unpack .../40-python3.13-dev_3.13.11-1_ppc64el.deb ... 153s Unpacking python3.13-dev (3.13.11-1) ... 153s Selecting previously unselected package python3-all-dev. 153s Preparing to unpack .../41-python3-all-dev_3.14.2-1_ppc64el.deb ... 153s Unpacking python3-all-dev (3.14.2-1) ... 153s Selecting previously unselected package python3-iniconfig. 153s Preparing to unpack .../42-python3-iniconfig_2.1.0-2_all.deb ... 153s Unpacking python3-iniconfig (2.1.0-2) ... 153s Selecting previously unselected package python3-pluggy. 153s Preparing to unpack .../43-python3-pluggy_1.6.0-2_all.deb ... 153s Unpacking python3-pluggy (1.6.0-2) ... 154s Selecting previously unselected package python3-psutil. 154s Preparing to unpack .../44-python3-psutil_7.1.0-1ubuntu1_ppc64el.deb ... 154s Unpacking python3-psutil (7.1.0-1ubuntu1) ... 154s Selecting previously unselected package python3-py. 154s Preparing to unpack .../45-python3-py_1.11.0-6_all.deb ... 154s Unpacking python3-py (1.11.0-6) ... 154s Selecting previously unselected package python3-pytest. 154s Preparing to unpack .../46-python3-pytest_9.0.2-2_all.deb ... 154s Unpacking python3-pytest (9.0.2-2) ... 154s Selecting previously unselected package python3-pytest-asyncio. 154s Preparing to unpack .../47-python3-pytest-asyncio_1.3.0-1_all.deb ... 154s Unpacking python3-pytest-asyncio (1.3.0-1) ... 154s Selecting previously unselected package python3-pytest-forked. 154s Preparing to unpack .../48-python3-pytest-forked_1.6.0-5_all.deb ... 154s Unpacking python3-pytest-forked (1.6.0-5) ... 154s Selecting previously unselected package python3-pytest-rerunfailures. 154s Preparing to unpack .../49-python3-pytest-rerunfailures_16.1-1_all.deb ... 154s Unpacking python3-pytest-rerunfailures (16.1-1) ... 154s Selecting previously unselected package python3-zope.event. 154s Preparing to unpack .../50-python3-zope.event_6.0-2_all.deb ... 154s Unpacking python3-zope.event (6.0-2) ... 154s Selecting previously unselected package python3-zope.interface. 154s Preparing to unpack .../51-python3-zope.interface_8.2-1_ppc64el.deb ... 154s Unpacking python3-zope.interface (8.2-1) ... 154s Selecting previously unselected package python3-greenlet. 154s Preparing to unpack .../52-python3-greenlet_3.2.4-3_ppc64el.deb ... 154s Unpacking python3-greenlet (3.2.4-3) ... 154s Selecting previously unselected package python3-gevent. 154s Preparing to unpack .../53-python3-gevent_24.11.1-1build2_ppc64el.deb ... 154s Unpacking python3-gevent (24.11.1-1build2) ... 154s Selecting previously unselected package python3-tango. 154s Preparing to unpack .../54-python3-tango_10.0.2-3_ppc64el.deb ... 154s Unpacking python3-tango (10.0.2-3) ... 154s Selecting previously unselected package tango-test. 154s Preparing to unpack .../55-tango-test_10.0.2+dfsg1-4_ppc64el.deb ... 154s Unpacking tango-test (10.0.2+dfsg1-4) ... 154s Setting up python3-iniconfig (2.1.0-2) ... 154s Setting up libev4t64:ppc64el (1:4.33-2.1build2) ... 154s Setting up libnorm1t64:ppc64el (1.5.9+dfsg-4) ... 154s Setting up libprotobuf32t64:ppc64el (3.21.12-15) ... 154s Setting up libboost-python1.88.0 (1.88.0-1.4ubuntu3) ... 154s Setting up libsodium23:ppc64el (1.0.18-2) ... 154s Setting up python3-py (1.11.0-6) ... 154s Setting up python3-zope.event (6.0-2) ... 155s Setting up python3-zope.interface (8.2-1) ... 155s Setting up libabsl20240722:ppc64el (20240722.0-4ubuntu1) ... 155s Setting up python3-psutil (7.1.0-1ubuntu1) ... 155s Setting up libpgm-5.3-0t64:ppc64el (5.3.128~dfsg-2.1build2) ... 155s Setting up libblas3:ppc64el (3.12.1-7ubuntu1) ... 155s update-alternatives: using /usr/lib/powerpc64le-linux-gnu/blas/libblas.so.3 to provide /usr/lib/powerpc64le-linux-gnu/libblas.so.3 (libblas.so.3-powerpc64le-linux-gnu) in auto mode 155s Setting up libexpat1-dev:ppc64el (2.7.3-1) ... 156s Setting up python3-greenlet (3.2.4-3) ... 156s Setting up libcares2:ppc64el (1.34.6-1) ... 156s Setting up python3-numpy-dev:ppc64el (1:2.3.5+ds-3) ... 156s Setting up libjpeg-turbo8:ppc64el (2.1.5-4ubuntu2) ... 156s Setting up libomnithread4:ppc64el (4.3.3+ds1-1build1) ... 156s Setting up libgfortran5:ppc64el (15.2.0-12ubuntu1) ... 156s Setting up python3-pluggy (1.6.0-2) ... 156s Setting up zlib1g-dev:ppc64el (1:1.3.dfsg+really1.3.1-1ubuntu2) ... 156s Setting up libpython3.14:ppc64el (3.14.2-1) ... 156s Setting up python3.13-minimal (3.13.11-1) ... 157s Setting up libpython3.14-dev:ppc64el (3.14.2-1) ... 157s Setting up libprotoc32t64:ppc64el (3.21.12-15) ... 157s Setting up libjpeg8:ppc64el (8c-2ubuntu11) ... 157s Setting up libre2-11:ppc64el (20250805-1build1) ... 157s Setting up liblapack3:ppc64el (3.12.1-7ubuntu1) ... 157s update-alternatives: using /usr/lib/powerpc64le-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/powerpc64le-linux-gnu/liblapack.so.3 (liblapack.so.3-powerpc64le-linux-gnu) in auto mode 157s Setting up libpython3-dev:ppc64el (3.14.2-1) ... 157s Setting up libzmq5:ppc64el (4.3.5-1build3) ... 157s Setting up libomniorb4-3t64:ppc64el (4.3.3+ds1-1build1) ... 157s Setting up python3.14-dev (3.14.2-1) ... 157s Setting up python3.13 (3.13.11-1) ... 158s Setting up python3-pytest (9.0.2-2) ... 159s Setting up python3-all (3.14.2-1) ... 159s Setting up python3-gevent (24.11.1-1build2) ... 159s /usr/lib/python3/dist-packages/gevent/_ffi/loop.py:226: SyntaxWarning: 'return' in a 'finally' block 159s return # pylint:disable=lost-exception,return-in-finally 159s Setting up python3-pytest-forked (1.6.0-5) ... 159s Setting up libpython3.13-dev:ppc64el (3.13.11-1) ... 159s Setting up python3-dev (3.14.2-1) ... 159s Setting up libgrpc29t64:ppc64el (1.51.1-7) ... 159s Setting up python3-numpy (1:2.3.5+ds-3) ... 163s Setting up python3-pytest-asyncio (1.3.0-1) ... 163s Setting up libcos4-3:ppc64el (4.3.3+ds1-1build1) ... 163s Setting up python3-pytest-rerunfailures (16.1-1) ... 163s Setting up python3.13-dev (3.13.11-1) ... 163s Setting up libgrpc++1.51t64:ppc64el (1.51.1-7) ... 163s Setting up libpython3-all-dev:ppc64el (3.14.2-1) ... 163s Setting up opentelemetry-cpp:ppc64el (1.23.0-3) ... 163s Setting up tango-common (10.0.2+dfsg1-4) ... 163s Adding group tango....done 163s Adding system user tango....done 164s Setting up python3-all-dev (3.14.2-1) ... 164s Setting up libtango10:ppc64el (10.0.2+dfsg1-4) ... 164s Setting up libtango-tools (10.0.2+dfsg1-4) ... 164s Setting up python3-tango (10.0.2-3) ... 164s Setting up tango-starter (10.0.2+dfsg1-4) ... 164s Created symlink '/etc/systemd/system/multi-user.target.wants/tango-starter.service' → '/usr/lib/systemd/system/tango-starter.service'. 165s Failed to start tango-starter.service: Unit tango-db.service not found. 165s Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 148. 165s Setting up tango-test (10.0.2+dfsg1-4) ... 165s Processing triggers for systemd (259-1ubuntu3) ... 165s Processing triggers for man-db (2.13.1-1) ... 165s Processing triggers for libc-bin (2.42-2ubuntu4) ... 166s autopkgtest [05:08:57]: test command1: set -efu ; cp -r tests "$AUTOPKGTEST_TMP" ; for py in $(py3versions -r 2>/dev/null) ; do cd "$AUTOPKGTEST_TMP" ; echo "Testing with $py:" ; PATH=/usr/lib/tango/:$PATH $py -m pytest tests -v --forked --ignore tests/test_event.py --reruns 5 ; done 166s autopkgtest [05:08:57]: test command1: [----------------------- 167s Testing with python3.13: 168s ============================= test session starts ============================== 168s platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0 -- /usr/bin/python3.13 168s cachedir: .pytest_cache 168s rootdir: /tmp/autopkgtest.VwMFcc/autopkgtest_tmp 168s plugins: asyncio-1.3.0, rerunfailures-16.1, forked-1.6.0, typeguard-4.4.4 168s asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function 168s collecting ... collected 1170 items 168s 169s tests/test_api_util.py::test_get_env_var PASSED [ 0%] 169s tests/test_async.py::test_green_mode_kwarg_for_proxy_methods PASSED [ 0%] 170s tests/test_async.py::test_async_attribute_polled PASSED [ 0%] 170s tests/test_async.py::test_async_attribute_with_callback[poll] SKIPPED [ 0%] 170s tests/test_async.py::test_async_attribute_with_callback[push] SKIPPED [ 0%] 170s tests/test_async.py::test_async_command_polled PASSED [ 0%] 170s tests/test_async.py::test_async_command_with_polled_callback[cmd_ok-123-123-False] PASSED [ 0%] 170s tests/test_async.py::test_async_command_with_polled_callback[cmd_timeout-123-None-True] PASSED [ 0%] 171s tests/test_async.py::test_async_command_with_polled_callback[cmd_exception-123-None-True] PASSED [ 0%] 171s tests/test_async.py::test_async_attribute_read_with_polled_callback[attr_ok-argout0-False] PASSED [ 0%] 171s tests/test_async.py::test_async_attribute_read_with_polled_callback[attr_timeout-None-True] PASSED [ 0%] 171s tests/test_async.py::test_async_attribute_read_with_polled_callback[attr_exception-argout2-False] PASSED [ 1%] 171s tests/test_async.py::test_async_attribute_write_with_polled_callback[attr_ok-False] PASSED [ 1%] 172s tests/test_async.py::test_async_attribute_write_with_polled_callback[attr_timeout-True] PASSED [ 1%] 172s tests/test_async.py::test_async_attribute_write_with_polled_callback[attr_exception-False] PASSED [ 1%] 172s tests/test_async.py::test_async_command_with_pushed_callback[cmd_ok-123-123-False] PASSED [ 1%] 172s tests/test_async.py::test_async_command_with_pushed_callback[cmd_timeout-123-None-True] PASSED [ 1%] 173s tests/test_async.py::test_async_command_with_pushed_callback[cmd_exception-123-None-True] PASSED [ 1%] 173s tests/test_async.py::test_async_attribute_read_with_pushed_callback[attr_ok-argout0-False] PASSED [ 1%] 173s tests/test_async.py::test_async_attribute_read_with_pushed_callback[attr_timeout-None-True] PASSED [ 1%] 173s tests/test_async.py::test_async_attribute_read_with_pushed_callback[attr_exception-argout2-False] PASSED [ 1%] 173s tests/test_async.py::test_async_attribute_write_with_pushed_callback[attr_ok-False] PASSED [ 1%] 174s tests/test_async.py::test_async_attribute_write_with_pushed_callback[attr_timeout-True] PASSED [ 1%] 174s tests/test_async.py::test_async_attribute_write_with_pushed_callback[attr_exception-False] PASSED [ 2%] 174s tests/test_async.py::test_async_exception_in_callback PASSED [ 2%] 175s tests/test_attrconfeventdata.py::test_attribute_configuration_event PASSED [ 2%] 175s tests/test_attrconfeventdata.py::test_attribute_configuration_event_set_errors PASSED [ 2%] 175s tests/test_attribute_proxy.py::test_ping[scalar_int] PASSED [ 2%] 175s tests/test_attribute_proxy.py::test_ping[spectrum_str] PASSED [ 2%] 175s tests/test_attribute_proxy.py::test_ping[image_float] PASSED [ 2%] 176s tests/test_attribute_proxy.py::test_state_status[scalar_int] PASSED [ 2%] 176s tests/test_attribute_proxy.py::test_state_status[spectrum_str] PASSED [ 2%] 176s tests/test_attribute_proxy.py::test_state_status[image_float] PASSED [ 2%] 176s tests/test_attribute_proxy.py::test_read_write_attribute[scalar_int] PASSED [ 2%] 176s tests/test_attribute_proxy.py::test_read_write_attribute[spectrum_str] PASSED [ 2%] 176s tests/test_attribute_proxy.py::test_read_write_attribute[image_float] PASSED [ 3%] 176s tests/test_attribute_proxy.py::test_attribute_poll[scalar_int] PASSED [ 3%] 177s tests/test_attribute_proxy.py::test_attribute_poll[spectrum_str] PASSED [ 3%] 178s tests/test_attribute_proxy.py::test_attribute_poll[image_float] PASSED [ 3%] 178s tests/test_attribute_proxy.py::test_read_write_attribute_async[scalar_int] PASSED [ 3%] 178s tests/test_attribute_proxy.py::test_read_write_attribute_async[spectrum_str] PASSED [ 3%] 178s tests/test_attribute_proxy.py::test_read_write_attribute_async[image_float] PASSED [ 3%] 179s tests/test_attribute_proxy.py::test_event[Synchronous] SKIPPED (This...) [ 3%] 179s tests/test_attribute_proxy.py::test_event[Futures] SKIPPED (This tes...) [ 3%] 179s tests/test_attribute_proxy.py::test_event[Gevent] SKIPPED (This test...) [ 3%] 179s tests/test_attribute_proxy.py::test_event[Asyncio] SKIPPED (This tes...) [ 3%] 179s tests/test_attributes.py::test_read_write_attribute[int-Synchronous] PASSED [ 4%] 179s tests/test_attributes.py::test_read_write_attribute[int-Asyncio] PASSED [ 4%] 179s tests/test_attributes.py::test_read_write_attribute[int-Gevent] PASSED [ 4%] 179s tests/test_attributes.py::test_read_write_attribute[float-Synchronous] PASSED [ 4%] 179s tests/test_attributes.py::test_read_write_attribute[float-Asyncio] PASSED [ 4%] 179s tests/test_attributes.py::test_read_write_attribute[float-Gevent] PASSED [ 4%] 179s tests/test_attributes.py::test_read_write_attribute[str-Synchronous] PASSED [ 4%] 179s tests/test_attributes.py::test_read_write_attribute[str-Asyncio] PASSED [ 4%] 179s tests/test_attributes.py::test_read_write_attribute[str-Gevent] PASSED [ 4%] 179s tests/test_attributes.py::test_read_write_attribute[bool-Synchronous] PASSED [ 4%] 179s tests/test_attributes.py::test_read_write_attribute[bool-Asyncio] PASSED [ 4%] 179s tests/test_attributes.py::test_read_write_attribute[bool-Gevent] PASSED [ 4%] 179s tests/test_attributes.py::test_read_write_attribute[(int,)-Synchronous] PASSED [ 5%] 179s tests/test_attributes.py::test_read_write_attribute[(int,)-Asyncio] PASSED [ 5%] 179s tests/test_attributes.py::test_read_write_attribute[(int,)-Gevent] PASSED [ 5%] 179s tests/test_attributes.py::test_read_write_attribute[(float,)-Synchronous] PASSED [ 5%] 179s tests/test_attributes.py::test_read_write_attribute[(float,)-Asyncio] PASSED [ 5%] 179s tests/test_attributes.py::test_read_write_attribute[(float,)-Gevent] PASSED [ 5%] 179s tests/test_attributes.py::test_read_write_attribute[(str,)-Synchronous] PASSED [ 5%] 179s tests/test_attributes.py::test_read_write_attribute[(str,)-Asyncio] PASSED [ 5%] 180s tests/test_attributes.py::test_read_write_attribute[(str,)-Gevent] PASSED [ 5%] 180s tests/test_attributes.py::test_read_write_attribute[(bool,)-Synchronous] PASSED [ 5%] 180s tests/test_attributes.py::test_read_write_attribute[(bool,)-Asyncio] PASSED [ 5%] 180s tests/test_attributes.py::test_read_write_attribute[(bool,)-Gevent] PASSED [ 5%] 180s tests/test_attributes.py::test_read_write_attribute[((int,),)-Synchronous] PASSED [ 6%] 180s tests/test_attributes.py::test_read_write_attribute[((int,),)-Asyncio] PASSED [ 6%] 180s tests/test_attributes.py::test_read_write_attribute[((int,),)-Gevent] PASSED [ 6%] 180s tests/test_attributes.py::test_read_write_attribute[((float,),)-Synchronous] PASSED [ 6%] 180s tests/test_attributes.py::test_read_write_attribute[((float,),)-Asyncio] PASSED [ 6%] 180s tests/test_attributes.py::test_read_write_attribute[((float,),)-Gevent] PASSED [ 6%] 180s tests/test_attributes.py::test_read_write_attribute[((str,),)-Synchronous] PASSED [ 6%] 180s tests/test_attributes.py::test_read_write_attribute[((str,),)-Asyncio] PASSED [ 6%] 180s tests/test_attributes.py::test_read_write_attribute[((str,),)-Gevent] PASSED [ 6%] 180s tests/test_attributes.py::test_read_write_attribute[((bool,),)-Synchronous] PASSED [ 6%] 180s tests/test_attributes.py::test_read_write_attribute[((bool,),)-Asyncio] PASSED [ 6%] 180s tests/test_attributes.py::test_read_write_attribute[((bool,),)-Gevent] PASSED [ 7%] 180s tests/test_attributes.py::test_wrong_encoding_string PASSED [ 7%] 180s tests/test_attributes.py::test_attribute_declared_with_typing[int-True] PASSED [ 7%] 180s tests/test_attributes.py::test_attribute_declared_with_typing[int-False] PASSED [ 7%] 180s tests/test_attributes.py::test_attribute_declared_with_typing[float-True] PASSED [ 7%] 180s tests/test_attributes.py::test_attribute_declared_with_typing[float-False] PASSED [ 7%] 180s tests/test_attributes.py::test_attribute_declared_with_typing[str-True] PASSED [ 7%] 180s tests/test_attributes.py::test_attribute_declared_with_typing[str-False] PASSED [ 7%] 180s tests/test_attributes.py::test_attribute_declared_with_typing[bool-True] PASSED [ 7%] 180s tests/test_attributes.py::test_attribute_declared_with_typing[bool-False] PASSED [ 7%] 180s tests/test_attributes.py::test_attribute_declared_with_typing[(int,)-True] PASSED [ 7%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[(int,)-False] PASSED [ 7%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[(float,)-True] PASSED [ 8%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[(float,)-False] PASSED [ 8%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[(str,)-True] PASSED [ 8%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[(str,)-False] PASSED [ 8%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[(bool,)-True] PASSED [ 8%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[(bool,)-False] PASSED [ 8%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[((int,),)-True] PASSED [ 8%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[((int,),)-False] PASSED [ 8%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[((float,),)-True] PASSED [ 8%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[((float,),)-False] PASSED [ 8%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[((str,),)-True] PASSED [ 8%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[((str,),)-False] PASSED [ 8%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[((bool,),)-True] PASSED [ 9%] 181s tests/test_attributes.py::test_attribute_declared_with_typing[((bool,),)-False] PASSED [ 9%] 181s tests/test_attributes.py::test_attribute_self_typed_with_not_defined_name PASSED [ 9%] 181s tests/test_attributes.py::test_read_write_attribute_with_unbound_functions PASSED [ 9%] 181s tests/test_attributes.py::test_read_write_attribute_decorated_methods[Synchronous] PASSED [ 9%] 181s tests/test_attributes.py::test_read_write_attribute_decorated_methods[Asyncio] PASSED [ 9%] 181s tests/test_attributes.py::test_read_write_attribute_decorated_methods[Gevent] PASSED [ 9%] 181s tests/test_attributes.py::test_read_write_wvalue_attribute[int-True] PASSED [ 9%] 181s tests/test_attributes.py::test_read_write_wvalue_attribute[int-False] PASSED [ 9%] 181s tests/test_attributes.py::test_read_write_wvalue_attribute[float-True] PASSED [ 9%] 181s tests/test_attributes.py::test_read_write_wvalue_attribute[float-False] PASSED [ 9%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[str-True] PASSED [ 10%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[str-False] PASSED [ 10%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[bool-True] PASSED [ 10%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[bool-False] PASSED [ 10%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[(int,)-True] PASSED [ 10%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[(int,)-False] PASSED [ 10%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[(float,)-True] PASSED [ 10%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[(float,)-False] PASSED [ 10%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[(str,)-True] PASSED [ 10%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[(str,)-False] PASSED [ 10%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[(bool,)-True] PASSED [ 10%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[(bool,)-False] PASSED [ 10%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[((int,),)-True] PASSED [ 11%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[((int,),)-False] PASSED [ 11%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[((float,),)-True] PASSED [ 11%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[((float,),)-False] PASSED [ 11%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[((str,),)-True] PASSED [ 11%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[((str,),)-False] PASSED [ 11%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[((bool,),)-True] PASSED [ 11%] 182s tests/test_attributes.py::test_read_write_wvalue_attribute[((bool,),)-False] PASSED [ 11%] 182s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-float] PASSED [ 11%] 182s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-int] PASSED [ 11%] 182s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-str] PASSED [ 11%] 182s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-bool] PASSED [ 11%] 182s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-float] PASSED [ 12%] 182s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-int] PASSED [ 12%] 182s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-str] PASSED [ 12%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-bool] PASSED [ 12%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-float] PASSED [ 12%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-int] PASSED [ 12%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-str] PASSED [ 12%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-bool] PASSED [ 12%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-float] PASSED [ 12%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-int] PASSED [ 12%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-str] XFAIL [ 12%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-bool] PASSED [ 12%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-float] PASSED [ 13%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-int] PASSED [ 13%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-str] XFAIL [ 13%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-bool] PASSED [ 13%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-float] PASSED [ 13%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-int] PASSED [ 13%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-str] XFAIL [ 13%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-bool] PASSED [ 13%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-Device_4Impl] PASSED [ 13%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-Device_5Impl] PASSED [ 13%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-Device_6Impl] PASSED [ 13%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-LatestDeviceImpl] PASSED [ 14%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-Device_4Impl] PASSED [ 14%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-Device_5Impl] PASSED [ 14%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-Device_6Impl] PASSED [ 14%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-LatestDeviceImpl] PASSED [ 14%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-Device_4Impl] PASSED [ 14%] 183s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-Device_5Impl] PASSED [ 14%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-Device_6Impl] PASSED [ 14%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-LatestDeviceImpl] PASSED [ 14%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-Device_4Impl] PASSED [ 14%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-Device_5Impl] PASSED [ 14%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-Device_6Impl] PASSED [ 14%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-LatestDeviceImpl] PASSED [ 15%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-Device_4Impl] PASSED [ 15%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-Device_5Impl] PASSED [ 15%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-Device_6Impl] PASSED [ 15%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-LatestDeviceImpl] PASSED [ 15%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-Device_4Impl] PASSED [ 15%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-Device_5Impl] PASSED [ 15%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-Device_6Impl] PASSED [ 15%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-LatestDeviceImpl] PASSED [ 15%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-Device_4Impl] PASSED [ 15%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-Device_5Impl] PASSED [ 15%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-Device_6Impl] PASSED [ 15%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-LatestDeviceImpl] PASSED [ 16%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-Device_4Impl] PASSED [ 16%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-Device_5Impl] PASSED [ 16%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-Device_6Impl] PASSED [ 16%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-LatestDeviceImpl] PASSED [ 16%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-Device_4Impl] PASSED [ 16%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-Device_5Impl] PASSED [ 16%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-Device_6Impl] PASSED [ 16%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-LatestDeviceImpl] PASSED [ 16%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-Device_4Impl] PASSED [ 16%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-Device_5Impl] PASSED [ 16%] 184s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-Device_6Impl] PASSED [ 17%] 185s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-LatestDeviceImpl] PASSED [ 17%] 185s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-Device_4Impl] PASSED [ 17%] 185s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-Device_5Impl] PASSED [ 17%] 185s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-Device_6Impl] PASSED [ 17%] 185s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-LatestDeviceImpl] PASSED [ 17%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-Device_4Impl] PASSED [ 17%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-Device_5Impl] PASSED [ 17%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-Device_6Impl] PASSED [ 17%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-LatestDeviceImpl] PASSED [ 17%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-Device_4Impl] PASSED [ 17%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-Device_5Impl] PASSED [ 17%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-Device_6Impl] PASSED [ 18%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-LatestDeviceImpl] PASSED [ 18%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-Device_4Impl] PASSED [ 18%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-Device_5Impl] PASSED [ 18%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-Device_6Impl] PASSED [ 18%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-LatestDeviceImpl] PASSED [ 18%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-Device_4Impl] XFAIL [ 18%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-Device_5Impl] XFAIL [ 18%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-Device_6Impl] XFAIL [ 18%] 186s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-LatestDeviceImpl] XFAIL [ 18%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-Device_4Impl] PASSED [ 18%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-Device_5Impl] PASSED [ 18%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-Device_6Impl] PASSED [ 19%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-LatestDeviceImpl] PASSED [ 19%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-Device_4Impl] PASSED [ 19%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-Device_5Impl] PASSED [ 19%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-Device_6Impl] PASSED [ 19%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-LatestDeviceImpl] PASSED [ 19%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-Device_4Impl] PASSED [ 19%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-Device_5Impl] PASSED [ 19%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-Device_6Impl] PASSED [ 19%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-LatestDeviceImpl] PASSED [ 19%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-Device_4Impl] XFAIL [ 19%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-Device_5Impl] XFAIL [ 20%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-Device_6Impl] XFAIL [ 20%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-LatestDeviceImpl] XFAIL [ 20%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-Device_4Impl] PASSED [ 20%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-Device_5Impl] PASSED [ 20%] 187s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-Device_6Impl] PASSED [ 20%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-LatestDeviceImpl] PASSED [ 20%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-Device_4Impl] PASSED [ 20%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-Device_5Impl] PASSED [ 20%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-Device_6Impl] PASSED [ 20%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-LatestDeviceImpl] PASSED [ 20%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-Device_4Impl] PASSED [ 20%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-Device_5Impl] PASSED [ 21%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-Device_6Impl] PASSED [ 21%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-LatestDeviceImpl] PASSED [ 21%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-Device_4Impl] XFAIL [ 21%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-Device_5Impl] XFAIL [ 21%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-Device_6Impl] XFAIL [ 21%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-LatestDeviceImpl] XFAIL [ 21%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-Device_4Impl] PASSED [ 21%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-Device_5Impl] PASSED [ 21%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-Device_6Impl] PASSED [ 21%] 188s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-LatestDeviceImpl] PASSED [ 21%] 188s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SCALAR-state] PASSED [ 21%] 188s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SCALAR-DevState0] PASSED [ 22%] 188s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SCALAR-DevState1] PASSED [ 22%] 188s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SPECTRUM-state] PASSED [ 22%] 188s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SPECTRUM-DevState0] PASSED [ 22%] 188s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SPECTRUM-DevState1] PASSED [ 22%] 188s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[IMAGE-state] PASSED [ 22%] 188s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[IMAGE-DevState0] PASSED [ 22%] 189s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[IMAGE-DevState1] PASSED [ 22%] 189s tests/test_attributes.py::test_read_write_attribute_enum[SCALAR] PASSED [ 22%] 189s tests/test_attributes.py::test_read_write_attribute_enum[SPECTRUM] PASSED [ 22%] 189s tests/test_attributes.py::test_read_write_attribute_enum[IMAGE] PASSED [ 22%] 189s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SCALAR-DevState] PASSED [ 22%] 189s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SCALAR-GoodEnum] PASSED [ 23%] 189s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SPECTRUM-DevState] PASSED [ 23%] 189s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SPECTRUM-GoodEnum] PASSED [ 23%] 189s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[IMAGE-DevState] PASSED [ 23%] 189s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[IMAGE-GoodEnum] PASSED [ 23%] 189s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[int] PASSED [ 23%] 189s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[float] PASSED [ 23%] 189s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[str] PASSED [ 23%] 189s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[bool] PASSED [ 23%] 189s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(int,)] PASSED [ 23%] 189s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(float,)] PASSED [ 23%] 189s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(str,)] PASSED [ 24%] 189s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(bool,)] PASSED [ 24%] 189s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((int,),)] PASSED [ 24%] 189s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((float,),)] PASSED [ 24%] 189s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((str,),)] PASSED [ 24%] 189s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((bool,),)] PASSED [ 24%] 189s tests/test_attributes.py::test_read_enum_attribute_with_invalid_quality_is_none PASSED [ 24%] 189s tests/test_attributes.py::test_wrong_attribute_read PASSED [ 24%] 189s tests/test_attributes.py::test_attribute_access_with_default_method_names PASSED [ 24%] 190s tests/test_attributes.py::test_read_write_dynamic_attribute[low_level_read-Synchronous] PASSED [ 24%] 190s tests/test_attributes.py::test_read_write_dynamic_attribute[low_level_read-Asyncio] PASSED [ 24%] 190s tests/test_attributes.py::test_read_write_dynamic_attribute[low_level_read-Gevent] PASSED [ 24%] 190s tests/test_attributes.py::test_read_write_dynamic_attribute[high_level_read-Synchronous] PASSED [ 25%] 190s tests/test_attributes.py::test_read_write_dynamic_attribute[high_level_read-Asyncio] PASSED [ 25%] 190s tests/test_attributes.py::test_read_write_dynamic_attribute[high_level_read-Gevent] PASSED [ 25%] 190s tests/test_attributes.py::test_async_add_remove_dynamic_attribute PASSED [ 25%] 190s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[int] PASSED [ 25%] 190s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[float] PASSED [ 25%] 190s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[str] PASSED [ 25%] 190s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[bool] PASSED [ 25%] 190s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(int,)] PASSED [ 25%] 190s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(float,)] PASSED [ 25%] 190s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(str,)] PASSED [ 25%] 190s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(bool,)] PASSED [ 25%] 190s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((int,),)] PASSED [ 26%] 190s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((float,),)] PASSED [ 26%] 190s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((str,),)] PASSED [ 26%] 190s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((bool,),)] PASSED [ 26%] 190s tests/test_attributes.py::test_dynamic_attribute_self_typed_with_not_defined_name PASSED [ 26%] 190s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[bool, SCALAR] PASSED [ 26%] 190s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[bool], SPECTRUM] PASSED [ 26%] 190s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint8, SCALAR] PASSED [ 26%] 190s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint8], SPECTRUM] PASSED [ 26%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[int16, SCALAR] PASSED [ 26%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[int16], SPECTRUM] PASSED [ 26%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint16, SCALAR] PASSED [ 27%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint16], SPECTRUM] PASSED [ 27%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[int32, SCALAR] PASSED [ 27%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[int32], SPECTRUM] PASSED [ 27%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint32, SCALAR] PASSED [ 27%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint32], SPECTRUM] PASSED [ 27%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[int64, SCALAR] PASSED [ 27%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[int64], SPECTRUM] PASSED [ 27%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint64, SCALAR] PASSED [ 27%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint64], SPECTRUM] PASSED [ 27%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[float64, SCALAR] PASSED [ 27%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[float64], SPECTRUM] PASSED [ 27%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[float32, SCALAR] PASSED [ 28%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[float32], SPECTRUM] PASSED [ 28%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[bool], IMAGE] PASSED [ 28%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint8], IMAGE] PASSED [ 28%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[int16], IMAGE] PASSED [ 28%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint16], IMAGE] PASSED [ 28%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[int32], IMAGE] PASSED [ 28%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint32], IMAGE] PASSED [ 28%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[int64], IMAGE] PASSED [ 28%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint64], IMAGE] PASSED [ 28%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[float64], IMAGE] PASSED [ 28%] 191s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[float32], IMAGE] PASSED [ 28%] 191s tests/test_attributes.py::test_attribute_wrong_declared_with_numpy_typing[RuntimeError: AttrDataFormat has to be specified] PASSED [ 29%] 191s tests/test_attributes.py::test_attribute_wrong_declared_with_numpy_typing[DevFailed: Maximum y dim. wrongly defined] PASSED [ 29%] 191s tests/test_attributes.py::test_attribute_wrong_declared_with_numpy_typing[TypeError: No registered converter] PASSED [ 29%] 192s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_default_names[Synchronous] PASSED [ 29%] 192s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_default_names[Asyncio] PASSED [ 29%] 192s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_default_names[Gevent] PASSED [ 29%] 192s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_user_names[Synchronous] PASSED [ 29%] 192s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_user_names[Asyncio] PASSED [ 29%] 192s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_user_names[Gevent] PASSED [ 29%] 192s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_shared_user_functions PASSED [ 29%] 192s tests/test_attributes.py::test_read_write_dynamic_attribute_enum[SCALAR] PASSED [ 29%] 192s tests/test_attributes.py::test_read_write_dynamic_attribute_enum[SPECTRUM] PASSED [ 30%] 192s tests/test_attributes.py::test_read_write_dynamic_attribute_enum[IMAGE] PASSED [ 30%] 192s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SCALAR-DevState] PASSED [ 30%] 192s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SCALAR-GoodEnum] PASSED [ 30%] 192s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SPECTRUM-DevState] PASSED [ 30%] 192s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SPECTRUM-GoodEnum] PASSED [ 30%] 192s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[IMAGE-DevState] PASSED [ 30%] 192s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[IMAGE-GoodEnum] PASSED [ 30%] 192s tests/test_attributes.py::test_read_write_dynamic_attribute_is_allowed_with_async[Synchronous] PASSED [ 30%] 192s tests/test_attributes.py::test_read_write_dynamic_attribute_is_allowed_with_async[Asyncio] PASSED [ 30%] 192s tests/test_attributes.py::test_read_write_dynamic_attribute_is_allowed_with_async[Gevent] PASSED [ 30%] 192s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Synchronous-True] PASSED [ 30%] 192s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Synchronous-False] PASSED [ 31%] 192s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Asyncio-True] PASSED [ 31%] 192s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Asyncio-False] PASSED [ 31%] 192s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Gevent-True] PASSED [ 31%] 192s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Gevent-False] PASSED [ 31%] 192s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[Device_4Impl] PASSED [ 31%] 192s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[Device_5Impl] PASSED [ 31%] 192s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[Device_6Impl] PASSED [ 31%] 193s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[LatestDeviceImpl] PASSED [ 31%] 193s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[True-low_level] PASSED [ 31%] 193s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[True-high_level] PASSED [ 31%] 193s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[False-low_level] PASSED [ 31%] 193s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[False-high_level] PASSED [ 32%] 193s tests/test_attributes.py::test_attribute_decorators[Synchronous] PASSED [ 32%] 193s tests/test_attributes.py::test_attribute_decorators[Asyncio] PASSED [ 32%] 193s tests/test_attributes.py::test_attribute_decorators[Gevent] PASSED [ 32%] 193s tests/test_attributes.py::test_attribute_info_description PASSED [ 32%] 193s tests/test_attributes.py::test_read_only_dynamic_attribute_with_dummy_write_method[low_level_read] PASSED [ 32%] 193s tests/test_attributes.py::test_read_only_dynamic_attribute_with_dummy_write_method[high_level_read] PASSED [ 32%] 193s tests/test_attributes.py::test_dynamic_attribute_with_method_in_other_class PASSED [ 32%] 193s tests/test_attributes.py::test_polled_attribute[Synchronous] PASSED [ 32%] 193s tests/test_attributes.py::test_polled_attribute[Asyncio] PASSED [ 32%] 193s tests/test_attributes.py::test_polled_attribute[Gevent] PASSED [ 32%] 193s tests/test_attributes.py::test_read_write_dev_encoded[str] PASSED [ 32%] 193s tests/test_attributes.py::test_read_write_dev_encoded[bytes] PASSED [ 33%] 193s tests/test_attributes.py::test_read_write_dev_encoded[bytearray] PASSED [ 33%] 193s tests/test_attributes.py::test_dev_encoded_wrong_encoding PASSED [ 33%] 193s tests/test_attributes.py::test_set_value_None PASSED [ 33%] 193s tests/test_attributes.py::test_encoded_attribute[gray8] PASSED [ 33%] 193s tests/test_attributes.py::test_encoded_attribute[gray16] PASSED [ 33%] 193s tests/test_attributes.py::test_encoded_attribute[rgb24] PASSED [ 33%] 193s tests/test_attributes.py::test_encoded_attribute[jpeg_gray8] PASSED [ 33%] 194s tests/test_attributes.py::test_encoded_attribute[jpeg_rgb24] PASSED [ 33%] 194s tests/test_attributes.py::test_encoded_attribute[jpeg_rgb32] XFAIL (...) [ 33%] 196s tests/test_attributes.py::test_dev_encoded_memory_usage PASSED [ 33%] 196s tests/test_attributes.py::test_attribute_list PASSED [ 34%] 196s tests/test_auto_tango_allow_threads.py::test_dont_crash_with_nested_tango_allow_threads PASSED [ 34%] 197s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_DEVICE-True] PASSED [ 34%] 200s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_DEVICE-False] PASSED [ 34%] 200s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_CLASS-True] XFAIL [ 34%] 203s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_CLASS-False] PASSED [ 34%] 203s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_PROCESS-True] XFAIL [ 34%] 206s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_PROCESS-False] PASSED [ 34%] 206s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-NO_SYNC-True] PASSED [ 34%] 206s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-NO_SYNC-False] PASSED [ 34%] 206s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_DEVICE-True] PASSED [ 34%] 210s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_DEVICE-False] PASSED [ 34%] 210s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_CLASS-True] XFAIL [ 35%] 213s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_CLASS-False] PASSED [ 35%] 213s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_PROCESS-True] XFAIL [ 35%] 216s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_PROCESS-False] PASSED [ 35%] 216s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-NO_SYNC-True] PASSED [ 35%] 216s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-NO_SYNC-False] PASSED [ 35%] 216s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_DEVICE-True] PASSED [ 35%] 220s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_DEVICE-False] PASSED [ 35%] 220s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_CLASS-True] XFAIL [ 35%] 223s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_CLASS-False] PASSED [ 35%] 223s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_PROCESS-True] XFAIL [ 35%] 226s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_PROCESS-False] PASSED [ 35%] 226s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-NO_SYNC-True] PASSED [ 36%] 226s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-NO_SYNC-False] PASSED [ 36%] 229s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_DEVICE-True] PASSED [ 36%] 233s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_DEVICE-False] PASSED [ 36%] 236s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_CLASS-True] PASSED [ 36%] 239s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_CLASS-False] PASSED [ 36%] 242s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_PROCESS-True] PASSED [ 36%] 246s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_PROCESS-False] PASSED [ 36%] 246s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-NO_SYNC-True] PASSED [ 36%] 246s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-NO_SYNC-False] PASSED [ 36%] 249s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_DEVICE-True] PASSED [ 36%] 252s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_DEVICE-False] PASSED [ 37%] 256s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_CLASS-True] PASSED [ 37%] 259s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_CLASS-False] PASSED [ 37%] 262s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_PROCESS-True] PASSED [ 37%] 265s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_PROCESS-False] PASSED [ 37%] 266s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-NO_SYNC-True] PASSED [ 37%] 266s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-NO_SYNC-False] PASSED [ 37%] 269s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_DEVICE-True] PASSED [ 37%] 272s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_DEVICE-False] PASSED [ 37%] 275s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_CLASS-True] PASSED [ 37%] 279s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_CLASS-False] PASSED [ 37%] 282s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_PROCESS-True] PASSED [ 37%] 285s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_PROCESS-False] PASSED [ 38%] 285s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-NO_SYNC-True] PASSED [ 38%] 285s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-NO_SYNC-False] PASSED [ 38%] 285s tests/test_commands.py::test_identity_command[int-Synchronous] PASSED [ 38%] 285s tests/test_commands.py::test_identity_command[int-Asyncio] PASSED [ 38%] 285s tests/test_commands.py::test_identity_command[int-Gevent] PASSED [ 38%] 285s tests/test_commands.py::test_identity_command[float-Synchronous] PASSED [ 38%] 285s tests/test_commands.py::test_identity_command[float-Asyncio] PASSED [ 38%] 285s tests/test_commands.py::test_identity_command[float-Gevent] PASSED [ 38%] 285s tests/test_commands.py::test_identity_command[str-Synchronous] PASSED [ 38%] 285s tests/test_commands.py::test_identity_command[str-Asyncio] PASSED [ 38%] 285s tests/test_commands.py::test_identity_command[str-Gevent] PASSED [ 38%] 285s tests/test_commands.py::test_identity_command[bool-Synchronous] PASSED [ 39%] 285s tests/test_commands.py::test_identity_command[bool-Asyncio] PASSED [ 39%] 285s tests/test_commands.py::test_identity_command[bool-Gevent] PASSED [ 39%] 286s tests/test_commands.py::test_identity_command[(int,)-Synchronous] PASSED [ 39%] 286s tests/test_commands.py::test_identity_command[(int,)-Asyncio] PASSED [ 39%] 286s tests/test_commands.py::test_identity_command[(int,)-Gevent] PASSED [ 39%] 286s tests/test_commands.py::test_identity_command[(float,)-Synchronous] PASSED [ 39%] 286s tests/test_commands.py::test_identity_command[(float,)-Asyncio] PASSED [ 39%] 286s tests/test_commands.py::test_identity_command[(float,)-Gevent] PASSED [ 39%] 286s tests/test_commands.py::test_identity_command[(str,)-Synchronous] PASSED [ 39%] 286s tests/test_commands.py::test_identity_command[(str,)-Asyncio] PASSED [ 39%] 286s tests/test_commands.py::test_identity_command[(str,)-Gevent] PASSED [ 40%] 286s tests/test_commands.py::test_identity_command[(bool,)-Synchronous] XFAIL [ 40%] 286s tests/test_commands.py::test_identity_command[(bool,)-Asyncio] XFAIL [ 40%] 286s tests/test_commands.py::test_identity_command[(bool,)-Gevent] XFAIL [ 40%] 286s tests/test_commands.py::test_identity_command[DevVarLongStringArray-Synchronous] PASSED [ 40%] 286s tests/test_commands.py::test_identity_command[DevVarLongStringArray-Asyncio] PASSED [ 40%] 286s tests/test_commands.py::test_identity_command[DevVarLongStringArray-Gevent] PASSED [ 40%] 286s tests/test_commands.py::test_identity_command[DevVarDoubleStringArray-Synchronous] PASSED [ 40%] 286s tests/test_commands.py::test_identity_command[DevVarDoubleStringArray-Asyncio] PASSED [ 40%] 286s tests/test_commands.py::test_identity_command[DevVarDoubleStringArray-Gevent] PASSED [ 40%] 286s tests/test_commands.py::test_identity_command_with_typing[int] PASSED [ 40%] 286s tests/test_commands.py::test_identity_command_with_typing[float] PASSED [ 40%] 286s tests/test_commands.py::test_identity_command_with_typing[str] PASSED [ 41%] 286s tests/test_commands.py::test_identity_command_with_typing[bool] PASSED [ 41%] 286s tests/test_commands.py::test_identity_command_with_typing[(int,)] PASSED [ 41%] 286s tests/test_commands.py::test_identity_command_with_typing[(float,)] PASSED [ 41%] 286s tests/test_commands.py::test_identity_command_with_typing[(str,)] PASSED [ 41%] 286s tests/test_commands.py::test_identity_command_with_typing[(bool,)] XFAIL [ 41%] 286s tests/test_commands.py::test_identity_command_with_typing[DevVarLongStringArray] PASSED [ 41%] 286s tests/test_commands.py::test_identity_command_with_typing[DevVarDoubleStringArray] PASSED [ 41%] 286s tests/test_commands.py::test_devstate_command_with_typing PASSED [ 41%] 286s tests/test_commands.py::test_command_self_typed_with_not_defined_name PASSED [ 41%] 287s tests/test_commands.py::test_decorated_command[Synchronous] PASSED [ 41%] 287s tests/test_commands.py::test_decorated_command[Asyncio] PASSED [ 41%] 287s tests/test_commands.py::test_decorated_command[Gevent] PASSED [ 42%] 287s tests/test_commands.py::test_command_isallowed[Synchronous] PASSED [ 42%] 287s tests/test_commands.py::test_command_isallowed[Asyncio] PASSED [ 42%] 287s tests/test_commands.py::test_command_isallowed[Gevent] PASSED [ 42%] 287s tests/test_commands.py::test_dynamic_command[Synchronous-True] PASSED [ 42%] 287s tests/test_commands.py::test_dynamic_command[Synchronous-False] PASSED [ 42%] 287s tests/test_commands.py::test_dynamic_command[Asyncio-True] PASSED [ 42%] 287s tests/test_commands.py::test_dynamic_command[Asyncio-False] PASSED [ 42%] 287s tests/test_commands.py::test_dynamic_command[Gevent-True] PASSED [ 42%] 287s tests/test_commands.py::test_dynamic_command[Gevent-False] PASSED [ 42%] 287s tests/test_commands.py::test_identity_dynamic_command_with_typing[int] PASSED [ 42%] 287s tests/test_commands.py::test_identity_dynamic_command_with_typing[float] PASSED [ 42%] 287s tests/test_commands.py::test_identity_dynamic_command_with_typing[str] PASSED [ 43%] 287s tests/test_commands.py::test_identity_dynamic_command_with_typing[bool] PASSED [ 43%] 287s tests/test_commands.py::test_identity_dynamic_command_with_typing[(int,)] PASSED [ 43%] 287s tests/test_commands.py::test_identity_dynamic_command_with_typing[(float,)] PASSED [ 43%] 287s tests/test_commands.py::test_identity_dynamic_command_with_typing[(str,)] PASSED [ 43%] 287s tests/test_commands.py::test_identity_dynamic_command_with_typing[(bool,)] XFAIL [ 43%] 287s tests/test_commands.py::test_identity_dynamic_command_with_typing[DevVarLongStringArray] PASSED [ 43%] 287s tests/test_commands.py::test_identity_dynamic_command_with_typing[DevVarDoubleStringArray] PASSED [ 43%] 287s tests/test_commands.py::test_identity_commands_with_numpy_typing[bool, SCALAR] PASSED [ 43%] 287s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[bool], SPECTRUM] PASSED [ 43%] 287s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint8, SCALAR] XFAIL [ 43%] 287s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint8], SPECTRUM] PASSED [ 44%] 287s tests/test_commands.py::test_identity_commands_with_numpy_typing[int16, SCALAR] PASSED [ 44%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[int16], SPECTRUM] PASSED [ 44%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint16, SCALAR] PASSED [ 44%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint16], SPECTRUM] PASSED [ 44%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[int32, SCALAR] PASSED [ 44%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[int32], SPECTRUM] PASSED [ 44%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint32, SCALAR] PASSED [ 44%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint32], SPECTRUM] PASSED [ 44%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[int64, SCALAR] PASSED [ 44%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[int64], SPECTRUM] PASSED [ 44%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint64, SCALAR] PASSED [ 44%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint64], SPECTRUM] PASSED [ 45%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[float64, SCALAR] PASSED [ 45%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[float64], SPECTRUM] PASSED [ 45%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[float32, SCALAR] PASSED [ 45%] 288s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[float32], SPECTRUM] PASSED [ 45%] 288s tests/test_commands.py::test_polled_command PASSED [ 45%] 288s tests/test_commands.py::test_wrong_command_result PASSED [ 45%] 288s tests/test_commands.py::test_command_info PASSED [ 45%] 288s tests/test_database.py::test_put_remove_attribute_properties PASSED [ 45%] 288s tests/test_databaseds.py::test_ping SKIPPED (This test is failing wh...) [ 45%] 288s tests/test_databaseds.py::test_status SKIPPED (This test is failing ...) [ 45%] 288s tests/test_databaseds.py::test_state SKIPPED (This test is failing w...) [ 45%] 288s tests/test_databaseds.py::test_device_property SKIPPED (This test is...) [ 46%] 288s tests/test_databaseds.py::test_info SKIPPED (This test is failing wh...) [ 46%] 288s tests/test_device_proxy.py::test_ping PASSED [ 46%] 288s tests/test_device_proxy.py::test_info PASSED [ 46%] 288s tests/test_device_proxy.py::test_read_attribute[State] PASSED [ 46%] 288s tests/test_device_proxy.py::test_read_attribute[Status] PASSED [ 46%] 289s tests/test_device_proxy.py::test_read_attribute[ampli] PASSED [ 46%] 289s tests/test_device_proxy.py::test_read_attribute[boolean_image] PASSED [ 46%] 289s tests/test_device_proxy.py::test_read_attribute[boolean_image_ro] PASSED [ 46%] 289s tests/test_device_proxy.py::test_read_attribute[boolean_scalar] PASSED [ 46%] 289s tests/test_device_proxy.py::test_read_attribute[boolean_spectrum] PASSED [ 46%] 289s tests/test_device_proxy.py::test_read_attribute[boolean_spectrum_ro] PASSED [ 47%] 289s tests/test_device_proxy.py::test_read_attribute[double_image] PASSED [ 47%] 289s tests/test_device_proxy.py::test_read_attribute[double_image_ro] PASSED [ 47%] 289s tests/test_device_proxy.py::test_read_attribute[double_scalar] PASSED [ 47%] 289s tests/test_device_proxy.py::test_read_attribute[double_scalar_rww] PASSED [ 47%] 289s tests/test_device_proxy.py::test_read_attribute[double_scalar_w] PASSED [ 47%] 289s tests/test_device_proxy.py::test_read_attribute[double_spectrum] PASSED [ 47%] 290s tests/test_device_proxy.py::test_read_attribute[double_spectrum_ro] PASSED [ 47%] 290s tests/test_device_proxy.py::test_read_attribute[echo_mode] SKIPPED (...) [ 47%] 290s tests/test_device_proxy.py::test_read_attribute[enum_image] PASSED [ 47%] 290s tests/test_device_proxy.py::test_read_attribute[enum_image_ro] PASSED [ 47%] 290s tests/test_device_proxy.py::test_read_attribute[enum_scalar] PASSED [ 47%] 290s tests/test_device_proxy.py::test_read_attribute[enum_scalar_ro] PASSED [ 48%] 290s tests/test_device_proxy.py::test_read_attribute[enum_spectrum] PASSED [ 48%] 290s tests/test_device_proxy.py::test_read_attribute[enum_spectrum_ro] PASSED [ 48%] 290s tests/test_device_proxy.py::test_read_attribute[float_image] PASSED [ 48%] 290s tests/test_device_proxy.py::test_read_attribute[float_image_ro] PASSED [ 48%] 290s tests/test_device_proxy.py::test_read_attribute[float_scalar] PASSED [ 48%] 290s tests/test_device_proxy.py::test_read_attribute[float_spectrum] PASSED [ 48%] 290s tests/test_device_proxy.py::test_read_attribute[float_spectrum_ro] PASSED [ 48%] 291s tests/test_device_proxy.py::test_read_attribute[freq] PASSED [ 48%] 291s tests/test_device_proxy.py::test_read_attribute[long64_image_ro] PASSED [ 48%] 291s tests/test_device_proxy.py::test_read_attribute[long64_scalar] PASSED [ 48%] 291s tests/test_device_proxy.py::test_read_attribute[long64_spectrum_ro] PASSED [ 48%] 291s tests/test_device_proxy.py::test_read_attribute[long_image] PASSED [ 49%] 291s tests/test_device_proxy.py::test_read_attribute[long_image_ro] PASSED [ 49%] 291s tests/test_device_proxy.py::test_read_attribute[long_scalar] PASSED [ 49%] 291s tests/test_device_proxy.py::test_read_attribute[long_scalar_rww] PASSED [ 49%] 291s tests/test_device_proxy.py::test_read_attribute[long_scalar_w] PASSED [ 49%] 291s tests/test_device_proxy.py::test_read_attribute[long_spectrum] PASSED [ 49%] 291s tests/test_device_proxy.py::test_read_attribute[long_spectrum_ro] PASSED [ 49%] 291s tests/test_device_proxy.py::test_read_attribute[short_image] PASSED [ 49%] 292s tests/test_device_proxy.py::test_read_attribute[short_image_ro] PASSED [ 49%] 292s tests/test_device_proxy.py::test_read_attribute[short_scalar] PASSED [ 49%] 292s tests/test_device_proxy.py::test_read_attribute[short_scalar_ro] PASSED [ 49%] 292s tests/test_device_proxy.py::test_read_attribute[short_scalar_rww] PASSED [ 50%] 292s tests/test_device_proxy.py::test_read_attribute[short_scalar_w] PASSED [ 50%] 292s tests/test_device_proxy.py::test_read_attribute[short_spectrum] PASSED [ 50%] 292s tests/test_device_proxy.py::test_read_attribute[short_spectrum_ro] PASSED [ 50%] 292s tests/test_device_proxy.py::test_read_attribute[string_image] PASSED [ 50%] 292s tests/test_device_proxy.py::test_read_attribute[string_image_ro] XFAIL [ 50%] 292s tests/test_device_proxy.py::test_read_attribute[string_scalar] PASSED [ 50%] 292s tests/test_device_proxy.py::test_read_attribute[string_spectrum] PASSED [ 50%] 293s tests/test_device_proxy.py::test_read_attribute[string_spectrum_ro] XFAIL [ 50%] 293s tests/test_device_proxy.py::test_read_attribute[uchar_image] PASSED [ 50%] 293s tests/test_device_proxy.py::test_read_attribute[uchar_image_ro] PASSED [ 50%] 293s tests/test_device_proxy.py::test_read_attribute[uchar_scalar] PASSED [ 50%] 293s tests/test_device_proxy.py::test_read_attribute[uchar_spectrum] PASSED [ 51%] 293s tests/test_device_proxy.py::test_read_attribute[uchar_spectrum_ro] PASSED [ 51%] 293s tests/test_device_proxy.py::test_read_attribute[ulong64_image_ro] PASSED [ 51%] 293s tests/test_device_proxy.py::test_read_attribute[ulong64_scalar] PASSED [ 51%] 293s tests/test_device_proxy.py::test_read_attribute[ulong64_spectrum_ro] PASSED [ 51%] 293s tests/test_device_proxy.py::test_read_attribute[ulong_image_ro] PASSED [ 51%] 293s tests/test_device_proxy.py::test_read_attribute[ulong_scalar] PASSED [ 51%] 294s tests/test_device_proxy.py::test_read_attribute[ulong_spectrum_ro] PASSED [ 51%] 294s tests/test_device_proxy.py::test_read_attribute[ushort_image] PASSED [ 51%] 294s tests/test_device_proxy.py::test_read_attribute[ushort_image_ro] PASSED [ 51%] 294s tests/test_device_proxy.py::test_read_attribute[ushort_scalar] PASSED [ 51%] 294s tests/test_device_proxy.py::test_read_attribute[ushort_spectrum] PASSED [ 51%] 294s tests/test_device_proxy.py::test_read_attribute[ushort_spectrum_ro] PASSED [ 52%] 294s tests/test_device_proxy.py::test_read_attribute[wave] PASSED [ 52%] 294s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Synchronous] PASSED [ 52%] 294s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Futures] PASSED [ 52%] 294s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Gevent] PASSED [ 52%] 294s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Asyncio] PASSED [ 52%] 294s tests/test_device_proxy.py::test_high_level_api_for_asyncio PASSED [ 52%] 295s tests/test_device_proxy.py::test_write_scalar_attribute[boolean_scalar] PASSED [ 52%] 295s tests/test_device_proxy.py::test_write_scalar_attribute[double_scalar] PASSED [ 52%] 295s tests/test_device_proxy.py::test_write_scalar_attribute[double_scalar_w] PASSED [ 52%] 295s tests/test_device_proxy.py::test_write_scalar_attribute[enum_scalar] XFAIL [ 52%] 295s tests/test_device_proxy.py::test_write_scalar_attribute[float_scalar] PASSED [ 52%] 295s tests/test_device_proxy.py::test_write_scalar_attribute[long64_scalar] PASSED [ 53%] 295s tests/test_device_proxy.py::test_write_scalar_attribute[long_scalar] PASSED [ 53%] 295s tests/test_device_proxy.py::test_write_scalar_attribute[long_scalar_w] PASSED [ 53%] 295s tests/test_device_proxy.py::test_write_scalar_attribute[short_scalar] PASSED [ 53%] 295s tests/test_device_proxy.py::test_write_scalar_attribute[short_scalar_w] PASSED [ 53%] 295s tests/test_device_proxy.py::test_write_scalar_attribute[string_scalar] PASSED [ 53%] 295s tests/test_device_proxy.py::test_write_scalar_attribute[uchar_scalar] XFAIL [ 53%] 296s tests/test_device_proxy.py::test_write_scalar_attribute[ulong64_scalar] PASSED [ 53%] 296s tests/test_device_proxy.py::test_write_scalar_attribute[ulong_scalar] PASSED [ 53%] 296s tests/test_device_proxy.py::test_write_scalar_attribute[ushort_scalar] PASSED [ 53%] 296s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.Numpy] PASSED [ 53%] 296s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.Tuple] PASSED [ 54%] 296s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.List] PASSED [ 54%] 296s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.Bytes] PASSED [ 54%] 296s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.ByteArray] PASSED [ 54%] 296s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.String] PASSED [ 54%] 296s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.Numpy] PASSED [ 54%] 296s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.Tuple] PASSED [ 54%] 296s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.List] PASSED [ 54%] 297s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.Bytes] PASSED [ 54%] 297s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.ByteArray] PASSED [ 54%] 297s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.String] PASSED [ 54%] 297s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.Numpy] XFAIL [ 54%] 297s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.Tuple] XFAIL [ 55%] 297s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.List] XFAIL [ 55%] 297s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.Bytes] XFAIL [ 55%] 297s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.ByteArray] XFAIL [ 55%] 297s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.String] XFAIL [ 55%] 298s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.Numpy] PASSED [ 55%] 298s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.Tuple] PASSED [ 55%] 298s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.List] PASSED [ 55%] 298s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.Bytes] PASSED [ 55%] 298s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.ByteArray] PASSED [ 55%] 298s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.String] PASSED [ 55%] 298s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.Numpy] PASSED [ 55%] 298s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.Tuple] PASSED [ 56%] 298s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.List] PASSED [ 56%] 298s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.Bytes] PASSED [ 56%] 298s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.ByteArray] PASSED [ 56%] 298s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.String] PASSED [ 56%] 298s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.Numpy] PASSED [ 56%] 299s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.Tuple] PASSED [ 56%] 299s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.List] PASSED [ 56%] 299s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.Bytes] PASSED [ 56%] 299s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.ByteArray] PASSED [ 56%] 299s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.String] PASSED [ 56%] 299s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.Numpy] PASSED [ 57%] 299s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.Tuple] PASSED [ 57%] 299s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.List] PASSED [ 57%] 299s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.Bytes] XFAIL [ 57%] 299s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.ByteArray] XFAIL [ 57%] 300s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.String] XFAIL [ 57%] 300s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.Numpy] XFAIL [ 57%] 300s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.Tuple] XFAIL [ 57%] 300s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.List] XFAIL [ 57%] 300s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.Bytes] XFAIL [ 57%] 300s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.ByteArray] XFAIL [ 57%] 300s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.String] XFAIL [ 57%] 300s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.Numpy] PASSED [ 58%] 300s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.Tuple] PASSED [ 58%] 300s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.List] PASSED [ 58%] 301s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.Bytes] PASSED [ 58%] 301s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.ByteArray] PASSED [ 58%] 301s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.String] PASSED [ 58%] 301s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[boolean_spectrum] PASSED [ 58%] 301s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[double_spectrum] PASSED [ 58%] 301s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[enum_spectrum] PASSED [ 58%] 301s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[float_spectrum] PASSED [ 58%] 301s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[long_spectrum] PASSED [ 58%] 301s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[short_spectrum] PASSED [ 58%] 301s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[string_spectrum] XFAIL [ 59%] 301s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[uchar_spectrum] PASSED [ 59%] 301s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[ushort_spectrum] PASSED [ 59%] 302s tests/test_device_proxy.py::test_write_read_string_attribute PASSED [ 59%] 302s tests/test_device_proxy.py::test_set_non_existent_attribute_raises_by_default PASSED [ 59%] 302s tests/test_device_proxy.py::test_set_non_existent_attribute_allowed_if_dynamic_interface_unfrozen PASSED [ 59%] 302s tests/test_device_proxy.py::test_dynamic_interface_can_be_toggled PASSED [ 59%] 302s tests/test_device_proxy.py::test_dynamic_interface_flag_can_be_read PASSED [ 59%] 302s tests/test_device_proxy.py::test_dynamic_interface_only_applies_to_device_proxy_instance PASSED [ 59%] 302s tests/test_device_proxy.py::test_dynamic_interface_unfreeze_generates_a_user_warning PASSED [ 59%] 302s tests/test_device_proxy.py::test_read_attribute_config SKIPPED (This...) [ 59%] 302s tests/test_device_proxy.py::test_read_attribute_config_ex PASSED [ 60%] 302s tests/test_device_proxy.py::test_attribute_list_query SKIPPED (This ...) [ 60%] 302s tests/test_device_proxy.py::test_attribute_list_query_ex SKIPPED (Th...) [ 60%] 302s tests/test_device_proxy.py::test_device_proxy_dir_method PASSED [ 60%] 302s tests/test_device_proxy.py::test_device_polling_command PASSED [ 60%] 302s tests/test_device_proxy.py::test_device_polling_attribute PASSED [ 60%] 303s tests/test_device_proxy.py::test_command_string PASSED [ 60%] 303s tests/test_device_proxy.py::test_command_raises_type_error_for_bad_input PASSED [ 60%] 303s tests/test_device_proxy.py::test_repr_uses_info[Synchronous] PASSED [ 60%] 303s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Synchronous] PASSED [ 60%] 303s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Synchronous] PASSED [ 60%] 303s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Synchronous] PASSED [ 60%] 303s tests/test_device_proxy.py::test_no_memory_leak_for_str[Synchronous] PASSED [ 61%] 303s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Synchronous] PASSED [ 61%] 303s tests/test_device_proxy.py::test_repr_uses_info[Futures] PASSED [ 61%] 303s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Futures] PASSED [ 61%] 303s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Futures] PASSED [ 61%] 303s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Futures] PASSED [ 61%] 303s tests/test_device_proxy.py::test_no_memory_leak_for_str[Futures] PASSED [ 61%] 303s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Futures] PASSED [ 61%] 303s tests/test_device_proxy.py::test_repr_uses_info[Gevent] PASSED [ 61%] 303s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Gevent] PASSED [ 61%] 303s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Gevent] PASSED [ 61%] 303s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Gevent] PASSED [ 61%] 303s tests/test_device_proxy.py::test_no_memory_leak_for_str[Gevent] PASSED [ 62%] 303s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Gevent] PASSED [ 62%] 304s tests/test_device_proxy.py::test_repr_uses_info[Asyncio] PASSED [ 62%] 304s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Asyncio] PASSED [ 62%] 304s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Asyncio] PASSED [ 62%] 304s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Asyncio] PASSED [ 62%] 304s tests/test_device_proxy.py::test_no_memory_leak_for_str[Asyncio] PASSED [ 62%] 304s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Asyncio] PASSED [ 62%] 304s tests/test_device_proxy.py::test_client_destructor_does_not_deadlock[group_client_lifecycle] SKIPPED [ 62%] 304s tests/test_device_proxy.py::test_client_destructor_does_not_deadlock[device_proxy_lifecycle] SKIPPED [ 62%] 304s tests/test_group.py::test_nested_multi_group PASSED [ 62%] 304s tests/test_group.py::test_read_write_attribute PASSED [ 62%] 304s tests/test_group.py::test_command PASSED [ 63%] 304s tests/test_log.py::test_logging_decorators PASSED [ 63%] 304s tests/test_log.py::test_async_logging_decorators PASSED [ 63%] 304s tests/test_log.py::test_tango_stream PASSED [ 63%] 304s tests/test_log.py::test_logging[Synchronous] PASSED [ 63%] 304s tests/test_log.py::test_logging[Asyncio] PASSED [ 63%] 304s tests/test_log.py::test_logging[Gevent] PASSED [ 63%] 304s tests/test_log.py::test_decorator_logging_source_location[Synchronous] SKIPPED [ 63%] 304s tests/test_log.py::test_decorator_logging_source_location[Asyncio] SKIPPED [ 63%] 304s tests/test_log.py::test_decorator_logging_source_location[Gevent] SKIPPED [ 63%] 304s tests/test_log.py::test_stream_logging_source_location[Synchronous] SKIPPED [ 63%] 304s tests/test_log.py::test_stream_logging_source_location[Asyncio] SKIPPED [ 64%] 304s tests/test_log.py::test_stream_logging_source_location[Gevent] SKIPPED [ 64%] 304s tests/test_multi_attr_prop.py::test_stuff PASSED [ 64%] 304s tests/test_properties.py::test_device_property_no_default[int] PASSED [ 64%] 305s tests/test_properties.py::test_device_property_no_default[float] PASSED [ 64%] 305s tests/test_properties.py::test_device_property_no_default[str] PASSED [ 64%] 305s tests/test_properties.py::test_device_property_no_default[bool] PASSED [ 64%] 305s tests/test_properties.py::test_device_property_no_default[(int,)] PASSED [ 64%] 305s tests/test_properties.py::test_device_property_no_default[(float,)] PASSED [ 64%] 305s tests/test_properties.py::test_device_property_no_default[(str,)] PASSED [ 64%] 305s tests/test_properties.py::test_device_property_no_default[(bool,)] PASSED [ 64%] 305s tests/test_properties.py::test_device_property_with_typing[int] PASSED [ 64%] 305s tests/test_properties.py::test_device_property_with_typing[float] PASSED [ 65%] 305s tests/test_properties.py::test_device_property_with_typing[str] PASSED [ 65%] 305s tests/test_properties.py::test_device_property_with_typing[bool] PASSED [ 65%] 305s tests/test_properties.py::test_device_property_with_typing[(int,)] PASSED [ 65%] 305s tests/test_properties.py::test_device_property_with_typing[(float,)] PASSED [ 65%] 305s tests/test_properties.py::test_device_property_with_typing[(str,)] PASSED [ 65%] 305s tests/test_properties.py::test_device_property_with_typing[(bool,)] PASSED [ 65%] 305s tests/test_properties.py::test_device_property_with_numpy_typing[bool, SCALAR] PASSED [ 65%] 305s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[bool], SPECTRUM] PASSED [ 65%] 305s tests/test_properties.py::test_device_property_with_numpy_typing[uint8, SCALAR] XFAIL [ 65%] 305s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint8], SPECTRUM] XFAIL [ 65%] 305s tests/test_properties.py::test_device_property_with_numpy_typing[int16, SCALAR] PASSED [ 65%] 305s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[int16], SPECTRUM] PASSED [ 66%] 305s tests/test_properties.py::test_device_property_with_numpy_typing[uint16, SCALAR] PASSED [ 66%] 305s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint16], SPECTRUM] PASSED [ 66%] 305s tests/test_properties.py::test_device_property_with_numpy_typing[int32, SCALAR] PASSED [ 66%] 305s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[int32], SPECTRUM] PASSED [ 66%] 305s tests/test_properties.py::test_device_property_with_numpy_typing[uint32, SCALAR] PASSED [ 66%] 306s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint32], SPECTRUM] PASSED [ 66%] 306s tests/test_properties.py::test_device_property_with_numpy_typing[int64, SCALAR] PASSED [ 66%] 306s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[int64], SPECTRUM] PASSED [ 66%] 306s tests/test_properties.py::test_device_property_with_numpy_typing[uint64, SCALAR] PASSED [ 66%] 306s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint64], SPECTRUM] PASSED [ 66%] 306s tests/test_properties.py::test_device_property_with_numpy_typing[float64, SCALAR] PASSED [ 67%] 306s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[float64], SPECTRUM] PASSED [ 67%] 306s tests/test_properties.py::test_device_property_with_numpy_typing[float32, SCALAR] PASSED [ 67%] 306s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[float32], SPECTRUM] PASSED [ 67%] 306s tests/test_properties.py::test_device_property_with_default_value[int] PASSED [ 67%] 306s tests/test_properties.py::test_device_property_with_default_value[float] PASSED [ 67%] 306s tests/test_properties.py::test_device_property_with_default_value[str] PASSED [ 67%] 306s tests/test_properties.py::test_device_property_with_default_value[bool] PASSED [ 67%] 306s tests/test_properties.py::test_device_property_with_default_value[(int,)] PASSED [ 67%] 306s tests/test_properties.py::test_device_property_with_default_value[(float,)] PASSED [ 67%] 306s tests/test_properties.py::test_device_property_with_default_value[(str,)] PASSED [ 67%] 306s tests/test_properties.py::test_device_property_with_default_value[(bool,)] PASSED [ 67%] 306s tests/test_properties.py::test_device_get_device_properties_when_init_device PASSED [ 68%] 306s tests/test_properties.py::test_mandatory_device_property_with_db_value_succeeds[True] PASSED [ 68%] 306s tests/test_properties.py::test_mandatory_device_property_with_db_value_succeeds[False] PASSED [ 68%] 306s tests/test_server.py::test_uncorrect_typing_hints[property-tuple-Property does not support IMAGE type0] PASSED [ 68%] 306s tests/test_server.py::test_uncorrect_typing_hints[property-tuple-Property does not support IMAGE type1] PASSED [ 68%] 306s tests/test_server.py::test_uncorrect_typing_hints[property-tuple-PyTango does not support mixed types] PASSED [ 68%] 306s tests/test_server.py::test_uncorrect_typing_hints[attribute-tuple-PyTango does not support mixed types0] PASSED [ 68%] 306s tests/test_server.py::test_uncorrect_typing_hints[attribute-tuple-PyTango does not support mixed types1] PASSED [ 68%] 306s tests/test_server.py::test_uncorrect_typing_hints[attribute-tuple-PyTango does not support mixed types2] PASSED [ 68%] 306s tests/test_server.py::test_uncorrect_typing_hints[attribute-Callable-Cannot translate] PASSED [ 68%] 306s tests/test_server.py::test_get_enum_labels_success[GoodEnum] PASSED [ 68%] 306s tests/test_server.py::test_get_enum_labels_fail[BadEnumNonZero] PASSED [ 68%] 306s tests/test_server.py::test_get_enum_labels_fail[BadEnumSkipValues] PASSED [ 69%] 306s tests/test_server.py::test_get_enum_labels_fail[BadEnumDuplicates] PASSED [ 69%] 306s tests/test_server.py::test_device_classes_use_latest_implementation PASSED [ 69%] 306s tests/test_server.py::test_empty_device[Synchronous] PASSED [ 69%] 306s tests/test_server.py::test_empty_device[Asyncio] PASSED [ 69%] 306s tests/test_server.py::test_empty_device[Gevent] PASSED [ 69%] 306s tests/test_server.py::test_set_desc_status_state_at_init[doc] PASSED [ 69%] 307s tests/test_server.py::test_set_desc_status_state_at_init[description] PASSED [ 69%] 307s tests/test_server.py::test_set_state_status[ON-Synchronous-False] PASSED [ 69%] 307s tests/test_server.py::test_set_state_status[ON-Synchronous-True] PASSED [ 69%] 307s tests/test_server.py::test_set_state_status[ON-Asyncio-False] PASSED [ 69%] 307s tests/test_server.py::test_set_state_status[ON-Asyncio-True] PASSED [ 70%] 307s tests/test_server.py::test_set_state_status[ON-Gevent-False] PASSED [ 70%] 307s tests/test_server.py::test_set_state_status[ON-Gevent-True] PASSED [ 70%] 307s tests/test_server.py::test_set_state_status[OFF-Synchronous-False] PASSED [ 70%] 307s tests/test_server.py::test_set_state_status[OFF-Synchronous-True] PASSED [ 70%] 307s tests/test_server.py::test_set_state_status[OFF-Asyncio-False] PASSED [ 70%] 307s tests/test_server.py::test_set_state_status[OFF-Asyncio-True] PASSED [ 70%] 307s tests/test_server.py::test_set_state_status[OFF-Gevent-False] PASSED [ 70%] 307s tests/test_server.py::test_set_state_status[OFF-Gevent-True] PASSED [ 70%] 307s tests/test_server.py::test_set_state_status[CLOSE-Synchronous-False] PASSED [ 70%] 307s tests/test_server.py::test_set_state_status[CLOSE-Synchronous-True] PASSED [ 70%] 307s tests/test_server.py::test_set_state_status[CLOSE-Asyncio-False] PASSED [ 70%] 307s tests/test_server.py::test_set_state_status[CLOSE-Asyncio-True] PASSED [ 71%] 307s tests/test_server.py::test_set_state_status[CLOSE-Gevent-False] PASSED [ 71%] 307s tests/test_server.py::test_set_state_status[CLOSE-Gevent-True] PASSED [ 71%] 307s tests/test_server.py::test_set_state_status[OPEN-Synchronous-False] PASSED [ 71%] 307s tests/test_server.py::test_set_state_status[OPEN-Synchronous-True] PASSED [ 71%] 307s tests/test_server.py::test_set_state_status[OPEN-Asyncio-False] PASSED [ 71%] 307s tests/test_server.py::test_set_state_status[OPEN-Asyncio-True] PASSED [ 71%] 307s tests/test_server.py::test_set_state_status[OPEN-Gevent-False] PASSED [ 71%] 307s tests/test_server.py::test_set_state_status[OPEN-Gevent-True] PASSED [ 71%] 307s tests/test_server.py::test_set_state_status[INSERT-Synchronous-False] PASSED [ 71%] 307s tests/test_server.py::test_set_state_status[INSERT-Synchronous-True] PASSED [ 71%] 307s tests/test_server.py::test_set_state_status[INSERT-Asyncio-False] PASSED [ 71%] 307s tests/test_server.py::test_set_state_status[INSERT-Asyncio-True] PASSED [ 72%] 308s tests/test_server.py::test_set_state_status[INSERT-Gevent-False] PASSED [ 72%] 308s tests/test_server.py::test_set_state_status[INSERT-Gevent-True] PASSED [ 72%] 308s tests/test_server.py::test_set_state_status[EXTRACT-Synchronous-False] PASSED [ 72%] 308s tests/test_server.py::test_set_state_status[EXTRACT-Synchronous-True] PASSED [ 72%] 308s tests/test_server.py::test_set_state_status[EXTRACT-Asyncio-False] PASSED [ 72%] 308s tests/test_server.py::test_set_state_status[EXTRACT-Asyncio-True] PASSED [ 72%] 308s tests/test_server.py::test_set_state_status[EXTRACT-Gevent-False] PASSED [ 72%] 308s tests/test_server.py::test_set_state_status[EXTRACT-Gevent-True] PASSED [ 72%] 308s tests/test_server.py::test_set_state_status[MOVING-Synchronous-False] PASSED [ 72%] 308s tests/test_server.py::test_set_state_status[MOVING-Synchronous-True] PASSED [ 72%] 308s tests/test_server.py::test_set_state_status[MOVING-Asyncio-False] PASSED [ 72%] 308s tests/test_server.py::test_set_state_status[MOVING-Asyncio-True] PASSED [ 73%] 308s tests/test_server.py::test_set_state_status[MOVING-Gevent-False] PASSED [ 73%] 308s tests/test_server.py::test_set_state_status[MOVING-Gevent-True] PASSED [ 73%] 308s tests/test_server.py::test_set_state_status[STANDBY-Synchronous-False] PASSED [ 73%] 308s tests/test_server.py::test_set_state_status[STANDBY-Synchronous-True] PASSED [ 73%] 308s tests/test_server.py::test_set_state_status[STANDBY-Asyncio-False] PASSED [ 73%] 308s tests/test_server.py::test_set_state_status[STANDBY-Asyncio-True] PASSED [ 73%] 308s tests/test_server.py::test_set_state_status[STANDBY-Gevent-False] PASSED [ 73%] 308s tests/test_server.py::test_set_state_status[STANDBY-Gevent-True] PASSED [ 73%] 308s tests/test_server.py::test_set_state_status[FAULT-Synchronous-False] PASSED [ 73%] 308s tests/test_server.py::test_set_state_status[FAULT-Synchronous-True] PASSED [ 73%] 308s tests/test_server.py::test_set_state_status[FAULT-Asyncio-False] PASSED [ 74%] 309s tests/test_server.py::test_set_state_status[FAULT-Asyncio-True] PASSED [ 74%] 309s tests/test_server.py::test_set_state_status[FAULT-Gevent-False] PASSED [ 74%] 309s tests/test_server.py::test_set_state_status[FAULT-Gevent-True] PASSED [ 74%] 309s tests/test_server.py::test_set_state_status[INIT-Synchronous-False] PASSED [ 74%] 309s tests/test_server.py::test_set_state_status[INIT-Synchronous-True] PASSED [ 74%] 309s tests/test_server.py::test_set_state_status[INIT-Asyncio-False] PASSED [ 74%] 309s tests/test_server.py::test_set_state_status[INIT-Asyncio-True] PASSED [ 74%] 309s tests/test_server.py::test_set_state_status[INIT-Gevent-False] PASSED [ 74%] 309s tests/test_server.py::test_set_state_status[INIT-Gevent-True] PASSED [ 74%] 309s tests/test_server.py::test_set_state_status[RUNNING-Synchronous-False] PASSED [ 74%] 309s tests/test_server.py::test_set_state_status[RUNNING-Synchronous-True] PASSED [ 74%] 309s tests/test_server.py::test_set_state_status[RUNNING-Asyncio-False] PASSED [ 75%] 309s tests/test_server.py::test_set_state_status[RUNNING-Asyncio-True] PASSED [ 75%] 309s tests/test_server.py::test_set_state_status[RUNNING-Gevent-False] PASSED [ 75%] 309s tests/test_server.py::test_set_state_status[RUNNING-Gevent-True] PASSED [ 75%] 309s tests/test_server.py::test_set_state_status[ALARM-Synchronous-False] PASSED [ 75%] 309s tests/test_server.py::test_set_state_status[ALARM-Synchronous-True] PASSED [ 75%] 309s tests/test_server.py::test_set_state_status[ALARM-Asyncio-False] PASSED [ 75%] 309s tests/test_server.py::test_set_state_status[ALARM-Asyncio-True] PASSED [ 75%] 309s tests/test_server.py::test_set_state_status[ALARM-Gevent-False] PASSED [ 75%] 309s tests/test_server.py::test_set_state_status[ALARM-Gevent-True] PASSED [ 75%] 309s tests/test_server.py::test_set_state_status[DISABLE-Synchronous-False] PASSED [ 75%] 309s tests/test_server.py::test_set_state_status[DISABLE-Synchronous-True] PASSED [ 75%] 309s tests/test_server.py::test_set_state_status[DISABLE-Asyncio-False] PASSED [ 76%] 309s tests/test_server.py::test_set_state_status[DISABLE-Asyncio-True] PASSED [ 76%] 309s tests/test_server.py::test_set_state_status[DISABLE-Gevent-False] PASSED [ 76%] 309s tests/test_server.py::test_set_state_status[DISABLE-Gevent-True] PASSED [ 76%] 309s tests/test_server.py::test_set_state_status[UNKNOWN-Synchronous-False] PASSED [ 76%] 310s tests/test_server.py::test_set_state_status[UNKNOWN-Synchronous-True] PASSED [ 76%] 310s tests/test_server.py::test_set_state_status[UNKNOWN-Asyncio-False] PASSED [ 76%] 310s tests/test_server.py::test_set_state_status[UNKNOWN-Asyncio-True] PASSED [ 76%] 310s tests/test_server.py::test_set_state_status[UNKNOWN-Gevent-False] PASSED [ 76%] 310s tests/test_server.py::test_set_state_status[UNKNOWN-Gevent-True] PASSED [ 76%] 310s tests/test_server.py::test_user_dev_state_status[Synchronous] PASSED [ 76%] 310s tests/test_server.py::test_user_dev_state_status[Asyncio] PASSED [ 77%] 310s tests/test_server.py::test_user_dev_state_status[Gevent] PASSED [ 77%] 310s tests/test_server.py::test_attr_quality_checked_with_state[Synchronous] PASSED [ 77%] 310s tests/test_server.py::test_attr_quality_checked_with_state[Asyncio] PASSED [ 77%] 310s tests/test_server.py::test_attr_quality_checked_with_state[Gevent] PASSED [ 77%] 310s tests/test_server.py::test_device_get_attr_config[Synchronous] PASSED [ 77%] 310s tests/test_server.py::test_device_get_attr_config[Asyncio] PASSED [ 77%] 310s tests/test_server.py::test_device_get_attr_config[Gevent] PASSED [ 77%] 310s tests/test_server.py::test_device_set_attr_config[Synchronous] PASSED [ 77%] 310s tests/test_server.py::test_device_set_attr_config[Asyncio] PASSED [ 77%] 310s tests/test_server.py::test_device_set_attr_config[Gevent] PASSED [ 77%] 310s tests/test_server.py::test_default_units PASSED [ 77%] 310s tests/test_server.py::test_custom_units PASSED [ 78%] 310s tests/test_server.py::test_inheritance_overrides_a_property PASSED [ 78%] 310s tests/test_server.py::test_inheritance_override_dev_status PASSED [ 78%] 310s tests/test_server.py::test_inheritance_init_device PASSED [ 78%] 310s tests/test_server.py::test_inheritance_with_decorated_attributes PASSED [ 78%] 310s tests/test_server.py::test_inheritance_with_undecorated_attributes PASSED [ 78%] 310s tests/test_server.py::test_inheritance_with_undecorated_attribute_and_bound_methods PASSED [ 78%] 311s tests/test_server.py::test_inheritance_with_undecorated_attributes_and_unbound_functions PASSED [ 78%] 311s tests/test_server.py::test_inheritance_command_is_allowed_by_naming_convention PASSED [ 78%] 311s tests/test_server.py::test_inheritance_command_is_allowed_by_kwarg_method PASSED [ 78%] 311s tests/test_server.py::test_inheritance_command_is_allowed_by_kwarg_unbound_function PASSED [ 78%] 311s tests/test_server.py::test_exception_propagation[Synchronous] PASSED [ 78%] 311s tests/test_server.py::test_exception_propagation[Asyncio] PASSED [ 79%] 311s tests/test_server.py::test_exception_propagation[Gevent] PASSED [ 79%] 311s tests/test_server.py::test_arguments[linux-applicable_os0-MyDs instance --nodb --port 1234-expected_output0] PASSED [ 79%] 311s tests/test_server.py::test_arguments[linux-applicable_os1-MyDs -port 1234 -host myhost instance-expected_output1] PASSED [ 79%] 311s tests/test_server.py::test_arguments[linux-applicable_os2-MyDs instance --ORBendPoint giop:tcp:_:1234-expected_output2] PASSED [ 79%] 311s tests/test_server.py::test_arguments[linux-applicable_os3-MyDs instance -nodb -port 1000 -dlist a/b/c;d/e/f-expected_output3] PASSED [ 79%] 311s tests/test_server.py::test_arguments[linux-applicable_os4-MyDs instance -file a/b/c-expected_output4] PASSED [ 79%] 311s tests/test_server.py::test_arguments[linux-applicable_os5-MyDs instance -nodb-expected_output5] PASSED [ 79%] 311s tests/test_server.py::test_arguments[linux-applicable_os6-MyDs instance -dlist a/b/c;d/e/f-expected_output6] PASSED [ 79%] 311s tests/test_server.py::test_arguments[linux-applicable_os7-MyDs instance -vvvv-expected_output7] PASSED [ 79%] 311s tests/test_server.py::test_arguments[linux-applicable_os8-MyDs instance --verbose --verbose --verbose --verbose-expected_output8] PASSED [ 79%] 311s tests/test_server.py::test_arguments[linux-applicable_os9-MyDs instance -v4-expected_output9] PASSED [ 80%] 311s tests/test_server.py::test_arguments[linux-applicable_os10-MyDs instance -v 4-expected_output10] PASSED [ 80%] 311s tests/test_server.py::test_arguments[linux-applicable_os11-MyDs instance -dbg -i -s -u-expected_output11] PASSED [ 80%] 311s tests/test_server.py::test_arguments[linux-applicable_os12-MyDs instance -ORBtest1 test1 --ORBtest2 test2-expected_output12] PASSED [ 80%] 311s tests/test_server.py::test_arguments[linux-applicable_os13-MyDs ORBinstance -ORBtest myORBparam-expected_output13] PASSED [ 80%] 311s tests/test_server.py::test_arguments[linux-applicable_os14-MyDs instance -nodb -ORBendPoint giop:tcp:localhost:1234 -ORBendPointPublish giop:tcp:myhost.local:2345-expected_output14] PASSED [ 80%] 311s tests/test_server.py::test_arguments[linux-applicable_os15-MyDs instance -ORBtest1 test1 --orbinvalid value-expected_output15] PASSED [ 80%] 311s tests/test_server.py::test_arguments[win-applicable_os0-MyDs instance --nodb --port 1234-expected_output0] PASSED [ 80%] 311s tests/test_server.py::test_arguments[win-applicable_os1-MyDs -port 1234 -host myhost instance-expected_output1] PASSED [ 80%] 311s tests/test_server.py::test_arguments[win-applicable_os2-MyDs instance --ORBendPoint giop:tcp:_:1234-expected_output2] PASSED [ 80%] 311s tests/test_server.py::test_arguments[win-applicable_os3-MyDs instance -nodb -port 1000 -dlist a/b/c;d/e/f-expected_output3] PASSED [ 80%] 311s tests/test_server.py::test_arguments[win-applicable_os4-MyDs instance -file a/b/c-expected_output4] PASSED [ 80%] 311s tests/test_server.py::test_arguments[win-applicable_os5-MyDs instance -nodb-expected_output5] PASSED [ 81%] 311s tests/test_server.py::test_arguments[win-applicable_os6-MyDs instance -dlist a/b/c;d/e/f-expected_output6] PASSED [ 81%] 311s tests/test_server.py::test_arguments[win-applicable_os7-MyDs instance -vvvv-expected_output7] PASSED [ 81%] 311s tests/test_server.py::test_arguments[win-applicable_os8-MyDs instance --verbose --verbose --verbose --verbose-expected_output8] PASSED [ 81%] 311s tests/test_server.py::test_arguments[win-applicable_os9-MyDs instance -v4-expected_output9] PASSED [ 81%] 311s tests/test_server.py::test_arguments[win-applicable_os10-MyDs instance -v 4-expected_output10] PASSED [ 81%] 311s tests/test_server.py::test_arguments[win-applicable_os11-MyDs instance -dbg -i -s -u-expected_output11] PASSED [ 81%] 311s tests/test_server.py::test_arguments[win-applicable_os12-MyDs instance -ORBtest1 test1 --ORBtest2 test2-expected_output12] PASSED [ 81%] 311s tests/test_server.py::test_arguments[win-applicable_os13-MyDs ORBinstance -ORBtest myORBparam-expected_output13] PASSED [ 81%] 311s tests/test_server.py::test_arguments[win-applicable_os14-MyDs instance -nodb -ORBendPoint giop:tcp:localhost:1234 -ORBendPointPublish giop:tcp:myhost.local:2345-expected_output14] PASSED [ 81%] 311s tests/test_server.py::test_arguments[win-applicable_os15-MyDs instance -ORBtest1 test1 --orbinvalid value-expected_output15] PASSED [ 81%] 311s tests/test_server.py::test_server_init_hook_called[Synchronous] PASSED [ 81%] 311s tests/test_server.py::test_server_init_hook_called[Asyncio] SKIPPED [ 82%] 311s tests/test_server.py::test_server_init_hook_called[Gevent] PASSED [ 82%] 311s tests/test_server.py::test_server_init_hook_change_state PASSED [ 82%] 311s tests/test_server.py::test_asyncio_server_init_hook_change_state PASSED [ 82%] 311s tests/test_server.py::test_server_init_hook_called_after_init PASSED [ 82%] 311s tests/test_server.py::test_async_server_init_hook_called_after_init PASSED [ 82%] 311s tests/test_server.py::test_server_init_hook_exception PASSED [ 82%] 311s tests/test_server.py::test_asyncio_server_init_hook_exception PASSED [ 82%] 312s tests/test_server.py::test_server_init_hook_with_low_level_api_called PASSED [ 82%] 312s tests/test_server.py::test_server_init_hook_with_low_level_api_change_state PASSED [ 82%] 312s tests/test_server.py::test_server_init_hook_with_low_level_api_called_after_init PASSED [ 82%] 312s tests/test_server.py::test_server_init_hook_with_low_level_api_exception PASSED [ 82%] 312s tests/test_server.py::test_server_init_multiple_devices PASSED [ 83%] 312s tests/test_server.py::test_server_init_hook_subscribe_event_multiple_devices XFAIL [ 83%] 312s tests/test_server.py::test_deprecation_warning_for_sync_attr_com_methods_in_asyncio_device PASSED [ 83%] 312s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[init_device] PASSED [ 83%] 312s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[delete_device] PASSED [ 83%] 312s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_state] PASSED [ 83%] 312s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_status] PASSED [ 83%] 312s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[read_attr_hardware] PASSED [ 83%] 312s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[always_executed_hook] PASSED [ 83%] 312s tests/test_server.py::test_no_sync_attribute_locks[Synchronous] SKIPPED [ 83%] 312s tests/test_server.py::test_no_sync_attribute_locks[Asyncio] SKIPPED [ 83%] 312s tests/test_server.py::test_no_sync_attribute_locks[Gevent] SKIPPED (...) [ 84%] 312s tests/test_server.py::test_read_slow_and_fast_attributes_with_asyncio SKIPPED [ 84%] 312s tests/test_server.py::test_get_version_info_classic_api PASSED [ 84%] 312s tests/test_server.py::test_get_version_info_high_level_api PASSED [ 84%] 312s tests/test_server.py::test_add_version_info_classic_api PASSED [ 84%] 312s tests/test_server.py::test_add_version_info_high_level_api PASSED [ 84%] 312s tests/test_server.py::test_restart_server_command_cpp_and_py SKIPPED [ 84%] 312s tests/test_server.py::test_attr_data_default_fwd_properties PASSED [ 84%] 312s tests/test_server.py::test_attr_data_default_properties PASSED [ 84%] 312s tests/test_server.py::test_attr_data_default_properties_throws_on_unknown PASSED [ 84%] 312s tests/test_server.py::test_attr_data_enum_labels PASSED [ 84%] 312s tests/test_server.py::test_attr_data_to_attr PASSED [ 84%] 312s tests/test_server.py::test_from_attr_info_exceptions[some string-Wrong data type for value for describing attribute] PASSED [ 85%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info1-Wrong number of argument for describing attribute] PASSED [ 85%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info2-Wrong number of argument for describing attribute] PASSED [ 85%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info3-Wrong data type for describing mandatory information] PASSED [ 85%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info4-Wrong data type for describing mandatory information] PASSED [ 85%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info5-Wrong data type in attribute argument for attribute] PASSED [ 85%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info6-Wrong data format in attribute argument for attribute] PASSED [ 85%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info7-Sequence describing mandatory attribute parameters for scalar attribute must have 3 elements] PASSED [ 85%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info8-Sequence describing mandatory attribute parameters for spectrum attribute must have 4 elements] PASSED [ 85%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info9-mandatory dim_x attribute parameter for spectrum attribute must be an integer] PASSED [ 85%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info10-Sequence describing mandatory attribute parameters for image attribute must have 5 elements] PASSED [ 85%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info11-mandatory dim_x attribute parameter for image attribute must be an integer] PASSED [ 85%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info12-mandatory dim_y attribute parameter for image attribute must be an integer] PASSED [ 86%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info13-Wrong data write type in attribute argument] PASSED [ 86%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info14-Wrong display level] PASSED [ 86%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info15-Wrong polling period] PASSED [ 86%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info16-Wrong memorized value] PASSED [ 86%] 312s tests/test_server.py::test_from_attr_info_exceptions[attr_info17-Missing 'enum_labels' key in attr_list definition] PASSED [ 86%] 313s tests/test_server.py::test_from_attr_info_hw_memorized PASSED [ 86%] 313s tests/test_server.py::test_from_attr_info_memorized PASSED [ 86%] 313s tests/test_server.py::test_device_repr_does_not_segfault_with_pytest PASSED [ 86%] 313s tests/test_telemetry.py::test_telemetry_available_constant_exists PASSED [ 86%] 313s tests/test_telemetry.py::test_telemetry_packages_available_if_telemetry_active SKIPPED [ 86%] 313s tests/test_telemetry.py::test_init_device_and_basic_span_details[Synchronous] SKIPPED [ 87%] 313s tests/test_telemetry.py::test_init_device_and_basic_span_details[Asyncio] SKIPPED [ 87%] 313s tests/test_telemetry.py::test_init_device_and_basic_span_details[Gevent] SKIPPED [ 87%] 313s tests/test_telemetry.py::test_delete_device[Synchronous] SKIPPED (Te...) [ 87%] 313s tests/test_telemetry.py::test_delete_device[Asyncio] SKIPPED (Teleme...) [ 87%] 313s tests/test_telemetry.py::test_delete_device[Gevent] SKIPPED (Telemet...) [ 87%] 313s tests/test_telemetry.py::test_state[Synchronous] SKIPPED (Telemetry ...) [ 87%] 313s tests/test_telemetry.py::test_state[Asyncio] SKIPPED (Telemetry not ...) [ 87%] 313s tests/test_telemetry.py::test_state[Gevent] SKIPPED (Telemetry not a...) [ 87%] 313s tests/test_telemetry.py::test_static_command[Synchronous] SKIPPED (T...) [ 87%] 313s tests/test_telemetry.py::test_static_command[Asyncio] SKIPPED (Telem...) [ 87%] 313s tests/test_telemetry.py::test_static_command[Gevent] SKIPPED (Teleme...) [ 87%] 313s tests/test_telemetry.py::test_static_attribute[Synchronous] SKIPPED [ 88%] 313s tests/test_telemetry.py::test_static_attribute[Asyncio] SKIPPED (Tel...) [ 88%] 313s tests/test_telemetry.py::test_static_attribute[Gevent] SKIPPED (Tele...) [ 88%] 313s tests/test_telemetry.py::test_user_span_traceid_propagates_to_tango[Synchronous] SKIPPED [ 88%] 313s tests/test_telemetry.py::test_user_span_traceid_propagates_to_tango[Asyncio] SKIPPED [ 88%] 313s tests/test_telemetry.py::test_user_span_traceid_propagates_to_tango[Gevent] SKIPPED [ 88%] 313s tests/test_telemetry.py::test_base_device_kernel_tracing_disabled_by_default SKIPPED [ 88%] 313s tests/test_telemetry.py::test_base_device_traces_if_kernel_tracing_enabled[Synchronous] SKIPPED [ 88%] 313s tests/test_telemetry.py::test_base_device_traces_if_kernel_tracing_enabled[Asyncio] SKIPPED [ 88%] 313s tests/test_telemetry.py::test_base_device_traces_if_kernel_tracing_enabled[Gevent] SKIPPED [ 88%] 313s tests/test_telemetry.py::test_no_device_traces_if_device_tracing_disabled[Synchronous] SKIPPED [ 88%] 313s tests/test_telemetry.py::test_no_device_traces_if_device_tracing_disabled[Asyncio] SKIPPED [ 88%] 313s tests/test_telemetry.py::test_no_device_traces_if_device_tracing_disabled[Gevent] SKIPPED [ 89%] 313s tests/test_test_context.py::test_no_warnings_in_test_context PASSED [ 89%] 313s tests/test_test_context.py::test_single_device[Synchronous] PASSED [ 89%] 313s tests/test_test_context.py::test_single_device[Asyncio] PASSED [ 89%] 313s tests/test_test_context.py::test_single_device[Gevent] PASSED [ 89%] 313s tests/test_test_context.py::test_single_device_old_api PASSED [ 89%] 313s tests/test_test_context.py::test_nested_single_device_in_same_process_failure SKIPPED [ 89%] 313s tests/test_test_context.py::test_nested_single_device_in_different_processes_success_without_short_names PASSED [ 89%] 314s tests/test_test_context.py::test_nested_single_device_in_different_processes_failure_with_short_names PASSED [ 89%] 314s tests/test_test_context.py::test_multi_devices_info[SimpleDevice-SimpleDevice] PASSED [ 89%] 314s tests/test_test_context.py::test_multi_devices_info[tango.test_utils.SimpleDevice-SimpleDevice] PASSED [ 89%] 314s tests/test_test_context.py::test_multi_devices_info[class_field2-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 314s tests/test_test_context.py::test_multi_devices_info[class_field3-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 314s tests/test_test_context.py::test_multi_devices_info[class_field4-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 314s tests/test_test_context.py::test_multi_devices_info[class_field5-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 314s tests/test_test_context.py::test_multi_with_single_device[Synchronous] PASSED [ 90%] 314s tests/test_test_context.py::test_multi_with_single_device[Asyncio] PASSED [ 90%] 314s tests/test_test_context.py::test_multi_with_single_device[Gevent] PASSED [ 90%] 314s tests/test_test_context.py::test_multi_with_single_device_old_api PASSED [ 90%] 314s tests/test_test_context.py::test_multi_with_two_devices[Synchronous] PASSED [ 90%] 314s tests/test_test_context.py::test_multi_with_two_devices[Asyncio] PASSED [ 90%] 314s tests/test_test_context.py::test_multi_with_two_devices[Gevent] PASSED [ 90%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2GreenModeUnspecified-None] PASSED [ 90%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2Synchronous-None] PASSED [ 91%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2Gevent-ValueError] PASSED [ 91%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2Asyncio-ValueError] PASSED [ 91%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2GreenModeUnspecified-None] PASSED [ 91%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2Synchronous-None] PASSED [ 91%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2Gevent-ValueError] PASSED [ 91%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2Asyncio-ValueError] PASSED [ 91%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2GreenModeUnspecified-ValueError] PASSED [ 91%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Synchronous-ValueError] PASSED [ 91%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Gevent-ValueError] PASSED [ 91%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Asyncio-None] PASSED [ 91%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2GreenModeUnspecified-ValueError] PASSED [ 91%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2Synchronous-ValueError] PASSED [ 92%] 314s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2Gevent-None] PASSED [ 92%] 315s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2Asyncio-ValueError] PASSED [ 92%] 315s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Synchronous-Asyncio-Asyncio-None-SynchronousExecutor] PASSED [ 92%] 315s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Synchronous-Gevent-Gevent-None-SynchronousExecutor] PASSED [ 92%] 315s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Synchronous-Synchronous-None-AsyncioExecutor] PASSED [ 92%] 315s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Gevent-Gevent-None-AsyncioExecutor] PASSED [ 92%] 315s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Gevent-Synchronous-Synchronous-None-GeventExecutor] PASSED [ 92%] 315s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Gevent-Asyncio-Asyncio-None-GeventExecutor] PASSED [ 92%] 315s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Synchronous-Asyncio-None-SynchronousExecutor] PASSED [ 92%] 315s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Synchronous-Gevent-None-SynchronousExecutor] PASSED [ 92%] 315s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Gevent-Synchronous-None-GeventExecutor] PASSED [ 92%] 315s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Gevent-Asyncio-None-GeventExecutor] PASSED [ 93%] 315s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-None-Synchronous-None-SynchronousExecutor] PASSED [ 93%] 315s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Synchronous-DeprecationWarning-AsyncioExecutor] PASSED [ 93%] 315s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Gevent-DeprecationWarning-AsyncioExecutor] PASSED [ 93%] 315s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-None-Asyncio-RuntimeError-AsyncioExecutor] PASSED [ 93%] 316s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-None-Gevent-RuntimeError-GeventExecutor] PASSED [ 93%] 317s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-None-Asyncio-RuntimeError-AsyncioExecutor] PASSED [ 93%] 317s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Gevent-None-Gevent-RuntimeError-GeventExecutor] PASSED [ 93%] 317s tests/test_test_context.py::test_multi_with_async_devices_initialised PASSED [ 93%] 317s tests/test_test_context.py::test_multi_device_access_via_test_context_methods PASSED [ 93%] 317s tests/test_test_context.py::test_multi_short_name_device_proxy_access_without_tango_db PASSED [ 93%] 317s tests/test_test_context.py::test_multi_short_name_device_proxy_with_dependencies_access_without_tango_db PASSED [ 94%] 317s tests/test_test_context.py::test_multi_short_name_attribute_proxy_access_without_tango_db PASSED [ 94%] 318s tests/test_test_context.py::test_single_short_name_device_proxy_access_without_tango_db PASSED [ 94%] 318s tests/test_test_context.py::test_single_short_name_attribute_proxy_access_without_tango_db PASSED [ 94%] 318s tests/test_test_context.py::test_multi_short_name_access_fails_if_override_disabled PASSED [ 94%] 318s tests/test_test_context.py::test_multi_device_proxy_cached PASSED [ 94%] 318s tests/test_test_context.py::test_multi_with_two_devices_with_properties[Synchronous] PASSED [ 94%] 318s tests/test_test_context.py::test_multi_with_two_devices_with_properties[Asyncio] PASSED [ 94%] 318s tests/test_test_context.py::test_multi_with_two_devices_with_properties[Gevent] PASSED [ 94%] 318s tests/test_test_context.py::test_multi_raises_on_invalid_file_database_properties PASSED [ 94%] 318s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config0] PASSED [ 94%] 318s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config1] PASSED [ 94%] 318s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config2] PASSED [ 95%] 318s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config3] PASSED [ 95%] 318s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config4] PASSED [ 95%] 318s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config5] PASSED [ 95%] 318s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config6] PASSED [ 95%] 318s tests/test_test_context.py::test_multi_with_memorized_attribute_values[False-None-0] PASSED [ 95%] 318s tests/test_test_context.py::test_multi_with_memorized_attribute_values[False-1-0] PASSED [ 95%] 319s tests/test_test_context.py::test_multi_with_memorized_attribute_values[True-None-0] PASSED [ 95%] 319s tests/test_test_context.py::test_multi_with_memorized_attribute_values[True-1-1] PASSED [ 95%] 319s tests/test_test_context.py::test_single_with_memorized_attribute_values[False-None-0] PASSED [ 95%] 319s tests/test_test_context.py::test_single_with_memorized_attribute_values[False-1-0] PASSED [ 95%] 319s tests/test_test_context.py::test_single_with_memorized_attribute_values[True-None-0] PASSED [ 95%] 319s tests/test_test_context.py::test_single_with_memorized_attribute_values[True-1-1] PASSED [ 96%] 319s tests/test_test_context.py::test_empty_string_property_bug[str-property_value0- ] PASSED [ 96%] 319s tests/test_test_context.py::test_empty_string_property_bug[property_type1-property_value1-expected_outcome1] PASSED [ 96%] 319s tests/test_test_context.py::test_empty_string_property_bug[property_type2-property_value2-expected_outcome2] PASSED [ 96%] 319s tests/test_test_context.py::test_test_context_async_device_proxy[True] PASSED [ 96%] 319s tests/test_test_context.py::test_test_context_async_device_proxy[False] PASSED [ 96%] 320s tests/test_test_context.py::test_test_context_multi_async_device_proxy[True] PASSED [ 96%] 320s tests/test_test_context.py::test_test_context_multi_async_device_proxy[False] PASSED [ 96%] 320s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[True-Futures] PASSED [ 96%] 320s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[True-Gevent] PASSED [ 96%] 320s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[False-Futures] PASSED [ 96%] 320s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[False-Gevent] PASSED [ 97%] 320s tests/test_test_context.py::test_forwarded_attributes[True] XFAIL (D...) [ 97%] 320s tests/test_test_context.py::test_forwarded_attributes[False] XFAIL (...) [ 97%] 320s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-a/b/c-a/b/c] PASSED [ 97%] 320s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-a/b/c/d-a/b/c/d] PASSED [ 97%] 320s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-tango://host:12/a/b/c-tango://host:12/a/b/c] PASSED [ 97%] 320s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-tango://host:12/a/b/c#dbase=no-tango://host:12/a/b/c#dbase=no] PASSED [ 97%] 320s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-no://trl/validation-no://trl/validation] PASSED [ 97%] 320s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[tango://host:12-a/b/c-tango://host:12/a/b/c] PASSED [ 97%] 320s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[tango://host:12-a/b/c/d-tango://host:12/a/b/c/d] PASSED [ 97%] 320s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[tango://host:12-tango://host:12/a/b/c-tango://host:12/a/b/c] PASSED [ 97%] 320s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[tango://host:12#dbase=no-a/b/c-tango://host:12/a/b/c#dbase=no] PASSED [ 97%] 320s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[tango://host:12#dbase=yes-a/b/c-tango://host:12/a/b/c#dbase=yes] PASSED [ 98%] 320s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[tango://127.0.0.1:12-a/b/c-tango://127.0.0.1:12/a/b/c] PASSED [ 98%] 320s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[host:123-a/b/c] PASSED [ 98%] 320s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://-a/b/c] PASSED [ 98%] 320s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://:123-a/b/c] PASSED [ 98%] 320s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host-a/b/c] PASSED [ 98%] 320s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:0-a/b/c] PASSED [ 98%] 320s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:12/path-a/b/c] PASSED [ 98%] 320s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:123?query=1-a/b/c] PASSED [ 98%] 320s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:123#dbase=invalid-a/b/c] PASSED [ 98%] 320s tests/test_utils.py::test_global_state_default_set_and_clear PASSED [ 98%] 320s tests/test_utils.py::test_clear_global_var_without_set_does_not_raise PASSED [ 98%] 320s tests/test_utils.py::test_get_tango_type_valid PASSED [ 99%] 320s tests/test_utils.py::test_get_tango_type_invalid_raises_type_error PASSED [ 99%] 320s tests/test_utils.py::test_sequence_to_string_vector_and_back PASSED [ 99%] 320s tests/test_utils.py::test_sequence_to_double_vector_and_back PASSED [ 99%] 320s tests/test_utils.py::test_sequence_to_dbdevinfo_vector_and_back PASSED [ 99%] 320s tests/test_utils.py::test_sequence_to_dbdevexportinfo_vector_and_back PASSED [ 99%] 320s tests/test_utils.py::test_sequence_to_dbdata_vector_and_back PASSED [ 99%] 320s tests/test_utils.py::test_sequence_to_dbdevimport_vector_and_back PASSED [ 99%] 320s tests/test_utils.py::test_sequence_to_dbhistorylist_vector_and_back PASSED [ 99%] 320s tests/test_utils.py::test_sequence_to_devicedatalist_vector_and_back PASSED [ 99%] 320s tests/test_utils.py::test_sequence_to_devicedatahistorylist_vector_and_back PASSED [ 99%] 321s tests/test_zzz_deprecated_pytango_module.py::test_import_aliased_module PASSED [100%] 321s 321s =========== 1061 passed, 56 skipped, 53 xfailed in 152.75s (0:02:32) =========== 321s Testing with python3.14: 321s ============================= test session starts ============================== 321s platform linux -- Python 3.14.2, pytest-9.0.2, pluggy-1.6.0 -- /usr/bin/python3.14 321s cachedir: .pytest_cache 321s rootdir: /tmp/autopkgtest.VwMFcc/autopkgtest_tmp 321s plugins: asyncio-1.3.0, rerunfailures-16.1, forked-1.6.0, typeguard-4.4.4 321s asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function 322s collecting ... collected 1170 items 322s 322s tests/test_api_util.py::test_get_env_var PASSED [ 0%] 322s tests/test_async.py::test_green_mode_kwarg_for_proxy_methods FAILED [ 0%] 323s tests/test_async.py::test_async_attribute_polled PASSED [ 0%] 323s tests/test_async.py::test_async_attribute_with_callback[poll] SKIPPED [ 0%] 323s tests/test_async.py::test_async_attribute_with_callback[push] SKIPPED [ 0%] 323s tests/test_async.py::test_async_command_polled PASSED [ 0%] 323s tests/test_async.py::test_async_command_with_polled_callback[cmd_ok-123-123-False] PASSED [ 0%] 324s tests/test_async.py::test_async_command_with_polled_callback[cmd_timeout-123-None-True] PASSED [ 0%] 325s tests/test_async.py::test_async_command_with_polled_callback[cmd_exception-123-None-True] PASSED [ 0%] 325s tests/test_async.py::test_async_attribute_read_with_polled_callback[attr_ok-argout0-False] PASSED [ 0%] 326s tests/test_async.py::test_async_attribute_read_with_polled_callback[attr_timeout-None-True] PASSED [ 0%] 326s tests/test_async.py::test_async_attribute_read_with_polled_callback[attr_exception-argout2-False] PASSED [ 1%] 327s tests/test_async.py::test_async_attribute_write_with_polled_callback[attr_ok-False] PASSED [ 1%] 328s tests/test_async.py::test_async_attribute_write_with_polled_callback[attr_timeout-True] PASSED [ 1%] 328s tests/test_async.py::test_async_attribute_write_with_polled_callback[attr_exception-False] PASSED [ 1%] 329s tests/test_async.py::test_async_command_with_pushed_callback[cmd_ok-123-123-False] PASSED [ 1%] 330s tests/test_async.py::test_async_command_with_pushed_callback[cmd_timeout-123-None-True] PASSED [ 1%] 330s tests/test_async.py::test_async_command_with_pushed_callback[cmd_exception-123-None-True] PASSED [ 1%] 331s tests/test_async.py::test_async_attribute_read_with_pushed_callback[attr_ok-argout0-False] PASSED [ 1%] 331s tests/test_async.py::test_async_attribute_read_with_pushed_callback[attr_timeout-None-True] PASSED [ 1%] 332s tests/test_async.py::test_async_attribute_read_with_pushed_callback[attr_exception-argout2-False] PASSED [ 1%] 332s tests/test_async.py::test_async_attribute_write_with_pushed_callback[attr_ok-False] PASSED [ 1%] 333s tests/test_async.py::test_async_attribute_write_with_pushed_callback[attr_timeout-True] PASSED [ 1%] 333s tests/test_async.py::test_async_attribute_write_with_pushed_callback[attr_exception-False] PASSED [ 2%] 334s tests/test_async.py::test_async_exception_in_callback PASSED [ 2%] 335s tests/test_attrconfeventdata.py::test_attribute_configuration_event PASSED [ 2%] 335s tests/test_attrconfeventdata.py::test_attribute_configuration_event_set_errors PASSED [ 2%] 335s tests/test_attribute_proxy.py::test_ping[scalar_int] PASSED [ 2%] 335s tests/test_attribute_proxy.py::test_ping[spectrum_str] PASSED [ 2%] 335s tests/test_attribute_proxy.py::test_ping[image_float] PASSED [ 2%] 335s tests/test_attribute_proxy.py::test_state_status[scalar_int] PASSED [ 2%] 335s tests/test_attribute_proxy.py::test_state_status[spectrum_str] PASSED [ 2%] 335s tests/test_attribute_proxy.py::test_state_status[image_float] PASSED [ 2%] 335s tests/test_attribute_proxy.py::test_read_write_attribute[scalar_int] PASSED [ 2%] 335s tests/test_attribute_proxy.py::test_read_write_attribute[spectrum_str] PASSED [ 2%] 336s tests/test_attribute_proxy.py::test_read_write_attribute[image_float] PASSED [ 3%] 336s tests/test_attribute_proxy.py::test_attribute_poll[scalar_int] PASSED [ 3%] 337s tests/test_attribute_proxy.py::test_attribute_poll[spectrum_str] PASSED [ 3%] 338s tests/test_attribute_proxy.py::test_attribute_poll[image_float] PASSED [ 3%] 338s tests/test_attribute_proxy.py::test_read_write_attribute_async[scalar_int] PASSED [ 3%] 338s tests/test_attribute_proxy.py::test_read_write_attribute_async[spectrum_str] PASSED [ 3%] 338s tests/test_attribute_proxy.py::test_read_write_attribute_async[image_float] PASSED [ 3%] 338s tests/test_attribute_proxy.py::test_event[Synchronous] SKIPPED (This...) [ 3%] 338s tests/test_attribute_proxy.py::test_event[Futures] SKIPPED (This tes...) [ 3%] 338s tests/test_attribute_proxy.py::test_event[Gevent] SKIPPED (This test...) [ 3%] 338s tests/test_attribute_proxy.py::test_event[Asyncio] SKIPPED (This tes...) [ 3%] 339s tests/test_attributes.py::test_read_write_attribute[int-Synchronous] PASSED [ 4%] 339s tests/test_attributes.py::test_read_write_attribute[int-Asyncio] FAILED [ 4%] 339s tests/test_attributes.py::test_read_write_attribute[int-Gevent] PASSED [ 4%] 339s tests/test_attributes.py::test_read_write_attribute[float-Synchronous] PASSED [ 4%] 339s tests/test_attributes.py::test_read_write_attribute[float-Asyncio] FAILED [ 4%] 339s tests/test_attributes.py::test_read_write_attribute[float-Gevent] PASSED [ 4%] 339s tests/test_attributes.py::test_read_write_attribute[str-Synchronous] PASSED [ 4%] 340s tests/test_attributes.py::test_read_write_attribute[str-Asyncio] FAILED [ 4%] 340s tests/test_attributes.py::test_read_write_attribute[str-Gevent] PASSED [ 4%] 340s tests/test_attributes.py::test_read_write_attribute[bool-Synchronous] PASSED [ 4%] 340s tests/test_attributes.py::test_read_write_attribute[bool-Asyncio] FAILED [ 4%] 340s tests/test_attributes.py::test_read_write_attribute[bool-Gevent] PASSED [ 4%] 340s tests/test_attributes.py::test_read_write_attribute[(int,)-Synchronous] PASSED [ 5%] 340s tests/test_attributes.py::test_read_write_attribute[(int,)-Asyncio] FAILED [ 5%] 340s tests/test_attributes.py::test_read_write_attribute[(int,)-Gevent] PASSED [ 5%] 340s tests/test_attributes.py::test_read_write_attribute[(float,)-Synchronous] PASSED [ 5%] 341s tests/test_attributes.py::test_read_write_attribute[(float,)-Asyncio] FAILED [ 5%] 341s tests/test_attributes.py::test_read_write_attribute[(float,)-Gevent] PASSED [ 5%] 341s tests/test_attributes.py::test_read_write_attribute[(str,)-Synchronous] PASSED [ 5%] 342s tests/test_attributes.py::test_read_write_attribute[(str,)-Asyncio] FAILED [ 5%] 342s tests/test_attributes.py::test_read_write_attribute[(str,)-Gevent] PASSED [ 5%] 342s tests/test_attributes.py::test_read_write_attribute[(bool,)-Synchronous] PASSED [ 5%] 342s tests/test_attributes.py::test_read_write_attribute[(bool,)-Asyncio] FAILED [ 5%] 342s tests/test_attributes.py::test_read_write_attribute[(bool,)-Gevent] PASSED [ 5%] 342s tests/test_attributes.py::test_read_write_attribute[((int,),)-Synchronous] PASSED [ 6%] 342s tests/test_attributes.py::test_read_write_attribute[((int,),)-Asyncio] FAILED [ 6%] 342s tests/test_attributes.py::test_read_write_attribute[((int,),)-Gevent] PASSED [ 6%] 342s tests/test_attributes.py::test_read_write_attribute[((float,),)-Synchronous] PASSED [ 6%] 343s tests/test_attributes.py::test_read_write_attribute[((float,),)-Asyncio] FAILED [ 6%] 343s tests/test_attributes.py::test_read_write_attribute[((float,),)-Gevent] PASSED [ 6%] 343s tests/test_attributes.py::test_read_write_attribute[((str,),)-Synchronous] PASSED [ 6%] 343s tests/test_attributes.py::test_read_write_attribute[((str,),)-Asyncio] FAILED [ 6%] 343s tests/test_attributes.py::test_read_write_attribute[((str,),)-Gevent] PASSED [ 6%] 343s tests/test_attributes.py::test_read_write_attribute[((bool,),)-Synchronous] PASSED [ 6%] 343s tests/test_attributes.py::test_read_write_attribute[((bool,),)-Asyncio] FAILED [ 6%] 344s tests/test_attributes.py::test_read_write_attribute[((bool,),)-Gevent] PASSED [ 7%] 344s tests/test_attributes.py::test_wrong_encoding_string PASSED [ 7%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[int-True] PASSED [ 7%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[int-False] PASSED [ 7%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[float-True] PASSED [ 7%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[float-False] PASSED [ 7%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[str-True] PASSED [ 7%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[str-False] PASSED [ 7%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[bool-True] PASSED [ 7%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[bool-False] PASSED [ 7%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[(int,)-True] PASSED [ 7%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[(int,)-False] PASSED [ 7%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[(float,)-True] PASSED [ 8%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[(float,)-False] PASSED [ 8%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[(str,)-True] PASSED [ 8%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[(str,)-False] PASSED [ 8%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[(bool,)-True] PASSED [ 8%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[(bool,)-False] PASSED [ 8%] 344s tests/test_attributes.py::test_attribute_declared_with_typing[((int,),)-True] PASSED [ 8%] 345s tests/test_attributes.py::test_attribute_declared_with_typing[((int,),)-False] PASSED [ 8%] 345s tests/test_attributes.py::test_attribute_declared_with_typing[((float,),)-True] PASSED [ 8%] 345s tests/test_attributes.py::test_attribute_declared_with_typing[((float,),)-False] PASSED [ 8%] 345s tests/test_attributes.py::test_attribute_declared_with_typing[((str,),)-True] PASSED [ 8%] 345s tests/test_attributes.py::test_attribute_declared_with_typing[((str,),)-False] PASSED [ 8%] 345s tests/test_attributes.py::test_attribute_declared_with_typing[((bool,),)-True] PASSED [ 9%] 345s tests/test_attributes.py::test_attribute_declared_with_typing[((bool,),)-False] PASSED [ 9%] 345s tests/test_attributes.py::test_attribute_self_typed_with_not_defined_name PASSED [ 9%] 345s tests/test_attributes.py::test_read_write_attribute_with_unbound_functions PASSED [ 9%] 345s tests/test_attributes.py::test_read_write_attribute_decorated_methods[Synchronous] PASSED [ 9%] 345s tests/test_attributes.py::test_read_write_attribute_decorated_methods[Asyncio] FAILED [ 9%] 345s tests/test_attributes.py::test_read_write_attribute_decorated_methods[Gevent] PASSED [ 9%] 345s tests/test_attributes.py::test_read_write_wvalue_attribute[int-True] PASSED [ 9%] 345s tests/test_attributes.py::test_read_write_wvalue_attribute[int-False] PASSED [ 9%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[float-True] PASSED [ 9%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[float-False] PASSED [ 9%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[str-True] PASSED [ 10%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[str-False] PASSED [ 10%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[bool-True] PASSED [ 10%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[bool-False] PASSED [ 10%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[(int,)-True] PASSED [ 10%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[(int,)-False] PASSED [ 10%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[(float,)-True] PASSED [ 10%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[(float,)-False] PASSED [ 10%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[(str,)-True] PASSED [ 10%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[(str,)-False] PASSED [ 10%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[(bool,)-True] PASSED [ 10%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[(bool,)-False] PASSED [ 10%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[((int,),)-True] PASSED [ 11%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[((int,),)-False] PASSED [ 11%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[((float,),)-True] PASSED [ 11%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[((float,),)-False] PASSED [ 11%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[((str,),)-True] PASSED [ 11%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[((str,),)-False] PASSED [ 11%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[((bool,),)-True] PASSED [ 11%] 346s tests/test_attributes.py::test_read_write_wvalue_attribute[((bool,),)-False] PASSED [ 11%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-float] PASSED [ 11%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-int] PASSED [ 11%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-str] PASSED [ 11%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-bool] PASSED [ 11%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-float] PASSED [ 12%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-int] PASSED [ 12%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-str] PASSED [ 12%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-bool] PASSED [ 12%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-float] PASSED [ 12%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-int] PASSED [ 12%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-str] PASSED [ 12%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-bool] PASSED [ 12%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-float] PASSED [ 12%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-int] PASSED [ 12%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-str] XFAIL [ 12%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-bool] PASSED [ 12%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-float] PASSED [ 13%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-int] PASSED [ 13%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-str] XFAIL [ 13%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-bool] PASSED [ 13%] 347s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-float] PASSED [ 13%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-int] PASSED [ 13%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-str] XFAIL [ 13%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-bool] PASSED [ 13%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-Device_4Impl] PASSED [ 13%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-Device_5Impl] PASSED [ 13%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-Device_6Impl] PASSED [ 13%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-LatestDeviceImpl] PASSED [ 14%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-Device_4Impl] PASSED [ 14%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-Device_5Impl] PASSED [ 14%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-Device_6Impl] PASSED [ 14%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-LatestDeviceImpl] PASSED [ 14%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-Device_4Impl] PASSED [ 14%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-Device_5Impl] PASSED [ 14%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-Device_6Impl] PASSED [ 14%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-LatestDeviceImpl] PASSED [ 14%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-Device_4Impl] PASSED [ 14%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-Device_5Impl] PASSED [ 14%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-Device_6Impl] PASSED [ 14%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-LatestDeviceImpl] PASSED [ 15%] 348s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-Device_4Impl] PASSED [ 15%] 349s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-Device_5Impl] PASSED [ 15%] 349s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-Device_6Impl] PASSED [ 15%] 349s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-LatestDeviceImpl] PASSED [ 15%] 349s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-Device_4Impl] PASSED [ 15%] 349s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-Device_5Impl] PASSED [ 15%] 349s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-Device_6Impl] PASSED [ 15%] 349s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-LatestDeviceImpl] PASSED [ 15%] 349s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-Device_4Impl] PASSED [ 15%] 349s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-Device_5Impl] PASSED [ 15%] 349s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-Device_6Impl] PASSED [ 15%] 349s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-LatestDeviceImpl] PASSED [ 16%] 349s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-Device_4Impl] PASSED [ 16%] 349s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-Device_5Impl] PASSED [ 16%] 350s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-Device_6Impl] PASSED [ 16%] 350s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-LatestDeviceImpl] PASSED [ 16%] 350s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-Device_4Impl] PASSED [ 16%] 350s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-Device_5Impl] PASSED [ 16%] 350s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-Device_6Impl] PASSED [ 16%] 350s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-LatestDeviceImpl] PASSED [ 16%] 350s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-Device_4Impl] PASSED [ 16%] 350s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-Device_5Impl] PASSED [ 16%] 350s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-Device_6Impl] PASSED [ 17%] 350s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-LatestDeviceImpl] PASSED [ 17%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-Device_4Impl] PASSED [ 17%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-Device_5Impl] PASSED [ 17%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-Device_6Impl] PASSED [ 17%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-LatestDeviceImpl] PASSED [ 17%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-Device_4Impl] PASSED [ 17%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-Device_5Impl] PASSED [ 17%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-Device_6Impl] PASSED [ 17%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-LatestDeviceImpl] PASSED [ 17%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-Device_4Impl] PASSED [ 17%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-Device_5Impl] PASSED [ 17%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-Device_6Impl] PASSED [ 18%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-LatestDeviceImpl] PASSED [ 18%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-Device_4Impl] PASSED [ 18%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-Device_5Impl] PASSED [ 18%] 351s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-Device_6Impl] PASSED [ 18%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-LatestDeviceImpl] PASSED [ 18%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-Device_4Impl] XFAIL [ 18%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-Device_5Impl] XFAIL [ 18%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-Device_6Impl] XFAIL [ 18%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-LatestDeviceImpl] XFAIL [ 18%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-Device_4Impl] PASSED [ 18%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-Device_5Impl] PASSED [ 18%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-Device_6Impl] PASSED [ 19%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-LatestDeviceImpl] PASSED [ 19%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-Device_4Impl] PASSED [ 19%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-Device_5Impl] PASSED [ 19%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-Device_6Impl] PASSED [ 19%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-LatestDeviceImpl] PASSED [ 19%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-Device_4Impl] PASSED [ 19%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-Device_5Impl] PASSED [ 19%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-Device_6Impl] PASSED [ 19%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-LatestDeviceImpl] PASSED [ 19%] 352s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-Device_4Impl] XFAIL [ 19%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-Device_5Impl] XFAIL [ 20%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-Device_6Impl] XFAIL [ 20%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-LatestDeviceImpl] XFAIL [ 20%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-Device_4Impl] PASSED [ 20%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-Device_5Impl] PASSED [ 20%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-Device_6Impl] PASSED [ 20%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-LatestDeviceImpl] PASSED [ 20%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-Device_4Impl] PASSED [ 20%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-Device_5Impl] PASSED [ 20%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-Device_6Impl] PASSED [ 20%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-LatestDeviceImpl] PASSED [ 20%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-Device_4Impl] PASSED [ 20%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-Device_5Impl] PASSED [ 21%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-Device_6Impl] PASSED [ 21%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-LatestDeviceImpl] PASSED [ 21%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-Device_4Impl] XFAIL [ 21%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-Device_5Impl] XFAIL [ 21%] 353s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-Device_6Impl] XFAIL [ 21%] 354s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-LatestDeviceImpl] XFAIL [ 21%] 354s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-Device_4Impl] PASSED [ 21%] 354s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-Device_5Impl] PASSED [ 21%] 354s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-Device_6Impl] PASSED [ 21%] 354s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-LatestDeviceImpl] PASSED [ 21%] 354s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SCALAR-state] PASSED [ 21%] 354s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SCALAR-DevState0] PASSED [ 22%] 355s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SCALAR-DevState1] PASSED [ 22%] 355s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SPECTRUM-state] PASSED [ 22%] 355s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SPECTRUM-DevState0] PASSED [ 22%] 355s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SPECTRUM-DevState1] PASSED [ 22%] 355s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[IMAGE-state] PASSED [ 22%] 355s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[IMAGE-DevState0] PASSED [ 22%] 355s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[IMAGE-DevState1] PASSED [ 22%] 355s tests/test_attributes.py::test_read_write_attribute_enum[SCALAR] PASSED [ 22%] 355s tests/test_attributes.py::test_read_write_attribute_enum[SPECTRUM] PASSED [ 22%] 355s tests/test_attributes.py::test_read_write_attribute_enum[IMAGE] PASSED [ 22%] 356s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SCALAR-DevState] PASSED [ 22%] 356s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SCALAR-GoodEnum] PASSED [ 23%] 356s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SPECTRUM-DevState] PASSED [ 23%] 356s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SPECTRUM-GoodEnum] PASSED [ 23%] 356s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[IMAGE-DevState] PASSED [ 23%] 356s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[IMAGE-GoodEnum] PASSED [ 23%] 356s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[int] PASSED [ 23%] 356s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[float] PASSED [ 23%] 356s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[str] PASSED [ 23%] 356s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[bool] PASSED [ 23%] 356s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(int,)] PASSED [ 23%] 356s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(float,)] PASSED [ 23%] 356s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(str,)] PASSED [ 24%] 356s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(bool,)] PASSED [ 24%] 356s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((int,),)] PASSED [ 24%] 356s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((float,),)] PASSED [ 24%] 356s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((str,),)] PASSED [ 24%] 356s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((bool,),)] PASSED [ 24%] 356s tests/test_attributes.py::test_read_enum_attribute_with_invalid_quality_is_none PASSED [ 24%] 357s tests/test_attributes.py::test_wrong_attribute_read PASSED [ 24%] 357s tests/test_attributes.py::test_attribute_access_with_default_method_names PASSED [ 24%] 357s tests/test_attributes.py::test_read_write_dynamic_attribute[low_level_read-Synchronous] PASSED [ 24%] 357s tests/test_attributes.py::test_read_write_dynamic_attribute[low_level_read-Asyncio] FAILED [ 24%] 357s tests/test_attributes.py::test_read_write_dynamic_attribute[low_level_read-Gevent] PASSED [ 24%] 357s tests/test_attributes.py::test_read_write_dynamic_attribute[high_level_read-Synchronous] PASSED [ 25%] 357s tests/test_attributes.py::test_read_write_dynamic_attribute[high_level_read-Asyncio] FAILED [ 25%] 357s tests/test_attributes.py::test_read_write_dynamic_attribute[high_level_read-Gevent] PASSED [ 25%] 358s tests/test_attributes.py::test_async_add_remove_dynamic_attribute FAILED [ 25%] 358s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[int] PASSED [ 25%] 358s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[float] PASSED [ 25%] 358s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[str] PASSED [ 25%] 358s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[bool] PASSED [ 25%] 358s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(int,)] PASSED [ 25%] 358s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(float,)] PASSED [ 25%] 358s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(str,)] PASSED [ 25%] 358s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(bool,)] PASSED [ 25%] 358s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((int,),)] PASSED [ 26%] 358s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((float,),)] PASSED [ 26%] 358s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((str,),)] PASSED [ 26%] 358s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((bool,),)] PASSED [ 26%] 359s tests/test_attributes.py::test_dynamic_attribute_self_typed_with_not_defined_name PASSED [ 26%] 359s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[bool, SCALAR] PASSED [ 26%] 359s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[bool], SPECTRUM] PASSED [ 26%] 359s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint8, SCALAR] PASSED [ 26%] 359s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint8], SPECTRUM] PASSED [ 26%] 359s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[int16, SCALAR] PASSED [ 26%] 359s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[int16], SPECTRUM] PASSED [ 26%] 359s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint16, SCALAR] PASSED [ 27%] 359s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint16], SPECTRUM] PASSED [ 27%] 359s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[int32, SCALAR] PASSED [ 27%] 359s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[int32], SPECTRUM] PASSED [ 27%] 359s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint32, SCALAR] PASSED [ 27%] 359s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint32], SPECTRUM] PASSED [ 27%] 359s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[int64, SCALAR] PASSED [ 27%] 360s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[int64], SPECTRUM] PASSED [ 27%] 360s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint64, SCALAR] PASSED [ 27%] 360s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint64], SPECTRUM] PASSED [ 27%] 360s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[float64, SCALAR] PASSED [ 27%] 360s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[float64], SPECTRUM] PASSED [ 27%] 360s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[float32, SCALAR] PASSED [ 28%] 360s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[float32], SPECTRUM] PASSED [ 28%] 360s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[bool], IMAGE] PASSED [ 28%] 360s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint8], IMAGE] PASSED [ 28%] 360s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[int16], IMAGE] PASSED [ 28%] 360s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint16], IMAGE] PASSED [ 28%] 360s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[int32], IMAGE] PASSED [ 28%] 360s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint32], IMAGE] PASSED [ 28%] 361s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[int64], IMAGE] PASSED [ 28%] 361s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint64], IMAGE] PASSED [ 28%] 361s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[float64], IMAGE] PASSED [ 28%] 361s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[float32], IMAGE] PASSED [ 28%] 361s tests/test_attributes.py::test_attribute_wrong_declared_with_numpy_typing[RuntimeError: AttrDataFormat has to be specified] PASSED [ 29%] 361s tests/test_attributes.py::test_attribute_wrong_declared_with_numpy_typing[DevFailed: Maximum y dim. wrongly defined] PASSED [ 29%] 361s tests/test_attributes.py::test_attribute_wrong_declared_with_numpy_typing[TypeError: No registered converter] PASSED [ 29%] 361s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_default_names[Synchronous] PASSED [ 29%] 361s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_default_names[Asyncio] FAILED [ 29%] 361s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_default_names[Gevent] PASSED [ 29%] 361s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_user_names[Synchronous] PASSED [ 29%] 362s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_user_names[Asyncio] FAILED [ 29%] 362s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_user_names[Gevent] PASSED [ 29%] 362s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_shared_user_functions PASSED [ 29%] 362s tests/test_attributes.py::test_read_write_dynamic_attribute_enum[SCALAR] PASSED [ 29%] 362s tests/test_attributes.py::test_read_write_dynamic_attribute_enum[SPECTRUM] PASSED [ 30%] 362s tests/test_attributes.py::test_read_write_dynamic_attribute_enum[IMAGE] PASSED [ 30%] 362s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SCALAR-DevState] PASSED [ 30%] 362s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SCALAR-GoodEnum] PASSED [ 30%] 362s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SPECTRUM-DevState] PASSED [ 30%] 362s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SPECTRUM-GoodEnum] PASSED [ 30%] 362s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[IMAGE-DevState] PASSED [ 30%] 362s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[IMAGE-GoodEnum] PASSED [ 30%] 362s tests/test_attributes.py::test_read_write_dynamic_attribute_is_allowed_with_async[Synchronous] PASSED [ 30%] 363s tests/test_attributes.py::test_read_write_dynamic_attribute_is_allowed_with_async[Asyncio] FAILED [ 30%] 363s tests/test_attributes.py::test_read_write_dynamic_attribute_is_allowed_with_async[Gevent] PASSED [ 30%] 363s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Synchronous-True] PASSED [ 30%] 363s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Synchronous-False] PASSED [ 31%] 363s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Asyncio-True] FAILED [ 31%] 363s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Asyncio-False] FAILED [ 31%] 363s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Gevent-True] PASSED [ 31%] 364s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Gevent-False] PASSED [ 31%] 364s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[Device_4Impl] PASSED [ 31%] 364s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[Device_5Impl] PASSED [ 31%] 364s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[Device_6Impl] PASSED [ 31%] 364s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[LatestDeviceImpl] PASSED [ 31%] 364s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[True-low_level] PASSED [ 31%] 364s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[True-high_level] PASSED [ 31%] 364s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[False-low_level] PASSED [ 31%] 364s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[False-high_level] PASSED [ 32%] 364s tests/test_attributes.py::test_attribute_decorators[Synchronous] PASSED [ 32%] 364s tests/test_attributes.py::test_attribute_decorators[Asyncio] FAILED [ 32%] 364s tests/test_attributes.py::test_attribute_decorators[Gevent] PASSED [ 32%] 364s tests/test_attributes.py::test_attribute_info_description PASSED [ 32%] 364s tests/test_attributes.py::test_read_only_dynamic_attribute_with_dummy_write_method[low_level_read] PASSED [ 32%] 364s tests/test_attributes.py::test_read_only_dynamic_attribute_with_dummy_write_method[high_level_read] PASSED [ 32%] 364s tests/test_attributes.py::test_dynamic_attribute_with_method_in_other_class PASSED [ 32%] 364s tests/test_attributes.py::test_polled_attribute[Synchronous] PASSED [ 32%] 365s tests/test_attributes.py::test_polled_attribute[Asyncio] FAILED [ 32%] 365s tests/test_attributes.py::test_polled_attribute[Gevent] PASSED [ 32%] 365s tests/test_attributes.py::test_read_write_dev_encoded[str] PASSED [ 32%] 365s tests/test_attributes.py::test_read_write_dev_encoded[bytes] PASSED [ 33%] 365s tests/test_attributes.py::test_read_write_dev_encoded[bytearray] PASSED [ 33%] 365s tests/test_attributes.py::test_dev_encoded_wrong_encoding PASSED [ 33%] 365s tests/test_attributes.py::test_set_value_None PASSED [ 33%] 365s tests/test_attributes.py::test_encoded_attribute[gray8] PASSED [ 33%] 365s tests/test_attributes.py::test_encoded_attribute[gray16] PASSED [ 33%] 365s tests/test_attributes.py::test_encoded_attribute[rgb24] PASSED [ 33%] 365s tests/test_attributes.py::test_encoded_attribute[jpeg_gray8] PASSED [ 33%] 365s tests/test_attributes.py::test_encoded_attribute[jpeg_rgb24] PASSED [ 33%] 365s tests/test_attributes.py::test_encoded_attribute[jpeg_rgb32] XFAIL (...) [ 33%] 368s tests/test_attributes.py::test_dev_encoded_memory_usage PASSED [ 33%] 368s tests/test_attributes.py::test_attribute_list PASSED [ 34%] 368s tests/test_auto_tango_allow_threads.py::test_dont_crash_with_nested_tango_allow_threads PASSED [ 34%] 368s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_DEVICE-True] PASSED [ 34%] 371s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_DEVICE-False] PASSED [ 34%] 371s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_CLASS-True] XFAIL [ 34%] 375s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_CLASS-False] PASSED [ 34%] 375s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_PROCESS-True] XFAIL [ 34%] 378s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_PROCESS-False] PASSED [ 34%] 378s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-NO_SYNC-True] PASSED [ 34%] 378s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-NO_SYNC-False] PASSED [ 34%] 378s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_DEVICE-True] PASSED [ 34%] 381s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_DEVICE-False] PASSED [ 34%] 381s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_CLASS-True] XFAIL [ 35%] 385s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_CLASS-False] PASSED [ 35%] 385s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_PROCESS-True] XFAIL [ 35%] 388s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_PROCESS-False] PASSED [ 35%] 388s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-NO_SYNC-True] PASSED [ 35%] 388s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-NO_SYNC-False] PASSED [ 35%] 388s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_DEVICE-True] PASSED [ 35%] 391s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_DEVICE-False] PASSED [ 35%] 391s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_CLASS-True] XFAIL [ 35%] 395s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_CLASS-False] PASSED [ 35%] 395s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_PROCESS-True] XFAIL [ 35%] 398s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_PROCESS-False] PASSED [ 35%] 398s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-NO_SYNC-True] PASSED [ 36%] 398s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-NO_SYNC-False] PASSED [ 36%] 401s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_DEVICE-True] PASSED [ 36%] 404s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_DEVICE-False] PASSED [ 36%] 408s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_CLASS-True] PASSED [ 36%] 411s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_CLASS-False] PASSED [ 36%] 414s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_PROCESS-True] PASSED [ 36%] 417s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_PROCESS-False] PASSED [ 36%] 417s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-NO_SYNC-True] PASSED [ 36%] 417s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-NO_SYNC-False] PASSED [ 36%] 421s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_DEVICE-True] PASSED [ 36%] 424s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_DEVICE-False] PASSED [ 37%] 427s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_CLASS-True] PASSED [ 37%] 430s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_CLASS-False] PASSED [ 37%] 434s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_PROCESS-True] PASSED [ 37%] 437s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_PROCESS-False] PASSED [ 37%] 437s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-NO_SYNC-True] PASSED [ 37%] 437s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-NO_SYNC-False] PASSED [ 37%] 440s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_DEVICE-True] PASSED [ 37%] 443s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_DEVICE-False] PASSED [ 37%] 447s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_CLASS-True] PASSED [ 37%] 450s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_CLASS-False] PASSED [ 37%] 453s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_PROCESS-True] PASSED [ 37%] 456s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_PROCESS-False] PASSED [ 38%] 456s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-NO_SYNC-True] PASSED [ 38%] 456s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-NO_SYNC-False] PASSED [ 38%] 456s tests/test_commands.py::test_identity_command[int-Synchronous] PASSED [ 38%] 457s tests/test_commands.py::test_identity_command[int-Asyncio] FAILED [ 38%] 457s tests/test_commands.py::test_identity_command[int-Gevent] PASSED [ 38%] 457s tests/test_commands.py::test_identity_command[float-Synchronous] PASSED [ 38%] 457s tests/test_commands.py::test_identity_command[float-Asyncio] FAILED [ 38%] 457s tests/test_commands.py::test_identity_command[float-Gevent] PASSED [ 38%] 457s tests/test_commands.py::test_identity_command[str-Synchronous] PASSED [ 38%] 457s tests/test_commands.py::test_identity_command[str-Asyncio] FAILED [ 38%] 457s tests/test_commands.py::test_identity_command[str-Gevent] PASSED [ 38%] 457s tests/test_commands.py::test_identity_command[bool-Synchronous] PASSED [ 39%] 458s tests/test_commands.py::test_identity_command[bool-Asyncio] FAILED [ 39%] 458s tests/test_commands.py::test_identity_command[bool-Gevent] PASSED [ 39%] 458s tests/test_commands.py::test_identity_command[(int,)-Synchronous] PASSED [ 39%] 458s tests/test_commands.py::test_identity_command[(int,)-Asyncio] FAILED [ 39%] 458s tests/test_commands.py::test_identity_command[(int,)-Gevent] PASSED [ 39%] 458s tests/test_commands.py::test_identity_command[(float,)-Synchronous] PASSED [ 39%] 458s tests/test_commands.py::test_identity_command[(float,)-Asyncio] FAILED [ 39%] 458s tests/test_commands.py::test_identity_command[(float,)-Gevent] PASSED [ 39%] 458s tests/test_commands.py::test_identity_command[(str,)-Synchronous] PASSED [ 39%] 459s tests/test_commands.py::test_identity_command[(str,)-Asyncio] FAILED [ 39%] 459s tests/test_commands.py::test_identity_command[(str,)-Gevent] PASSED [ 40%] 459s tests/test_commands.py::test_identity_command[(bool,)-Synchronous] XFAIL [ 40%] 459s tests/test_commands.py::test_identity_command[(bool,)-Asyncio] XFAIL [ 40%] 459s tests/test_commands.py::test_identity_command[(bool,)-Gevent] XFAIL [ 40%] 459s tests/test_commands.py::test_identity_command[DevVarLongStringArray-Synchronous] PASSED [ 40%] 459s tests/test_commands.py::test_identity_command[DevVarLongStringArray-Asyncio] FAILED [ 40%] 459s tests/test_commands.py::test_identity_command[DevVarLongStringArray-Gevent] PASSED [ 40%] 459s tests/test_commands.py::test_identity_command[DevVarDoubleStringArray-Synchronous] PASSED [ 40%] 459s tests/test_commands.py::test_identity_command[DevVarDoubleStringArray-Asyncio] FAILED [ 40%] 459s tests/test_commands.py::test_identity_command[DevVarDoubleStringArray-Gevent] PASSED [ 40%] 459s tests/test_commands.py::test_identity_command_with_typing[int] PASSED [ 40%] 459s tests/test_commands.py::test_identity_command_with_typing[float] PASSED [ 40%] 459s tests/test_commands.py::test_identity_command_with_typing[str] PASSED [ 41%] 459s tests/test_commands.py::test_identity_command_with_typing[bool] PASSED [ 41%] 459s tests/test_commands.py::test_identity_command_with_typing[(int,)] PASSED [ 41%] 460s tests/test_commands.py::test_identity_command_with_typing[(float,)] PASSED [ 41%] 460s tests/test_commands.py::test_identity_command_with_typing[(str,)] PASSED [ 41%] 460s tests/test_commands.py::test_identity_command_with_typing[(bool,)] XFAIL [ 41%] 460s tests/test_commands.py::test_identity_command_with_typing[DevVarLongStringArray] PASSED [ 41%] 460s tests/test_commands.py::test_identity_command_with_typing[DevVarDoubleStringArray] PASSED [ 41%] 460s tests/test_commands.py::test_devstate_command_with_typing PASSED [ 41%] 460s tests/test_commands.py::test_command_self_typed_with_not_defined_name PASSED [ 41%] 460s tests/test_commands.py::test_decorated_command[Synchronous] PASSED [ 41%] 460s tests/test_commands.py::test_decorated_command[Asyncio] FAILED [ 41%] 460s tests/test_commands.py::test_decorated_command[Gevent] PASSED [ 42%] 460s tests/test_commands.py::test_command_isallowed[Synchronous] PASSED [ 42%] 460s tests/test_commands.py::test_command_isallowed[Asyncio] FAILED [ 42%] 460s tests/test_commands.py::test_command_isallowed[Gevent] PASSED [ 42%] 460s tests/test_commands.py::test_dynamic_command[Synchronous-True] PASSED [ 42%] 460s tests/test_commands.py::test_dynamic_command[Synchronous-False] PASSED [ 42%] 461s tests/test_commands.py::test_dynamic_command[Asyncio-True] FAILED [ 42%] 461s tests/test_commands.py::test_dynamic_command[Asyncio-False] FAILED [ 42%] 461s tests/test_commands.py::test_dynamic_command[Gevent-True] PASSED [ 42%] 461s tests/test_commands.py::test_dynamic_command[Gevent-False] PASSED [ 42%] 461s tests/test_commands.py::test_identity_dynamic_command_with_typing[int] PASSED [ 42%] 461s tests/test_commands.py::test_identity_dynamic_command_with_typing[float] PASSED [ 42%] 461s tests/test_commands.py::test_identity_dynamic_command_with_typing[str] PASSED [ 43%] 461s tests/test_commands.py::test_identity_dynamic_command_with_typing[bool] PASSED [ 43%] 461s tests/test_commands.py::test_identity_dynamic_command_with_typing[(int,)] PASSED [ 43%] 461s tests/test_commands.py::test_identity_dynamic_command_with_typing[(float,)] PASSED [ 43%] 461s tests/test_commands.py::test_identity_dynamic_command_with_typing[(str,)] PASSED [ 43%] 461s tests/test_commands.py::test_identity_dynamic_command_with_typing[(bool,)] XFAIL [ 43%] 461s tests/test_commands.py::test_identity_dynamic_command_with_typing[DevVarLongStringArray] PASSED [ 43%] 461s tests/test_commands.py::test_identity_dynamic_command_with_typing[DevVarDoubleStringArray] PASSED [ 43%] 461s tests/test_commands.py::test_identity_commands_with_numpy_typing[bool, SCALAR] PASSED [ 43%] 461s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[bool], SPECTRUM] PASSED [ 43%] 461s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint8, SCALAR] XFAIL [ 43%] 461s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint8], SPECTRUM] PASSED [ 44%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[int16, SCALAR] PASSED [ 44%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[int16], SPECTRUM] PASSED [ 44%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint16, SCALAR] PASSED [ 44%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint16], SPECTRUM] PASSED [ 44%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[int32, SCALAR] PASSED [ 44%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[int32], SPECTRUM] PASSED [ 44%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint32, SCALAR] PASSED [ 44%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint32], SPECTRUM] PASSED [ 44%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[int64, SCALAR] PASSED [ 44%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[int64], SPECTRUM] PASSED [ 44%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint64, SCALAR] PASSED [ 44%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint64], SPECTRUM] PASSED [ 45%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[float64, SCALAR] PASSED [ 45%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[float64], SPECTRUM] PASSED [ 45%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[float32, SCALAR] PASSED [ 45%] 462s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[float32], SPECTRUM] PASSED [ 45%] 462s tests/test_commands.py::test_polled_command PASSED [ 45%] 462s tests/test_commands.py::test_wrong_command_result PASSED [ 45%] 462s tests/test_commands.py::test_command_info PASSED [ 45%] 462s tests/test_database.py::test_put_remove_attribute_properties PASSED [ 45%] 462s tests/test_databaseds.py::test_ping SKIPPED (This test is failing wh...) [ 45%] 462s tests/test_databaseds.py::test_status SKIPPED (This test is failing ...) [ 45%] 462s tests/test_databaseds.py::test_state SKIPPED (This test is failing w...) [ 45%] 463s tests/test_databaseds.py::test_device_property SKIPPED (This test is...) [ 46%] 463s tests/test_databaseds.py::test_info SKIPPED (This test is failing wh...) [ 46%] 463s tests/test_device_proxy.py::test_ping PASSED [ 46%] 463s tests/test_device_proxy.py::test_info PASSED [ 46%] 463s tests/test_device_proxy.py::test_read_attribute[State] PASSED [ 46%] 463s tests/test_device_proxy.py::test_read_attribute[Status] PASSED [ 46%] 463s tests/test_device_proxy.py::test_read_attribute[ampli] PASSED [ 46%] 463s tests/test_device_proxy.py::test_read_attribute[boolean_image] PASSED [ 46%] 463s tests/test_device_proxy.py::test_read_attribute[boolean_image_ro] PASSED [ 46%] 463s tests/test_device_proxy.py::test_read_attribute[boolean_scalar] PASSED [ 46%] 463s tests/test_device_proxy.py::test_read_attribute[boolean_spectrum] PASSED [ 46%] 463s tests/test_device_proxy.py::test_read_attribute[boolean_spectrum_ro] PASSED [ 47%] 463s tests/test_device_proxy.py::test_read_attribute[double_image] PASSED [ 47%] 464s tests/test_device_proxy.py::test_read_attribute[double_image_ro] PASSED [ 47%] 464s tests/test_device_proxy.py::test_read_attribute[double_scalar] PASSED [ 47%] 464s tests/test_device_proxy.py::test_read_attribute[double_scalar_rww] PASSED [ 47%] 464s tests/test_device_proxy.py::test_read_attribute[double_scalar_w] PASSED [ 47%] 464s tests/test_device_proxy.py::test_read_attribute[double_spectrum] PASSED [ 47%] 464s tests/test_device_proxy.py::test_read_attribute[double_spectrum_ro] PASSED [ 47%] 464s tests/test_device_proxy.py::test_read_attribute[echo_mode] SKIPPED (...) [ 47%] 464s tests/test_device_proxy.py::test_read_attribute[enum_image] PASSED [ 47%] 464s tests/test_device_proxy.py::test_read_attribute[enum_image_ro] PASSED [ 47%] 464s tests/test_device_proxy.py::test_read_attribute[enum_scalar] PASSED [ 47%] 464s tests/test_device_proxy.py::test_read_attribute[enum_scalar_ro] PASSED [ 48%] 464s tests/test_device_proxy.py::test_read_attribute[enum_spectrum] PASSED [ 48%] 465s tests/test_device_proxy.py::test_read_attribute[enum_spectrum_ro] PASSED [ 48%] 465s tests/test_device_proxy.py::test_read_attribute[float_image] PASSED [ 48%] 465s tests/test_device_proxy.py::test_read_attribute[float_image_ro] PASSED [ 48%] 465s tests/test_device_proxy.py::test_read_attribute[float_scalar] PASSED [ 48%] 465s tests/test_device_proxy.py::test_read_attribute[float_spectrum] PASSED [ 48%] 465s tests/test_device_proxy.py::test_read_attribute[float_spectrum_ro] PASSED [ 48%] 465s tests/test_device_proxy.py::test_read_attribute[freq] PASSED [ 48%] 465s tests/test_device_proxy.py::test_read_attribute[long64_image_ro] PASSED [ 48%] 465s tests/test_device_proxy.py::test_read_attribute[long64_scalar] PASSED [ 48%] 465s tests/test_device_proxy.py::test_read_attribute[long64_spectrum_ro] PASSED [ 48%] 465s tests/test_device_proxy.py::test_read_attribute[long_image] PASSED [ 49%] 465s tests/test_device_proxy.py::test_read_attribute[long_image_ro] PASSED [ 49%] 466s tests/test_device_proxy.py::test_read_attribute[long_scalar] PASSED [ 49%] 466s tests/test_device_proxy.py::test_read_attribute[long_scalar_rww] PASSED [ 49%] 466s tests/test_device_proxy.py::test_read_attribute[long_scalar_w] PASSED [ 49%] 466s tests/test_device_proxy.py::test_read_attribute[long_spectrum] PASSED [ 49%] 466s tests/test_device_proxy.py::test_read_attribute[long_spectrum_ro] PASSED [ 49%] 466s tests/test_device_proxy.py::test_read_attribute[short_image] PASSED [ 49%] 466s tests/test_device_proxy.py::test_read_attribute[short_image_ro] PASSED [ 49%] 466s tests/test_device_proxy.py::test_read_attribute[short_scalar] PASSED [ 49%] 466s tests/test_device_proxy.py::test_read_attribute[short_scalar_ro] PASSED [ 49%] 466s tests/test_device_proxy.py::test_read_attribute[short_scalar_rww] PASSED [ 50%] 466s tests/test_device_proxy.py::test_read_attribute[short_scalar_w] PASSED [ 50%] 466s tests/test_device_proxy.py::test_read_attribute[short_spectrum] PASSED [ 50%] 467s tests/test_device_proxy.py::test_read_attribute[short_spectrum_ro] PASSED [ 50%] 467s tests/test_device_proxy.py::test_read_attribute[string_image] PASSED [ 50%] 467s tests/test_device_proxy.py::test_read_attribute[string_image_ro] XFAIL [ 50%] 467s tests/test_device_proxy.py::test_read_attribute[string_scalar] PASSED [ 50%] 467s tests/test_device_proxy.py::test_read_attribute[string_spectrum] PASSED [ 50%] 467s tests/test_device_proxy.py::test_read_attribute[string_spectrum_ro] XFAIL [ 50%] 467s tests/test_device_proxy.py::test_read_attribute[uchar_image] PASSED [ 50%] 467s tests/test_device_proxy.py::test_read_attribute[uchar_image_ro] PASSED [ 50%] 467s tests/test_device_proxy.py::test_read_attribute[uchar_scalar] PASSED [ 50%] 467s tests/test_device_proxy.py::test_read_attribute[uchar_spectrum] PASSED [ 51%] 467s tests/test_device_proxy.py::test_read_attribute[uchar_spectrum_ro] PASSED [ 51%] 468s tests/test_device_proxy.py::test_read_attribute[ulong64_image_ro] PASSED [ 51%] 468s tests/test_device_proxy.py::test_read_attribute[ulong64_scalar] PASSED [ 51%] 468s tests/test_device_proxy.py::test_read_attribute[ulong64_spectrum_ro] PASSED [ 51%] 468s tests/test_device_proxy.py::test_read_attribute[ulong_image_ro] PASSED [ 51%] 468s tests/test_device_proxy.py::test_read_attribute[ulong_scalar] PASSED [ 51%] 468s tests/test_device_proxy.py::test_read_attribute[ulong_spectrum_ro] PASSED [ 51%] 468s tests/test_device_proxy.py::test_read_attribute[ushort_image] PASSED [ 51%] 468s tests/test_device_proxy.py::test_read_attribute[ushort_image_ro] PASSED [ 51%] 468s tests/test_device_proxy.py::test_read_attribute[ushort_scalar] PASSED [ 51%] 468s tests/test_device_proxy.py::test_read_attribute[ushort_spectrum] PASSED [ 51%] 468s tests/test_device_proxy.py::test_read_attribute[ushort_spectrum_ro] PASSED [ 52%] 468s tests/test_device_proxy.py::test_read_attribute[wave] PASSED [ 52%] 469s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Synchronous] PASSED [ 52%] 469s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Futures] PASSED [ 52%] 469s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Gevent] PASSED [ 52%] 469s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Asyncio] ERROR [ 52%] 469s tests/test_device_proxy.py::test_high_level_api_for_asyncio FAILED [ 52%] 469s tests/test_device_proxy.py::test_write_scalar_attribute[boolean_scalar] PASSED [ 52%] 469s tests/test_device_proxy.py::test_write_scalar_attribute[double_scalar] PASSED [ 52%] 469s tests/test_device_proxy.py::test_write_scalar_attribute[double_scalar_w] PASSED [ 52%] 470s tests/test_device_proxy.py::test_write_scalar_attribute[enum_scalar] XFAIL [ 52%] 470s tests/test_device_proxy.py::test_write_scalar_attribute[float_scalar] PASSED [ 52%] 470s tests/test_device_proxy.py::test_write_scalar_attribute[long64_scalar] PASSED [ 53%] 470s tests/test_device_proxy.py::test_write_scalar_attribute[long_scalar] PASSED [ 53%] 470s tests/test_device_proxy.py::test_write_scalar_attribute[long_scalar_w] PASSED [ 53%] 470s tests/test_device_proxy.py::test_write_scalar_attribute[short_scalar] PASSED [ 53%] 470s tests/test_device_proxy.py::test_write_scalar_attribute[short_scalar_w] PASSED [ 53%] 470s tests/test_device_proxy.py::test_write_scalar_attribute[string_scalar] PASSED [ 53%] 470s tests/test_device_proxy.py::test_write_scalar_attribute[uchar_scalar] XFAIL [ 53%] 470s tests/test_device_proxy.py::test_write_scalar_attribute[ulong64_scalar] PASSED [ 53%] 470s tests/test_device_proxy.py::test_write_scalar_attribute[ulong_scalar] PASSED [ 53%] 470s tests/test_device_proxy.py::test_write_scalar_attribute[ushort_scalar] PASSED [ 53%] 471s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.Numpy] PASSED [ 53%] 471s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.Tuple] PASSED [ 54%] 471s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.List] PASSED [ 54%] 471s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.Bytes] PASSED [ 54%] 471s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.ByteArray] PASSED [ 54%] 471s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.String] PASSED [ 54%] 471s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.Numpy] PASSED [ 54%] 471s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.Tuple] PASSED [ 54%] 471s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.List] PASSED [ 54%] 471s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.Bytes] PASSED [ 54%] 471s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.ByteArray] PASSED [ 54%] 472s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.String] PASSED [ 54%] 472s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.Numpy] XFAIL [ 54%] 472s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.Tuple] XFAIL [ 55%] 472s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.List] XFAIL [ 55%] 472s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.Bytes] XFAIL [ 55%] 472s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.ByteArray] XFAIL [ 55%] 472s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.String] XFAIL [ 55%] 472s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.Numpy] PASSED [ 55%] 472s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.Tuple] PASSED [ 55%] 472s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.List] PASSED [ 55%] 473s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.Bytes] PASSED [ 55%] 473s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.ByteArray] PASSED [ 55%] 473s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.String] PASSED [ 55%] 473s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.Numpy] PASSED [ 55%] 473s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.Tuple] PASSED [ 56%] 473s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.List] PASSED [ 56%] 473s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.Bytes] PASSED [ 56%] 473s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.ByteArray] PASSED [ 56%] 473s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.String] PASSED [ 56%] 473s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.Numpy] PASSED [ 56%] 473s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.Tuple] PASSED [ 56%] 473s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.List] PASSED [ 56%] 474s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.Bytes] PASSED [ 56%] 474s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.ByteArray] PASSED [ 56%] 474s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.String] PASSED [ 56%] 474s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.Numpy] PASSED [ 57%] 474s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.Tuple] PASSED [ 57%] 474s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.List] PASSED [ 57%] 474s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.Bytes] XFAIL [ 57%] 474s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.ByteArray] XFAIL [ 57%] 474s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.String] XFAIL [ 57%] 474s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.Numpy] XFAIL [ 57%] 475s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.Tuple] XFAIL [ 57%] 475s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.List] XFAIL [ 57%] 475s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.Bytes] XFAIL [ 57%] 475s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.ByteArray] XFAIL [ 57%] 475s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.String] XFAIL [ 57%] 475s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.Numpy] PASSED [ 58%] 475s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.Tuple] PASSED [ 58%] 475s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.List] PASSED [ 58%] 475s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.Bytes] PASSED [ 58%] 475s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.ByteArray] PASSED [ 58%] 476s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.String] PASSED [ 58%] 476s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[boolean_spectrum] PASSED [ 58%] 476s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[double_spectrum] PASSED [ 58%] 476s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[enum_spectrum] PASSED [ 58%] 476s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[float_spectrum] PASSED [ 58%] 476s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[long_spectrum] PASSED [ 58%] 476s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[short_spectrum] PASSED [ 58%] 476s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[string_spectrum] XFAIL [ 59%] 476s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[uchar_spectrum] PASSED [ 59%] 476s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[ushort_spectrum] PASSED [ 59%] 476s tests/test_device_proxy.py::test_write_read_string_attribute PASSED [ 59%] 477s tests/test_device_proxy.py::test_set_non_existent_attribute_raises_by_default PASSED [ 59%] 477s tests/test_device_proxy.py::test_set_non_existent_attribute_allowed_if_dynamic_interface_unfrozen PASSED [ 59%] 477s tests/test_device_proxy.py::test_dynamic_interface_can_be_toggled PASSED [ 59%] 477s tests/test_device_proxy.py::test_dynamic_interface_flag_can_be_read PASSED [ 59%] 477s tests/test_device_proxy.py::test_dynamic_interface_only_applies_to_device_proxy_instance PASSED [ 59%] 477s tests/test_device_proxy.py::test_dynamic_interface_unfreeze_generates_a_user_warning PASSED [ 59%] 477s tests/test_device_proxy.py::test_read_attribute_config SKIPPED (This...) [ 59%] 477s tests/test_device_proxy.py::test_read_attribute_config_ex PASSED [ 60%] 477s tests/test_device_proxy.py::test_attribute_list_query SKIPPED (This ...) [ 60%] 477s tests/test_device_proxy.py::test_attribute_list_query_ex SKIPPED (Th...) [ 60%] 477s tests/test_device_proxy.py::test_device_proxy_dir_method PASSED [ 60%] 477s tests/test_device_proxy.py::test_device_polling_command PASSED [ 60%] 477s tests/test_device_proxy.py::test_device_polling_attribute PASSED [ 60%] 478s tests/test_device_proxy.py::test_command_string PASSED [ 60%] 478s tests/test_device_proxy.py::test_command_raises_type_error_for_bad_input PASSED [ 60%] 478s tests/test_device_proxy.py::test_repr_uses_info[Synchronous] PASSED [ 60%] 478s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Synchronous] PASSED [ 60%] 478s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Synchronous] PASSED [ 60%] 478s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Synchronous] PASSED [ 60%] 478s tests/test_device_proxy.py::test_no_memory_leak_for_str[Synchronous] PASSED [ 61%] 478s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Synchronous] PASSED [ 61%] 478s tests/test_device_proxy.py::test_repr_uses_info[Futures] PASSED [ 61%] 478s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Futures] PASSED [ 61%] 478s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Futures] PASSED [ 61%] 478s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Futures] PASSED [ 61%] 478s tests/test_device_proxy.py::test_no_memory_leak_for_str[Futures] PASSED [ 61%] 478s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Futures] PASSED [ 61%] 478s tests/test_device_proxy.py::test_repr_uses_info[Gevent] PASSED [ 61%] 478s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Gevent] PASSED [ 61%] 478s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Gevent] PASSED [ 61%] 478s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Gevent] PASSED [ 61%] 478s tests/test_device_proxy.py::test_no_memory_leak_for_str[Gevent] PASSED [ 62%] 479s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Gevent] PASSED [ 62%] 479s tests/test_device_proxy.py::test_repr_uses_info[Asyncio] FAILED [ 62%] 479s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Asyncio] FAILED [ 62%] 479s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Asyncio] FAILED [ 62%] 479s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Asyncio] FAILED [ 62%] 479s tests/test_device_proxy.py::test_no_memory_leak_for_str[Asyncio] FAILED [ 62%] 479s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Asyncio] FAILED [ 62%] 479s tests/test_device_proxy.py::test_client_destructor_does_not_deadlock[group_client_lifecycle] SKIPPED [ 62%] 479s tests/test_device_proxy.py::test_client_destructor_does_not_deadlock[device_proxy_lifecycle] SKIPPED [ 62%] 479s tests/test_group.py::test_nested_multi_group PASSED [ 62%] 479s tests/test_group.py::test_read_write_attribute PASSED [ 62%] 480s tests/test_group.py::test_command PASSED [ 63%] 480s tests/test_log.py::test_logging_decorators PASSED [ 63%] 480s tests/test_log.py::test_async_logging_decorators FAILED [ 63%] 480s tests/test_log.py::test_tango_stream PASSED [ 63%] 480s tests/test_log.py::test_logging[Synchronous] PASSED [ 63%] 480s tests/test_log.py::test_logging[Asyncio] FAILED [ 63%] 480s tests/test_log.py::test_logging[Gevent] PASSED [ 63%] 480s tests/test_log.py::test_decorator_logging_source_location[Synchronous] SKIPPED [ 63%] 480s tests/test_log.py::test_decorator_logging_source_location[Asyncio] SKIPPED [ 63%] 480s tests/test_log.py::test_decorator_logging_source_location[Gevent] SKIPPED [ 63%] 480s tests/test_log.py::test_stream_logging_source_location[Synchronous] SKIPPED [ 63%] 480s tests/test_log.py::test_stream_logging_source_location[Asyncio] SKIPPED [ 64%] 480s tests/test_log.py::test_stream_logging_source_location[Gevent] SKIPPED [ 64%] 480s tests/test_multi_attr_prop.py::test_stuff PASSED [ 64%] 480s tests/test_properties.py::test_device_property_no_default[int] PASSED [ 64%] 480s tests/test_properties.py::test_device_property_no_default[float] PASSED [ 64%] 480s tests/test_properties.py::test_device_property_no_default[str] PASSED [ 64%] 480s tests/test_properties.py::test_device_property_no_default[bool] PASSED [ 64%] 480s tests/test_properties.py::test_device_property_no_default[(int,)] PASSED [ 64%] 481s tests/test_properties.py::test_device_property_no_default[(float,)] PASSED [ 64%] 481s tests/test_properties.py::test_device_property_no_default[(str,)] PASSED [ 64%] 481s tests/test_properties.py::test_device_property_no_default[(bool,)] PASSED [ 64%] 481s tests/test_properties.py::test_device_property_with_typing[int] PASSED [ 64%] 481s tests/test_properties.py::test_device_property_with_typing[float] PASSED [ 65%] 481s tests/test_properties.py::test_device_property_with_typing[str] PASSED [ 65%] 481s tests/test_properties.py::test_device_property_with_typing[bool] PASSED [ 65%] 481s tests/test_properties.py::test_device_property_with_typing[(int,)] PASSED [ 65%] 481s tests/test_properties.py::test_device_property_with_typing[(float,)] PASSED [ 65%] 481s tests/test_properties.py::test_device_property_with_typing[(str,)] PASSED [ 65%] 481s tests/test_properties.py::test_device_property_with_typing[(bool,)] PASSED [ 65%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[bool, SCALAR] PASSED [ 65%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[bool], SPECTRUM] PASSED [ 65%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[uint8, SCALAR] XFAIL [ 65%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint8], SPECTRUM] XFAIL [ 65%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[int16, SCALAR] PASSED [ 65%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[int16], SPECTRUM] PASSED [ 66%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[uint16, SCALAR] PASSED [ 66%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint16], SPECTRUM] PASSED [ 66%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[int32, SCALAR] PASSED [ 66%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[int32], SPECTRUM] PASSED [ 66%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[uint32, SCALAR] PASSED [ 66%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint32], SPECTRUM] PASSED [ 66%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[int64, SCALAR] PASSED [ 66%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[int64], SPECTRUM] PASSED [ 66%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[uint64, SCALAR] PASSED [ 66%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint64], SPECTRUM] PASSED [ 66%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[float64, SCALAR] PASSED [ 67%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[float64], SPECTRUM] PASSED [ 67%] 481s tests/test_properties.py::test_device_property_with_numpy_typing[float32, SCALAR] PASSED [ 67%] 482s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[float32], SPECTRUM] PASSED [ 67%] 482s tests/test_properties.py::test_device_property_with_default_value[int] PASSED [ 67%] 482s tests/test_properties.py::test_device_property_with_default_value[float] PASSED [ 67%] 482s tests/test_properties.py::test_device_property_with_default_value[str] PASSED [ 67%] 482s tests/test_properties.py::test_device_property_with_default_value[bool] PASSED [ 67%] 482s tests/test_properties.py::test_device_property_with_default_value[(int,)] PASSED [ 67%] 482s tests/test_properties.py::test_device_property_with_default_value[(float,)] PASSED [ 67%] 482s tests/test_properties.py::test_device_property_with_default_value[(str,)] PASSED [ 67%] 482s tests/test_properties.py::test_device_property_with_default_value[(bool,)] PASSED [ 67%] 482s tests/test_properties.py::test_device_get_device_properties_when_init_device PASSED [ 68%] 482s tests/test_properties.py::test_mandatory_device_property_with_db_value_succeeds[True] PASSED [ 68%] 482s tests/test_properties.py::test_mandatory_device_property_with_db_value_succeeds[False] PASSED [ 68%] 482s tests/test_server.py::test_uncorrect_typing_hints[property-tuple-Property does not support IMAGE type0] PASSED [ 68%] 482s tests/test_server.py::test_uncorrect_typing_hints[property-tuple-Property does not support IMAGE type1] PASSED [ 68%] 482s tests/test_server.py::test_uncorrect_typing_hints[property-tuple-PyTango does not support mixed types] PASSED [ 68%] 482s tests/test_server.py::test_uncorrect_typing_hints[attribute-tuple-PyTango does not support mixed types0] PASSED [ 68%] 482s tests/test_server.py::test_uncorrect_typing_hints[attribute-tuple-PyTango does not support mixed types1] PASSED [ 68%] 482s tests/test_server.py::test_uncorrect_typing_hints[attribute-tuple-PyTango does not support mixed types2] PASSED [ 68%] 482s tests/test_server.py::test_uncorrect_typing_hints[attribute-Callable-Cannot translate] PASSED [ 68%] 482s tests/test_server.py::test_get_enum_labels_success[GoodEnum] PASSED [ 68%] 482s tests/test_server.py::test_get_enum_labels_fail[BadEnumNonZero] PASSED [ 68%] 482s tests/test_server.py::test_get_enum_labels_fail[BadEnumSkipValues] PASSED [ 69%] 482s tests/test_server.py::test_get_enum_labels_fail[BadEnumDuplicates] PASSED [ 69%] 482s tests/test_server.py::test_device_classes_use_latest_implementation PASSED [ 69%] 482s tests/test_server.py::test_empty_device[Synchronous] PASSED [ 69%] 482s tests/test_server.py::test_empty_device[Asyncio] FAILED [ 69%] 482s tests/test_server.py::test_empty_device[Gevent] PASSED [ 69%] 482s tests/test_server.py::test_set_desc_status_state_at_init[doc] PASSED [ 69%] 482s tests/test_server.py::test_set_desc_status_state_at_init[description] PASSED [ 69%] 482s tests/test_server.py::test_set_state_status[ON-Synchronous-False] PASSED [ 69%] 483s tests/test_server.py::test_set_state_status[ON-Synchronous-True] PASSED [ 69%] 483s tests/test_server.py::test_set_state_status[ON-Asyncio-False] FAILED [ 69%] 483s tests/test_server.py::test_set_state_status[ON-Asyncio-True] FAILED [ 70%] 483s tests/test_server.py::test_set_state_status[ON-Gevent-False] PASSED [ 70%] 483s tests/test_server.py::test_set_state_status[ON-Gevent-True] PASSED [ 70%] 483s tests/test_server.py::test_set_state_status[OFF-Synchronous-False] PASSED [ 70%] 483s tests/test_server.py::test_set_state_status[OFF-Synchronous-True] PASSED [ 70%] 483s tests/test_server.py::test_set_state_status[OFF-Asyncio-False] FAILED [ 70%] 484s tests/test_server.py::test_set_state_status[OFF-Asyncio-True] FAILED [ 70%] 484s tests/test_server.py::test_set_state_status[OFF-Gevent-False] PASSED [ 70%] 484s tests/test_server.py::test_set_state_status[OFF-Gevent-True] PASSED [ 70%] 484s tests/test_server.py::test_set_state_status[CLOSE-Synchronous-False] PASSED [ 70%] 484s tests/test_server.py::test_set_state_status[CLOSE-Synchronous-True] PASSED [ 70%] 484s tests/test_server.py::test_set_state_status[CLOSE-Asyncio-False] FAILED [ 70%] 484s tests/test_server.py::test_set_state_status[CLOSE-Asyncio-True] FAILED [ 71%] 484s tests/test_server.py::test_set_state_status[CLOSE-Gevent-False] PASSED [ 71%] 484s tests/test_server.py::test_set_state_status[CLOSE-Gevent-True] PASSED [ 71%] 484s tests/test_server.py::test_set_state_status[OPEN-Synchronous-False] PASSED [ 71%] 484s tests/test_server.py::test_set_state_status[OPEN-Synchronous-True] PASSED [ 71%] 485s tests/test_server.py::test_set_state_status[OPEN-Asyncio-False] FAILED [ 71%] 485s tests/test_server.py::test_set_state_status[OPEN-Asyncio-True] FAILED [ 71%] 485s tests/test_server.py::test_set_state_status[OPEN-Gevent-False] PASSED [ 71%] 485s tests/test_server.py::test_set_state_status[OPEN-Gevent-True] PASSED [ 71%] 485s tests/test_server.py::test_set_state_status[INSERT-Synchronous-False] PASSED [ 71%] 485s tests/test_server.py::test_set_state_status[INSERT-Synchronous-True] PASSED [ 71%] 485s tests/test_server.py::test_set_state_status[INSERT-Asyncio-False] FAILED [ 71%] 485s tests/test_server.py::test_set_state_status[INSERT-Asyncio-True] FAILED [ 72%] 485s tests/test_server.py::test_set_state_status[INSERT-Gevent-False] PASSED [ 72%] 486s tests/test_server.py::test_set_state_status[INSERT-Gevent-True] PASSED [ 72%] 486s tests/test_server.py::test_set_state_status[EXTRACT-Synchronous-False] PASSED [ 72%] 486s tests/test_server.py::test_set_state_status[EXTRACT-Synchronous-True] PASSED [ 72%] 486s tests/test_server.py::test_set_state_status[EXTRACT-Asyncio-False] FAILED [ 72%] 486s tests/test_server.py::test_set_state_status[EXTRACT-Asyncio-True] FAILED [ 72%] 486s tests/test_server.py::test_set_state_status[EXTRACT-Gevent-False] PASSED [ 72%] 486s tests/test_server.py::test_set_state_status[EXTRACT-Gevent-True] PASSED [ 72%] 486s tests/test_server.py::test_set_state_status[MOVING-Synchronous-False] PASSED [ 72%] 486s tests/test_server.py::test_set_state_status[MOVING-Synchronous-True] PASSED [ 72%] 486s tests/test_server.py::test_set_state_status[MOVING-Asyncio-False] FAILED [ 72%] 487s tests/test_server.py::test_set_state_status[MOVING-Asyncio-True] FAILED [ 73%] 487s tests/test_server.py::test_set_state_status[MOVING-Gevent-False] PASSED [ 73%] 487s tests/test_server.py::test_set_state_status[MOVING-Gevent-True] PASSED [ 73%] 487s tests/test_server.py::test_set_state_status[STANDBY-Synchronous-False] PASSED [ 73%] 487s tests/test_server.py::test_set_state_status[STANDBY-Synchronous-True] PASSED [ 73%] 487s tests/test_server.py::test_set_state_status[STANDBY-Asyncio-False] FAILED [ 73%] 487s tests/test_server.py::test_set_state_status[STANDBY-Asyncio-True] FAILED [ 73%] 487s tests/test_server.py::test_set_state_status[STANDBY-Gevent-False] PASSED [ 73%] 487s tests/test_server.py::test_set_state_status[STANDBY-Gevent-True] PASSED [ 73%] 487s tests/test_server.py::test_set_state_status[FAULT-Synchronous-False] PASSED [ 73%] 487s tests/test_server.py::test_set_state_status[FAULT-Synchronous-True] PASSED [ 73%] 488s tests/test_server.py::test_set_state_status[FAULT-Asyncio-False] FAILED [ 74%] 488s tests/test_server.py::test_set_state_status[FAULT-Asyncio-True] FAILED [ 74%] 488s tests/test_server.py::test_set_state_status[FAULT-Gevent-False] PASSED [ 74%] 488s tests/test_server.py::test_set_state_status[FAULT-Gevent-True] PASSED [ 74%] 488s tests/test_server.py::test_set_state_status[INIT-Synchronous-False] PASSED [ 74%] 488s tests/test_server.py::test_set_state_status[INIT-Synchronous-True] PASSED [ 74%] 488s tests/test_server.py::test_set_state_status[INIT-Asyncio-False] FAILED [ 74%] 489s tests/test_server.py::test_set_state_status[INIT-Asyncio-True] FAILED [ 74%] 489s tests/test_server.py::test_set_state_status[INIT-Gevent-False] PASSED [ 74%] 489s tests/test_server.py::test_set_state_status[INIT-Gevent-True] PASSED [ 74%] 489s tests/test_server.py::test_set_state_status[RUNNING-Synchronous-False] PASSED [ 74%] 489s tests/test_server.py::test_set_state_status[RUNNING-Synchronous-True] PASSED [ 74%] 489s tests/test_server.py::test_set_state_status[RUNNING-Asyncio-False] FAILED [ 75%] 489s tests/test_server.py::test_set_state_status[RUNNING-Asyncio-True] FAILED [ 75%] 489s tests/test_server.py::test_set_state_status[RUNNING-Gevent-False] PASSED [ 75%] 489s tests/test_server.py::test_set_state_status[RUNNING-Gevent-True] PASSED [ 75%] 489s tests/test_server.py::test_set_state_status[ALARM-Synchronous-False] PASSED [ 75%] 489s tests/test_server.py::test_set_state_status[ALARM-Synchronous-True] PASSED [ 75%] 490s tests/test_server.py::test_set_state_status[ALARM-Asyncio-False] FAILED [ 75%] 490s tests/test_server.py::test_set_state_status[ALARM-Asyncio-True] FAILED [ 75%] 490s tests/test_server.py::test_set_state_status[ALARM-Gevent-False] PASSED [ 75%] 490s tests/test_server.py::test_set_state_status[ALARM-Gevent-True] PASSED [ 75%] 490s tests/test_server.py::test_set_state_status[DISABLE-Synchronous-False] PASSED [ 75%] 490s tests/test_server.py::test_set_state_status[DISABLE-Synchronous-True] PASSED [ 75%] 490s tests/test_server.py::test_set_state_status[DISABLE-Asyncio-False] FAILED [ 76%] 490s tests/test_server.py::test_set_state_status[DISABLE-Asyncio-True] FAILED [ 76%] 490s tests/test_server.py::test_set_state_status[DISABLE-Gevent-False] PASSED [ 76%] 490s tests/test_server.py::test_set_state_status[DISABLE-Gevent-True] PASSED [ 76%] 491s tests/test_server.py::test_set_state_status[UNKNOWN-Synchronous-False] PASSED [ 76%] 491s tests/test_server.py::test_set_state_status[UNKNOWN-Synchronous-True] PASSED [ 76%] 491s tests/test_server.py::test_set_state_status[UNKNOWN-Asyncio-False] FAILED [ 76%] 491s tests/test_server.py::test_set_state_status[UNKNOWN-Asyncio-True] FAILED [ 76%] 491s tests/test_server.py::test_set_state_status[UNKNOWN-Gevent-False] PASSED [ 76%] 491s tests/test_server.py::test_set_state_status[UNKNOWN-Gevent-True] PASSED [ 76%] 491s tests/test_server.py::test_user_dev_state_status[Synchronous] PASSED [ 76%] 491s tests/test_server.py::test_user_dev_state_status[Asyncio] FAILED [ 77%] 491s tests/test_server.py::test_user_dev_state_status[Gevent] PASSED [ 77%] 491s tests/test_server.py::test_attr_quality_checked_with_state[Synchronous] PASSED [ 77%] 492s tests/test_server.py::test_attr_quality_checked_with_state[Asyncio] FAILED [ 77%] 492s tests/test_server.py::test_attr_quality_checked_with_state[Gevent] PASSED [ 77%] 492s tests/test_server.py::test_device_get_attr_config[Synchronous] PASSED [ 77%] 492s tests/test_server.py::test_device_get_attr_config[Asyncio] FAILED [ 77%] 492s tests/test_server.py::test_device_get_attr_config[Gevent] PASSED [ 77%] 492s tests/test_server.py::test_device_set_attr_config[Synchronous] PASSED [ 77%] 492s tests/test_server.py::test_device_set_attr_config[Asyncio] FAILED [ 77%] 492s tests/test_server.py::test_device_set_attr_config[Gevent] PASSED [ 77%] 492s tests/test_server.py::test_default_units PASSED [ 77%] 492s tests/test_server.py::test_custom_units PASSED [ 78%] 492s tests/test_server.py::test_inheritance_overrides_a_property PASSED [ 78%] 493s tests/test_server.py::test_inheritance_override_dev_status PASSED [ 78%] 493s tests/test_server.py::test_inheritance_init_device PASSED [ 78%] 493s tests/test_server.py::test_inheritance_with_decorated_attributes PASSED [ 78%] 493s tests/test_server.py::test_inheritance_with_undecorated_attributes PASSED [ 78%] 493s tests/test_server.py::test_inheritance_with_undecorated_attribute_and_bound_methods PASSED [ 78%] 493s tests/test_server.py::test_inheritance_with_undecorated_attributes_and_unbound_functions PASSED [ 78%] 493s tests/test_server.py::test_inheritance_command_is_allowed_by_naming_convention PASSED [ 78%] 493s tests/test_server.py::test_inheritance_command_is_allowed_by_kwarg_method PASSED [ 78%] 493s tests/test_server.py::test_inheritance_command_is_allowed_by_kwarg_unbound_function PASSED [ 78%] 493s tests/test_server.py::test_exception_propagation[Synchronous] PASSED [ 78%] 493s tests/test_server.py::test_exception_propagation[Asyncio] FAILED [ 79%] 493s tests/test_server.py::test_exception_propagation[Gevent] PASSED [ 79%] 493s tests/test_server.py::test_arguments[linux-applicable_os0-MyDs instance --nodb --port 1234-expected_output0] PASSED [ 79%] 493s tests/test_server.py::test_arguments[linux-applicable_os1-MyDs -port 1234 -host myhost instance-expected_output1] PASSED [ 79%] 493s tests/test_server.py::test_arguments[linux-applicable_os2-MyDs instance --ORBendPoint giop:tcp:_:1234-expected_output2] PASSED [ 79%] 493s tests/test_server.py::test_arguments[linux-applicable_os3-MyDs instance -nodb -port 1000 -dlist a/b/c;d/e/f-expected_output3] PASSED [ 79%] 493s tests/test_server.py::test_arguments[linux-applicable_os4-MyDs instance -file a/b/c-expected_output4] PASSED [ 79%] 493s tests/test_server.py::test_arguments[linux-applicable_os5-MyDs instance -nodb-expected_output5] PASSED [ 79%] 493s tests/test_server.py::test_arguments[linux-applicable_os6-MyDs instance -dlist a/b/c;d/e/f-expected_output6] PASSED [ 79%] 493s tests/test_server.py::test_arguments[linux-applicable_os7-MyDs instance -vvvv-expected_output7] PASSED [ 79%] 493s tests/test_server.py::test_arguments[linux-applicable_os8-MyDs instance --verbose --verbose --verbose --verbose-expected_output8] PASSED [ 79%] 493s tests/test_server.py::test_arguments[linux-applicable_os9-MyDs instance -v4-expected_output9] PASSED [ 80%] 493s tests/test_server.py::test_arguments[linux-applicable_os10-MyDs instance -v 4-expected_output10] PASSED [ 80%] 493s tests/test_server.py::test_arguments[linux-applicable_os11-MyDs instance -dbg -i -s -u-expected_output11] PASSED [ 80%] 493s tests/test_server.py::test_arguments[linux-applicable_os12-MyDs instance -ORBtest1 test1 --ORBtest2 test2-expected_output12] PASSED [ 80%] 493s tests/test_server.py::test_arguments[linux-applicable_os13-MyDs ORBinstance -ORBtest myORBparam-expected_output13] PASSED [ 80%] 493s tests/test_server.py::test_arguments[linux-applicable_os14-MyDs instance -nodb -ORBendPoint giop:tcp:localhost:1234 -ORBendPointPublish giop:tcp:myhost.local:2345-expected_output14] PASSED [ 80%] 493s tests/test_server.py::test_arguments[linux-applicable_os15-MyDs instance -ORBtest1 test1 --orbinvalid value-expected_output15] PASSED [ 80%] 493s tests/test_server.py::test_arguments[win-applicable_os0-MyDs instance --nodb --port 1234-expected_output0] PASSED [ 80%] 493s tests/test_server.py::test_arguments[win-applicable_os1-MyDs -port 1234 -host myhost instance-expected_output1] PASSED [ 80%] 493s tests/test_server.py::test_arguments[win-applicable_os2-MyDs instance --ORBendPoint giop:tcp:_:1234-expected_output2] PASSED [ 80%] 493s tests/test_server.py::test_arguments[win-applicable_os3-MyDs instance -nodb -port 1000 -dlist a/b/c;d/e/f-expected_output3] PASSED [ 80%] 493s tests/test_server.py::test_arguments[win-applicable_os4-MyDs instance -file a/b/c-expected_output4] PASSED [ 80%] 493s tests/test_server.py::test_arguments[win-applicable_os5-MyDs instance -nodb-expected_output5] PASSED [ 81%] 493s tests/test_server.py::test_arguments[win-applicable_os6-MyDs instance -dlist a/b/c;d/e/f-expected_output6] PASSED [ 81%] 493s tests/test_server.py::test_arguments[win-applicable_os7-MyDs instance -vvvv-expected_output7] PASSED [ 81%] 493s tests/test_server.py::test_arguments[win-applicable_os8-MyDs instance --verbose --verbose --verbose --verbose-expected_output8] PASSED [ 81%] 493s tests/test_server.py::test_arguments[win-applicable_os9-MyDs instance -v4-expected_output9] PASSED [ 81%] 493s tests/test_server.py::test_arguments[win-applicable_os10-MyDs instance -v 4-expected_output10] PASSED [ 81%] 493s tests/test_server.py::test_arguments[win-applicable_os11-MyDs instance -dbg -i -s -u-expected_output11] PASSED [ 81%] 493s tests/test_server.py::test_arguments[win-applicable_os12-MyDs instance -ORBtest1 test1 --ORBtest2 test2-expected_output12] PASSED [ 81%] 494s tests/test_server.py::test_arguments[win-applicable_os13-MyDs ORBinstance -ORBtest myORBparam-expected_output13] PASSED [ 81%] 494s tests/test_server.py::test_arguments[win-applicable_os14-MyDs instance -nodb -ORBendPoint giop:tcp:localhost:1234 -ORBendPointPublish giop:tcp:myhost.local:2345-expected_output14] PASSED [ 81%] 494s tests/test_server.py::test_arguments[win-applicable_os15-MyDs instance -ORBtest1 test1 --orbinvalid value-expected_output15] PASSED [ 81%] 494s tests/test_server.py::test_server_init_hook_called[Synchronous] PASSED [ 81%] 494s tests/test_server.py::test_server_init_hook_called[Asyncio] SKIPPED [ 82%] 494s tests/test_server.py::test_server_init_hook_called[Gevent] PASSED [ 82%] 494s tests/test_server.py::test_server_init_hook_change_state PASSED [ 82%] 494s tests/test_server.py::test_asyncio_server_init_hook_change_state FAILED [ 82%] 494s tests/test_server.py::test_server_init_hook_called_after_init PASSED [ 82%] 494s tests/test_server.py::test_async_server_init_hook_called_after_init FAILED [ 82%] 494s tests/test_server.py::test_server_init_hook_exception PASSED [ 82%] 494s tests/test_server.py::test_asyncio_server_init_hook_exception FAILED [ 82%] 494s tests/test_server.py::test_server_init_hook_with_low_level_api_called PASSED [ 82%] 495s tests/test_server.py::test_server_init_hook_with_low_level_api_change_state PASSED [ 82%] 495s tests/test_server.py::test_server_init_hook_with_low_level_api_called_after_init PASSED [ 82%] 495s tests/test_server.py::test_server_init_hook_with_low_level_api_exception PASSED [ 82%] 495s tests/test_server.py::test_server_init_multiple_devices PASSED [ 83%] 495s tests/test_server.py::test_server_init_hook_subscribe_event_multiple_devices XFAIL [ 83%] 495s tests/test_server.py::test_deprecation_warning_for_sync_attr_com_methods_in_asyncio_device FAILED [ 83%] 495s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[init_device] FAILED [ 83%] 495s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[delete_device] FAILED [ 83%] 496s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_state] FAILED [ 83%] 496s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_status] FAILED [ 83%] 496s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[read_attr_hardware] FAILED [ 83%] 496s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[always_executed_hook] FAILED [ 83%] 497s tests/test_server.py::test_no_sync_attribute_locks[Synchronous] SKIPPED [ 83%] 497s tests/test_server.py::test_no_sync_attribute_locks[Asyncio] SKIPPED [ 83%] 497s tests/test_server.py::test_no_sync_attribute_locks[Gevent] SKIPPED (...) [ 84%] 497s tests/test_server.py::test_read_slow_and_fast_attributes_with_asyncio SKIPPED [ 84%] 497s tests/test_server.py::test_get_version_info_classic_api PASSED [ 84%] 497s tests/test_server.py::test_get_version_info_high_level_api PASSED [ 84%] 497s tests/test_server.py::test_add_version_info_classic_api PASSED [ 84%] 497s tests/test_server.py::test_add_version_info_high_level_api PASSED [ 84%] 497s tests/test_server.py::test_restart_server_command_cpp_and_py SKIPPED [ 84%] 497s tests/test_server.py::test_attr_data_default_fwd_properties PASSED [ 84%] 497s tests/test_server.py::test_attr_data_default_properties PASSED [ 84%] 497s tests/test_server.py::test_attr_data_default_properties_throws_on_unknown PASSED [ 84%] 497s tests/test_server.py::test_attr_data_enum_labels PASSED [ 84%] 497s tests/test_server.py::test_attr_data_to_attr PASSED [ 84%] 497s tests/test_server.py::test_from_attr_info_exceptions[some string-Wrong data type for value for describing attribute] PASSED [ 85%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info1-Wrong number of argument for describing attribute] PASSED [ 85%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info2-Wrong number of argument for describing attribute] PASSED [ 85%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info3-Wrong data type for describing mandatory information] PASSED [ 85%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info4-Wrong data type for describing mandatory information] PASSED [ 85%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info5-Wrong data type in attribute argument for attribute] PASSED [ 85%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info6-Wrong data format in attribute argument for attribute] PASSED [ 85%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info7-Sequence describing mandatory attribute parameters for scalar attribute must have 3 elements] PASSED [ 85%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info8-Sequence describing mandatory attribute parameters for spectrum attribute must have 4 elements] PASSED [ 85%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info9-mandatory dim_x attribute parameter for spectrum attribute must be an integer] PASSED [ 85%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info10-Sequence describing mandatory attribute parameters for image attribute must have 5 elements] PASSED [ 85%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info11-mandatory dim_x attribute parameter for image attribute must be an integer] PASSED [ 85%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info12-mandatory dim_y attribute parameter for image attribute must be an integer] PASSED [ 86%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info13-Wrong data write type in attribute argument] PASSED [ 86%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info14-Wrong display level] PASSED [ 86%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info15-Wrong polling period] PASSED [ 86%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info16-Wrong memorized value] PASSED [ 86%] 497s tests/test_server.py::test_from_attr_info_exceptions[attr_info17-Missing 'enum_labels' key in attr_list definition] PASSED [ 86%] 497s tests/test_server.py::test_from_attr_info_hw_memorized PASSED [ 86%] 497s tests/test_server.py::test_from_attr_info_memorized PASSED [ 86%] 497s tests/test_server.py::test_device_repr_does_not_segfault_with_pytest PASSED [ 86%] 497s tests/test_telemetry.py::test_telemetry_available_constant_exists PASSED [ 86%] 497s tests/test_telemetry.py::test_telemetry_packages_available_if_telemetry_active SKIPPED [ 86%] 497s tests/test_telemetry.py::test_init_device_and_basic_span_details[Synchronous] SKIPPED [ 87%] 497s tests/test_telemetry.py::test_init_device_and_basic_span_details[Asyncio] SKIPPED [ 87%] 497s tests/test_telemetry.py::test_init_device_and_basic_span_details[Gevent] SKIPPED [ 87%] 497s tests/test_telemetry.py::test_delete_device[Synchronous] SKIPPED (Te...) [ 87%] 497s tests/test_telemetry.py::test_delete_device[Asyncio] SKIPPED (Teleme...) [ 87%] 497s tests/test_telemetry.py::test_delete_device[Gevent] SKIPPED (Telemet...) [ 87%] 497s tests/test_telemetry.py::test_state[Synchronous] SKIPPED (Telemetry ...) [ 87%] 497s tests/test_telemetry.py::test_state[Asyncio] SKIPPED (Telemetry not ...) [ 87%] 497s tests/test_telemetry.py::test_state[Gevent] SKIPPED (Telemetry not a...) [ 87%] 497s tests/test_telemetry.py::test_static_command[Synchronous] SKIPPED (T...) [ 87%] 497s tests/test_telemetry.py::test_static_command[Asyncio] SKIPPED (Telem...) [ 87%] 497s tests/test_telemetry.py::test_static_command[Gevent] SKIPPED (Teleme...) [ 87%] 497s tests/test_telemetry.py::test_static_attribute[Synchronous] SKIPPED [ 88%] 497s tests/test_telemetry.py::test_static_attribute[Asyncio] SKIPPED (Tel...) [ 88%] 497s tests/test_telemetry.py::test_static_attribute[Gevent] SKIPPED (Tele...) [ 88%] 497s tests/test_telemetry.py::test_user_span_traceid_propagates_to_tango[Synchronous] SKIPPED [ 88%] 497s tests/test_telemetry.py::test_user_span_traceid_propagates_to_tango[Asyncio] SKIPPED [ 88%] 497s tests/test_telemetry.py::test_user_span_traceid_propagates_to_tango[Gevent] SKIPPED [ 88%] 497s tests/test_telemetry.py::test_base_device_kernel_tracing_disabled_by_default SKIPPED [ 88%] 497s tests/test_telemetry.py::test_base_device_traces_if_kernel_tracing_enabled[Synchronous] SKIPPED [ 88%] 497s tests/test_telemetry.py::test_base_device_traces_if_kernel_tracing_enabled[Asyncio] SKIPPED [ 88%] 497s tests/test_telemetry.py::test_base_device_traces_if_kernel_tracing_enabled[Gevent] SKIPPED [ 88%] 497s tests/test_telemetry.py::test_no_device_traces_if_device_tracing_disabled[Synchronous] SKIPPED [ 88%] 497s tests/test_telemetry.py::test_no_device_traces_if_device_tracing_disabled[Asyncio] SKIPPED [ 88%] 497s tests/test_telemetry.py::test_no_device_traces_if_device_tracing_disabled[Gevent] SKIPPED [ 89%] 497s tests/test_test_context.py::test_no_warnings_in_test_context PASSED [ 89%] 497s tests/test_test_context.py::test_single_device[Synchronous] PASSED [ 89%] 498s tests/test_test_context.py::test_single_device[Asyncio] FAILED [ 89%] 498s tests/test_test_context.py::test_single_device[Gevent] PASSED [ 89%] 498s tests/test_test_context.py::test_single_device_old_api PASSED [ 89%] 498s tests/test_test_context.py::test_nested_single_device_in_same_process_failure SKIPPED [ 89%] 499s tests/test_test_context.py::test_nested_single_device_in_different_processes_success_without_short_names PASSED [ 89%] 500s tests/test_test_context.py::test_nested_single_device_in_different_processes_failure_with_short_names PASSED [ 89%] 500s tests/test_test_context.py::test_multi_devices_info[SimpleDevice-SimpleDevice] PASSED [ 89%] 500s tests/test_test_context.py::test_multi_devices_info[tango.test_utils.SimpleDevice-SimpleDevice] PASSED [ 89%] 500s tests/test_test_context.py::test_multi_devices_info[class_field2-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 500s tests/test_test_context.py::test_multi_devices_info[class_field3-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 500s tests/test_test_context.py::test_multi_devices_info[class_field4-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 500s tests/test_test_context.py::test_multi_devices_info[class_field5-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 500s tests/test_test_context.py::test_multi_with_single_device[Synchronous] PASSED [ 90%] 500s tests/test_test_context.py::test_multi_with_single_device[Asyncio] FAILED [ 90%] 500s tests/test_test_context.py::test_multi_with_single_device[Gevent] PASSED [ 90%] 500s tests/test_test_context.py::test_multi_with_single_device_old_api PASSED [ 90%] 500s tests/test_test_context.py::test_multi_with_two_devices[Synchronous] PASSED [ 90%] 501s tests/test_test_context.py::test_multi_with_two_devices[Asyncio] FAILED [ 90%] 501s tests/test_test_context.py::test_multi_with_two_devices[Gevent] PASSED [ 90%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2GreenModeUnspecified-None] PASSED [ 90%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2Synchronous-None] PASSED [ 91%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2Gevent-ValueError] PASSED [ 91%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2Asyncio-ValueError] PASSED [ 91%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2GreenModeUnspecified-None] PASSED [ 91%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2Synchronous-None] PASSED [ 91%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2Gevent-ValueError] PASSED [ 91%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2Asyncio-ValueError] PASSED [ 91%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2GreenModeUnspecified-ValueError] PASSED [ 91%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Synchronous-ValueError] PASSED [ 91%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Gevent-ValueError] PASSED [ 91%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Asyncio-None] FAILED [ 91%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2GreenModeUnspecified-ValueError] PASSED [ 91%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2Synchronous-ValueError] PASSED [ 92%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2Gevent-None] PASSED [ 92%] 501s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2Asyncio-ValueError] PASSED [ 92%] 501s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Synchronous-Asyncio-Asyncio-None-SynchronousExecutor] FAILED [ 92%] 501s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Synchronous-Gevent-Gevent-None-SynchronousExecutor] PASSED [ 92%] 502s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Synchronous-Synchronous-None-AsyncioExecutor] FAILED [ 92%] 502s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Gevent-Gevent-None-AsyncioExecutor] FAILED [ 92%] 502s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Gevent-Synchronous-Synchronous-None-GeventExecutor] PASSED [ 92%] 502s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Gevent-Asyncio-Asyncio-None-GeventExecutor] FAILED [ 92%] 502s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Synchronous-Asyncio-None-SynchronousExecutor] FAILED [ 92%] 502s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Synchronous-Gevent-None-SynchronousExecutor] PASSED [ 92%] 502s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Gevent-Synchronous-None-GeventExecutor] PASSED [ 92%] 503s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Gevent-Asyncio-None-GeventExecutor] FAILED [ 93%] 503s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-None-Synchronous-None-SynchronousExecutor] PASSED [ 93%] 503s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Synchronous-DeprecationWarning-AsyncioExecutor] FAILED [ 93%] 503s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Gevent-DeprecationWarning-AsyncioExecutor] FAILED [ 93%] 504s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-None-Asyncio-RuntimeError-AsyncioExecutor] PASSED [ 93%] 504s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-None-Gevent-RuntimeError-GeventExecutor] PASSED [ 93%] 505s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-None-Asyncio-RuntimeError-AsyncioExecutor] PASSED [ 93%] 505s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Gevent-None-Gevent-RuntimeError-GeventExecutor] PASSED [ 93%] 506s tests/test_test_context.py::test_multi_with_async_devices_initialised FAILED [ 93%] 506s tests/test_test_context.py::test_multi_device_access_via_test_context_methods PASSED [ 93%] 506s tests/test_test_context.py::test_multi_short_name_device_proxy_access_without_tango_db PASSED [ 93%] 507s tests/test_test_context.py::test_multi_short_name_device_proxy_with_dependencies_access_without_tango_db PASSED [ 94%] 507s tests/test_test_context.py::test_multi_short_name_attribute_proxy_access_without_tango_db PASSED [ 94%] 507s tests/test_test_context.py::test_single_short_name_device_proxy_access_without_tango_db PASSED [ 94%] 507s tests/test_test_context.py::test_single_short_name_attribute_proxy_access_without_tango_db PASSED [ 94%] 507s tests/test_test_context.py::test_multi_short_name_access_fails_if_override_disabled PASSED [ 94%] 507s tests/test_test_context.py::test_multi_device_proxy_cached PASSED [ 94%] 507s tests/test_test_context.py::test_multi_with_two_devices_with_properties[Synchronous] PASSED [ 94%] 507s tests/test_test_context.py::test_multi_with_two_devices_with_properties[Asyncio] FAILED [ 94%] 507s tests/test_test_context.py::test_multi_with_two_devices_with_properties[Gevent] PASSED [ 94%] 507s tests/test_test_context.py::test_multi_raises_on_invalid_file_database_properties PASSED [ 94%] 507s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config0] PASSED [ 94%] 507s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config1] PASSED [ 94%] 507s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config2] PASSED [ 95%] 508s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config3] PASSED [ 95%] 508s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config4] PASSED [ 95%] 508s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config5] PASSED [ 95%] 508s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config6] PASSED [ 95%] 508s tests/test_test_context.py::test_multi_with_memorized_attribute_values[False-None-0] PASSED [ 95%] 508s tests/test_test_context.py::test_multi_with_memorized_attribute_values[False-1-0] PASSED [ 95%] 508s tests/test_test_context.py::test_multi_with_memorized_attribute_values[True-None-0] PASSED [ 95%] 508s tests/test_test_context.py::test_multi_with_memorized_attribute_values[True-1-1] PASSED [ 95%] 508s tests/test_test_context.py::test_single_with_memorized_attribute_values[False-None-0] PASSED [ 95%] 508s tests/test_test_context.py::test_single_with_memorized_attribute_values[False-1-0] PASSED [ 95%] 508s tests/test_test_context.py::test_single_with_memorized_attribute_values[True-None-0] PASSED [ 95%] 508s tests/test_test_context.py::test_single_with_memorized_attribute_values[True-1-1] PASSED [ 96%] 508s tests/test_test_context.py::test_empty_string_property_bug[str-property_value0- ] PASSED [ 96%] 508s tests/test_test_context.py::test_empty_string_property_bug[property_type1-property_value1-expected_outcome1] PASSED [ 96%] 508s tests/test_test_context.py::test_empty_string_property_bug[property_type2-property_value2-expected_outcome2] PASSED [ 96%] 508s tests/test_test_context.py::test_test_context_async_device_proxy[True] FAILED [ 96%] 509s tests/test_test_context.py::test_test_context_async_device_proxy[False] FAILED [ 96%] 509s tests/test_test_context.py::test_test_context_multi_async_device_proxy[True] FAILED [ 96%] 509s tests/test_test_context.py::test_test_context_multi_async_device_proxy[False] FAILED [ 96%] 510s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[True-Futures] PASSED [ 96%] 510s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[True-Gevent] PASSED [ 96%] 510s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[False-Futures] PASSED [ 96%] 510s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[False-Gevent] PASSED [ 97%] 511s tests/test_test_context.py::test_forwarded_attributes[True] XFAIL (D...) [ 97%] 511s tests/test_test_context.py::test_forwarded_attributes[False] XFAIL (...) [ 97%] 511s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-a/b/c-a/b/c] PASSED [ 97%] 511s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-a/b/c/d-a/b/c/d] PASSED [ 97%] 511s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-tango://host:12/a/b/c-tango://host:12/a/b/c] PASSED [ 97%] 511s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-tango://host:12/a/b/c#dbase=no-tango://host:12/a/b/c#dbase=no] PASSED [ 97%] 511s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-no://trl/validation-no://trl/validation] PASSED [ 97%] 511s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[tango://host:12-a/b/c-tango://host:12/a/b/c] PASSED [ 97%] 511s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[tango://host:12-a/b/c/d-tango://host:12/a/b/c/d] PASSED [ 97%] 511s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[tango://host:12-tango://host:12/a/b/c-tango://host:12/a/b/c] PASSED [ 97%] 511s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[tango://host:12#dbase=no-a/b/c-tango://host:12/a/b/c#dbase=no] PASSED [ 97%] 511s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[tango://host:12#dbase=yes-a/b/c-tango://host:12/a/b/c#dbase=yes] PASSED [ 98%] 511s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[tango://127.0.0.1:12-a/b/c-tango://127.0.0.1:12/a/b/c] PASSED [ 98%] 511s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[host:123-a/b/c] PASSED [ 98%] 511s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://-a/b/c] PASSED [ 98%] 511s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://:123-a/b/c] PASSED [ 98%] 511s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host-a/b/c] PASSED [ 98%] 511s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:0-a/b/c] PASSED [ 98%] 511s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:12/path-a/b/c] PASSED [ 98%] 511s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:123?query=1-a/b/c] PASSED [ 98%] 511s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:123#dbase=invalid-a/b/c] PASSED [ 98%] 511s tests/test_utils.py::test_global_state_default_set_and_clear PASSED [ 98%] 511s tests/test_utils.py::test_clear_global_var_without_set_does_not_raise PASSED [ 98%] 511s tests/test_utils.py::test_get_tango_type_valid PASSED [ 99%] 511s tests/test_utils.py::test_get_tango_type_invalid_raises_type_error PASSED [ 99%] 511s tests/test_utils.py::test_sequence_to_string_vector_and_back PASSED [ 99%] 511s tests/test_utils.py::test_sequence_to_double_vector_and_back PASSED [ 99%] 511s tests/test_utils.py::test_sequence_to_dbdevinfo_vector_and_back PASSED [ 99%] 511s tests/test_utils.py::test_sequence_to_dbdevexportinfo_vector_and_back PASSED [ 99%] 511s tests/test_utils.py::test_sequence_to_dbdata_vector_and_back PASSED [ 99%] 511s tests/test_utils.py::test_sequence_to_dbdevimport_vector_and_back PASSED [ 99%] 511s tests/test_utils.py::test_sequence_to_dbhistorylist_vector_and_back PASSED [ 99%] 511s tests/test_utils.py::test_sequence_to_devicedatalist_vector_and_back PASSED [ 99%] 511s tests/test_utils.py::test_sequence_to_devicedatahistorylist_vector_and_back PASSED [ 99%] 511s tests/test_zzz_deprecated_pytango_module.py::test_import_aliased_module PASSED [100%] 511s 511s ==================================== ERRORS ==================================== 511s ____ ERROR at setup of test_read_write_attribute_with_green_modes[Asyncio] _____ 511s fixturedef = 511s request = > 511s 511s @pytest.hookimpl(wrapper=True) 511s def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None: 511s asyncio_mode = _get_asyncio_mode(request.config) 511s if not _is_asyncio_fixture_function(fixturedef.func): 511s if asyncio_mode == Mode.STRICT: 511s # Ignore async fixtures without explicit asyncio mark in strict mode 511s # This applies to pytest_trio fixtures, for example 511s > return (yield) 511s ^^^^^ 511s 511s /usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:728: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s tests/conftest.py:201: in tango_test_with_green_modes 511s proxy = wait_for_proxy(host, proc, device, green_mode) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s tests/conftest.py:176: in wait_for_proxy 511s proxy = get_proxy(host, port, device, green_mode) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s tests/conftest.py:167: in get_proxy 511s return device_proxy_map[green_mode](access) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 511s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s =================================== FAILURES =================================== 511s ___________________ test_green_mode_kwarg_for_proxy_methods ____________________ 511s @pytest.mark.asyncio 511s async def test_green_mode_kwarg_for_proxy_methods(): 511s with DeviceTestContext(ServerTest, device_name="test/test_device/1"): 511s > dev = await get_device_proxy("test/test_device/1", green_mode=GreenMode.Asyncio) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_async.py:41: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 511s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stdout call ----------------------------- 511s Ready to accept request 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ____________________ test_read_write_attribute[int-Asyncio] ____________________ 511s attribute_typed_values = (, (1, 2, -65535, 23), . at 0x770abd515fe0>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_attribute(attribute_typed_values, server_green_mode): 511s dtype, values, expected = attribute_typed_values 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s async def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s async def attr(self, value): 511s self.attr_value = value 511s 511s async def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s def attr(self, value): 511s self.attr_value = value 511s 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:131: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ___________________ test_read_write_attribute[float-Asyncio] ___________________ 511s attribute_typed_values = (, (2.71, 3.14, -3.4678e-09, 1.2678e+16), . at 0x770abd516610>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_attribute(attribute_typed_values, server_green_mode): 511s dtype, values, expected = attribute_typed_values 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s async def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s async def attr(self, value): 511s self.attr_value = value 511s 511s async def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s def attr(self, value): 511s self.attr_value = value 511s 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:131: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ____________________ test_read_write_attribute[str-Asyncio] ____________________ 511s attribute_typed_values = (, ('hey hey', 'my my', b'\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\...ÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'), . at 0x770abd516c40>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_attribute(attribute_typed_values, server_green_mode): 511s dtype, values, expected = attribute_typed_values 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s async def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s async def attr(self, value): 511s self.attr_value = value 511s 511s async def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s def attr(self, value): 511s self.attr_value = value 511s 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:131: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ___________________ test_read_write_attribute[bool-Asyncio] ____________________ 511s attribute_typed_values = (, (False, True, True, False), . at 0x770abd517270>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_attribute(attribute_typed_values, server_green_mode): 511s dtype, values, expected = attribute_typed_values 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s async def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s async def attr(self, value): 511s self.attr_value = value 511s 511s async def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s def attr(self, value): 511s self.attr_value = value 511s 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:131: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_read_write_attribute[(int,)-Asyncio] ___________________ 511s attribute_typed_values = ((,), (array([1, 2]), (1, 2, 3), [9, 8, 7], [-65535, 2224], [0, 0]), . at 0x770abd5178a0>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_attribute(attribute_typed_values, server_green_mode): 511s dtype, values, expected = attribute_typed_values 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s async def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s async def attr(self, value): 511s self.attr_value = value 511s 511s async def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s def attr(self, value): 511s self.attr_value = value 511s 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:131: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_read_write_attribute[(float,)-Asyncio] __________________ 511s attribute_typed_values = ((,), (array([0.1, 0.2]), (0.1, 0.2, 0.3), [0.9, 0.8, 0.7], [-0.0063232], [0.0, 12560000000000.0]), . at 0x770abd517ed0>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_attribute(attribute_typed_values, server_green_mode): 511s dtype, values, expected = attribute_typed_values 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s async def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s async def attr(self, value): 511s self.attr_value = value 511s 511s async def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s def attr(self, value): 511s self.attr_value = value 511s 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:131: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_read_write_attribute[(str,)-Asyncio] ___________________ 511s attribute_typed_values = ((,), (array(['foo', 'bar'], dtype='. at 0x770abd4c45c0>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_attribute(attribute_typed_values, server_green_mode): 511s dtype, values, expected = attribute_typed_values 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s async def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s async def attr(self, value): 511s self.attr_value = value 511s 511s async def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s def attr(self, value): 511s self.attr_value = value 511s 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:131: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_read_write_attribute[(bool,)-Asyncio] __________________ 511s attribute_typed_values = ((,), (array([ True, False]), [False, False, True], [True, False, False], [False], [True]), . at 0x770abd4c4bf0>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_attribute(attribute_typed_values, server_green_mode): 511s dtype, values, expected = attribute_typed_values 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s async def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s async def attr(self, value): 511s self.attr_value = value 511s 511s async def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s def attr(self, value): 511s self.attr_value = value 511s 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:131: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_read_write_attribute[((int,),)-Asyncio] _________________ 511s attribute_typed_values = (((,),), (array([[1, 2], 511s [3, 4]]), ((1, 2, 3), (4, 5, 6)), [[-65535, 2224], [-65535, 2224]]), . at 0x770abd4c5220>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_attribute(attribute_typed_values, server_green_mode): 511s dtype, values, expected = attribute_typed_values 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s async def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s async def attr(self, value): 511s self.attr_value = value 511s 511s async def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s def attr(self, value): 511s self.attr_value = value 511s 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:131: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ________________ test_read_write_attribute[((float,),)-Asyncio] ________________ 511s attribute_typed_values = (((,),), (array([[0.1, 0.2], 511s [0.3, 0.4]]), ((0.1, 0.2, 0.3), (0.9, 0.8, 0.7)), [[-0.0063232, 0.0], [0.0, 12560000000000.0]]), . at 0x770abd4c5850>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_attribute(attribute_typed_values, server_green_mode): 511s dtype, values, expected = attribute_typed_values 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s async def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s async def attr(self, value): 511s self.attr_value = value 511s 511s async def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s def attr(self, value): 511s self.attr_value = value 511s 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:131: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_read_write_attribute[((str,),)-Asyncio] _________________ 511s attribute_typed_values = (((,),), (array([['hi-hi', 'ha-ha'], 511s ['hu-hu', 'yuhuu']], dtype='. at 0x770abd4c5e80>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_attribute(attribute_typed_values, server_green_mode): 511s dtype, values, expected = attribute_typed_values 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s async def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s async def attr(self, value): 511s self.attr_value = value 511s 511s async def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s def attr(self, value): 511s self.attr_value = value 511s 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:131: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ________________ test_read_write_attribute[((bool,),)-Asyncio] _________________ 511s attribute_typed_values = (((,),), (array([[ True, False], 511s [False, True]]), [[False, False, True], [True, False, False]], [[False]], [[True]]), . at 0x770abd4c64b0>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_attribute(attribute_typed_values, server_green_mode): 511s dtype, values, expected = attribute_typed_values 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s async def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s async def attr(self, value): 511s self.attr_value = value 511s 511s async def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s _is_allowed = None 511s 511s @attribute( 511s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 511s ) 511s def attr(self): 511s return self.attr_value 511s 511s @attr.write 511s def attr(self, value): 511s self.attr_value = value 511s 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self._is_allowed 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:131: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _____________ test_read_write_attribute_decorated_methods[Asyncio] _____________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_attribute_decorated_methods(server_green_mode): 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class BaseTestDevice(Device): 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self.is_allowed = yesno 511s 511s else: 511s 511s class BaseTestDevice(Device): 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self.is_allowed = yesno 511s 511s class TestDevice(BaseTestDevice): 511s green_mode = server_green_mode 511s 511s attr_value = None 511s is_allowed = None 511s 511s attr = attribute(dtype=int, access=AttrWriteType.READ_WRITE) 511s 511s sync_code = textwrap.dedent( 511s """ 511s @general_decorator 511s def read_attr(self): 511s return self.attr_value 511s 511s @general_decorator 511s def write_attr(self, value): 511s self.attr_value = value 511s 511s @general_decorator 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self.is_allowed 511s """ 511s ) 511s 511s if server_green_mode == GreenMode.Asyncio: 511s exec( 511s sync_code.replace("def", "async def").replace( 511s "general_decorator", "general_asyncio_decorator" 511s ) 511s ) 511s else: 511s exec(sync_code) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:421: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________ test_read_write_dynamic_attribute[low_level_read-Asyncio] ___________ 511s dynamic_attribute_read_function = 'def read_dyn_attr(self, attr):\n attr.set_value(self.attr_value)\n' 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_dynamic_attribute( 511s dynamic_attribute_read_function, server_green_mode 511s ): 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s attr_value = None 511s 511s @command 511s async def add_dyn_attr(self): 511s attr = attribute( 511s name="dyn_attr", 511s dtype=int, 511s access=AttrWriteType.READ_WRITE, 511s fget=self.read_dyn_attr, 511s fset=self.write_dyn_attr, 511s ) 511s await self.async_add_attribute(attr) 511s 511s @command 511s async def delete_dyn_attr(self): 511s await self.async_remove_attribute("dyn_attr") 511s 511s async def write_dyn_attr(self, attr): 511s self.attr_value = attr.get_write_value() 511s 511s exec(dynamic_attribute_read_function.replace("def ", "async def ")) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s attr_value = None 511s 511s @command 511s def add_dyn_attr(self): 511s attr = attribute( 511s name="dyn_attr", 511s dtype=int, 511s access=AttrWriteType.READ_WRITE, 511s fget=self.read_dyn_attr, 511s fset=self.write_dyn_attr, 511s ) 511s self.add_attribute(attr) 511s 511s @command 511s def delete_dyn_attr(self): 511s self.remove_attribute("dyn_attr") 511s 511s def write_dyn_attr(self, attr): 511s self.attr_value = attr.get_write_value() 511s 511s exec(dynamic_attribute_read_function) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:918: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________ test_read_write_dynamic_attribute[high_level_read-Asyncio] __________ 511s dynamic_attribute_read_function = 'def read_dyn_attr(self, attr):\n return self.attr_value\n' 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_dynamic_attribute( 511s dynamic_attribute_read_function, server_green_mode 511s ): 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s attr_value = None 511s 511s @command 511s async def add_dyn_attr(self): 511s attr = attribute( 511s name="dyn_attr", 511s dtype=int, 511s access=AttrWriteType.READ_WRITE, 511s fget=self.read_dyn_attr, 511s fset=self.write_dyn_attr, 511s ) 511s await self.async_add_attribute(attr) 511s 511s @command 511s async def delete_dyn_attr(self): 511s await self.async_remove_attribute("dyn_attr") 511s 511s async def write_dyn_attr(self, attr): 511s self.attr_value = attr.get_write_value() 511s 511s exec(dynamic_attribute_read_function.replace("def ", "async def ")) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s attr_value = None 511s 511s @command 511s def add_dyn_attr(self): 511s attr = attribute( 511s name="dyn_attr", 511s dtype=int, 511s access=AttrWriteType.READ_WRITE, 511s fget=self.read_dyn_attr, 511s fset=self.write_dyn_attr, 511s ) 511s self.add_attribute(attr) 511s 511s @command 511s def delete_dyn_attr(self): 511s self.remove_attribute("dyn_attr") 511s 511s def write_dyn_attr(self, attr): 511s self.attr_value = attr.get_write_value() 511s 511s exec(dynamic_attribute_read_function) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:918: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ___________________ test_async_add_remove_dynamic_attribute ____________________ 511s def test_async_add_remove_dynamic_attribute(): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s def __init__(self, *args, **kwargs): 511s super().__init__(*args, **kwargs) 511s self.attr_value = None 511s 511s @command 511s async def add_dyn_attr(self): 511s attr = attribute( 511s name="dyn_attr", 511s dtype=int, 511s access=AttrWriteType.READ_WRITE, 511s fget=self.read_dyn_attr, 511s fset=self.write_dyn_attr, 511s ) 511s self.add_attribute(attr) 511s 511s @command 511s async def delete_dyn_attr(self): 511s self.remove_attribute("dyn_attr") 511s 511s @command 511s async def async_add_dyn_attr(self): 511s attr = attribute( 511s name="dyn_attr", 511s dtype=int, 511s access=AttrWriteType.READ_WRITE, 511s fget=self.read_dyn_attr, 511s fset=self.write_dyn_attr, 511s ) 511s await self.async_add_attribute(attr) 511s 511s @command 511s async def async_delete_dyn_attr(self): 511s await self.async_remove_attribute("dyn_attr") 511s 511s async def write_dyn_attr(self, attr): 511s self.attr_value = attr.get_write_value() 511s 511s async def read_dyn_attr(self, attr): 511s return self.attr_value 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:970: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __ test_read_write_dynamic_attribute_decorated_methods_default_names[Asyncio] __ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_dynamic_attribute_decorated_methods_default_names( 511s server_green_mode, 511s ): 511s 511s is_allowed = True 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s attr_value = None 511s is_allowed = None 511s 511s def initialize_dynamic_attributes(self): 511s attr = attribute(name="attr", dtype=int, access=AttrWriteType.READ_WRITE) 511s self.add_attribute(attr) 511s 511s def allowed(self): 511s return is_allowed 511s 511s sync_code = textwrap.dedent( 511s """\ 511s @general_decorator 511s def read_attr(self, attr): 511s return self.attr_value 511s 511s @general_decorator 511s def write_attr(self, attr): 511s self.attr_value = attr.get_write_value() 511s 511s @general_decorator 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self.allowed() 511s """ 511s ) 511s 511s if server_green_mode != GreenMode.Asyncio: 511s exec(sync_code) 511s else: 511s exec( 511s sync_code.replace("def ", "async def ").replace( 511s "general_decorator", "general_asyncio_decorator" 511s ) 511s ) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:1291: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ___ test_read_write_dynamic_attribute_decorated_methods_user_names[Asyncio] ____ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_dynamic_attribute_decorated_methods_user_names(server_green_mode): 511s 511s is_allowed = True 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s attr_value = None 511s is_allowed = None 511s 511s def initialize_dynamic_attributes(self): 511s attr = attribute( 511s name="attr", 511s dtype=int, 511s access=AttrWriteType.READ_WRITE, 511s fget=self.user_read, 511s fset=self.user_write, 511s fisallowed=self.user_is_allowed, 511s ) 511s self.add_attribute(attr) 511s 511s def allowed(self): 511s return is_allowed 511s 511s sync_code = textwrap.dedent( 511s """\ 511s @general_decorator 511s def user_read(self, attr): 511s return self.attr_value 511s 511s @general_decorator 511s def user_write(self, attr): 511s self.attr_value = attr.get_write_value() 511s 511s @general_decorator 511s def user_is_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self.allowed() 511s """ 511s ) 511s 511s if server_green_mode != GreenMode.Asyncio: 511s exec(sync_code) 511s else: 511s exec( 511s sync_code.replace("def ", "async def ").replace( 511s "general_decorator", "general_asyncio_decorator" 511s ) 511s ) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:1352: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _______ test_read_write_dynamic_attribute_is_allowed_with_async[Asyncio] _______ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_read_write_dynamic_attribute_is_allowed_with_async(server_green_mode): 511s DYN_ATTRS_END_RANGE = 9 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class BaseTestDevice(Device): 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s for att_num in range(1, DYN_ATTRS_END_RANGE): 511s setattr(self, f"attr{att_num}_allowed", yesno) 511s 511s else: 511s 511s class BaseTestDevice(Device): 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s for att_num in range(1, DYN_ATTRS_END_RANGE): 511s setattr(self, f"attr{att_num}_allowed", yesno) 511s 511s class TestDevice(BaseTestDevice): 511s green_mode = server_green_mode 511s 511s def __init__(self, *args, **kwargs): 511s super().__init__(*args, **kwargs) 511s for att_num in range(1, DYN_ATTRS_END_RANGE): 511s setattr(self, f"attr{att_num}_allowed", True) 511s for att_num in range(1, DYN_ATTRS_END_RANGE): 511s setattr(self, f"attr{att_num}_value", None) 511s 511s def initialize_dynamic_attributes(self): 511s # recommended approach: using attribute() and bound methods: 511s attr = attribute( 511s name="dyn_attr1", 511s dtype=int, 511s access=AttrWriteType.READ_WRITE, 511s fget=self.read_dyn_attr1, 511s fset=self.write_dyn_attr1, 511s fisallowed=self.is_attr1_allowed, 511s ) 511s self.add_attribute(attr) 511s 511s # not recommended: using attribute() with unbound methods: 511s attr = attribute( 511s name="dyn_attr2", 511s dtype=int, 511s access=AttrWriteType.READ_WRITE, 511s fget=TestDevice.read_dyn_attr2, 511s fset=TestDevice.write_dyn_attr2, 511s fisallowed=TestDevice.is_attr2_allowed, 511s ) 511s self.add_attribute(attr) 511s 511s # possible approach: using attribute() with method name strings: 511s attr = attribute( 511s name="dyn_attr3", 511s dtype=int, 511s access=AttrWriteType.READ_WRITE, 511s fget="read_dyn_attr3", 511s fset="write_dyn_attr3", 511s fisallowed="is_attr3_allowed", 511s ) 511s self.add_attribute(attr) 511s 511s # old approach: using tango.AttrData with bound methods: 511s attr_name = "dyn_attr4" 511s data_info = self._get_attr_data_info() 511s dev_class = self.get_device_class() 511s attr_data = AttrData(attr_name, dev_class.get_name(), data_info) 511s self.add_attribute( 511s attr_data, 511s self.read_dyn_attr4, 511s self.write_dyn_attr4, 511s self.is_attr4_allowed, 511s ) 511s 511s # old approach: using tango.AttrData with unbound methods: 511s attr_name = "dyn_attr5" 511s attr_data = AttrData(attr_name, dev_class.get_name(), data_info) 511s self.add_attribute( 511s attr_data, 511s TestDevice.read_dyn_attr5, 511s TestDevice.write_dyn_attr5, 511s TestDevice.is_attr5_allowed, 511s ) 511s 511s # old approach: using tango.AttrData with default method names 511s attr_name = "dyn_attr6" 511s attr_data = AttrData(attr_name, dev_class.get_name(), data_info) 511s self.add_attribute(attr_data) 511s 511s # old approach: using tango.AttrData filled from dictionary 511s attr_name = "dyn_attr7" 511s d = { 511s "name": attr_name, 511s "class_name": dev_class.get_name(), 511s # not setting access explicitly 511s "fread": "read_dyn_attr7", 511s "fwrite": "write_dyn_attr7", 511s "fisallowed": self.is_attr7_allowed, 511s } 511s attr_data = AttrData.from_dict(d) 511s self.add_attribute(attr_data) 511s 511s # not recommened: implicit access level 511s attr = attribute( 511s name="dyn_attr8", 511s fset=self.write_dyn_attr8, 511s fisallowed=self.is_attr8_allowed, 511s ) 511s self.add_attribute(attr) 511s 511s def _get_attr_data_info(self): 511s simple_type, fmt = get_tango_type_format(int) 511s data_info = [[simple_type, fmt, READ_WRITE]] 511s return data_info 511s 511s # the following methods are written in plain text which looks 511s # weird. This is done so that it is easy to change for async 511s # tests without duplicating all the code. 511s read_code = textwrap.dedent( 511s """ 511s def read_dyn_attr(self, attr): 511s return self.attr_value 511s """ 511s ) 511s 511s write_code = textwrap.dedent( 511s """ 511s def write_dyn_attr(self, attr): 511s self.attr_value = attr.get_write_value() 511s """ 511s ) 511s 511s is_allowed_code = textwrap.dedent( 511s """ 511s def is_attr_allowed(self, req_type): 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return self.attr_allowed 511s """ 511s ) 511s 511s for attr_num in range(1, DYN_ATTRS_END_RANGE): 511s read_method = read_code.replace("read_dyn_attr", f"read_dyn_attr{attr_num}") 511s read_method = read_method.replace("attr_value", f"attr{attr_num}_value") 511s write_method = write_code.replace( 511s "write_dyn_attr", f"write_dyn_attr{attr_num}" 511s ) 511s write_method = write_method.replace("attr_value", f"attr{attr_num}_value") 511s if attr_num != 6: 511s is_allowed_method = is_allowed_code.replace( 511s "is_attr_allowed", f"is_attr{attr_num}_allowed" 511s ) 511s else: 511s # default name differs 511s is_allowed_method = is_allowed_code.replace( 511s "is_attr_allowed", f"is_dyn_attr{attr_num}_allowed" 511s ) 511s is_allowed_method = is_allowed_method.replace( 511s "self.attr_allowed", f"self.attr{attr_num}_allowed" 511s ) 511s 511s if server_green_mode != GreenMode.Asyncio: 511s exec(read_method) 511s exec(write_method) 511s exec(is_allowed_method) 511s else: 511s exec(read_method.replace("def ", "async def ")) 511s exec(write_method.replace("def ", "async def ")) 511s exec(is_allowed_method.replace("def ", "async def ")) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:1702: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _____________ test_dynamic_attribute_with_green_mode[Asyncio-True] _____________ 511s use_green_mode = True, server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s @pytest.mark.parametrize("use_green_mode", [True, False]) 511s def test_dynamic_attribute_with_green_mode(use_green_mode, server_green_mode): 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s attr_value = 123 511s 511s def initialize_dynamic_attributes(self): 511s global executor 511s executor = get_executor(server_green_mode) 511s attr = attribute( 511s name="attr_r", 511s dtype=int, 511s access=AttrWriteType.READ, 511s fget=self.user_read, 511s read_green_mode=use_green_mode, 511s ) 511s self.add_attribute(attr) 511s attr = attribute( 511s name="attr_rw", 511s dtype=int, 511s access=AttrWriteType.READ_WRITE, 511s fget=self.user_read, 511s fset=self.user_write, 511s read_green_mode=use_green_mode, 511s write_green_mode=use_green_mode, 511s ) 511s self.add_attribute(attr) 511s attr = attribute( 511s name="attr_ia", 511s dtype=int, 511s access=AttrWriteType.READ, 511s fget=self.user_read, 511s fisallowed=self.user_is_allowed, 511s read_green_mode=use_green_mode, 511s isallowed_green_mode=use_green_mode, 511s ) 511s self.add_attribute(attr) 511s attr = attribute( 511s name="attr_rw_always_ok", 511s dtype=int, 511s access=AttrWriteType.READ_WRITE, 511s fget=self.user_read, 511s fset=self.user_write, 511s green_mode=True, 511s ) 511s self.add_attribute(attr) 511s 511s sync_code = textwrap.dedent( 511s """ 511s def user_read(self, attr): 511s self.assert_executor_context_correct(attr.get_name()) 511s return self.attr_value 511s 511s def user_write(self, attr): 511s self.assert_executor_context_correct(attr.get_name()) 511s self.attr_value = attr.get_write_value() 511s 511s def user_is_allowed(self, req_type): 511s self.assert_executor_context_correct() 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return True 511s 511s """ 511s ) 511s 511s def assert_executor_context_correct(self, attr_name=""): 511s check_required = attr_name != "attr_rw_always_ok" 511s if check_required and executor.asynchronous: 511s assert executor.in_executor_context() == use_green_mode 511s 511s if server_green_mode == GreenMode.Asyncio and use_green_mode: 511s exec(sync_code.replace("def", "async def")) 511s else: 511s exec(sync_code) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:1799: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ____________ test_dynamic_attribute_with_green_mode[Asyncio-False] _____________ 511s use_green_mode = False, server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s @pytest.mark.parametrize("use_green_mode", [True, False]) 511s def test_dynamic_attribute_with_green_mode(use_green_mode, server_green_mode): 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s attr_value = 123 511s 511s def initialize_dynamic_attributes(self): 511s global executor 511s executor = get_executor(server_green_mode) 511s attr = attribute( 511s name="attr_r", 511s dtype=int, 511s access=AttrWriteType.READ, 511s fget=self.user_read, 511s read_green_mode=use_green_mode, 511s ) 511s self.add_attribute(attr) 511s attr = attribute( 511s name="attr_rw", 511s dtype=int, 511s access=AttrWriteType.READ_WRITE, 511s fget=self.user_read, 511s fset=self.user_write, 511s read_green_mode=use_green_mode, 511s write_green_mode=use_green_mode, 511s ) 511s self.add_attribute(attr) 511s attr = attribute( 511s name="attr_ia", 511s dtype=int, 511s access=AttrWriteType.READ, 511s fget=self.user_read, 511s fisallowed=self.user_is_allowed, 511s read_green_mode=use_green_mode, 511s isallowed_green_mode=use_green_mode, 511s ) 511s self.add_attribute(attr) 511s attr = attribute( 511s name="attr_rw_always_ok", 511s dtype=int, 511s access=AttrWriteType.READ_WRITE, 511s fget=self.user_read, 511s fset=self.user_write, 511s green_mode=True, 511s ) 511s self.add_attribute(attr) 511s 511s sync_code = textwrap.dedent( 511s """ 511s def user_read(self, attr): 511s self.assert_executor_context_correct(attr.get_name()) 511s return self.attr_value 511s 511s def user_write(self, attr): 511s self.assert_executor_context_correct(attr.get_name()) 511s self.attr_value = attr.get_write_value() 511s 511s def user_is_allowed(self, req_type): 511s self.assert_executor_context_correct() 511s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 511s return True 511s 511s """ 511s ) 511s 511s def assert_executor_context_correct(self, attr_name=""): 511s check_required = attr_name != "attr_rw_always_ok" 511s if check_required and executor.asynchronous: 511s assert executor.in_executor_context() == use_green_mode 511s 511s if server_green_mode == GreenMode.Asyncio and use_green_mode: 511s exec(sync_code.replace("def", "async def")) 511s else: 511s exec(sync_code) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:1799: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ______________________ test_attribute_decorators[Asyncio] ______________________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_attribute_decorators(server_green_mode): 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class BaseTestDevice(Device): 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self.is_allowed = yesno 511s 511s else: 511s 511s class BaseTestDevice(Device): 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self.is_allowed = yesno 511s 511s class TestDevice(BaseTestDevice): 511s green_mode = server_green_mode 511s current_value = None 511s voltage_value = None 511s is_allowed = None 511s 511s current = attribute(label="Current", unit="mA", dtype=float) 511s voltage = attribute(label="Voltage", unit="V", dtype=float) 511s 511s sync_code = textwrap.dedent( 511s """ 511s @current.getter 511s def cur_read(self): 511s return self.current_value 511s 511s @current.setter 511s def cur_write(self, current): 511s self.current_value = current 511s 511s @current.is_allowed 511s def cur_allo(self, req_type): 511s return self.is_allowed 511s 511s @voltage.read 511s def vol_read(self): 511s return self.voltage_value 511s 511s @voltage.write 511s def vol_write(self, voltage): 511s self.voltage_value = voltage 511s 511s @voltage.is_allowed 511s def vol_allo(self, req_type): 511s return self.is_allowed 511s """ 511s ) 511s 511s if server_green_mode == GreenMode.Asyncio: 511s exec(sync_code.replace("def ", "async def ")) 511s else: 511s exec(sync_code) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:2013: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ________________________ test_polled_attribute[Asyncio] ________________________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_polled_attribute(server_green_mode): 511s dct = {"PolledAttribute1": 100, "PolledAttribute2": 100000, "PolledAttribute3": 500} 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @attribute(polling_period=dct["PolledAttribute1"]) 511s def PolledAttribute1(self): 511s return 42.0 511s 511s @attribute(polling_period=dct["PolledAttribute2"]) 511s def PolledAttribute2(self): 511s return 43.0 511s 511s @attribute(polling_period=dct["PolledAttribute3"]) 511s def PolledAttribute3(self): 511s return 44.0 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_attributes.py:2164: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ______________________ test_identity_command[int-Asyncio] ______________________ 511s command_typed_values = (, (1, 2, -65535, 23), . at 0x770abd7568d0>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_identity_command(command_typed_values, server_green_mode): 511s dtype, values, expected = command_typed_values 511s 511s if dtype == (bool,): 511s pytest.xfail("Not supported for some reasons") 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s async def identity(self, arg): 511s return arg 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s def identity(self, arg): 511s return arg 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_commands.py:57: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _____________________ test_identity_command[float-Asyncio] _____________________ 511s command_typed_values = (, (2.71, 3.14, -3.4678e-09, 1.2678e+16), . at 0x770abd756f00>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_identity_command(command_typed_values, server_green_mode): 511s dtype, values, expected = command_typed_values 511s 511s if dtype == (bool,): 511s pytest.xfail("Not supported for some reasons") 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s async def identity(self, arg): 511s return arg 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s def identity(self, arg): 511s return arg 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_commands.py:57: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ______________________ test_identity_command[str-Asyncio] ______________________ 511s command_typed_values = (, ('hey hey', 'my my', b'\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\...ÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'), . at 0x770abd757530>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_identity_command(command_typed_values, server_green_mode): 511s dtype, values, expected = command_typed_values 511s 511s if dtype == (bool,): 511s pytest.xfail("Not supported for some reasons") 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s async def identity(self, arg): 511s return arg 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s def identity(self, arg): 511s return arg 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_commands.py:57: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _____________________ test_identity_command[bool-Asyncio] ______________________ 511s command_typed_values = (, (False, True, True, False), . at 0x770abd757b60>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_identity_command(command_typed_values, server_green_mode): 511s dtype, values, expected = command_typed_values 511s 511s if dtype == (bool,): 511s pytest.xfail("Not supported for some reasons") 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s async def identity(self, arg): 511s return arg 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s def identity(self, arg): 511s return arg 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_commands.py:57: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ____________________ test_identity_command[(int,)-Asyncio] _____________________ 511s command_typed_values = ((,), (array([1, 2]), (1, 2, 3), [9, 8, 7], [-65535, 2224], [0, 0]), . at 0x770abd66c250>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_identity_command(command_typed_values, server_green_mode): 511s dtype, values, expected = command_typed_values 511s 511s if dtype == (bool,): 511s pytest.xfail("Not supported for some reasons") 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s async def identity(self, arg): 511s return arg 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s def identity(self, arg): 511s return arg 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_commands.py:57: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ___________________ test_identity_command[(float,)-Asyncio] ____________________ 511s command_typed_values = ((,), (array([0.1, 0.2]), (0.1, 0.2, 0.3), [0.9, 0.8, 0.7], [-0.0063232], [0.0, 12560000000000.0]), . at 0x770abd66c880>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_identity_command(command_typed_values, server_green_mode): 511s dtype, values, expected = command_typed_values 511s 511s if dtype == (bool,): 511s pytest.xfail("Not supported for some reasons") 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s async def identity(self, arg): 511s return arg 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s def identity(self, arg): 511s return arg 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_commands.py:57: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ____________________ test_identity_command[(str,)-Asyncio] _____________________ 511s command_typed_values = ((,), (array(['foo', 'bar'], dtype='. at 0x770abd66ceb0>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_identity_command(command_typed_values, server_green_mode): 511s dtype, values, expected = command_typed_values 511s 511s if dtype == (bool,): 511s pytest.xfail("Not supported for some reasons") 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s async def identity(self, arg): 511s return arg 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s def identity(self, arg): 511s return arg 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_commands.py:57: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _____________ test_identity_command[DevVarLongStringArray-Asyncio] _____________ 511s command_typed_values = (tango._tango.CmdArgType.DevVarLongStringArray, ([[1, 2, 3], ['foo', 'bar', 'hmm']],), . at 0x770abd66db10>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_identity_command(command_typed_values, server_green_mode): 511s dtype, values, expected = command_typed_values 511s 511s if dtype == (bool,): 511s pytest.xfail("Not supported for some reasons") 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s async def identity(self, arg): 511s return arg 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s def identity(self, arg): 511s return arg 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_commands.py:57: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ____________ test_identity_command[DevVarDoubleStringArray-Asyncio] ____________ 511s command_typed_values = (tango._tango.CmdArgType.DevVarDoubleStringArray, ([[1.1, 2.2, 3.3], ['foo', 'bar', 'hmm']],), . at 0x770abd66e140>) 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_identity_command(command_typed_values, server_green_mode): 511s dtype, values, expected = command_typed_values 511s 511s if dtype == (bool,): 511s pytest.xfail("Not supported for some reasons") 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s async def identity(self, arg): 511s return arg 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @command(dtype_in=dtype, dtype_out=dtype) 511s def identity(self, arg): 511s return arg 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_commands.py:57: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _______________________ test_decorated_command[Asyncio] ________________________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_decorated_command(server_green_mode): 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s is_allowed = None 511s 511s @command(dtype_in=int, dtype_out=int) 511s @general_asyncio_decorator() 511s async def identity(self, arg): 511s return arg 511s 511s @general_asyncio_decorator 511s async def is_identity_allowed(self): 511s return self.is_allowed 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self.is_allowed = yesno 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s is_allowed = None 511s 511s @command(dtype_in=int, dtype_out=int) 511s @general_decorator() 511s def identity(self, arg): 511s return arg 511s 511s @general_decorator 511s def is_identity_allowed(self): 511s return self.is_allowed 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self.is_allowed = yesno 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_commands.py:158: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _______________________ test_command_isallowed[Asyncio] ________________________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_command_isallowed(server_green_mode): 511s is_allowed = None 511s 511s def sync_allowed(device): 511s assert isinstance(device, TestDevice) 511s return is_allowed 511s 511s async def async_allowed(device): 511s assert isinstance(device, TestDevice) 511s return is_allowed 511s 511s class IsAllowedCallableClass: 511s def __init__(self): 511s self._is_allowed = None 511s 511s def __call__(self, device): 511s assert isinstance(device, TestDevice) 511s return self._is_allowed 511s 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s is_allowed_callable_class = IsAllowedCallableClass() 511s 511s class AsyncIsAllowedCallableClass(IsAllowedCallableClass): 511s async def __call__(self, device): 511s assert isinstance(device, TestDevice) 511s return self._is_allowed 511s 511s async_is_allowed_callable_class = AsyncIsAllowedCallableClass() 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def __init__(self, *args, **kwargs): 511s super().__init__(*args, **kwargs) 511s self._is_allowed = True 511s 511s @command(dtype_in=int, dtype_out=int) 511s async def identity(self, arg): 511s return arg 511s 511s @command(dtype_in=int, dtype_out=int, fisallowed="is_identity_allowed") 511s async def identity_kwarg_string(self, arg): 511s return arg 511s 511s @command( 511s dtype_in=int, 511s dtype_out=int, 511s fisallowed=async_allowed, 511s ) 511s async def identity_kwarg_callable(self, arg): 511s return arg 511s 511s @command( 511s dtype_in=int, dtype_out=int, fisallowed=async_is_allowed_callable_class 511s ) 511s async def identity_kwarg_callable_class(self, arg): 511s return arg 511s 511s @command(dtype_in=int, dtype_out=int) 511s async def identity_always_allowed(self, arg): 511s return arg 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s async def is_identity_allowed(self): 511s return self._is_allowed 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def __init__(self, *args, **kwargs): 511s super().__init__(*args, **kwargs) 511s self._is_allowed = True 511s 511s @command(dtype_in=int, dtype_out=int) 511s def identity(self, arg): 511s return arg 511s 511s @command(dtype_in=int, dtype_out=int, fisallowed="is_identity_allowed") 511s def identity_kwarg_string(self, arg): 511s return arg 511s 511s @command(dtype_in=int, dtype_out=int, fisallowed=sync_allowed) 511s def identity_kwarg_callable(self, arg): 511s return arg 511s 511s @command(dtype_in=int, dtype_out=int, fisallowed=is_allowed_callable_class) 511s def identity_kwarg_callable_class(self, arg): 511s return arg 511s 511s @command(dtype_in=int, dtype_out=int) 511s def identity_always_allowed(self, arg): 511s return arg 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s def is_identity_allowed(self): 511s return self._is_allowed 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_commands.py:276: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ______________________ test_dynamic_command[Asyncio-True] ______________________ 511s device_command_level = True, server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s @pytest.mark.parametrize("device_command_level", [True, False]) 511s def test_dynamic_command(device_command_level, server_green_mode): 511s is_allowed = None 511s 511s def sync_allowed(device): 511s assert isinstance(device, TestDevice) 511s return is_allowed 511s 511s async def async_allowed(device): 511s assert isinstance(device, TestDevice) 511s return is_allowed 511s 511s class IsAllowedCallable: 511s def __init__(self): 511s self._is_allowed = None 511s 511s def __call__(self, device): 511s assert isinstance(device, TestDevice) 511s return self._is_allowed 511s 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s class AsyncIsAllowedCallable(IsAllowedCallable): 511s async def __call__(self, device): 511s assert isinstance(device, TestDevice) 511s return self._is_allowed 511s 511s is_allowed_callable_class = IsAllowedCallable() 511s async_is_allowed_callable_class = AsyncIsAllowedCallable() 511s 511s class BaseTestDevice(Device): 511s green_mode = server_green_mode 511s 511s def __init__(self, *args, **kwargs): 511s super().__init__(*args, **kwargs) 511s self._is_allowed = True 511s 511s def _add_dyn_cmd(self): 511s cmd = command(f=self.identity, dtype_in=int, dtype_out=int) 511s self.add_command(cmd, device_command_level) 511s 511s cmd = command( 511s f=self.identity_kwarg_string, 511s dtype_in=int, 511s dtype_out=int, 511s fisallowed="is_identity_allowed", 511s ) 511s self.add_command(cmd, device_command_level) 511s 511s cmd = command( 511s f=self.identity_kwarg_callable, 511s dtype_in=int, 511s dtype_out=int, 511s fisallowed=self.is_identity_allowed, 511s ) 511s self.add_command(cmd, device_command_level) 511s 511s cmd = command( 511s f=self.identity_kwarg_callable_outside_class, 511s dtype_in=int, 511s dtype_out=int, 511s fisallowed=( 511s sync_allowed 511s if server_green_mode != GreenMode.Asyncio 511s else async_allowed 511s ), 511s ) 511s self.add_command(cmd, device_command_level) 511s 511s cmd = command( 511s f=self.identity_kwarg_callable_class, 511s dtype_in=int, 511s dtype_out=int, 511s fisallowed=( 511s is_allowed_callable_class 511s if server_green_mode != GreenMode.Asyncio 511s else async_is_allowed_callable_class 511s ), 511s ) 511s self.add_command(cmd, device_command_level) 511s 511s cmd = command(f=self.identity_always_allowed, dtype_in=int, dtype_out=int) 511s self.add_command(cmd, device_command_level) 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(BaseTestDevice): 511s async def identity(self, arg): 511s return arg 511s 511s async def identity_kwarg_string(self, arg): 511s return arg 511s 511s async def identity_kwarg_callable(self, arg): 511s return arg 511s 511s async def identity_kwarg_callable_outside_class(self, arg): 511s return arg 511s 511s async def identity_kwarg_callable_class(self, arg): 511s return arg 511s 511s async def identity_always_allowed(self, arg): 511s return arg 511s 511s @command() 511s async def add_dyn_cmd(self): 511s self._add_dyn_cmd() 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s async def is_identity_allowed(self): 511s return self._is_allowed 511s 511s else: 511s 511s class TestDevice(BaseTestDevice): 511s def identity(self, arg): 511s return arg 511s 511s def identity_kwarg_string(self, arg): 511s return arg 511s 511s def identity_kwarg_callable(self, arg): 511s return arg 511s 511s def identity_kwarg_callable_outside_class(self, arg): 511s return arg 511s 511s def identity_kwarg_callable_class(self, arg): 511s return arg 511s 511s def identity_always_allowed(self, arg): 511s return arg 511s 511s @command() 511s def add_dyn_cmd(self): 511s self._add_dyn_cmd() 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s def is_identity_allowed(self): 511s return self._is_allowed 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_commands.py:457: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _____________________ test_dynamic_command[Asyncio-False] ______________________ 511s device_command_level = False, server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s @pytest.mark.parametrize("device_command_level", [True, False]) 511s def test_dynamic_command(device_command_level, server_green_mode): 511s is_allowed = None 511s 511s def sync_allowed(device): 511s assert isinstance(device, TestDevice) 511s return is_allowed 511s 511s async def async_allowed(device): 511s assert isinstance(device, TestDevice) 511s return is_allowed 511s 511s class IsAllowedCallable: 511s def __init__(self): 511s self._is_allowed = None 511s 511s def __call__(self, device): 511s assert isinstance(device, TestDevice) 511s return self._is_allowed 511s 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s class AsyncIsAllowedCallable(IsAllowedCallable): 511s async def __call__(self, device): 511s assert isinstance(device, TestDevice) 511s return self._is_allowed 511s 511s is_allowed_callable_class = IsAllowedCallable() 511s async_is_allowed_callable_class = AsyncIsAllowedCallable() 511s 511s class BaseTestDevice(Device): 511s green_mode = server_green_mode 511s 511s def __init__(self, *args, **kwargs): 511s super().__init__(*args, **kwargs) 511s self._is_allowed = True 511s 511s def _add_dyn_cmd(self): 511s cmd = command(f=self.identity, dtype_in=int, dtype_out=int) 511s self.add_command(cmd, device_command_level) 511s 511s cmd = command( 511s f=self.identity_kwarg_string, 511s dtype_in=int, 511s dtype_out=int, 511s fisallowed="is_identity_allowed", 511s ) 511s self.add_command(cmd, device_command_level) 511s 511s cmd = command( 511s f=self.identity_kwarg_callable, 511s dtype_in=int, 511s dtype_out=int, 511s fisallowed=self.is_identity_allowed, 511s ) 511s self.add_command(cmd, device_command_level) 511s 511s cmd = command( 511s f=self.identity_kwarg_callable_outside_class, 511s dtype_in=int, 511s dtype_out=int, 511s fisallowed=( 511s sync_allowed 511s if server_green_mode != GreenMode.Asyncio 511s else async_allowed 511s ), 511s ) 511s self.add_command(cmd, device_command_level) 511s 511s cmd = command( 511s f=self.identity_kwarg_callable_class, 511s dtype_in=int, 511s dtype_out=int, 511s fisallowed=( 511s is_allowed_callable_class 511s if server_green_mode != GreenMode.Asyncio 511s else async_is_allowed_callable_class 511s ), 511s ) 511s self.add_command(cmd, device_command_level) 511s 511s cmd = command(f=self.identity_always_allowed, dtype_in=int, dtype_out=int) 511s self.add_command(cmd, device_command_level) 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(BaseTestDevice): 511s async def identity(self, arg): 511s return arg 511s 511s async def identity_kwarg_string(self, arg): 511s return arg 511s 511s async def identity_kwarg_callable(self, arg): 511s return arg 511s 511s async def identity_kwarg_callable_outside_class(self, arg): 511s return arg 511s 511s async def identity_kwarg_callable_class(self, arg): 511s return arg 511s 511s async def identity_always_allowed(self, arg): 511s return arg 511s 511s @command() 511s async def add_dyn_cmd(self): 511s self._add_dyn_cmd() 511s 511s @command(dtype_in=bool) 511s async def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s async def is_identity_allowed(self): 511s return self._is_allowed 511s 511s else: 511s 511s class TestDevice(BaseTestDevice): 511s def identity(self, arg): 511s return arg 511s 511s def identity_kwarg_string(self, arg): 511s return arg 511s 511s def identity_kwarg_callable(self, arg): 511s return arg 511s 511s def identity_kwarg_callable_outside_class(self, arg): 511s return arg 511s 511s def identity_kwarg_callable_class(self, arg): 511s return arg 511s 511s def identity_always_allowed(self, arg): 511s return arg 511s 511s @command() 511s def add_dyn_cmd(self): 511s self._add_dyn_cmd() 511s 511s @command(dtype_in=bool) 511s def make_allowed(self, yesno): 511s self._is_allowed = yesno 511s 511s def is_identity_allowed(self): 511s return self._is_allowed 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_commands.py:457: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _______________________ test_high_level_api_for_asyncio ________________________ 511s tango_test = TangoTest(sys/tg_test/17) 511s 511s @pytest.mark.asyncio 511s async def test_high_level_api_for_asyncio(tango_test): 511s tango_test.set_green_mode(GreenMode.Asyncio) 511s > _ = await tango_test.long_scalar 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_device_proxy.py:234: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/device_proxy.py:387: in __async_get_attribute_value 511s attr_value = await self.read_attribute(name) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 511s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ---------------------------- Captured stdout setup ----------------------------- 511s Ready to accept request 511s _________________________ test_repr_uses_info[Asyncio] _________________________ 511s green_mode_device_proxy = functools.partial(functools.partial(, green_mode=tango._tango.GreenMode.Asyncio), wait=True) 511s simple_device_fqdn = 'tango://127.0.0.1:52351/test/nodb/testdevice#dbase=no' 511s 511s def test_repr_uses_info(green_mode_device_proxy, simple_device_fqdn): 511s > proxy = green_mode_device_proxy(simple_device_fqdn) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_device_proxy.py:578: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 511s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ---------------------------- Captured stdout setup ----------------------------- 511s Ready to accept request 511s ---------------------------- Captured stderr setup ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ________________ test_repr_default_if_info_unavailable[Asyncio] ________________ 511s green_mode_device_proxy = functools.partial(functools.partial(, green_mode=tango._tango.GreenMode.Asyncio), wait=True) 511s simple_device_fqdn = 'tango://127.0.0.1:46453/test/nodb/testdevice#dbase=no' 511s 511s def test_repr_default_if_info_unavailable(green_mode_device_proxy, simple_device_fqdn): 511s > proxy = green_mode_device_proxy(simple_device_fqdn) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_device_proxy.py:583: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 511s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ---------------------------- Captured stdout setup ----------------------------- 511s Ready to accept request 511s ---------------------------- Captured stderr setup ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ____________ test_multiple_repr_calls_only_call_info_once[Asyncio] _____________ 511s green_mode_device_proxy = functools.partial(functools.partial(, green_mode=tango._tango.GreenMode.Asyncio), wait=True) 511s simple_device_fqdn = 'tango://127.0.0.1:50797/test/nodb/testdevice#dbase=no' 511s 511s def test_multiple_repr_calls_only_call_info_once( 511s green_mode_device_proxy, simple_device_fqdn 511s ): 511s > proxy = green_mode_device_proxy(simple_device_fqdn) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_device_proxy.py:596: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 511s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ---------------------------- Captured stdout setup ----------------------------- 511s Ready to accept request 511s ---------------------------- Captured stderr setup ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ____________________ test_no_memory_leak_for_repr[Asyncio] _____________________ 511s green_mode_device_proxy = functools.partial(functools.partial(, green_mode=tango._tango.GreenMode.Asyncio), wait=True) 511s simple_device_fqdn = 'tango://127.0.0.1:33511/test/nodb/testdevice#dbase=no' 511s 511s def test_no_memory_leak_for_repr(green_mode_device_proxy, simple_device_fqdn): 511s > proxy = green_mode_device_proxy(simple_device_fqdn) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_device_proxy.py:613: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 511s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ---------------------------- Captured stdout setup ----------------------------- 511s Ready to accept request 511s ---------------------------- Captured stderr setup ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _____________________ test_no_memory_leak_for_str[Asyncio] _____________________ 511s green_mode_device_proxy = functools.partial(functools.partial(, green_mode=tango._tango.GreenMode.Asyncio), wait=True) 511s simple_device_fqdn = 'tango://127.0.0.1:57937/test/nodb/testdevice#dbase=no' 511s 511s def test_no_memory_leak_for_str(green_mode_device_proxy, simple_device_fqdn): 511s > proxy = green_mode_device_proxy(simple_device_fqdn) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_device_proxy.py:625: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 511s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ---------------------------- Captured stdout setup ----------------------------- 511s Ready to accept request 511s ---------------------------- Captured stderr setup ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ____________________ test_no_cyclic_ref_for_proxy[Asyncio] _____________________ 511s green_mode_device_proxy = functools.partial(functools.partial(, green_mode=tango._tango.GreenMode.Asyncio), wait=True) 511s simple_device_fqdn = 'tango://127.0.0.1:46005/test/nodb/testdevice#dbase=no' 511s 511s def test_no_cyclic_ref_for_proxy(green_mode_device_proxy, simple_device_fqdn): 511s > proxy = green_mode_device_proxy(simple_device_fqdn) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_device_proxy.py:637: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 511s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ---------------------------- Captured stdout setup ----------------------------- 511s Ready to accept request 511s ---------------------------- Captured stderr setup ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ________________________ test_async_logging_decorators _________________________ 511s def test_async_logging_decorators(): 511s > with MultiDeviceTestContext(async_devices_info) as context: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_log.py:279: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ____________________________ test_logging[Asyncio] _____________________________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_logging(server_green_mode): 511s log_received = threading.Event() 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class LogSourceDevice(Device): 511s green_mode = server_green_mode 511s _last_log_time = 0.0 511s 511s @command(dtype_in=("str",)) 511s async def log_fatal_message(self, msg): 511s self._last_log_time = time.time() 511s if len(msg) > 1: 511s self.fatal_stream(msg[0], msg[1]) 511s else: 511s self.fatal_stream(msg[0]) 511s 511s @command(dtype_in=("str",)) 511s async def log_error_message(self, msg): 511s self._last_log_time = time.time() 511s if len(msg) > 1: 511s self.error_stream(msg[0], msg[1]) 511s else: 511s self.error_stream(msg[0]) 511s 511s @command(dtype_in=("str",)) 511s async def log_warn_message(self, msg): 511s self._last_log_time = time.time() 511s if len(msg) > 1: 511s self.warn_stream(msg[0], msg[1]) 511s else: 511s self.warn_stream(msg[0]) 511s 511s @command(dtype_in=("str",)) 511s async def log_info_message(self, msg): 511s self._last_log_time = time.time() 511s if len(msg) > 1: 511s self.info_stream(msg[0], msg[1]) 511s else: 511s self.info_stream(msg[0]) 511s 511s @command(dtype_in=("str",)) 511s async def log_debug_message(self, msg): 511s self._last_log_time = time.time() 511s if len(msg) > 1: 511s self.debug_stream(msg[0], msg[1]) 511s else: 511s self.debug_stream(msg[0]) 511s 511s @attribute(dtype=float) 511s async def last_log_time(self): 511s return self._last_log_time 511s 511s class LogConsumerDevice(Device): 511s green_mode = server_green_mode 511s _last_log_data = [] 511s 511s @command(dtype_in=("str",)) 511s async def Log(self, argin): 511s self._last_log_data = argin 511s log_received.set() 511s 511s @attribute(dtype=int) 511s async def last_log_timestamp_ms(self): 511s return int(self._last_log_data[0]) 511s 511s @attribute(dtype=str) 511s async def last_log_level(self): 511s return self._last_log_data[1] 511s 511s @attribute(dtype=str) 511s async def last_log_source(self): 511s return self._last_log_data[2] 511s 511s @attribute(dtype=str) 511s async def last_log_message(self): 511s return self._last_log_data[3] 511s 511s @attribute(dtype=str) 511s async def last_log_context_unused(self): 511s return self._last_log_data[4] 511s 511s @attribute(dtype=str) 511s async def last_log_thread_id(self): 511s return self._last_log_data[5] 511s 511s else: 511s 511s class LogSourceDevice(Device): 511s green_mode = server_green_mode 511s _last_log_time = 0.0 511s 511s @command(dtype_in=("str",)) 511s def log_fatal_message(self, msg): 511s self._last_log_time = time.time() 511s if len(msg) > 1: 511s self.fatal_stream(msg[0], msg[1]) 511s else: 511s self.fatal_stream(msg[0]) 511s 511s @command(dtype_in=("str",)) 511s def log_error_message(self, msg): 511s self._last_log_time = time.time() 511s if len(msg) > 1: 511s self.error_stream(msg[0], msg[1]) 511s else: 511s self.error_stream(msg[0]) 511s 511s @command(dtype_in=("str",)) 511s def log_warn_message(self, msg): 511s self._last_log_time = time.time() 511s if len(msg) > 1: 511s self.warn_stream(msg[0], msg[1]) 511s else: 511s self.warn_stream(msg[0]) 511s 511s @command(dtype_in=("str",)) 511s def log_info_message(self, msg): 511s self._last_log_time = time.time() 511s if len(msg) > 1: 511s self.info_stream(msg[0], msg[1]) 511s else: 511s self.info_stream(msg[0]) 511s 511s @command(dtype_in=("str",)) 511s def log_debug_message(self, msg): 511s self._last_log_time = time.time() 511s if len(msg) > 1: 511s self.debug_stream(msg[0], msg[1]) 511s else: 511s self.debug_stream(msg[0]) 511s 511s @attribute(dtype=float) 511s def last_log_time(self): 511s return self._last_log_time 511s 511s class LogConsumerDevice(Device): 511s green_mode = server_green_mode 511s _last_log_data = [] 511s 511s @command(dtype_in=("str",)) 511s def Log(self, argin): 511s self._last_log_data = argin 511s log_received.set() 511s 511s @attribute(dtype=int) 511s def last_log_timestamp_ms(self): 511s return int(self._last_log_data[0]) 511s 511s @attribute(dtype=str) 511s def last_log_level(self): 511s return self._last_log_data[1] 511s 511s @attribute(dtype=str) 511s def last_log_source(self): 511s return self._last_log_data[2] 511s 511s @attribute(dtype=str) 511s def last_log_message(self): 511s return self._last_log_data[3] 511s 511s @attribute(dtype=str) 511s def last_log_context_unused(self): 511s return self._last_log_data[4] 511s 511s @attribute(dtype=str) 511s def last_log_thread_id(self): 511s return self._last_log_data[5] 511s 511s def assert_log_details_correct(level, msg): 511s assert log_received.wait(0.5) 511s _assert_log_time_close_enough() 511s _assert_log_fields_correct_for_level(level, msg) 511s log_received.clear() 511s 511s def _assert_log_time_close_enough(): 511s log_emit_time = proxy_source.last_log_time 511s log_receive_time = proxy_consumer.last_log_timestamp_ms / 1000.0 511s now = time.time() 511s # cppTango logger time function may use a different 511s # implementation to CPython's time.time(). This is 511s # especially noticeable on Windows platforms. 511s timer_implementation_tolerance = 0.020 if WINDOWS else 0.001 511s min_time = log_emit_time - timer_implementation_tolerance 511s max_time = now + timer_implementation_tolerance 511s assert min_time <= log_receive_time <= max_time 511s 511s def _assert_log_fields_correct_for_level(level, msg): 511s assert proxy_consumer.last_log_level == level.upper() 511s assert proxy_consumer.last_log_source == "test/log/source" 511s assert proxy_consumer.last_log_message == msg 511s assert proxy_consumer.last_log_context_unused == "" 511s assert len(proxy_consumer.last_log_thread_id) > 0 511s 511s devices_info = ( 511s {"class": LogSourceDevice, "devices": [{"name": "test/log/source"}]}, 511s {"class": LogConsumerDevice, "devices": [{"name": "test/log/consumer"}]}, 511s ) 511s 511s > with MultiDeviceTestContext(devices_info) as context: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_log.py:528: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________________ test_empty_device[Asyncio] __________________________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_empty_device(server_green_mode): 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:133: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ___________________ test_set_state_status[ON-Asyncio-False] ____________________ 511s state = tango._tango.DevState.ON 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ____________________ test_set_state_status[ON-Asyncio-True] ____________________ 511s state = tango._tango.DevState.ON 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ___________________ test_set_state_status[OFF-Asyncio-False] ___________________ 511s state = tango._tango.DevState.OFF 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ___________________ test_set_state_status[OFF-Asyncio-True] ____________________ 511s state = tango._tango.DevState.OFF 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_set_state_status[CLOSE-Asyncio-False] __________________ 511s state = tango._tango.DevState.CLOSE 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_set_state_status[CLOSE-Asyncio-True] ___________________ 511s state = tango._tango.DevState.CLOSE 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_set_state_status[OPEN-Asyncio-False] ___________________ 511s state = tango._tango.DevState.OPEN 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ___________________ test_set_state_status[OPEN-Asyncio-True] ___________________ 511s state = tango._tango.DevState.OPEN 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_set_state_status[INSERT-Asyncio-False] __________________ 511s state = tango._tango.DevState.INSERT 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_set_state_status[INSERT-Asyncio-True] __________________ 511s state = tango._tango.DevState.INSERT 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_set_state_status[EXTRACT-Asyncio-False] _________________ 511s state = tango._tango.DevState.EXTRACT 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_set_state_status[EXTRACT-Asyncio-True] __________________ 511s state = tango._tango.DevState.EXTRACT 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_set_state_status[MOVING-Asyncio-False] __________________ 511s state = tango._tango.DevState.MOVING 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_set_state_status[MOVING-Asyncio-True] __________________ 511s state = tango._tango.DevState.MOVING 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_set_state_status[STANDBY-Asyncio-False] _________________ 511s state = tango._tango.DevState.STANDBY 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_set_state_status[STANDBY-Asyncio-True] __________________ 511s state = tango._tango.DevState.STANDBY 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_set_state_status[FAULT-Asyncio-False] __________________ 511s state = tango._tango.DevState.FAULT 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_set_state_status[FAULT-Asyncio-True] ___________________ 511s state = tango._tango.DevState.FAULT 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_set_state_status[INIT-Asyncio-False] ___________________ 511s state = tango._tango.DevState.INIT 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ___________________ test_set_state_status[INIT-Asyncio-True] ___________________ 511s state = tango._tango.DevState.INIT 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_set_state_status[RUNNING-Asyncio-False] _________________ 511s state = tango._tango.DevState.RUNNING 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_set_state_status[RUNNING-Asyncio-True] __________________ 511s state = tango._tango.DevState.RUNNING 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_set_state_status[ALARM-Asyncio-False] __________________ 511s state = tango._tango.DevState.ALARM 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_set_state_status[ALARM-Asyncio-True] ___________________ 511s state = tango._tango.DevState.ALARM 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_set_state_status[DISABLE-Asyncio-False] _________________ 511s state = tango._tango.DevState.DISABLE 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_set_state_status[DISABLE-Asyncio-True] __________________ 511s state = tango._tango.DevState.DISABLE 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_set_state_status[UNKNOWN-Asyncio-False] _________________ 511s state = tango._tango.DevState.UNKNOWN 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_set_state_status[UNKNOWN-Asyncio-True] __________________ 511s state = tango._tango.DevState.UNKNOWN 511s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 511s 511s @pytest.mark.parametrize("force_user_status", [False, True]) 511s def test_set_state_status(state, server_green_mode, force_user_status): 511s if force_user_status: 511s status = "\n".join( 511s ( 511s "This is a multiline status", 511s "with special characters such as", 511s "Café à la crème", 511s ) 511s ) 511s else: 511s status = f"The device is in {state!s} state." 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def init_device(self): 511s self.set_state(state) 511s if force_user_status: 511s self.set_status(status) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:215: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _____________________ test_user_dev_state_status[Asyncio] ______________________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_user_dev_state_status(server_green_mode): 511s state = DevState.MOVING 511s status = "Device is MOVING" 511s 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s async def dev_state(self): 511s return state 511s 511s async def dev_status(self): 511s return status 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s def dev_state(self): 511s return state 511s 511s def dev_status(self): 511s return status 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:246: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ________________ test_attr_quality_checked_with_state[Asyncio] _________________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_attr_quality_checked_with_state(server_green_mode): 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class BaseTestDevice(Device): 511s @command(dtype_out=bool) 511s async def check_sub_function_was_called(self): 511s return ( 511s self.read_attr_hardware_was_called 511s and self.always_executed_hook_was_called 511s ) 511s 511s else: 511s 511s class BaseTestDevice(Device): 511s @command(dtype_out=bool) 511s def check_sub_function_was_called(self): 511s return ( 511s self.read_attr_hardware_was_called 511s and self.always_executed_hook_was_called 511s ) 511s 511s class TestDevice(BaseTestDevice): 511s green_mode = server_green_mode 511s 511s read_attr_hardware_was_called = False 511s always_executed_hook_was_called = False 511s 511s sync_code = textwrap.dedent( 511s """ 511s def init_device(self): 511s Device.init_device(self) 511s self.set_state(DevState.ON) 511s 511s def read_attr_hardware(self, attr_list): 511s self.read_attr_hardware_was_called = True 511s return Device.read_attr_hardware(self, attr_list) 511s 511s def always_executed_hook(self): 511s self.always_executed_hook_was_called = True 511s 511s @attribute(max_alarm=0) 511s def test_attribute(self): 511s return 42 511s """ 511s ) 511s 511s if server_green_mode == GreenMode.Asyncio: 511s exec( 511s sync_code.replace("def", "async def").replace("Device", "await Device") 511s ) 511s else: 511s exec(sync_code) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:304: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _____________________ test_device_get_attr_config[Asyncio] _____________________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_device_get_attr_config(server_green_mode): 511s class TestDevice(Device): 511s # green mode matters to check deadlocks in async modes 511s green_mode = server_green_mode 511s 511s sync_code = textwrap.dedent( 511s """ 511s @attribute(dtype=bool) 511s def attr_config_ok(self): 511s # testing that call to get_attribute_config for all types of 511s # input arguments gives same result and doesn't raise an exception 511s ac1 = self.get_attribute_config(b"attr_config_ok") 511s ac2 = self.get_attribute_config("attr_config_ok") 511s ac3 = self.get_attribute_config(["attr_config_ok"]) 511s return repr(ac1) == repr(ac2) == repr(ac3) 511s """ 511s ) 511s 511s if server_green_mode == GreenMode.Asyncio: 511s exec(sync_code.replace("def", "async def")) 511s else: 511s exec(sync_code) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:332: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _____________________ test_device_set_attr_config[Asyncio] _____________________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_device_set_attr_config(server_green_mode): 511s class TestDevice(Device): 511s # green mode matters to check deadlocks in async modes 511s green_mode = server_green_mode 511s 511s sync_code = textwrap.dedent( 511s """ 511s @attribute(dtype=int) 511s def attr(self): 511s attr_config = self.get_attribute_config("attr") 511s attr_config[0].min_value = "-7" 511s attr_config[0].min_alarm = "-6" 511s 511s attr_config[0].max_alarm = "6" 511s attr_config[0].max_value = "7" 511s 511s self.set_attribute_config(attr_config) 511s assert repr(attr_config) == repr(self.get_attribute_config("attr")) 511s 511s with pytest.warns(PyTangoUserWarning, match="is not supported by Tango IDL"): 511s attr_config[0].lala = "7" 511s 511s attr_config = self.get_attribute_config_3("attr") 511s attr_config[0].min_value = "-5" 511s attr_config[0].att_alarm.min_alarm = "-4" 511s attr_config[0].att_alarm.min_warning = "-3" 511s 511s attr_config[0].att_alarm.max_warning = "3" 511s attr_config[0].att_alarm.max_alarm = "4" 511s attr_config[0].max_value = "5" 511s 511s self.set_attribute_config_3(attr_config) 511s assert repr(attr_config) == repr(self.get_attribute_config_3("attr")) 511s 511s with pytest.warns(PyTangoUserWarning, match="is not supported by Tango IDL"): 511s attr_config[0].lala = "7" 511s 511s attr = self.get_device_attr().get_attr_by_name("attr") 511s 511s val = -2 511s for f in ["min_alarm", "min_warning", "max_warning", "max_alarm"]: 511s getattr(attr, f"set_{f}")(val) 511s assert val == getattr(attr, f"get_{f}")() 511s val += 1 511s 511s return 1 511s """ 511s ) 511s 511s if server_green_mode == GreenMode.Asyncio: 511s exec(sync_code.replace("def", "async def")) 511s else: 511s exec(sync_code) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:390: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _____________________ test_exception_propagation[Asyncio] ______________________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_exception_propagation(server_green_mode): 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @attribute 511s async def attr(self): 511s 1 / 0 # pylint: disable=pointless-statement 511s 511s @command 511s async def cmd(self): 511s 1 / 0 # pylint: disable=pointless-statement 511s 511s else: 511s 511s class TestDevice(Device): 511s green_mode = server_green_mode 511s 511s @attribute 511s def attr(self): 511s 1 / 0 # pylint: disable=pointless-statement 511s 511s @command 511s def cmd(self): 511s 1 / 0 # pylint: disable=pointless-statement 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:873: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_asyncio_server_init_hook_change_state __________________ 511s def test_asyncio_server_init_hook_change_state(): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s async def server_init_hook(self): 511s await asyncio.sleep(0.01) 511s self.set_state(DevState.ON) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:959: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ________________ test_async_server_init_hook_called_after_init _________________ 511s def test_async_server_init_hook_called_after_init(): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s async def init_device(self): 511s await asyncio.sleep(0.01) 511s self.set_state(DevState.INIT) 511s 511s async def server_init_hook(self): 511s await asyncio.sleep(0.01) 511s self.set_state(DevState.ON) 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:987: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ___________________ test_asyncio_server_init_hook_exception ____________________ 511s def test_asyncio_server_init_hook_exception(): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s async def server_init_hook(self): 511s await asyncio.sleep(0.01) 511s raise RuntimeError("Force exception for test") 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:1010: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _____ test_deprecation_warning_for_sync_attr_com_methods_in_asyncio_device _____ 511s def test_deprecation_warning_for_sync_attr_com_methods_in_asyncio_device(): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s attr_value = 1 511s 511s # static attributes and commands 511s 511s @attribute(access=AttrWriteType.READ_WRITE) 511s async def attr_all_methods_async(self) -> int: 511s return self.attr_value 511s 511s @attr_all_methods_async.write 511s async def attr_all_methods_async(self, value): 511s self.attr_value = value 511s 511s @attr_all_methods_async.is_allowed 511s async def attr_all_methods_async(self, req_type): 511s return True 511s 511s @attribute(access=AttrWriteType.READ_WRITE) 511s def attr_sync_read_write(self) -> int: 511s return self.attr_value 511s 511s @attr_sync_read_write.write 511s def set_attr_sync_read_write(self, value): 511s self.attr_value = value 511s 511s @attribute 511s async def attr_sync_is_allowed(self) -> int: 511s return self.attr_value 511s 511s @attr_sync_is_allowed.is_allowed 511s def is_attr_sync_is_allowed(self, req_type): 511s return True 511s 511s @command(dtype_out=int) 511s async def cmd_all_methods_async(self, val_in: int) -> int: 511s return val_in 511s 511s async def is_cmd_all_methods_async_allowed(self): 511s return True 511s 511s @command(dtype_out=int) 511s def cmd_sync_func(self, val_in: int) -> int: 511s return val_in 511s 511s @command(dtype_out=int) 511s async def cmd_sync_is_allowed(self, val_in: int) -> int: 511s return val_in 511s 511s def is_cmd_sync_is_allowed_allowed(self): 511s return True 511s 511s # dynamic attributes and commands 511s 511s @command 511s async def add_dynamic_cmd_attr(self): 511s attr = attribute( 511s name="dyn_attr_all_methods_async", 511s access=AttrWriteType.READ_WRITE, 511s fget=self.dyn_attr_all_methods_async, 511s fset=self.dyn_set_attr_all_methods_async, 511s fisallowed=self.is_dyn_attr_all_methods_async_allowed, 511s ) 511s self.add_attribute(attr) 511s 511s attr = attribute( 511s name="dyn_attr_sync_read_write", 511s access=AttrWriteType.READ_WRITE, 511s fget=self.dyn_attr_sync_read_write, 511s fset=self.dyn_set_attr_sync_read_write, 511s ) 511s self.add_attribute(attr) 511s 511s attr = attribute( 511s name="dyn_attr_sync_is_allowed", 511s access=AttrWriteType.READ, 511s fget=self.dyn_attr_sync_is_allowed, 511s fisallowed=self.is_dyn_attr_sync_is_allowed, 511s ) 511s self.add_attribute(attr) 511s 511s cmd = command( 511s f=self.dyn_cmd_all_methods_async, 511s fisallowed=self.is_dyn_cmd_all_methods_async_allowed, 511s ) 511s self.add_command(cmd) 511s 511s cmd = command(f=self.dyn_cmd_sync_func) 511s self.add_command(cmd) 511s 511s cmd = command( 511s f=self.dyn_cmd_sync_is_allowed, 511s fisallowed=self.is_dyn_cmd_sync_is_allowed_allowed, 511s ) 511s self.add_command(cmd) 511s 511s async def dyn_attr_all_methods_async(self, attr) -> int: 511s return self.attr_value 511s 511s async def dyn_set_attr_all_methods_async(self, attr): 511s self.attr_value = attr.get_write_value() 511s 511s async def is_dyn_attr_all_methods_async_allowed(self, req_type): 511s return True 511s 511s def dyn_attr_sync_read_write(self, attr) -> int: 511s return self.attr_value 511s 511s def dyn_set_attr_sync_read_write(self, attr): 511s self.attr_value = attr.get_write_value() 511s 511s async def dyn_attr_sync_is_allowed(self, attr) -> int: 511s return self.attr_value 511s 511s def is_dyn_attr_sync_is_allowed(self, req_type): 511s return True 511s 511s async def dyn_cmd_all_methods_async(self, val_in: int) -> int: 511s return val_in 511s 511s async def is_dyn_cmd_all_methods_async_allowed(self): 511s return True 511s 511s def dyn_cmd_sync_func(self, val_in: int) -> int: 511s return val_in 511s 511s async def dyn_cmd_sync_is_allowed(self, val_in: int) -> int: 511s return val_in 511s 511s def is_dyn_cmd_sync_is_allowed_allowed(self): 511s return True 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:1286: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _ test_deprecation_warning_for_standard_methods_in_asyncio_device[init_device] _ 511s method = 'init_device' 511s 511s @pytest.mark.parametrize( 511s "method", 511s [ 511s "init_device", 511s "delete_device", 511s "dev_state", 511s "dev_status", 511s "read_attr_hardware", 511s "always_executed_hook", 511s ], 511s ) 511s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s @attribute 511s async def attr(self) -> int: 511s return 1 511s 511s async_code = textwrap.dedent( 511s """ 511s async def init_device(self): 511s pass 511s 511s async def delete_device(self): 511s pass 511s 511s async def dev_state(self): 511s return DevState.ON 511s 511s async def dev_status(self): 511s return "All good" 511s 511s async def read_attr_hardware(self, attr_list): 511s pass 511s 511s async def always_executed_hook(self): 511s pass 511s """ 511s ) 511s 511s exec(async_code.replace(f"async def {method}", f"def {method}")) 511s 511s with pytest.warns(DeprecationWarning, match=method): 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:1374: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s 511s During handling of the above exception, another exception occurred: 511s 511s method = 'init_device' 511s 511s @pytest.mark.parametrize( 511s "method", 511s [ 511s "init_device", 511s "delete_device", 511s "dev_state", 511s "dev_status", 511s "read_attr_hardware", 511s "always_executed_hook", 511s ], 511s ) 511s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s @attribute 511s async def attr(self) -> int: 511s return 1 511s 511s async_code = textwrap.dedent( 511s """ 511s async def init_device(self): 511s pass 511s 511s async def delete_device(self): 511s pass 511s 511s async def dev_state(self): 511s return DevState.ON 511s 511s async def dev_status(self): 511s return "All good" 511s 511s async def read_attr_hardware(self, attr_list): 511s pass 511s 511s async def always_executed_hook(self): 511s pass 511s """ 511s ) 511s 511s exec(async_code.replace(f"async def {method}", f"def {method}")) 511s 511s > with pytest.warns(DeprecationWarning, match=method): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s E Failed: DID NOT WARN. No warnings of type (,) were emitted. 511s E Emitted warnings: []. 511s 511s tests/test_server.py:1373: Failed 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _ test_deprecation_warning_for_standard_methods_in_asyncio_device[delete_device] _ 511s method = 'delete_device' 511s 511s @pytest.mark.parametrize( 511s "method", 511s [ 511s "init_device", 511s "delete_device", 511s "dev_state", 511s "dev_status", 511s "read_attr_hardware", 511s "always_executed_hook", 511s ], 511s ) 511s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s @attribute 511s async def attr(self) -> int: 511s return 1 511s 511s async_code = textwrap.dedent( 511s """ 511s async def init_device(self): 511s pass 511s 511s async def delete_device(self): 511s pass 511s 511s async def dev_state(self): 511s return DevState.ON 511s 511s async def dev_status(self): 511s return "All good" 511s 511s async def read_attr_hardware(self, attr_list): 511s pass 511s 511s async def always_executed_hook(self): 511s pass 511s """ 511s ) 511s 511s exec(async_code.replace(f"async def {method}", f"def {method}")) 511s 511s with pytest.warns(DeprecationWarning, match=method): 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:1374: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s 511s During handling of the above exception, another exception occurred: 511s 511s method = 'delete_device' 511s 511s @pytest.mark.parametrize( 511s "method", 511s [ 511s "init_device", 511s "delete_device", 511s "dev_state", 511s "dev_status", 511s "read_attr_hardware", 511s "always_executed_hook", 511s ], 511s ) 511s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s @attribute 511s async def attr(self) -> int: 511s return 1 511s 511s async_code = textwrap.dedent( 511s """ 511s async def init_device(self): 511s pass 511s 511s async def delete_device(self): 511s pass 511s 511s async def dev_state(self): 511s return DevState.ON 511s 511s async def dev_status(self): 511s return "All good" 511s 511s async def read_attr_hardware(self, attr_list): 511s pass 511s 511s async def always_executed_hook(self): 511s pass 511s """ 511s ) 511s 511s exec(async_code.replace(f"async def {method}", f"def {method}")) 511s 511s > with pytest.warns(DeprecationWarning, match=method): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s E Failed: DID NOT WARN. No warnings of type (,) were emitted. 511s E Emitted warnings: []. 511s 511s tests/test_server.py:1373: Failed 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __ test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_state] __ 511s method = 'dev_state' 511s 511s @pytest.mark.parametrize( 511s "method", 511s [ 511s "init_device", 511s "delete_device", 511s "dev_state", 511s "dev_status", 511s "read_attr_hardware", 511s "always_executed_hook", 511s ], 511s ) 511s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s @attribute 511s async def attr(self) -> int: 511s return 1 511s 511s async_code = textwrap.dedent( 511s """ 511s async def init_device(self): 511s pass 511s 511s async def delete_device(self): 511s pass 511s 511s async def dev_state(self): 511s return DevState.ON 511s 511s async def dev_status(self): 511s return "All good" 511s 511s async def read_attr_hardware(self, attr_list): 511s pass 511s 511s async def always_executed_hook(self): 511s pass 511s """ 511s ) 511s 511s exec(async_code.replace(f"async def {method}", f"def {method}")) 511s 511s with pytest.warns(DeprecationWarning, match=method): 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:1374: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s 511s During handling of the above exception, another exception occurred: 511s 511s method = 'dev_state' 511s 511s @pytest.mark.parametrize( 511s "method", 511s [ 511s "init_device", 511s "delete_device", 511s "dev_state", 511s "dev_status", 511s "read_attr_hardware", 511s "always_executed_hook", 511s ], 511s ) 511s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s @attribute 511s async def attr(self) -> int: 511s return 1 511s 511s async_code = textwrap.dedent( 511s """ 511s async def init_device(self): 511s pass 511s 511s async def delete_device(self): 511s pass 511s 511s async def dev_state(self): 511s return DevState.ON 511s 511s async def dev_status(self): 511s return "All good" 511s 511s async def read_attr_hardware(self, attr_list): 511s pass 511s 511s async def always_executed_hook(self): 511s pass 511s """ 511s ) 511s 511s exec(async_code.replace(f"async def {method}", f"def {method}")) 511s 511s > with pytest.warns(DeprecationWarning, match=method): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s E Failed: DID NOT WARN. No warnings of type (,) were emitted. 511s E Emitted warnings: []. 511s 511s tests/test_server.py:1373: Failed 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _ test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_status] __ 511s method = 'dev_status' 511s 511s @pytest.mark.parametrize( 511s "method", 511s [ 511s "init_device", 511s "delete_device", 511s "dev_state", 511s "dev_status", 511s "read_attr_hardware", 511s "always_executed_hook", 511s ], 511s ) 511s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s @attribute 511s async def attr(self) -> int: 511s return 1 511s 511s async_code = textwrap.dedent( 511s """ 511s async def init_device(self): 511s pass 511s 511s async def delete_device(self): 511s pass 511s 511s async def dev_state(self): 511s return DevState.ON 511s 511s async def dev_status(self): 511s return "All good" 511s 511s async def read_attr_hardware(self, attr_list): 511s pass 511s 511s async def always_executed_hook(self): 511s pass 511s """ 511s ) 511s 511s exec(async_code.replace(f"async def {method}", f"def {method}")) 511s 511s with pytest.warns(DeprecationWarning, match=method): 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:1374: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s 511s During handling of the above exception, another exception occurred: 511s 511s method = 'dev_status' 511s 511s @pytest.mark.parametrize( 511s "method", 511s [ 511s "init_device", 511s "delete_device", 511s "dev_state", 511s "dev_status", 511s "read_attr_hardware", 511s "always_executed_hook", 511s ], 511s ) 511s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s @attribute 511s async def attr(self) -> int: 511s return 1 511s 511s async_code = textwrap.dedent( 511s """ 511s async def init_device(self): 511s pass 511s 511s async def delete_device(self): 511s pass 511s 511s async def dev_state(self): 511s return DevState.ON 511s 511s async def dev_status(self): 511s return "All good" 511s 511s async def read_attr_hardware(self, attr_list): 511s pass 511s 511s async def always_executed_hook(self): 511s pass 511s """ 511s ) 511s 511s exec(async_code.replace(f"async def {method}", f"def {method}")) 511s 511s > with pytest.warns(DeprecationWarning, match=method): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s E Failed: DID NOT WARN. No warnings of type (,) were emitted. 511s E Emitted warnings: []. 511s 511s tests/test_server.py:1373: Failed 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _ test_deprecation_warning_for_standard_methods_in_asyncio_device[read_attr_hardware] _ 511s method = 'read_attr_hardware' 511s 511s @pytest.mark.parametrize( 511s "method", 511s [ 511s "init_device", 511s "delete_device", 511s "dev_state", 511s "dev_status", 511s "read_attr_hardware", 511s "always_executed_hook", 511s ], 511s ) 511s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s @attribute 511s async def attr(self) -> int: 511s return 1 511s 511s async_code = textwrap.dedent( 511s """ 511s async def init_device(self): 511s pass 511s 511s async def delete_device(self): 511s pass 511s 511s async def dev_state(self): 511s return DevState.ON 511s 511s async def dev_status(self): 511s return "All good" 511s 511s async def read_attr_hardware(self, attr_list): 511s pass 511s 511s async def always_executed_hook(self): 511s pass 511s """ 511s ) 511s 511s exec(async_code.replace(f"async def {method}", f"def {method}")) 511s 511s with pytest.warns(DeprecationWarning, match=method): 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:1374: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s 511s During handling of the above exception, another exception occurred: 511s 511s method = 'read_attr_hardware' 511s 511s @pytest.mark.parametrize( 511s "method", 511s [ 511s "init_device", 511s "delete_device", 511s "dev_state", 511s "dev_status", 511s "read_attr_hardware", 511s "always_executed_hook", 511s ], 511s ) 511s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s @attribute 511s async def attr(self) -> int: 511s return 1 511s 511s async_code = textwrap.dedent( 511s """ 511s async def init_device(self): 511s pass 511s 511s async def delete_device(self): 511s pass 511s 511s async def dev_state(self): 511s return DevState.ON 511s 511s async def dev_status(self): 511s return "All good" 511s 511s async def read_attr_hardware(self, attr_list): 511s pass 511s 511s async def always_executed_hook(self): 511s pass 511s """ 511s ) 511s 511s exec(async_code.replace(f"async def {method}", f"def {method}")) 511s 511s > with pytest.warns(DeprecationWarning, match=method): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s E Failed: DID NOT WARN. No warnings of type (,) were emitted. 511s E Emitted warnings: []. 511s 511s tests/test_server.py:1373: Failed 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _ test_deprecation_warning_for_standard_methods_in_asyncio_device[always_executed_hook] _ 511s method = 'always_executed_hook' 511s 511s @pytest.mark.parametrize( 511s "method", 511s [ 511s "init_device", 511s "delete_device", 511s "dev_state", 511s "dev_status", 511s "read_attr_hardware", 511s "always_executed_hook", 511s ], 511s ) 511s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s @attribute 511s async def attr(self) -> int: 511s return 1 511s 511s async_code = textwrap.dedent( 511s """ 511s async def init_device(self): 511s pass 511s 511s async def delete_device(self): 511s pass 511s 511s async def dev_state(self): 511s return DevState.ON 511s 511s async def dev_status(self): 511s return "All good" 511s 511s async def read_attr_hardware(self, attr_list): 511s pass 511s 511s async def always_executed_hook(self): 511s pass 511s """ 511s ) 511s 511s exec(async_code.replace(f"async def {method}", f"def {method}")) 511s 511s with pytest.warns(DeprecationWarning, match=method): 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_server.py:1374: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s 511s During handling of the above exception, another exception occurred: 511s 511s method = 'always_executed_hook' 511s 511s @pytest.mark.parametrize( 511s "method", 511s [ 511s "init_device", 511s "delete_device", 511s "dev_state", 511s "dev_status", 511s "read_attr_hardware", 511s "always_executed_hook", 511s ], 511s ) 511s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 511s class TestDevice(Device): 511s green_mode = GreenMode.Asyncio 511s 511s @attribute 511s async def attr(self) -> int: 511s return 1 511s 511s async_code = textwrap.dedent( 511s """ 511s async def init_device(self): 511s pass 511s 511s async def delete_device(self): 511s pass 511s 511s async def dev_state(self): 511s return DevState.ON 511s 511s async def dev_status(self): 511s return "All good" 511s 511s async def read_attr_hardware(self, attr_list): 511s pass 511s 511s async def always_executed_hook(self): 511s pass 511s """ 511s ) 511s 511s exec(async_code.replace(f"async def {method}", f"def {method}")) 511s 511s > with pytest.warns(DeprecationWarning, match=method): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s E Failed: DID NOT WARN. No warnings of type (,) were emitted. 511s E Emitted warnings: []. 511s 511s tests/test_server.py:1373: Failed 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________________ test_single_device[Asyncio] __________________________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_single_device(server_green_mode): 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device1Asyncio): 511s pass 511s 511s else: 511s 511s class TestDevice(Device1): 511s green_mode = server_green_mode 511s 511s > with DeviceTestContext(TestDevice) as proxy: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:144: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ____________________ test_multi_with_single_device[Asyncio] ____________________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_multi_with_single_device(server_green_mode): 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice(Device1Asyncio): 511s pass 511s 511s else: 511s 511s class TestDevice(Device1): 511s green_mode = server_green_mode 511s 511s devices_info = ({"class": TestDevice, "devices": [{"name": "test/device1/1"}]},) 511s 511s > with MultiDeviceTestContext(devices_info) as context: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:235: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _____________________ test_multi_with_two_devices[Asyncio] _____________________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_multi_with_two_devices(server_green_mode): 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice1(Device1Asyncio): 511s pass 511s 511s class TestDevice2(Device2Asyncio): 511s pass 511s 511s else: 511s 511s class TestDevice1(Device1): 511s green_mode = server_green_mode 511s 511s class TestDevice2(Device2): 511s green_mode = server_green_mode 511s 511s devices_info = ( 511s {"class": TestDevice1, "devices": [{"name": "test/device1/1"}]}, 511s {"class": TestDevice2, "devices": [{"name": "test/device2/1"}]}, 511s ) 511s 511s > with MultiDeviceTestContext(devices_info) as context: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:275: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _ test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Asyncio-None] _ 511s first_type = 511s second_type = , exception_type = None 511s 511s @pytest.mark.parametrize( 511s "first_type, second_type, exception_type", 511s [ 511s (Device1GreenModeUnspecified, Device2GreenModeUnspecified, None), 511s (Device1GreenModeUnspecified, Device2Synchronous, None), 511s (Device1GreenModeUnspecified, Device2Gevent, ValueError), 511s (Device1GreenModeUnspecified, Device2Asyncio, ValueError), 511s (Device1Synchronous, Device2GreenModeUnspecified, None), 511s (Device1Synchronous, Device2Synchronous, None), 511s (Device1Synchronous, Device2Gevent, ValueError), 511s (Device1Synchronous, Device2Asyncio, ValueError), 511s (Device1Asyncio, Device2GreenModeUnspecified, ValueError), 511s (Device1Asyncio, Device2Synchronous, ValueError), 511s (Device1Asyncio, Device2Gevent, ValueError), 511s (Device1Asyncio, Device2Asyncio, None), 511s (Device1Gevent, Device2GreenModeUnspecified, ValueError), 511s (Device1Gevent, Device2Synchronous, ValueError), 511s (Device1Gevent, Device2Gevent, None), 511s (Device1Gevent, Device2Asyncio, ValueError), 511s ], 511s ) 511s def test_multi_with_mixed_device_green_modes(first_type, second_type, exception_type): 511s devices_info = ( 511s {"class": first_type, "devices": [{"name": "test/device1/1"}]}, 511s {"class": second_type, "devices": [{"name": "test/device2/1"}]}, 511s ) 511s 511s if exception_type is None: 511s > with MultiDeviceTestContext(devices_info): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:312: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _ test_green_modes_in_device_kwarg_and_global[Device1Synchronous-Asyncio-Asyncio-None-SynchronousExecutor] _ 511s device_type = 511s green_mode = tango._tango.GreenMode.Asyncio 511s global_mode = tango._tango.GreenMode.Asyncio, exception_type = None 511s executor_type = 511s 511s @pytest.mark.parametrize( 511s "device_type, green_mode, global_mode, exception_type, executor_type", 511s [ 511s # If a device specifies its green mode explicitly, then both 511s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 511s ( 511s Device1Synchronous, 511s GreenMode.Asyncio, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Synchronous, 511s GreenMode.Gevent, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Asyncio, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s AsyncioExecutor, 511s ), 511s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 511s ( 511s Device1Gevent, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 511s # If device doesn't specify its green mode, but green_mode kwarg is provided, 511s # then we use green_mode kwarg 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Asyncio, 511s None, 511s GeventExecutor, 511s ), 511s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 511s # (currently only works for synchronous mode - see unsupported modes below) 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Synchronous, 511s None, 511s SynchronousExecutor, 511s ), 511s # Deprecated modes - starting from PyTango 10 it is deprecated 511s # to modify sync servers to async "on the fly". 511s # All base methods should be defined with "async def" instead. 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Synchronous, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Gevent, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s # Unsupported modes - device servers with the following combinations 511s # fail to start up. The cause is unknown. This could be fixed in the future. 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Asyncio, 511s RuntimeError, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Gevent, 511s RuntimeError, 511s GeventExecutor, 511s ), 511s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 511s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 511s ], 511s ) 511s def test_green_modes_in_device_kwarg_and_global( 511s device_type, green_mode, global_mode, exception_type, executor_type 511s ): 511s if WINDOWS and exception_type is not None: 511s pytest.skip("Skip test that hangs on Windows") 511s 511s old_green_mode = tango.get_green_mode() 511s try: 511s tango.set_green_mode(global_mode) 511s 511s if exception_type is None: 511s > with DeviceTestContext(device_type, green_mode=green_mode): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:442: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:669: in connect 511s self.server.ping() 511s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 511s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stdout call ----------------------------- 511s Ready to accept request 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _ test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Synchronous-Synchronous-None-AsyncioExecutor] _ 511s device_type = 511s green_mode = tango._tango.GreenMode.Synchronous 511s global_mode = tango._tango.GreenMode.Synchronous, exception_type = None 511s executor_type = 511s 511s @pytest.mark.parametrize( 511s "device_type, green_mode, global_mode, exception_type, executor_type", 511s [ 511s # If a device specifies its green mode explicitly, then both 511s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 511s ( 511s Device1Synchronous, 511s GreenMode.Asyncio, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Synchronous, 511s GreenMode.Gevent, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Asyncio, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s AsyncioExecutor, 511s ), 511s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 511s ( 511s Device1Gevent, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 511s # If device doesn't specify its green mode, but green_mode kwarg is provided, 511s # then we use green_mode kwarg 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Asyncio, 511s None, 511s GeventExecutor, 511s ), 511s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 511s # (currently only works for synchronous mode - see unsupported modes below) 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Synchronous, 511s None, 511s SynchronousExecutor, 511s ), 511s # Deprecated modes - starting from PyTango 10 it is deprecated 511s # to modify sync servers to async "on the fly". 511s # All base methods should be defined with "async def" instead. 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Synchronous, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Gevent, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s # Unsupported modes - device servers with the following combinations 511s # fail to start up. The cause is unknown. This could be fixed in the future. 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Asyncio, 511s RuntimeError, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Gevent, 511s RuntimeError, 511s GeventExecutor, 511s ), 511s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 511s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 511s ], 511s ) 511s def test_green_modes_in_device_kwarg_and_global( 511s device_type, green_mode, global_mode, exception_type, executor_type 511s ): 511s if WINDOWS and exception_type is not None: 511s pytest.skip("Skip test that hangs on Windows") 511s 511s old_green_mode = tango.get_green_mode() 511s try: 511s tango.set_green_mode(global_mode) 511s 511s if exception_type is None: 511s > with DeviceTestContext(device_type, green_mode=green_mode): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:442: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _ test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Gevent-Gevent-None-AsyncioExecutor] _ 511s device_type = 511s green_mode = tango._tango.GreenMode.Gevent 511s global_mode = tango._tango.GreenMode.Gevent, exception_type = None 511s executor_type = 511s 511s @pytest.mark.parametrize( 511s "device_type, green_mode, global_mode, exception_type, executor_type", 511s [ 511s # If a device specifies its green mode explicitly, then both 511s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 511s ( 511s Device1Synchronous, 511s GreenMode.Asyncio, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Synchronous, 511s GreenMode.Gevent, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Asyncio, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s AsyncioExecutor, 511s ), 511s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 511s ( 511s Device1Gevent, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 511s # If device doesn't specify its green mode, but green_mode kwarg is provided, 511s # then we use green_mode kwarg 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Asyncio, 511s None, 511s GeventExecutor, 511s ), 511s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 511s # (currently only works for synchronous mode - see unsupported modes below) 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Synchronous, 511s None, 511s SynchronousExecutor, 511s ), 511s # Deprecated modes - starting from PyTango 10 it is deprecated 511s # to modify sync servers to async "on the fly". 511s # All base methods should be defined with "async def" instead. 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Synchronous, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Gevent, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s # Unsupported modes - device servers with the following combinations 511s # fail to start up. The cause is unknown. This could be fixed in the future. 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Asyncio, 511s RuntimeError, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Gevent, 511s RuntimeError, 511s GeventExecutor, 511s ), 511s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 511s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 511s ], 511s ) 511s def test_green_modes_in_device_kwarg_and_global( 511s device_type, green_mode, global_mode, exception_type, executor_type 511s ): 511s if WINDOWS and exception_type is not None: 511s pytest.skip("Skip test that hangs on Windows") 511s 511s old_green_mode = tango.get_green_mode() 511s try: 511s tango.set_green_mode(global_mode) 511s 511s if exception_type is None: 511s > with DeviceTestContext(device_type, green_mode=green_mode): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:442: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _ test_green_modes_in_device_kwarg_and_global[Device1Gevent-Asyncio-Asyncio-None-GeventExecutor] _ 511s device_type = 511s green_mode = tango._tango.GreenMode.Asyncio 511s global_mode = tango._tango.GreenMode.Asyncio, exception_type = None 511s executor_type = 511s 511s @pytest.mark.parametrize( 511s "device_type, green_mode, global_mode, exception_type, executor_type", 511s [ 511s # If a device specifies its green mode explicitly, then both 511s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 511s ( 511s Device1Synchronous, 511s GreenMode.Asyncio, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Synchronous, 511s GreenMode.Gevent, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Asyncio, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s AsyncioExecutor, 511s ), 511s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 511s ( 511s Device1Gevent, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 511s # If device doesn't specify its green mode, but green_mode kwarg is provided, 511s # then we use green_mode kwarg 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Asyncio, 511s None, 511s GeventExecutor, 511s ), 511s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 511s # (currently only works for synchronous mode - see unsupported modes below) 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Synchronous, 511s None, 511s SynchronousExecutor, 511s ), 511s # Deprecated modes - starting from PyTango 10 it is deprecated 511s # to modify sync servers to async "on the fly". 511s # All base methods should be defined with "async def" instead. 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Synchronous, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Gevent, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s # Unsupported modes - device servers with the following combinations 511s # fail to start up. The cause is unknown. This could be fixed in the future. 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Asyncio, 511s RuntimeError, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Gevent, 511s RuntimeError, 511s GeventExecutor, 511s ), 511s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 511s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 511s ], 511s ) 511s def test_green_modes_in_device_kwarg_and_global( 511s device_type, green_mode, global_mode, exception_type, executor_type 511s ): 511s if WINDOWS and exception_type is not None: 511s pytest.skip("Skip test that hangs on Windows") 511s 511s old_green_mode = tango.get_green_mode() 511s try: 511s tango.set_green_mode(global_mode) 511s 511s if exception_type is None: 511s > with DeviceTestContext(device_type, green_mode=green_mode): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:442: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:669: in connect 511s self.server.ping() 511s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 511s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stdout call ----------------------------- 511s Ready to accept request 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _ test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Synchronous-Asyncio-None-SynchronousExecutor] _ 511s device_type = 511s green_mode = tango._tango.GreenMode.Synchronous 511s global_mode = tango._tango.GreenMode.Asyncio, exception_type = None 511s executor_type = 511s 511s @pytest.mark.parametrize( 511s "device_type, green_mode, global_mode, exception_type, executor_type", 511s [ 511s # If a device specifies its green mode explicitly, then both 511s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 511s ( 511s Device1Synchronous, 511s GreenMode.Asyncio, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Synchronous, 511s GreenMode.Gevent, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Asyncio, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s AsyncioExecutor, 511s ), 511s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 511s ( 511s Device1Gevent, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 511s # If device doesn't specify its green mode, but green_mode kwarg is provided, 511s # then we use green_mode kwarg 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Asyncio, 511s None, 511s GeventExecutor, 511s ), 511s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 511s # (currently only works for synchronous mode - see unsupported modes below) 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Synchronous, 511s None, 511s SynchronousExecutor, 511s ), 511s # Deprecated modes - starting from PyTango 10 it is deprecated 511s # to modify sync servers to async "on the fly". 511s # All base methods should be defined with "async def" instead. 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Synchronous, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Gevent, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s # Unsupported modes - device servers with the following combinations 511s # fail to start up. The cause is unknown. This could be fixed in the future. 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Asyncio, 511s RuntimeError, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Gevent, 511s RuntimeError, 511s GeventExecutor, 511s ), 511s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 511s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 511s ], 511s ) 511s def test_green_modes_in_device_kwarg_and_global( 511s device_type, green_mode, global_mode, exception_type, executor_type 511s ): 511s if WINDOWS and exception_type is not None: 511s pytest.skip("Skip test that hangs on Windows") 511s 511s old_green_mode = tango.get_green_mode() 511s try: 511s tango.set_green_mode(global_mode) 511s 511s if exception_type is None: 511s > with DeviceTestContext(device_type, green_mode=green_mode): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:442: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:669: in connect 511s self.server.ping() 511s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 511s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stdout call ----------------------------- 511s Ready to accept request 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _ test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Gevent-Asyncio-None-GeventExecutor] _ 511s device_type = 511s green_mode = tango._tango.GreenMode.Gevent 511s global_mode = tango._tango.GreenMode.Asyncio, exception_type = None 511s executor_type = 511s 511s @pytest.mark.parametrize( 511s "device_type, green_mode, global_mode, exception_type, executor_type", 511s [ 511s # If a device specifies its green mode explicitly, then both 511s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 511s ( 511s Device1Synchronous, 511s GreenMode.Asyncio, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Synchronous, 511s GreenMode.Gevent, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Asyncio, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s AsyncioExecutor, 511s ), 511s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 511s ( 511s Device1Gevent, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 511s # If device doesn't specify its green mode, but green_mode kwarg is provided, 511s # then we use green_mode kwarg 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Asyncio, 511s None, 511s GeventExecutor, 511s ), 511s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 511s # (currently only works for synchronous mode - see unsupported modes below) 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Synchronous, 511s None, 511s SynchronousExecutor, 511s ), 511s # Deprecated modes - starting from PyTango 10 it is deprecated 511s # to modify sync servers to async "on the fly". 511s # All base methods should be defined with "async def" instead. 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Synchronous, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Gevent, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s # Unsupported modes - device servers with the following combinations 511s # fail to start up. The cause is unknown. This could be fixed in the future. 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Asyncio, 511s RuntimeError, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Gevent, 511s RuntimeError, 511s GeventExecutor, 511s ), 511s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 511s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 511s ], 511s ) 511s def test_green_modes_in_device_kwarg_and_global( 511s device_type, green_mode, global_mode, exception_type, executor_type 511s ): 511s if WINDOWS and exception_type is not None: 511s pytest.skip("Skip test that hangs on Windows") 511s 511s old_green_mode = tango.get_green_mode() 511s try: 511s tango.set_green_mode(global_mode) 511s 511s if exception_type is None: 511s > with DeviceTestContext(device_type, green_mode=green_mode): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:442: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:669: in connect 511s self.server.ping() 511s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 511s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stdout call ----------------------------- 511s Ready to accept request 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _ test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Synchronous-DeprecationWarning-AsyncioExecutor] _ 511s device_type = 511s green_mode = tango._tango.GreenMode.Asyncio 511s global_mode = tango._tango.GreenMode.Synchronous 511s exception_type = 511s executor_type = 511s 511s @pytest.mark.parametrize( 511s "device_type, green_mode, global_mode, exception_type, executor_type", 511s [ 511s # If a device specifies its green mode explicitly, then both 511s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 511s ( 511s Device1Synchronous, 511s GreenMode.Asyncio, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Synchronous, 511s GreenMode.Gevent, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Asyncio, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s AsyncioExecutor, 511s ), 511s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 511s ( 511s Device1Gevent, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 511s # If device doesn't specify its green mode, but green_mode kwarg is provided, 511s # then we use green_mode kwarg 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Asyncio, 511s None, 511s GeventExecutor, 511s ), 511s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 511s # (currently only works for synchronous mode - see unsupported modes below) 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Synchronous, 511s None, 511s SynchronousExecutor, 511s ), 511s # Deprecated modes - starting from PyTango 10 it is deprecated 511s # to modify sync servers to async "on the fly". 511s # All base methods should be defined with "async def" instead. 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Synchronous, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Gevent, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s # Unsupported modes - device servers with the following combinations 511s # fail to start up. The cause is unknown. This could be fixed in the future. 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Asyncio, 511s RuntimeError, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Gevent, 511s RuntimeError, 511s GeventExecutor, 511s ), 511s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 511s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 511s ], 511s ) 511s def test_green_modes_in_device_kwarg_and_global( 511s device_type, green_mode, global_mode, exception_type, executor_type 511s ): 511s if WINDOWS and exception_type is not None: 511s pytest.skip("Skip test that hangs on Windows") 511s 511s old_green_mode = tango.get_green_mode() 511s try: 511s tango.set_green_mode(global_mode) 511s 511s if exception_type is None: 511s with DeviceTestContext(device_type, green_mode=green_mode): 511s pass 511s elif exception_type is DeprecationWarning: 511s with pytest.warns((DeprecationWarning, RuntimeWarning)): 511s > with DeviceTestContext(device_type, green_mode=green_mode): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:446: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s 511s During handling of the above exception, another exception occurred: 511s 511s device_type = 511s green_mode = tango._tango.GreenMode.Asyncio 511s global_mode = tango._tango.GreenMode.Synchronous 511s exception_type = 511s executor_type = 511s 511s @pytest.mark.parametrize( 511s "device_type, green_mode, global_mode, exception_type, executor_type", 511s [ 511s # If a device specifies its green mode explicitly, then both 511s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 511s ( 511s Device1Synchronous, 511s GreenMode.Asyncio, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Synchronous, 511s GreenMode.Gevent, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Asyncio, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s AsyncioExecutor, 511s ), 511s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 511s ( 511s Device1Gevent, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 511s # If device doesn't specify its green mode, but green_mode kwarg is provided, 511s # then we use green_mode kwarg 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Asyncio, 511s None, 511s GeventExecutor, 511s ), 511s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 511s # (currently only works for synchronous mode - see unsupported modes below) 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Synchronous, 511s None, 511s SynchronousExecutor, 511s ), 511s # Deprecated modes - starting from PyTango 10 it is deprecated 511s # to modify sync servers to async "on the fly". 511s # All base methods should be defined with "async def" instead. 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Synchronous, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Gevent, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s # Unsupported modes - device servers with the following combinations 511s # fail to start up. The cause is unknown. This could be fixed in the future. 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Asyncio, 511s RuntimeError, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Gevent, 511s RuntimeError, 511s GeventExecutor, 511s ), 511s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 511s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 511s ], 511s ) 511s def test_green_modes_in_device_kwarg_and_global( 511s device_type, green_mode, global_mode, exception_type, executor_type 511s ): 511s if WINDOWS and exception_type is not None: 511s pytest.skip("Skip test that hangs on Windows") 511s 511s old_green_mode = tango.get_green_mode() 511s try: 511s tango.set_green_mode(global_mode) 511s 511s if exception_type is None: 511s with DeviceTestContext(device_type, green_mode=green_mode): 511s pass 511s elif exception_type is DeprecationWarning: 511s > with pytest.warns((DeprecationWarning, RuntimeWarning)): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s E Failed: DID NOT WARN. No warnings of type (, ) were emitted. 511s E Emitted warnings: []. 511s 511s tests/test_test_context.py:445: Failed 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _ test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Gevent-DeprecationWarning-AsyncioExecutor] _ 511s device_type = 511s green_mode = tango._tango.GreenMode.Asyncio 511s global_mode = tango._tango.GreenMode.Gevent 511s exception_type = 511s executor_type = 511s 511s @pytest.mark.parametrize( 511s "device_type, green_mode, global_mode, exception_type, executor_type", 511s [ 511s # If a device specifies its green mode explicitly, then both 511s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 511s ( 511s Device1Synchronous, 511s GreenMode.Asyncio, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Synchronous, 511s GreenMode.Gevent, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Asyncio, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s AsyncioExecutor, 511s ), 511s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 511s ( 511s Device1Gevent, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 511s # If device doesn't specify its green mode, but green_mode kwarg is provided, 511s # then we use green_mode kwarg 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Asyncio, 511s None, 511s GeventExecutor, 511s ), 511s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 511s # (currently only works for synchronous mode - see unsupported modes below) 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Synchronous, 511s None, 511s SynchronousExecutor, 511s ), 511s # Deprecated modes - starting from PyTango 10 it is deprecated 511s # to modify sync servers to async "on the fly". 511s # All base methods should be defined with "async def" instead. 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Synchronous, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Gevent, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s # Unsupported modes - device servers with the following combinations 511s # fail to start up. The cause is unknown. This could be fixed in the future. 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Asyncio, 511s RuntimeError, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Gevent, 511s RuntimeError, 511s GeventExecutor, 511s ), 511s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 511s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 511s ], 511s ) 511s def test_green_modes_in_device_kwarg_and_global( 511s device_type, green_mode, global_mode, exception_type, executor_type 511s ): 511s if WINDOWS and exception_type is not None: 511s pytest.skip("Skip test that hangs on Windows") 511s 511s old_green_mode = tango.get_green_mode() 511s try: 511s tango.set_green_mode(global_mode) 511s 511s if exception_type is None: 511s with DeviceTestContext(device_type, green_mode=green_mode): 511s pass 511s elif exception_type is DeprecationWarning: 511s with pytest.warns((DeprecationWarning, RuntimeWarning)): 511s > with DeviceTestContext(device_type, green_mode=green_mode): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:446: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 511s super().connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s 511s During handling of the above exception, another exception occurred: 511s 511s device_type = 511s green_mode = tango._tango.GreenMode.Asyncio 511s global_mode = tango._tango.GreenMode.Gevent 511s exception_type = 511s executor_type = 511s 511s @pytest.mark.parametrize( 511s "device_type, green_mode, global_mode, exception_type, executor_type", 511s [ 511s # If a device specifies its green mode explicitly, then both 511s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 511s ( 511s Device1Synchronous, 511s GreenMode.Asyncio, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Synchronous, 511s GreenMode.Gevent, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1Asyncio, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s AsyncioExecutor, 511s ), 511s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 511s ( 511s Device1Gevent, 511s GreenMode.Synchronous, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 511s # If device doesn't specify its green mode, but green_mode kwarg is provided, 511s # then we use green_mode kwarg 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Asyncio, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Synchronous, 511s GreenMode.Gevent, 511s None, 511s SynchronousExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Synchronous, 511s None, 511s GeventExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Gevent, 511s GreenMode.Asyncio, 511s None, 511s GeventExecutor, 511s ), 511s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 511s # (currently only works for synchronous mode - see unsupported modes below) 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Synchronous, 511s None, 511s SynchronousExecutor, 511s ), 511s # Deprecated modes - starting from PyTango 10 it is deprecated 511s # to modify sync servers to async "on the fly". 511s # All base methods should be defined with "async def" instead. 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Synchronous, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s GreenMode.Asyncio, 511s GreenMode.Gevent, 511s DeprecationWarning, 511s AsyncioExecutor, 511s ), 511s # Unsupported modes - device servers with the following combinations 511s # fail to start up. The cause is unknown. This could be fixed in the future. 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Asyncio, 511s RuntimeError, 511s AsyncioExecutor, 511s ), 511s ( 511s Device1GreenModeUnspecified, 511s None, 511s GreenMode.Gevent, 511s RuntimeError, 511s GeventExecutor, 511s ), 511s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 511s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 511s ], 511s ) 511s def test_green_modes_in_device_kwarg_and_global( 511s device_type, green_mode, global_mode, exception_type, executor_type 511s ): 511s if WINDOWS and exception_type is not None: 511s pytest.skip("Skip test that hangs on Windows") 511s 511s old_green_mode = tango.get_green_mode() 511s try: 511s tango.set_green_mode(global_mode) 511s 511s if exception_type is None: 511s with DeviceTestContext(device_type, green_mode=green_mode): 511s pass 511s elif exception_type is DeprecationWarning: 511s > with pytest.warns((DeprecationWarning, RuntimeWarning)): 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s E Failed: DID NOT WARN. No warnings of type (, ) were emitted. 511s E Emitted warnings: []. 511s 511s tests/test_test_context.py:445: Failed 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_multi_with_async_devices_initialised ___________________ 511s def test_multi_with_async_devices_initialised(): 511s devices_info = ( 511s {"class": Device1Asyncio, "devices": [{"name": "test/device1/1"}]}, 511s {"class": Device2Asyncio, "devices": [{"name": "test/device2/1"}]}, 511s ) 511s 511s > with MultiDeviceTestContext(devices_info) as context: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:464: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _____________ test_multi_with_two_devices_with_properties[Asyncio] _____________ 511s server_green_mode = tango._tango.GreenMode.Asyncio 511s 511s def test_multi_with_two_devices_with_properties(server_green_mode): 511s if server_green_mode == GreenMode.Asyncio: 511s 511s class TestDevice1(Device): 511s green_mode = server_green_mode 511s 511s prop1 = device_property(dtype=str) 511s 511s @command(dtype_out=str) 511s async def get_prop1(self): 511s return self.prop1 511s 511s class TestDevice2(Device): 511s green_mode = server_green_mode 511s 511s prop2 = device_property(dtype=int) 511s 511s @command(dtype_out=int) 511s async def get_prop2(self): 511s return self.prop2 511s 511s else: 511s 511s class TestDevice1(Device): 511s green_mode = server_green_mode 511s 511s prop1 = device_property(dtype=str) 511s 511s @command(dtype_out=str) 511s def get_prop1(self): 511s return self.prop1 511s 511s class TestDevice2(Device): 511s green_mode = server_green_mode 511s 511s prop2 = device_property(dtype=int) 511s 511s @command(dtype_out=int) 511s def get_prop2(self): 511s return self.prop2 511s 511s devices_info = ( 511s { 511s "class": TestDevice1, 511s "devices": [{"name": "test/device1/1", "properties": {"prop1": "abcd"}}], 511s }, 511s { 511s "class": TestDevice2, 511s "devices": [{"name": "test/device2/2", "properties": {"prop2": 5555}}], 511s }, 511s ) 511s 511s > with MultiDeviceTestContext(devices_info) as context: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:617: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s __________________ test_test_context_async_device_proxy[True] __________________ 511s process = True 511s 511s @pytest.mark.asyncio 511s @pytest.mark.parametrize("process", [True, False]) 511s async def test_test_context_async_device_proxy(process): 511s config = ({"class": AsyncDevice, "devices": [{"name": "test/device/1"}]},) 511s 511s > with MultiDeviceTestContext(config, process=process) as context: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:825: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def connect(self): 511s try: 511s self._wait_until_port_is_known() 511s self._wait_until_startup_status_is_known() 511s except RuntimeError: 511s if self.thread.is_alive(): 511s raise RuntimeError( 511s "The server appears to be stuck at initialization. " 511s "Check stdout/stderr for more information." 511s ) 511s elif hasattr(self.thread, "exitcode"): 511s raise RuntimeError( 511s f"The server process stopped with exitcode {self.thread.exitcode}. " 511s f"Check stdout/stderr for more information." 511s ) 511s else: 511s raise RuntimeError( 511s "The server stopped without reporting. " 511s "Check stdout/stderr for more information." 511s ) 511s 511s if self._startup_exception: 511s > raise self._startup_exception 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s _________________ test_test_context_async_device_proxy[False] __________________ 511s process = False 511s 511s @pytest.mark.asyncio 511s @pytest.mark.parametrize("process", [True, False]) 511s async def test_test_context_async_device_proxy(process): 511s config = ({"class": AsyncDevice, "devices": [{"name": "test/device/1"}]},) 511s 511s > with MultiDeviceTestContext(config, process=process) as context: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:825: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s --------------------------- Captured stderr teardown --------------------------- 511s /usr/lib/python3.14/multiprocessing/resource_tracker.py:396: UserWarning: resource_tracker: There appear to be 11 leaked semaphore objects to clean up at shutdown: {'/mp-wxpugidx', '/mp-0uo9pabu', '/mp-3gwg0y09', '/mp-1ocu8b8r', '/mp-_efwqz2v', '/mp-nap__bfb', '/mp-tdg2ggtd', '/mp-33ajvomb', '/mp-sfu0prw8', '/mp-czwff6am', '/mp-zfhglhv5'} 511s warnings.warn( 511s _______________ test_test_context_multi_async_device_proxy[True] _______________ 511s process = True 511s 511s @pytest.mark.asyncio 511s @pytest.mark.parametrize("process", [True, False]) 511s async def test_test_context_multi_async_device_proxy(process): 511s config = ( 511s { 511s "class": AsyncDevice, 511s "devices": [{"name": "test/device/main"}, {"name": "test/device/child"}], 511s }, 511s ) 511s 511s > with MultiDeviceTestContext(config, process=process) as context: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:855: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def connect(self): 511s try: 511s self._wait_until_port_is_known() 511s self._wait_until_startup_status_is_known() 511s except RuntimeError: 511s if self.thread.is_alive(): 511s raise RuntimeError( 511s "The server appears to be stuck at initialization. " 511s "Check stdout/stderr for more information." 511s ) 511s elif hasattr(self.thread, "exitcode"): 511s raise RuntimeError( 511s f"The server process stopped with exitcode {self.thread.exitcode}. " 511s f"Check stdout/stderr for more information." 511s ) 511s else: 511s raise RuntimeError( 511s "The server stopped without reporting. " 511s "Check stdout/stderr for more information." 511s ) 511s 511s if self._startup_exception: 511s > raise self._startup_exception 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s ______________ test_test_context_multi_async_device_proxy[False] _______________ 511s process = False 511s 511s @pytest.mark.asyncio 511s @pytest.mark.parametrize("process", [True, False]) 511s async def test_test_context_multi_async_device_proxy(process): 511s config = ( 511s { 511s "class": AsyncDevice, 511s "devices": [{"name": "test/device/main"}, {"name": "test/device/child"}], 511s }, 511s ) 511s 511s > with MultiDeviceTestContext(config, process=process) as context: 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s 511s tests/test_test_context.py:855: 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 511s self.start() 511s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 511s self.connect() 511s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 511s raise self._startup_exception 511s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 511s runserver( 511s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 511s return run((cls,), args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 511s return server_run() 511s ^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 511s worker.run(tango_loop, wait=True) 511s /usr/lib/python3/dist-packages/tango/green.py:118: in run 511s accessor = self.delegate(fn, *args, **kwargs) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 511s coro = self.loop.run_in_executor(self.subexecutor, callback) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 511s executor.submit(func, *args), loop=self) 511s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 511s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 511s self._adjust_thread_count() 511s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 511s 511s self = 511s 511s def _adjust_thread_count(self): 511s # if idle threads are available, don't spin new threads 511s if self._idle_semaphore.acquire(timeout=0): 511s return 511s 511s # When the executor gets lost, the weakref callback will wake up 511s # the worker threads. 511s def weakref_cb(_, q=self._work_queue): 511s q.put(None) 511s 511s num_threads = len(self._threads) 511s if num_threads < self._max_workers: 511s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 511s t = threading.Thread( 511s name=thread_name, 511s target=_thread_pool_executor_worker, 511s args=( 511s weakref.ref(self, weakref_cb), 511s self._work_queue, 511s > self._initializer, 511s ^^^^^^^^^^^^^^^^^ 511s self._initargs, 511s ), 511s ) 511s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 511s 511s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 511s ----------------------------- Captured stderr call ----------------------------- 511s Can't create notifd event supplier. Notifd event not available 511s --------------------------- Captured stderr teardown --------------------------- 511s /usr/lib/python3.14/multiprocessing/resource_tracker.py:396: UserWarning: resource_tracker: There appear to be 11 leaked semaphore objects to clean up at shutdown: {'/mp-jl883ruk', '/mp-gbfd4lw9', '/mp-6dlzxhb5', '/mp-oqdo_np6', '/mp-3y4_xy12', '/mp-qdbjxguo', '/mp-cv2pftn7', '/mp-oqbyzejg', '/mp-fh1fmwej', '/mp-nm9g0sta', '/mp-stejokzf'} 511s warnings.warn( 511s =========================== short test summary info ============================ 511s FAILED tests/test_async.py::test_green_mode_kwarg_for_proxy_methods - @pytest... 511s FAILED tests/test_attributes.py::test_read_write_attribute[int-Asyncio] - att... 511s FAILED tests/test_attributes.py::test_read_write_attribute[float-Asyncio] - a... 511s FAILED tests/test_attributes.py::test_read_write_attribute[str-Asyncio] - att... 511s FAILED tests/test_attributes.py::test_read_write_attribute[bool-Asyncio] - at... 511s FAILED tests/test_attributes.py::test_read_write_attribute[(int,)-Asyncio] - ... 511s FAILED tests/test_attributes.py::test_read_write_attribute[(float,)-Asyncio] 511s FAILED tests/test_attributes.py::test_read_write_attribute[(str,)-Asyncio] - ... 511s FAILED tests/test_attributes.py::test_read_write_attribute[(bool,)-Asyncio] 511s FAILED tests/test_attributes.py::test_read_write_attribute[((int,),)-Asyncio] 511s FAILED tests/test_attributes.py::test_read_write_attribute[((float,),)-Asyncio] 511s FAILED tests/test_attributes.py::test_read_write_attribute[((str,),)-Asyncio] 511s FAILED tests/test_attributes.py::test_read_write_attribute[((bool,),)-Asyncio] 511s FAILED tests/test_attributes.py::test_read_write_attribute_decorated_methods[Asyncio] 511s FAILED tests/test_attributes.py::test_read_write_dynamic_attribute[low_level_read-Asyncio] 511s FAILED tests/test_attributes.py::test_read_write_dynamic_attribute[high_level_read-Asyncio] 511s FAILED tests/test_attributes.py::test_async_add_remove_dynamic_attribute - de... 511s FAILED tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_default_names[Asyncio] 511s FAILED tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_user_names[Asyncio] 511s FAILED tests/test_attributes.py::test_read_write_dynamic_attribute_is_allowed_with_async[Asyncio] 511s FAILED tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Asyncio-True] 511s FAILED tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Asyncio-False] 511s FAILED tests/test_attributes.py::test_attribute_decorators[Asyncio] - server_... 511s FAILED tests/test_attributes.py::test_polled_attribute[Asyncio] - server_gree... 511s FAILED tests/test_commands.py::test_identity_command[int-Asyncio] - command_t... 511s FAILED tests/test_commands.py::test_identity_command[float-Asyncio] - command... 511s FAILED tests/test_commands.py::test_identity_command[str-Asyncio] - command_t... 511s FAILED tests/test_commands.py::test_identity_command[bool-Asyncio] - command_... 511s FAILED tests/test_commands.py::test_identity_command[(int,)-Asyncio] - comman... 511s FAILED tests/test_commands.py::test_identity_command[(float,)-Asyncio] - comm... 511s FAILED tests/test_commands.py::test_identity_command[(str,)-Asyncio] - comman... 511s FAILED tests/test_commands.py::test_identity_command[DevVarLongStringArray-Asyncio] 511s FAILED tests/test_commands.py::test_identity_command[DevVarDoubleStringArray-Asyncio] 511s FAILED tests/test_commands.py::test_decorated_command[Asyncio] - server_green... 511s FAILED tests/test_commands.py::test_command_isallowed[Asyncio] - server_green... 511s FAILED tests/test_commands.py::test_dynamic_command[Asyncio-True] - device_co... 511s FAILED tests/test_commands.py::test_dynamic_command[Asyncio-False] - device_c... 511s FAILED tests/test_device_proxy.py::test_high_level_api_for_asyncio - tango_te... 511s FAILED tests/test_device_proxy.py::test_repr_uses_info[Asyncio] - green_mode_... 511s FAILED tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Asyncio] 511s FAILED tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Asyncio] 511s FAILED tests/test_device_proxy.py::test_no_memory_leak_for_repr[Asyncio] - gr... 511s FAILED tests/test_device_proxy.py::test_no_memory_leak_for_str[Asyncio] - gre... 511s FAILED tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Asyncio] - gr... 511s FAILED tests/test_log.py::test_async_logging_decorators - def test_async_logg... 511s FAILED tests/test_log.py::test_logging[Asyncio] - server_green_mode = tango._... 511s FAILED tests/test_server.py::test_empty_device[Asyncio] - server_green_mode =... 511s FAILED tests/test_server.py::test_set_state_status[ON-Asyncio-False] - state ... 511s FAILED tests/test_server.py::test_set_state_status[ON-Asyncio-True] - state =... 511s FAILED tests/test_server.py::test_set_state_status[OFF-Asyncio-False] - state... 511s FAILED tests/test_server.py::test_set_state_status[OFF-Asyncio-True] - state ... 511s FAILED tests/test_server.py::test_set_state_status[CLOSE-Asyncio-False] - sta... 511s FAILED tests/test_server.py::test_set_state_status[CLOSE-Asyncio-True] - stat... 511s FAILED tests/test_server.py::test_set_state_status[OPEN-Asyncio-False] - stat... 511s FAILED tests/test_server.py::test_set_state_status[OPEN-Asyncio-True] - state... 511s FAILED tests/test_server.py::test_set_state_status[INSERT-Asyncio-False] - st... 511s FAILED tests/test_server.py::test_set_state_status[INSERT-Asyncio-True] - sta... 511s FAILED tests/test_server.py::test_set_state_status[EXTRACT-Asyncio-False] - s... 511s FAILED tests/test_server.py::test_set_state_status[EXTRACT-Asyncio-True] - st... 511s FAILED tests/test_server.py::test_set_state_status[MOVING-Asyncio-False] - st... 511s FAILED tests/test_server.py::test_set_state_status[MOVING-Asyncio-True] - sta... 511s FAILED tests/test_server.py::test_set_state_status[STANDBY-Asyncio-False] - s... 511s FAILED tests/test_server.py::test_set_state_status[STANDBY-Asyncio-True] - st... 511s FAILED tests/test_server.py::test_set_state_status[FAULT-Asyncio-False] - sta... 511s FAILED tests/test_server.py::test_set_state_status[FAULT-Asyncio-True] - stat... 511s FAILED tests/test_server.py::test_set_state_status[INIT-Asyncio-False] - stat... 511s FAILED tests/test_server.py::test_set_state_status[INIT-Asyncio-True] - state... 511s FAILED tests/test_server.py::test_set_state_status[RUNNING-Asyncio-False] - s... 511s FAILED tests/test_server.py::test_set_state_status[RUNNING-Asyncio-True] - st... 511s FAILED tests/test_server.py::test_set_state_status[ALARM-Asyncio-False] - sta... 511s FAILED tests/test_server.py::test_set_state_status[ALARM-Asyncio-True] - stat... 511s FAILED tests/test_server.py::test_set_state_status[DISABLE-Asyncio-False] - s... 511s FAILED tests/test_server.py::test_set_state_status[DISABLE-Asyncio-True] - st... 511s FAILED tests/test_server.py::test_set_state_status[UNKNOWN-Asyncio-False] - s... 511s FAILED tests/test_server.py::test_set_state_status[UNKNOWN-Asyncio-True] - st... 511s FAILED tests/test_server.py::test_user_dev_state_status[Asyncio] - server_gre... 511s FAILED tests/test_server.py::test_attr_quality_checked_with_state[Asyncio] - ... 511s FAILED tests/test_server.py::test_device_get_attr_config[Asyncio] - server_gr... 511s FAILED tests/test_server.py::test_device_set_attr_config[Asyncio] - server_gr... 511s FAILED tests/test_server.py::test_exception_propagation[Asyncio] - server_gre... 511s FAILED tests/test_server.py::test_asyncio_server_init_hook_change_state - def... 511s FAILED tests/test_server.py::test_async_server_init_hook_called_after_init - ... 511s FAILED tests/test_server.py::test_asyncio_server_init_hook_exception - def te... 511s FAILED tests/test_server.py::test_deprecation_warning_for_sync_attr_com_methods_in_asyncio_device 511s FAILED tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[init_device] 511s FAILED tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[delete_device] 511s FAILED tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_state] 511s FAILED tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_status] 511s FAILED tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[read_attr_hardware] 511s FAILED tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[always_executed_hook] 511s FAILED tests/test_test_context.py::test_single_device[Asyncio] - server_green... 511s FAILED tests/test_test_context.py::test_multi_with_single_device[Asyncio] - s... 511s FAILED tests/test_test_context.py::test_multi_with_two_devices[Asyncio] - ser... 511s FAILED tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Asyncio-None] 511s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Synchronous-Asyncio-Asyncio-None-SynchronousExecutor] 511s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Synchronous-Synchronous-None-AsyncioExecutor] 511s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Gevent-Gevent-None-AsyncioExecutor] 511s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Gevent-Asyncio-Asyncio-None-GeventExecutor] 511s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Synchronous-Asyncio-None-SynchronousExecutor] 511s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Gevent-Asyncio-None-GeventExecutor] 511s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Synchronous-DeprecationWarning-AsyncioExecutor] 511s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Gevent-DeprecationWarning-AsyncioExecutor] 511s FAILED tests/test_test_context.py::test_multi_with_async_devices_initialised 511s FAILED tests/test_test_context.py::test_multi_with_two_devices_with_properties[Asyncio] 511s FAILED tests/test_test_context.py::test_test_context_async_device_proxy[True] 511s FAILED tests/test_test_context.py::test_test_context_async_device_proxy[False] 511s FAILED tests/test_test_context.py::test_test_context_multi_async_device_proxy[True] 511s FAILED tests/test_test_context.py::test_test_context_multi_async_device_proxy[False] 511s ERROR tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Asyncio] 511s = 108 failed, 952 passed, 56 skipped, 53 xfailed, 1 error in 190.04s (0:03:10) = 514s bash: line 1: 13983 Segmentation fault (core dumped) PATH=/usr/lib/tango/:$PATH $py -m pytest tests -v --forked --ignore tests/test_event.py --reruns 5 515s autopkgtest [05:14:46]: test command1: -----------------------] 515s autopkgtest [05:14:46]: test command1: - - - - - - - - - - results - - - - - - - - - - 515s command1 FAIL non-zero exit status 139 515s autopkgtest [05:14:46]: test command2: preparing testbed 536s Creating nova instance adt-resolute-ppc64el-pytango-20260123-050611-juju-7f2275-prod-proposed-migration-environment-2-bf06a24d-c1c4-4454-9ba5-0b03e9c61e48 from image adt/ubuntu-resolute-ppc64el-server-20260122.img (UUID 987e5803-394f-43eb-a969-151b6b75a57a)... 584s autopkgtest [05:15:55]: testbed dpkg architecture: ppc64el 584s autopkgtest [05:15:55]: testbed apt version: 3.1.12 584s autopkgtest [05:15:55]: @@@@@@@@@@@@@@@@@@@@ test bed setup 584s autopkgtest [05:15:55]: testbed release detected to be: resolute 585s autopkgtest [05:15:56]: updating testbed package index (apt update) 585s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [124 kB] 585s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 586s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 586s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 586s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [23.6 kB] 586s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [1181 kB] 586s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [2820 B] 586s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [95.1 kB] 586s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el Packages [118 kB] 586s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/universe ppc64el Packages [962 kB] 586s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse ppc64el Packages [9160 B] 586s Fetched 2516 kB in 1s (3067 kB/s) 587s Reading package lists... 588s Hit:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease 588s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 588s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 588s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 588s Reading package lists... 589s Reading package lists... 589s Building dependency tree... 589s Reading state information... 589s Calculating upgrade... 589s The following packages were automatically installed and are no longer required: 589s python3.13 python3.13-minimal 589s Use 'sudo apt autoremove' to remove them. 589s The following NEW packages will be installed: 589s libpython3.14-minimal libpython3.14-stdlib libsframe3 python3.14 589s python3.14-minimal 589s The following packages will be upgraded: 589s apt binutils binutils-common binutils-powerpc64le-linux-gnu dhcpcd-base 589s gcc-15-base libapt-pkg7.0 libatomic1 libbinutils libctf-nobfd0 libctf0 589s libgcc-s1 libnss-systemd libpam-systemd libplymouth5 libpython3-stdlib 589s libstdc++6 libsystemd-shared libsystemd0 libudev1 libzstd1 plymouth 589s plymouth-theme-ubuntu-text python3 python3-gdbm python3-minimal systemd 589s systemd-cryptsetup systemd-resolved systemd-sysv systemd-userdbd udev 589s vim-common vim-tiny xxd zstd 589s 36 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. 589s Need to get 26.5 MB of archives. 589s After this operation, 27.9 MB of additional disk space will be used. 589s Get:1 http://ftpmaster.internal/ubuntu resolute/main ppc64el libpython3.14-minimal ppc64el 3.14.2-1 [921 kB] 589s Get:2 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3.14-minimal ppc64el 3.14.2-1 [2712 kB] 589s Get:3 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3-gdbm ppc64el 3.14.2-1 [11.1 kB] 589s Get:4 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3-minimal ppc64el 3.14.2-1 [28.2 kB] 589s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3 ppc64el 3.14.2-1 [22.9 kB] 589s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libstdc++6 ppc64el 15.2.0-12ubuntu1 [922 kB] 589s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libatomic1 ppc64el 15.2.0-12ubuntu1 [11.0 kB] 589s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el gcc-15-base ppc64el 15.2.0-12ubuntu1 [59.6 kB] 589s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libgcc-s1 ppc64el 15.2.0-12ubuntu1 [40.2 kB] 589s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libzstd1 ppc64el 1.5.7+dfsg-3 [430 kB] 589s Get:11 http://ftpmaster.internal/ubuntu resolute/main ppc64el libpython3.14-stdlib ppc64el 3.14.2-1 [2444 kB] 590s Get:12 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3.14 ppc64el 3.14.2-1 [816 kB] 590s Get:13 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libpython3-stdlib ppc64el 3.14.2-1 [10.9 kB] 590s Get:14 http://ftpmaster.internal/ubuntu resolute-proposed/universe ppc64el systemd-userdbd ppc64el 259-1ubuntu3 [54.6 kB] 590s Get:15 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libnss-systemd ppc64el 259-1ubuntu3 [347 kB] 590s Get:16 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libsystemd0 ppc64el 259-1ubuntu3 [703 kB] 590s Get:17 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el systemd-sysv ppc64el 259-1ubuntu3 [9250 B] 590s Get:18 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el systemd-resolved ppc64el 259-1ubuntu3 [344 kB] 590s Get:19 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libpam-systemd ppc64el 259-1ubuntu3 [372 kB] 590s Get:20 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libsystemd-shared ppc64el 259-1ubuntu3 [2884 kB] 590s Get:21 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el systemd ppc64el 259-1ubuntu3 [3301 kB] 590s Get:22 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el systemd-cryptsetup ppc64el 259-1ubuntu3 [133 kB] 590s Get:23 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el udev ppc64el 259-1ubuntu3 [1505 kB] 590s Get:24 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libudev1 ppc64el 259-1ubuntu3 [252 kB] 590s Get:25 http://ftpmaster.internal/ubuntu resolute/main ppc64el libapt-pkg7.0 ppc64el 3.1.13 [1287 kB] 590s Get:26 http://ftpmaster.internal/ubuntu resolute/main ppc64el apt ppc64el 3.1.13 [1519 kB] 590s Get:27 http://ftpmaster.internal/ubuntu resolute/main ppc64el dhcpcd-base ppc64el 1:10.3.0-7 [295 kB] 590s Get:28 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el vim-tiny ppc64el 2:9.1.1882-1ubuntu2 [1180 kB] 590s Get:29 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el vim-common all 2:9.1.1882-1ubuntu2 [402 kB] 590s Get:30 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el xxd ppc64el 2:9.1.1882-1ubuntu2 [71.6 kB] 590s Get:31 http://ftpmaster.internal/ubuntu resolute/main ppc64el libplymouth5 ppc64el 24.004.60+git20250831.4a3c171d-0ubuntu4 [174 kB] 590s Get:32 http://ftpmaster.internal/ubuntu resolute/main ppc64el plymouth-theme-ubuntu-text ppc64el 24.004.60+git20250831.4a3c171d-0ubuntu4 [11.2 kB] 590s Get:33 http://ftpmaster.internal/ubuntu resolute/main ppc64el plymouth ppc64el 24.004.60+git20250831.4a3c171d-0ubuntu4 [160 kB] 590s Get:34 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libctf0 ppc64el 2.45.50.20260119-1ubuntu1 [118 kB] 590s Get:35 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libctf-nobfd0 ppc64el 2.45.50.20260119-1ubuntu1 [121 kB] 590s Get:36 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el binutils-powerpc64le-linux-gnu ppc64el 2.45.50.20260119-1ubuntu1 [1030 kB] 590s Get:37 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libbinutils ppc64el 2.45.50.20260119-1ubuntu1 [722 kB] 590s Get:38 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el binutils ppc64el 2.45.50.20260119-1ubuntu1 [3266 B] 590s Get:39 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el binutils-common ppc64el 2.45.50.20260119-1ubuntu1 [222 kB] 590s Get:40 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libsframe3 ppc64el 2.45.50.20260119-1ubuntu1 [23.7 kB] 590s Get:41 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el zstd ppc64el 1.5.7+dfsg-3 [845 kB] 591s dpkg-preconfigure: unable to re-open stdin: No such file or directory 591s Fetched 26.5 MB in 1s (20.0 MB/s) 591s Selecting previously unselected package libpython3.14-minimal:ppc64el. 591s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 120824 files and directories currently installed.) 591s Preparing to unpack .../libpython3.14-minimal_3.14.2-1_ppc64el.deb ... 591s Unpacking libpython3.14-minimal:ppc64el (3.14.2-1) ... 591s Selecting previously unselected package python3.14-minimal. 591s Preparing to unpack .../python3.14-minimal_3.14.2-1_ppc64el.deb ... 592s Unpacking python3.14-minimal (3.14.2-1) ... 592s Preparing to unpack .../python3-gdbm_3.14.2-1_ppc64el.deb ... 592s Unpacking python3-gdbm (3.14.2-1) over (3.13.9-1) ... 592s Setting up libpython3.14-minimal:ppc64el (3.14.2-1) ... 592s Setting up python3.14-minimal (3.14.2-1) ... 593s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121166 files and directories currently installed.) 593s Preparing to unpack .../python3-minimal_3.14.2-1_ppc64el.deb ... 593s Unpacking python3-minimal (3.14.2-1) over (3.13.7-1) ... 593s Setting up python3-minimal (3.14.2-1) ... 594s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121166 files and directories currently installed.) 594s Preparing to unpack .../python3_3.14.2-1_ppc64el.deb ... 594s running python pre-rtupdate hooks for python3.14... 594s Unpacking python3 (3.14.2-1) over (3.13.7-1) ... 594s Preparing to unpack .../libstdc++6_15.2.0-12ubuntu1_ppc64el.deb ... 594s Unpacking libstdc++6:ppc64el (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 594s Preparing to unpack .../libatomic1_15.2.0-12ubuntu1_ppc64el.deb ... 594s Unpacking libatomic1:ppc64el (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 594s Preparing to unpack .../gcc-15-base_15.2.0-12ubuntu1_ppc64el.deb ... 594s Unpacking gcc-15-base:ppc64el (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 594s Setting up gcc-15-base:ppc64el (15.2.0-12ubuntu1) ... 594s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121167 files and directories currently installed.) 594s Preparing to unpack .../libgcc-s1_15.2.0-12ubuntu1_ppc64el.deb ... 594s Unpacking libgcc-s1:ppc64el (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 595s Setting up libgcc-s1:ppc64el (15.2.0-12ubuntu1) ... 595s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121167 files and directories currently installed.) 595s Preparing to unpack .../libzstd1_1.5.7+dfsg-3_ppc64el.deb ... 595s Unpacking libzstd1:ppc64el (1.5.7+dfsg-3) over (1.5.7+dfsg-2) ... 595s Setting up libzstd1:ppc64el (1.5.7+dfsg-3) ... 595s Selecting previously unselected package libpython3.14-stdlib:ppc64el. 595s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121167 files and directories currently installed.) 595s Preparing to unpack .../0-libpython3.14-stdlib_3.14.2-1_ppc64el.deb ... 595s Unpacking libpython3.14-stdlib:ppc64el (3.14.2-1) ... 595s Selecting previously unselected package python3.14. 595s Preparing to unpack .../1-python3.14_3.14.2-1_ppc64el.deb ... 595s Unpacking python3.14 (3.14.2-1) ... 595s Preparing to unpack .../2-libpython3-stdlib_3.14.2-1_ppc64el.deb ... 595s Unpacking libpython3-stdlib:ppc64el (3.14.2-1) over (3.13.7-1) ... 595s Preparing to unpack .../3-systemd-userdbd_259-1ubuntu3_ppc64el.deb ... 595s Unpacking systemd-userdbd (259-1ubuntu3) over (259-1ubuntu2) ... 595s Preparing to unpack .../4-libnss-systemd_259-1ubuntu3_ppc64el.deb ... 595s Unpacking libnss-systemd:ppc64el (259-1ubuntu3) over (259-1ubuntu2) ... 596s Preparing to unpack .../5-libsystemd0_259-1ubuntu3_ppc64el.deb ... 596s Unpacking libsystemd0:ppc64el (259-1ubuntu3) over (259-1ubuntu2) ... 596s Setting up libsystemd0:ppc64el (259-1ubuntu3) ... 596s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121598 files and directories currently installed.) 596s Preparing to unpack .../systemd-sysv_259-1ubuntu3_ppc64el.deb ... 596s Unpacking systemd-sysv (259-1ubuntu3) over (259-1ubuntu2) ... 596s Preparing to unpack .../systemd-resolved_259-1ubuntu3_ppc64el.deb ... 596s Unpacking systemd-resolved (259-1ubuntu3) over (259-1ubuntu2) ... 596s Preparing to unpack .../libpam-systemd_259-1ubuntu3_ppc64el.deb ... 596s Unpacking libpam-systemd:ppc64el (259-1ubuntu3) over (259-1ubuntu2) ... 596s Preparing to unpack .../libsystemd-shared_259-1ubuntu3_ppc64el.deb ... 596s Unpacking libsystemd-shared:ppc64el (259-1ubuntu3) over (259-1ubuntu2) ... 596s Setting up libsystemd-shared:ppc64el (259-1ubuntu3) ... 596s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121598 files and directories currently installed.) 596s Preparing to unpack .../systemd_259-1ubuntu3_ppc64el.deb ... 596s Unpacking systemd (259-1ubuntu3) over (259-1ubuntu2) ... 597s Preparing to unpack .../systemd-cryptsetup_259-1ubuntu3_ppc64el.deb ... 597s Unpacking systemd-cryptsetup (259-1ubuntu3) over (259-1ubuntu2) ... 597s Preparing to unpack .../udev_259-1ubuntu3_ppc64el.deb ... 597s Unpacking udev (259-1ubuntu3) over (259-1ubuntu2) ... 597s Preparing to unpack .../libudev1_259-1ubuntu3_ppc64el.deb ... 597s Unpacking libudev1:ppc64el (259-1ubuntu3) over (259-1ubuntu2) ... 598s Setting up libudev1:ppc64el (259-1ubuntu3) ... 598s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121598 files and directories currently installed.) 598s Preparing to unpack .../00-libapt-pkg7.0_3.1.13_ppc64el.deb ... 598s Unpacking libapt-pkg7.0:ppc64el (3.1.13) over (3.1.12) ... 598s Preparing to unpack .../01-apt_3.1.13_ppc64el.deb ... 598s Unpacking apt (3.1.13) over (3.1.12) ... 598s Preparing to unpack .../02-dhcpcd-base_1%3a10.3.0-7_ppc64el.deb ... 599s Unpacking dhcpcd-base (1:10.3.0-7) over (1:10.3.0-3) ... 599s Preparing to unpack .../03-vim-tiny_2%3a9.1.1882-1ubuntu2_ppc64el.deb ... 599s Unpacking vim-tiny (2:9.1.1882-1ubuntu2) over (2:9.1.1882-1ubuntu1) ... 599s Preparing to unpack .../04-vim-common_2%3a9.1.1882-1ubuntu2_all.deb ... 599s Unpacking vim-common (2:9.1.1882-1ubuntu2) over (2:9.1.1882-1ubuntu1) ... 600s Preparing to unpack .../05-xxd_2%3a9.1.1882-1ubuntu2_ppc64el.deb ... 600s Unpacking xxd (2:9.1.1882-1ubuntu2) over (2:9.1.1882-1ubuntu1) ... 600s Preparing to unpack .../06-libplymouth5_24.004.60+git20250831.4a3c171d-0ubuntu4_ppc64el.deb ... 600s Unpacking libplymouth5:ppc64el (24.004.60+git20250831.4a3c171d-0ubuntu4) over (24.004.60+git20250831.4a3c171d-0ubuntu3) ... 600s Preparing to unpack .../07-plymouth-theme-ubuntu-text_24.004.60+git20250831.4a3c171d-0ubuntu4_ppc64el.deb ... 600s Unpacking plymouth-theme-ubuntu-text (24.004.60+git20250831.4a3c171d-0ubuntu4) over (24.004.60+git20250831.4a3c171d-0ubuntu3) ... 600s Preparing to unpack .../08-plymouth_24.004.60+git20250831.4a3c171d-0ubuntu4_ppc64el.deb ... 600s Unpacking plymouth (24.004.60+git20250831.4a3c171d-0ubuntu4) over (24.004.60+git20250831.4a3c171d-0ubuntu3) ... 601s Preparing to unpack .../09-libctf0_2.45.50.20260119-1ubuntu1_ppc64el.deb ... 601s Unpacking libctf0:ppc64el (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 601s Preparing to unpack .../10-libctf-nobfd0_2.45.50.20260119-1ubuntu1_ppc64el.deb ... 601s Unpacking libctf-nobfd0:ppc64el (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 601s Preparing to unpack .../11-binutils-powerpc64le-linux-gnu_2.45.50.20260119-1ubuntu1_ppc64el.deb ... 601s Unpacking binutils-powerpc64le-linux-gnu (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 601s Preparing to unpack .../12-libbinutils_2.45.50.20260119-1ubuntu1_ppc64el.deb ... 601s Unpacking libbinutils:ppc64el (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 601s Preparing to unpack .../13-binutils_2.45.50.20260119-1ubuntu1_ppc64el.deb ... 601s Unpacking binutils (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 601s Preparing to unpack .../14-binutils-common_2.45.50.20260119-1ubuntu1_ppc64el.deb ... 601s Unpacking binutils-common:ppc64el (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 602s Selecting previously unselected package libsframe3:ppc64el. 602s Preparing to unpack .../15-libsframe3_2.45.50.20260119-1ubuntu1_ppc64el.deb ... 602s Unpacking libsframe3:ppc64el (2.45.50.20260119-1ubuntu1) ... 602s Preparing to unpack .../16-zstd_1.5.7+dfsg-3_ppc64el.deb ... 602s Unpacking zstd (1.5.7+dfsg-3) over (1.5.7+dfsg-2) ... 602s Setting up libpython3.14-stdlib:ppc64el (3.14.2-1) ... 602s Setting up binutils-common:ppc64el (2.45.50.20260119-1ubuntu1) ... 602s Setting up libsframe3:ppc64el (2.45.50.20260119-1ubuntu1) ... 602s Setting up libctf-nobfd0:ppc64el (2.45.50.20260119-1ubuntu1) ... 602s Setting up libnss-systemd:ppc64el (259-1ubuntu3) ... 602s Setting up systemd (259-1ubuntu3) ... 602s /usr/lib/tmpfiles.d/legacy.conf:14: Duplicate line for path "/run/lock", ignoring. 602s /usr/lib/tmpfiles.d/legacy.conf:14: Duplicate line for path "/run/lock", ignoring. 603s Setting up xxd (2:9.1.1882-1ubuntu2) ... 603s Setting up vim-common (2:9.1.1882-1ubuntu2) ... 603s Setting up systemd-cryptsetup (259-1ubuntu3) ... 603s Setting up libatomic1:ppc64el (15.2.0-12ubuntu1) ... 603s Setting up udev (259-1ubuntu3) ... 604s Setting up dhcpcd-base (1:10.3.0-7) ... 604s Setting up libplymouth5:ppc64el (24.004.60+git20250831.4a3c171d-0ubuntu4) ... 604s Setting up python3.14 (3.14.2-1) ... 606s Setting up libbinutils:ppc64el (2.45.50.20260119-1ubuntu1) ... 606s Setting up libstdc++6:ppc64el (15.2.0-12ubuntu1) ... 606s Setting up libpython3-stdlib:ppc64el (3.14.2-1) ... 606s Setting up systemd-resolved (259-1ubuntu3) ... 607s Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 148. 607s Setting up libctf0:ppc64el (2.45.50.20260119-1ubuntu1) ... 607s Setting up systemd-userdbd (259-1ubuntu3) ... 607s Setting up systemd-sysv (259-1ubuntu3) ... 607s Setting up python3-gdbm (3.14.2-1) ... 607s Setting up plymouth (24.004.60+git20250831.4a3c171d-0ubuntu4) ... 607s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 608s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 608s Setting up python3 (3.14.2-1) ... 608s running python rtupdate hooks for python3.14... 608s running python post-rtupdate hooks for python3.14... 608s Setting up vim-tiny (2:9.1.1882-1ubuntu2) ... 608s Setting up libpam-systemd:ppc64el (259-1ubuntu3) ... 608s Setting up libapt-pkg7.0:ppc64el (3.1.13) ... 608s Setting up binutils-powerpc64le-linux-gnu (2.45.50.20260119-1ubuntu1) ... 608s Setting up zstd (1.5.7+dfsg-3) ... 608s Setting up apt (3.1.13) ... 609s Setting up binutils (2.45.50.20260119-1ubuntu1) ... 609s Processing triggers for dbus (1.16.2-2ubuntu2) ... 609s Processing triggers for shared-mime-info (2.4-5build2) ... 615s Processing triggers for procps (2:4.0.4-9ubuntu1) ... 615s Processing triggers for initramfs-tools (0.150ubuntu7) ... 615s update-initramfs: Generating /boot/initrd.img-6.18.0-9-generic 624s Processing triggers for libc-bin (2.42-2ubuntu4) ... 624s Processing triggers for man-db (2.13.1-1) ... 630s Setting up plymouth-theme-ubuntu-text (24.004.60+git20250831.4a3c171d-0ubuntu4) ... 630s Processing triggers for initramfs-tools (0.150ubuntu7) ... 630s update-initramfs: Generating /boot/initrd.img-6.18.0-9-generic 637s autopkgtest [05:16:48]: upgrading testbed (apt dist-upgrade and autopurge) 638s Reading package lists... 638s Building dependency tree... 638s Reading state information... 638s Calculating upgrade... 638s The following packages were automatically installed and are no longer required: 638s python3.13 python3.13-minimal 638s Use 'sudo apt autoremove' to remove them. 638s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 639s Reading package lists... 639s Building dependency tree... 639s Reading state information... 639s Solving dependencies... 639s The following packages will be REMOVED: 639s python3.13* python3.13-minimal* 639s 0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded. 639s After this operation, 9077 kB disk space will be freed. 639s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121598 files and directories currently installed.) 639s Removing python3.13 (3.13.11-1) ... 639s Removing python3.13-minimal (3.13.11-1) ... 641s Processing triggers for man-db (2.13.1-1) ... 641s Processing triggers for systemd (259-1ubuntu3) ... 642s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121571 files and directories currently installed.) 642s Purging configuration files for python3.13-minimal (3.13.11-1) ... 642s autopkgtest [05:16:53]: rebooting testbed after setup commands that affected boot 685s Reading package lists... 685s Building dependency tree... 685s Reading state information... 685s Solving dependencies... 686s The following NEW packages will be installed: 686s dbconfig-common dbconfig-mysql default-mysql-server libabsl20240722 libblas3 686s libboost-python1.88.0 libcares2 libcos4-3 libev4t64 libexpat1-dev 686s libgfortran5 libgoogle-perftools4t64 libgrpc++1.51t64 libgrpc29t64 686s libjpeg-turbo8 libjpeg8 liblapack3 libmecab2 libmysqlclient24 libnorm1t64 686s libomniorb4-3t64 libomnithread4 libpgm-5.3-0t64 libprotobuf-lite32t64 686s libprotobuf32t64 libprotoc32t64 libpython3-all-dev libpython3-dev 686s libpython3.13-dev libpython3.14 libpython3.14-dev libre2-11 libsodium23 686s libtango-tools libtango10 libtcmalloc-minimal4t64 libzmq5 mysql-client 686s mysql-client-core mysql-common mysql-server mysql-server-core 686s opentelemetry-cpp python3-all python3-all-dev python3-dev python3-gevent 686s python3-greenlet python3-numpy python3-numpy-dev python3-psutil 686s python3-tango python3-zope.event python3-zope.interface python3.13 686s python3.13-dev python3.13-minimal python3.14-dev tango-common tango-db 686s zlib1g-dev 686s 0 upgraded, 61 newly installed, 0 to remove and 0 not upgraded. 686s Need to get 76.3 MB of archives. 686s After this operation, 456 MB of additional disk space will be used. 686s Get:1 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3.13-minimal ppc64el 3.13.11-1 [2571 kB] 686s Get:2 http://ftpmaster.internal/ubuntu resolute/main ppc64el mysql-common all 5.8+1.1.1ubuntu2 [7002 B] 686s Get:3 http://ftpmaster.internal/ubuntu resolute/main ppc64el libtcmalloc-minimal4t64 ppc64el 2.16-1build1 [114 kB] 686s Get:4 http://ftpmaster.internal/ubuntu resolute/main ppc64el libgoogle-perftools4t64 ppc64el 2.16-1build1 [258 kB] 686s Get:5 http://ftpmaster.internal/ubuntu resolute/main ppc64el mysql-client-core ppc64el 8.4.7-0ubuntu3 [2195 kB] 686s Get:6 http://ftpmaster.internal/ubuntu resolute/main ppc64el mysql-client ppc64el 8.4.7-0ubuntu3 [9132 B] 686s Get:7 http://ftpmaster.internal/ubuntu resolute/main ppc64el libmecab2 ppc64el 0.996-15.1build3 [232 kB] 686s Get:8 http://ftpmaster.internal/ubuntu resolute/main ppc64el libprotobuf-lite32t64 ppc64el 3.21.12-15 [265 kB] 687s Get:9 http://ftpmaster.internal/ubuntu resolute/main ppc64el mysql-server-core ppc64el 8.4.7-0ubuntu3 [20.5 MB] 688s Get:10 http://ftpmaster.internal/ubuntu resolute/main ppc64el mysql-server ppc64el 8.4.7-0ubuntu3 [1382 kB] 688s Get:11 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-numpy-dev ppc64el 1:2.3.5+ds-3 [153 kB] 688s Get:12 http://ftpmaster.internal/ubuntu resolute/main ppc64el libblas3 ppc64el 3.12.1-7ubuntu1 [291 kB] 688s Get:13 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libgfortran5 ppc64el 15.2.0-12ubuntu1 [620 kB] 688s Get:14 http://ftpmaster.internal/ubuntu resolute/main ppc64el liblapack3 ppc64el 3.12.1-7ubuntu1 [2960 kB] 688s Get:15 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-numpy ppc64el 1:2.3.5+ds-3 [5722 kB] 688s Get:16 http://ftpmaster.internal/ubuntu resolute/universe ppc64el dbconfig-common all 2.0.25ubuntu1 [609 kB] 688s Get:17 http://ftpmaster.internal/ubuntu resolute/universe ppc64el dbconfig-mysql all 2.0.25ubuntu1 [942 B] 688s Get:18 http://ftpmaster.internal/ubuntu resolute-proposed/universe ppc64el libomnithread4 ppc64el 4.3.3+ds1-1build1 [13.2 kB] 688s Get:19 http://ftpmaster.internal/ubuntu resolute-proposed/universe ppc64el libomniorb4-3t64 ppc64el 4.3.3+ds1-1build1 [1401 kB] 688s Get:20 http://ftpmaster.internal/ubuntu resolute/main ppc64el libabsl20240722 ppc64el 20240722.0-4ubuntu1 [662 kB] 688s Get:21 http://ftpmaster.internal/ubuntu resolute/main ppc64el libcares2 ppc64el 1.34.6-1 [132 kB] 688s Get:22 http://ftpmaster.internal/ubuntu resolute/main ppc64el libprotobuf32t64 ppc64el 3.21.12-15 [992 kB] 688s Get:23 http://ftpmaster.internal/ubuntu resolute/main ppc64el libprotoc32t64 ppc64el 3.21.12-15 [716 kB] 688s Get:24 http://ftpmaster.internal/ubuntu resolute/main ppc64el libre2-11 ppc64el 20250805-1build1 [192 kB] 688s Get:25 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libgrpc29t64 ppc64el 1.51.1-7 [3028 kB] 688s Get:26 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libgrpc++1.51t64 ppc64el 1.51.1-7 [513 kB] 688s Get:27 http://ftpmaster.internal/ubuntu resolute/universe ppc64el opentelemetry-cpp ppc64el 1.23.0-3 [701 kB] 688s Get:28 http://ftpmaster.internal/ubuntu resolute/universe ppc64el tango-common all 10.0.2+dfsg1-4 [8520 B] 688s Get:29 http://ftpmaster.internal/ubuntu resolute-proposed/universe ppc64el libcos4-3 ppc64el 4.3.3+ds1-1build1 [1392 kB] 688s Get:30 http://ftpmaster.internal/ubuntu resolute/main ppc64el libjpeg-turbo8 ppc64el 2.1.5-4ubuntu2 [215 kB] 688s Get:31 http://ftpmaster.internal/ubuntu resolute/main ppc64el libjpeg8 ppc64el 8c-2ubuntu11 [2148 B] 688s Get:32 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libnorm1t64 ppc64el 1.5.9+dfsg-4 [198 kB] 688s Get:33 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libpgm-5.3-0t64 ppc64el 5.3.128~dfsg-2.1build2 [184 kB] 688s Get:34 http://ftpmaster.internal/ubuntu resolute/main ppc64el libsodium23 ppc64el 1.0.18-2 [160 kB] 688s Get:35 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libzmq5 ppc64el 4.3.5-1build3 [302 kB] 688s Get:36 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libtango10 ppc64el 10.0.2+dfsg1-4 [2031 kB] 688s Get:37 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libtango-tools ppc64el 10.0.2+dfsg1-4 [28.5 kB] 688s Get:38 http://ftpmaster.internal/ubuntu resolute/main ppc64el libmysqlclient24 ppc64el 8.4.7-0ubuntu3 [1304 kB] 689s Get:39 http://ftpmaster.internal/ubuntu resolute/universe ppc64el tango-db ppc64el 10.0.2+dfsg1-4 [207 kB] 689s Get:40 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3.13 ppc64el 3.13.11-1 [758 kB] 689s Get:41 http://ftpmaster.internal/ubuntu resolute/universe ppc64el default-mysql-server all 1.1.1ubuntu2 [3168 B] 689s Get:42 http://ftpmaster.internal/ubuntu resolute/main ppc64el libboost-python1.88.0 ppc64el 1.88.0-1.4ubuntu3 [361 kB] 689s Get:43 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libev4t64 ppc64el 1:4.33-2.1build2 [34.6 kB] 689s Get:44 http://ftpmaster.internal/ubuntu resolute/main ppc64el libexpat1-dev ppc64el 2.7.3-1 [155 kB] 689s Get:45 http://ftpmaster.internal/ubuntu resolute/main ppc64el libpython3.14 ppc64el 3.14.2-1 [2731 kB] 689s Get:46 http://ftpmaster.internal/ubuntu resolute/main ppc64el zlib1g-dev ppc64el 1:1.3.dfsg+really1.3.1-1ubuntu2 [903 kB] 689s Get:47 http://ftpmaster.internal/ubuntu resolute/main ppc64el libpython3.14-dev ppc64el 3.14.2-1 [6406 kB] 689s Get:48 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libpython3-dev ppc64el 3.14.2-1 [11.2 kB] 689s Get:49 http://ftpmaster.internal/ubuntu resolute/main ppc64el libpython3.13-dev ppc64el 3.13.11-1 [6398 kB] 689s Get:50 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libpython3-all-dev ppc64el 3.14.2-1 [914 B] 689s Get:51 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3-all ppc64el 3.14.2-1 [890 B] 689s Get:52 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3.14-dev ppc64el 3.14.2-1 [510 kB] 689s Get:53 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3-dev ppc64el 3.14.2-1 [26.6 kB] 689s Get:54 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3.13-dev ppc64el 3.13.11-1 [508 kB] 689s Get:55 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3-all-dev ppc64el 3.14.2-1 [914 B] 689s Get:56 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-psutil ppc64el 7.1.0-1ubuntu1 [192 kB] 689s Get:57 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-zope.event all 6.0-2 [7710 B] 689s Get:58 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-zope.interface ppc64el 8.2-1 [146 kB] 689s Get:59 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-greenlet ppc64el 3.2.4-3 [190 kB] 689s Get:60 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-gevent ppc64el 24.11.1-1build2 [1228 kB] 689s Get:61 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-tango ppc64el 10.0.2-3 [3532 kB] 690s Preconfiguring packages ... 690s Fetched 76.3 MB in 4s (21.3 MB/s) 690s Selecting previously unselected package python3.13-minimal. 690s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121573 files and directories currently installed.) 690s Preparing to unpack .../0-python3.13-minimal_3.13.11-1_ppc64el.deb ... 690s Unpacking python3.13-minimal (3.13.11-1) ... 690s Selecting previously unselected package mysql-common. 690s Preparing to unpack .../1-mysql-common_5.8+1.1.1ubuntu2_all.deb ... 690s Unpacking mysql-common (5.8+1.1.1ubuntu2) ... 690s Selecting previously unselected package libtcmalloc-minimal4t64:ppc64el. 690s Preparing to unpack .../2-libtcmalloc-minimal4t64_2.16-1build1_ppc64el.deb ... 690s Unpacking libtcmalloc-minimal4t64:ppc64el (2.16-1build1) ... 690s Selecting previously unselected package libgoogle-perftools4t64:ppc64el. 690s Preparing to unpack .../3-libgoogle-perftools4t64_2.16-1build1_ppc64el.deb ... 690s Unpacking libgoogle-perftools4t64:ppc64el (2.16-1build1) ... 690s Selecting previously unselected package mysql-client-core. 690s Preparing to unpack .../4-mysql-client-core_8.4.7-0ubuntu3_ppc64el.deb ... 690s Unpacking mysql-client-core (8.4.7-0ubuntu3) ... 691s Selecting previously unselected package mysql-client. 691s Preparing to unpack .../5-mysql-client_8.4.7-0ubuntu3_ppc64el.deb ... 691s Unpacking mysql-client (8.4.7-0ubuntu3) ... 691s Selecting previously unselected package libmecab2:ppc64el. 691s Preparing to unpack .../6-libmecab2_0.996-15.1build3_ppc64el.deb ... 691s Unpacking libmecab2:ppc64el (0.996-15.1build3) ... 691s Selecting previously unselected package libprotobuf-lite32t64:ppc64el. 691s Preparing to unpack .../7-libprotobuf-lite32t64_3.21.12-15_ppc64el.deb ... 691s Unpacking libprotobuf-lite32t64:ppc64el (3.21.12-15) ... 691s Selecting previously unselected package mysql-server-core. 691s Preparing to unpack .../8-mysql-server-core_8.4.7-0ubuntu3_ppc64el.deb ... 691s Unpacking mysql-server-core (8.4.7-0ubuntu3) ... 691s Setting up mysql-common (5.8+1.1.1ubuntu2) ... 691s update-alternatives: using /etc/mysql/my.cnf.fallback to provide /etc/mysql/my.cnf (my.cnf) in auto mode 691s Selecting previously unselected package mysql-server. 691s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 121801 files and directories currently installed.) 691s Preparing to unpack .../00-mysql-server_8.4.7-0ubuntu3_ppc64el.deb ... 692s Unpacking mysql-server (8.4.7-0ubuntu3) ... 692s Selecting previously unselected package python3-numpy-dev:ppc64el. 692s Preparing to unpack .../01-python3-numpy-dev_1%3a2.3.5+ds-3_ppc64el.deb ... 692s Unpacking python3-numpy-dev:ppc64el (1:2.3.5+ds-3) ... 692s Selecting previously unselected package libblas3:ppc64el. 692s Preparing to unpack .../02-libblas3_3.12.1-7ubuntu1_ppc64el.deb ... 692s Unpacking libblas3:ppc64el (3.12.1-7ubuntu1) ... 692s Selecting previously unselected package libgfortran5:ppc64el. 692s Preparing to unpack .../03-libgfortran5_15.2.0-12ubuntu1_ppc64el.deb ... 692s Unpacking libgfortran5:ppc64el (15.2.0-12ubuntu1) ... 692s Selecting previously unselected package liblapack3:ppc64el. 692s Preparing to unpack .../04-liblapack3_3.12.1-7ubuntu1_ppc64el.deb ... 692s Unpacking liblapack3:ppc64el (3.12.1-7ubuntu1) ... 692s Selecting previously unselected package python3-numpy. 692s Preparing to unpack .../05-python3-numpy_1%3a2.3.5+ds-3_ppc64el.deb ... 692s Unpacking python3-numpy (1:2.3.5+ds-3) ... 692s Selecting previously unselected package dbconfig-common. 692s Preparing to unpack .../06-dbconfig-common_2.0.25ubuntu1_all.deb ... 692s Unpacking dbconfig-common (2.0.25ubuntu1) ... 692s Selecting previously unselected package dbconfig-mysql. 692s Preparing to unpack .../07-dbconfig-mysql_2.0.25ubuntu1_all.deb ... 692s Unpacking dbconfig-mysql (2.0.25ubuntu1) ... 692s Selecting previously unselected package libomnithread4:ppc64el. 692s Preparing to unpack .../08-libomnithread4_4.3.3+ds1-1build1_ppc64el.deb ... 692s Unpacking libomnithread4:ppc64el (4.3.3+ds1-1build1) ... 692s Selecting previously unselected package libomniorb4-3t64:ppc64el. 692s Preparing to unpack .../09-libomniorb4-3t64_4.3.3+ds1-1build1_ppc64el.deb ... 692s Unpacking libomniorb4-3t64:ppc64el (4.3.3+ds1-1build1) ... 692s Selecting previously unselected package libabsl20240722:ppc64el. 692s Preparing to unpack .../10-libabsl20240722_20240722.0-4ubuntu1_ppc64el.deb ... 692s Unpacking libabsl20240722:ppc64el (20240722.0-4ubuntu1) ... 692s Selecting previously unselected package libcares2:ppc64el. 692s Preparing to unpack .../11-libcares2_1.34.6-1_ppc64el.deb ... 692s Unpacking libcares2:ppc64el (1.34.6-1) ... 692s Selecting previously unselected package libprotobuf32t64:ppc64el. 692s Preparing to unpack .../12-libprotobuf32t64_3.21.12-15_ppc64el.deb ... 692s Unpacking libprotobuf32t64:ppc64el (3.21.12-15) ... 693s Selecting previously unselected package libprotoc32t64:ppc64el. 693s Preparing to unpack .../13-libprotoc32t64_3.21.12-15_ppc64el.deb ... 693s Unpacking libprotoc32t64:ppc64el (3.21.12-15) ... 693s Selecting previously unselected package libre2-11:ppc64el. 693s Preparing to unpack .../14-libre2-11_20250805-1build1_ppc64el.deb ... 693s Unpacking libre2-11:ppc64el (20250805-1build1) ... 693s Selecting previously unselected package libgrpc29t64:ppc64el. 693s Preparing to unpack .../15-libgrpc29t64_1.51.1-7_ppc64el.deb ... 693s Unpacking libgrpc29t64:ppc64el (1.51.1-7) ... 693s Selecting previously unselected package libgrpc++1.51t64:ppc64el. 693s Preparing to unpack .../16-libgrpc++1.51t64_1.51.1-7_ppc64el.deb ... 693s Unpacking libgrpc++1.51t64:ppc64el (1.51.1-7) ... 693s Selecting previously unselected package opentelemetry-cpp:ppc64el. 693s Preparing to unpack .../17-opentelemetry-cpp_1.23.0-3_ppc64el.deb ... 693s Unpacking opentelemetry-cpp:ppc64el (1.23.0-3) ... 693s Selecting previously unselected package tango-common. 693s Preparing to unpack .../18-tango-common_10.0.2+dfsg1-4_all.deb ... 693s Unpacking tango-common (10.0.2+dfsg1-4) ... 693s Selecting previously unselected package libcos4-3:ppc64el. 693s Preparing to unpack .../19-libcos4-3_4.3.3+ds1-1build1_ppc64el.deb ... 693s Unpacking libcos4-3:ppc64el (4.3.3+ds1-1build1) ... 693s Selecting previously unselected package libjpeg-turbo8:ppc64el. 693s Preparing to unpack .../20-libjpeg-turbo8_2.1.5-4ubuntu2_ppc64el.deb ... 693s Unpacking libjpeg-turbo8:ppc64el (2.1.5-4ubuntu2) ... 693s Selecting previously unselected package libjpeg8:ppc64el. 693s Preparing to unpack .../21-libjpeg8_8c-2ubuntu11_ppc64el.deb ... 693s Unpacking libjpeg8:ppc64el (8c-2ubuntu11) ... 693s Selecting previously unselected package libnorm1t64:ppc64el. 693s Preparing to unpack .../22-libnorm1t64_1.5.9+dfsg-4_ppc64el.deb ... 693s Unpacking libnorm1t64:ppc64el (1.5.9+dfsg-4) ... 693s Selecting previously unselected package libpgm-5.3-0t64:ppc64el. 693s Preparing to unpack .../23-libpgm-5.3-0t64_5.3.128~dfsg-2.1build2_ppc64el.deb ... 693s Unpacking libpgm-5.3-0t64:ppc64el (5.3.128~dfsg-2.1build2) ... 693s Selecting previously unselected package libsodium23:ppc64el. 693s Preparing to unpack .../24-libsodium23_1.0.18-2_ppc64el.deb ... 693s Unpacking libsodium23:ppc64el (1.0.18-2) ... 693s Selecting previously unselected package libzmq5:ppc64el. 693s Preparing to unpack .../25-libzmq5_4.3.5-1build3_ppc64el.deb ... 693s Unpacking libzmq5:ppc64el (4.3.5-1build3) ... 693s Selecting previously unselected package libtango10:ppc64el. 693s Preparing to unpack .../26-libtango10_10.0.2+dfsg1-4_ppc64el.deb ... 693s Unpacking libtango10:ppc64el (10.0.2+dfsg1-4) ... 693s Selecting previously unselected package libtango-tools. 693s Preparing to unpack .../27-libtango-tools_10.0.2+dfsg1-4_ppc64el.deb ... 693s Unpacking libtango-tools (10.0.2+dfsg1-4) ... 693s Selecting previously unselected package libmysqlclient24:ppc64el. 693s Preparing to unpack .../28-libmysqlclient24_8.4.7-0ubuntu3_ppc64el.deb ... 693s Unpacking libmysqlclient24:ppc64el (8.4.7-0ubuntu3) ... 693s Selecting previously unselected package tango-db. 693s Preparing to unpack .../29-tango-db_10.0.2+dfsg1-4_ppc64el.deb ... 693s Unpacking tango-db (10.0.2+dfsg1-4) ... 693s Selecting previously unselected package python3.13. 693s Preparing to unpack .../30-python3.13_3.13.11-1_ppc64el.deb ... 693s Unpacking python3.13 (3.13.11-1) ... 693s Selecting previously unselected package default-mysql-server. 693s Preparing to unpack .../31-default-mysql-server_1.1.1ubuntu2_all.deb ... 693s Unpacking default-mysql-server (1.1.1ubuntu2) ... 693s Selecting previously unselected package libboost-python1.88.0. 693s Preparing to unpack .../32-libboost-python1.88.0_1.88.0-1.4ubuntu3_ppc64el.deb ... 693s Unpacking libboost-python1.88.0 (1.88.0-1.4ubuntu3) ... 693s Selecting previously unselected package libev4t64:ppc64el. 693s Preparing to unpack .../33-libev4t64_1%3a4.33-2.1build2_ppc64el.deb ... 693s Unpacking libev4t64:ppc64el (1:4.33-2.1build2) ... 693s Selecting previously unselected package libexpat1-dev:ppc64el. 693s Preparing to unpack .../34-libexpat1-dev_2.7.3-1_ppc64el.deb ... 693s Unpacking libexpat1-dev:ppc64el (2.7.3-1) ... 693s Selecting previously unselected package libpython3.14:ppc64el. 693s Preparing to unpack .../35-libpython3.14_3.14.2-1_ppc64el.deb ... 693s Unpacking libpython3.14:ppc64el (3.14.2-1) ... 693s Selecting previously unselected package zlib1g-dev:ppc64el. 693s Preparing to unpack .../36-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1ubuntu2_ppc64el.deb ... 693s Unpacking zlib1g-dev:ppc64el (1:1.3.dfsg+really1.3.1-1ubuntu2) ... 693s Selecting previously unselected package libpython3.14-dev:ppc64el. 693s Preparing to unpack .../37-libpython3.14-dev_3.14.2-1_ppc64el.deb ... 693s Unpacking libpython3.14-dev:ppc64el (3.14.2-1) ... 693s Selecting previously unselected package libpython3-dev:ppc64el. 693s Preparing to unpack .../38-libpython3-dev_3.14.2-1_ppc64el.deb ... 693s Unpacking libpython3-dev:ppc64el (3.14.2-1) ... 693s Selecting previously unselected package libpython3.13-dev:ppc64el. 693s Preparing to unpack .../39-libpython3.13-dev_3.13.11-1_ppc64el.deb ... 693s Unpacking libpython3.13-dev:ppc64el (3.13.11-1) ... 694s Selecting previously unselected package libpython3-all-dev:ppc64el. 694s Preparing to unpack .../40-libpython3-all-dev_3.14.2-1_ppc64el.deb ... 694s Unpacking libpython3-all-dev:ppc64el (3.14.2-1) ... 694s Selecting previously unselected package python3-all. 694s Preparing to unpack .../41-python3-all_3.14.2-1_ppc64el.deb ... 694s Unpacking python3-all (3.14.2-1) ... 694s Selecting previously unselected package python3.14-dev. 694s Preparing to unpack .../42-python3.14-dev_3.14.2-1_ppc64el.deb ... 694s Unpacking python3.14-dev (3.14.2-1) ... 694s Selecting previously unselected package python3-dev. 694s Preparing to unpack .../43-python3-dev_3.14.2-1_ppc64el.deb ... 694s Unpacking python3-dev (3.14.2-1) ... 694s Selecting previously unselected package python3.13-dev. 694s Preparing to unpack .../44-python3.13-dev_3.13.11-1_ppc64el.deb ... 694s Unpacking python3.13-dev (3.13.11-1) ... 694s Selecting previously unselected package python3-all-dev. 694s Preparing to unpack .../45-python3-all-dev_3.14.2-1_ppc64el.deb ... 694s Unpacking python3-all-dev (3.14.2-1) ... 694s Selecting previously unselected package python3-psutil. 694s Preparing to unpack .../46-python3-psutil_7.1.0-1ubuntu1_ppc64el.deb ... 694s Unpacking python3-psutil (7.1.0-1ubuntu1) ... 694s Selecting previously unselected package python3-zope.event. 694s Preparing to unpack .../47-python3-zope.event_6.0-2_all.deb ... 694s Unpacking python3-zope.event (6.0-2) ... 694s Selecting previously unselected package python3-zope.interface. 694s Preparing to unpack .../48-python3-zope.interface_8.2-1_ppc64el.deb ... 694s Unpacking python3-zope.interface (8.2-1) ... 694s Selecting previously unselected package python3-greenlet. 694s Preparing to unpack .../49-python3-greenlet_3.2.4-3_ppc64el.deb ... 694s Unpacking python3-greenlet (3.2.4-3) ... 694s Selecting previously unselected package python3-gevent. 694s Preparing to unpack .../50-python3-gevent_24.11.1-1build2_ppc64el.deb ... 694s Unpacking python3-gevent (24.11.1-1build2) ... 694s Selecting previously unselected package python3-tango. 694s Preparing to unpack .../51-python3-tango_10.0.2-3_ppc64el.deb ... 694s Unpacking python3-tango (10.0.2-3) ... 694s Setting up libprotobuf-lite32t64:ppc64el (3.21.12-15) ... 694s Setting up libev4t64:ppc64el (1:4.33-2.1build2) ... 694s Setting up libnorm1t64:ppc64el (1.5.9+dfsg-4) ... 694s Setting up libmecab2:ppc64el (0.996-15.1build3) ... 694s Setting up libprotobuf32t64:ppc64el (3.21.12-15) ... 694s Setting up libboost-python1.88.0 (1.88.0-1.4ubuntu3) ... 694s Setting up libsodium23:ppc64el (1.0.18-2) ... 694s Setting up python3-zope.event (6.0-2) ... 694s Setting up python3-zope.interface (8.2-1) ... 695s Setting up dbconfig-common (2.0.25ubuntu1) ... 695s Creating config file /etc/dbconfig-common/config with new version 695s Setting up libabsl20240722:ppc64el (20240722.0-4ubuntu1) ... 695s Setting up libmysqlclient24:ppc64el (8.4.7-0ubuntu3) ... 695s Setting up python3-psutil (7.1.0-1ubuntu1) ... 695s Setting up libpgm-5.3-0t64:ppc64el (5.3.128~dfsg-2.1build2) ... 695s Setting up libblas3:ppc64el (3.12.1-7ubuntu1) ... 695s update-alternatives: using /usr/lib/powerpc64le-linux-gnu/blas/libblas.so.3 to provide /usr/lib/powerpc64le-linux-gnu/libblas.so.3 (libblas.so.3-powerpc64le-linux-gnu) in auto mode 695s Setting up libexpat1-dev:ppc64el (2.7.3-1) ... 695s Setting up python3-greenlet (3.2.4-3) ... 696s Setting up libcares2:ppc64el (1.34.6-1) ... 696s Setting up python3-numpy-dev:ppc64el (1:2.3.5+ds-3) ... 696s Setting up libtcmalloc-minimal4t64:ppc64el (2.16-1build1) ... 696s Setting up libjpeg-turbo8:ppc64el (2.1.5-4ubuntu2) ... 696s Setting up libomnithread4:ppc64el (4.3.3+ds1-1build1) ... 696s Setting up libgfortran5:ppc64el (15.2.0-12ubuntu1) ... 696s Setting up zlib1g-dev:ppc64el (1:1.3.dfsg+really1.3.1-1ubuntu2) ... 696s Setting up libpython3.14:ppc64el (3.14.2-1) ... 696s Setting up python3.13-minimal (3.13.11-1) ... 697s Setting up libpython3.14-dev:ppc64el (3.14.2-1) ... 697s Setting up libprotoc32t64:ppc64el (3.21.12-15) ... 697s Setting up libjpeg8:ppc64el (8c-2ubuntu11) ... 697s Setting up libre2-11:ppc64el (20250805-1build1) ... 697s Setting up liblapack3:ppc64el (3.12.1-7ubuntu1) ... 697s update-alternatives: using /usr/lib/powerpc64le-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/powerpc64le-linux-gnu/liblapack.so.3 (liblapack.so.3-powerpc64le-linux-gnu) in auto mode 697s Setting up libpython3-dev:ppc64el (3.14.2-1) ... 697s Setting up libzmq5:ppc64el (4.3.5-1build3) ... 697s Setting up libgoogle-perftools4t64:ppc64el (2.16-1build1) ... 697s Setting up libomniorb4-3t64:ppc64el (4.3.3+ds1-1build1) ... 697s Setting up python3.14-dev (3.14.2-1) ... 697s Setting up python3.13 (3.13.11-1) ... 698s Setting up python3-all (3.14.2-1) ... 698s Setting up python3-gevent (24.11.1-1build2) ... 698s /usr/lib/python3/dist-packages/gevent/_ffi/loop.py:226: SyntaxWarning: 'return' in a 'finally' block 698s return # pylint:disable=lost-exception,return-in-finally 699s Setting up mysql-server-core (8.4.7-0ubuntu3) ... 699s Setting up libpython3.13-dev:ppc64el (3.13.11-1) ... 699s Setting up python3-dev (3.14.2-1) ... 699s Setting up libgrpc29t64:ppc64el (1.51.1-7) ... 699s Setting up python3-numpy (1:2.3.5+ds-3) ... 702s Setting up mysql-client-core (8.4.7-0ubuntu3) ... 702s Setting up libcos4-3:ppc64el (4.3.3+ds1-1build1) ... 702s Setting up mysql-client (8.4.7-0ubuntu3) ... 702s Setting up python3.13-dev (3.13.11-1) ... 702s Setting up dbconfig-mysql (2.0.25ubuntu1) ... 702s Setting up libgrpc++1.51t64:ppc64el (1.51.1-7) ... 702s Setting up libpython3-all-dev:ppc64el (3.14.2-1) ... 702s Setting up opentelemetry-cpp:ppc64el (1.23.0-3) ... 702s Setting up tango-common (10.0.2+dfsg1-4) ... 702s Adding group tango....done 702s Adding system user tango....done 702s Setting up mysql-server (8.4.7-0ubuntu3) ... 703s update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode 703s Renaming removed key_buffer and myisam-recover options (if present) 709s Created symlink '/etc/systemd/system/multi-user.target.wants/mysql.service' → '/usr/lib/systemd/system/mysql.service'. 710s Setting up python3-all-dev (3.14.2-1) ... 710s Setting up libtango10:ppc64el (10.0.2+dfsg1-4) ... 710s Setting up libtango-tools (10.0.2+dfsg1-4) ... 710s Setting up default-mysql-server (1.1.1ubuntu2) ... 710s Setting up python3-tango (10.0.2-3) ... 711s Setting up tango-db (10.0.2+dfsg1-4) ... 711s Determining localhost credentials from /etc/mysql/debian.cnf: succeeded. 711s dbconfig-common: writing config to /etc/dbconfig-common/tango-db.conf 711s Creating config file /etc/dbconfig-common/tango-db.conf with new version 711s Creating config file /var/lib/tango/.my.cnf with new version 711s checking privileges on database tango for tango@localhost: user creation needed. 711s granting access to database tango for tango@localhost: success. 711s verifying access for tango@localhost: success. 711s creating database tango: success. 711s verifying database tango exists: success. 714s populating database via sql... done. 714s dbconfig-common: flushing administrative password 714s Created symlink '/etc/systemd/system/multi-user.target.wants/tango-db.service' → '/usr/lib/systemd/system/tango-db.service'. 715s Processing triggers for systemd (259-1ubuntu3) ... 715s Processing triggers for man-db (2.13.1-1) ... 717s Processing triggers for libc-bin (2.42-2ubuntu4) ... 723s autopkgtest [05:18:14]: test command2: set -efu ; for py in $(py3versions -r 2>/dev/null) ; do cd "$AUTOPKGTEST_TMP" ; echo "Testing with $py:" ; $py -c "import tango; print(tango.Database().get_info())" ; done 723s autopkgtest [05:18:14]: test command2: [----------------------- 724s Testing with python3.13: 724s TANGO Database sys/database/2 724s 724s Running since 2026-01-23 05:18:05 724s 724s Devices defined = 8 724s Devices exported = 2 724s Device servers defined = 4 724s Device servers exported = 1 724s 724s Device properties defined = 0 [History lgth = 0] 724s Class properties defined = 67 [History lgth = 0] 724s Device attribute properties defined = 0 [History lgth = 0] 724s Class attribute properties defined = 0 [History lgth = 0] 724s Object properties defined = 0 [History lgth = 0] 724s 724s Testing with python3.14: 724s TANGO Database sys/database/2 724s 724s Running since 2026-01-23 05:18:05 724s 724s Devices defined = 8 724s Devices exported = 2 724s Device servers defined = 4 724s Device servers exported = 1 724s 724s Device properties defined = 0 [History lgth = 0] 724s Class properties defined = 67 [History lgth = 0] 724s Device attribute properties defined = 0 [History lgth = 0] 724s Class attribute properties defined = 0 [History lgth = 0] 724s Object properties defined = 0 [History lgth = 0] 724s 726s bash: line 1: 3244 Segmentation fault (core dumped) $py -c "import tango; print(tango.Database().get_info())" 726s autopkgtest [05:18:17]: test command2: -----------------------] 727s autopkgtest [05:18:18]: test command2: - - - - - - - - - - results - - - - - - - - - - 727s command2 FLAKY non-zero exit status 139 727s autopkgtest [05:18:18]: @@@@@@@@@@@@@@@@@@@@ summary 727s command1 FAIL non-zero exit status 139 727s command2 FLAKY non-zero exit status 139