0s autopkgtest [05:06:11]: starting date and time: 2026-01-23 05:06:11+0000 0s autopkgtest [05:06:11]: git checkout: 508d4a25 a-v-ssh wait_for_ssh: demote "ssh connection failed" to a debug message 0s autopkgtest [05:06:11]: host juju-7f2275-prod-proposed-migration-environment-9; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.ol4w4ugj/out --timeout-copy=6000 --setup-commands 'ln -s /dev/null /etc/systemd/system/bluetooth.service; printf "http_proxy=http://squid.internal:3128\nhttps_proxy=http://squid.internal:3128\nno_proxy=127.0.0.1,127.0.1.1,localhost,localdomain,internal,login.ubuntu.com,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,keyserver.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com,radosgw.ps5.canonical.com\n" >> /etc/environment' --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' -- lxd -r lxd-armhf-10.145.243.239 lxd-armhf-10.145.243.239:autopkgtest/ubuntu/resolute/armhf 21s autopkgtest [05:06:32]: testbed dpkg architecture: armhf 23s autopkgtest [05:06:34]: testbed apt version: 3.1.13 27s autopkgtest [05:06:38]: @@@@@@@@@@@@@@@@@@@@ test bed setup 28s autopkgtest [05:06:39]: testbed release detected to be: None 36s autopkgtest [05:06:47]: updating testbed package index (apt update) 38s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [124 kB] 38s Get:2 http://ftpmaster.internal/ubuntu resolute InRelease [124 kB] 38s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 38s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 38s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [1181 kB] 39s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [95.1 kB] 39s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [2820 B] 39s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [23.6 kB] 39s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf Packages [113 kB] 39s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/universe armhf Packages [932 kB] 39s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse armhf Packages [7912 B] 39s Get:12 http://ftpmaster.internal/ubuntu resolute/multiverse Sources [310 kB] 39s Get:13 http://ftpmaster.internal/ubuntu resolute/main Sources [1399 kB] 39s Get:14 http://ftpmaster.internal/ubuntu resolute/universe Sources [21.4 MB] 40s Get:15 http://ftpmaster.internal/ubuntu resolute/main armhf Packages [1371 kB] 40s Get:16 http://ftpmaster.internal/ubuntu resolute/universe armhf Packages [15.0 MB] 41s Get:17 http://ftpmaster.internal/ubuntu resolute/multiverse armhf Packages [175 kB] 44s Fetched 42.2 MB in 6s (6644 kB/s) 45s Reading package lists... 51s autopkgtest [05:07:02]: upgrading testbed (apt dist-upgrade and autopurge) 53s Reading package lists... 53s Building dependency tree... 53s Reading state information... 54s Calculating upgrade... 55s The following packages were automatically installed and are no longer required: 55s libpython3.13-minimal libpython3.13-stdlib libsframe2 python3.13 55s python3.13-minimal 55s Use 'apt autoremove' to remove them. 55s The following NEW packages will be installed: 55s libpython3.14-minimal libpython3.14-stdlib libsframe3 python3.14 55s python3.14-minimal 55s The following packages will be upgraded: 55s binutils binutils-arm-linux-gnueabihf binutils-common dhcpcd-base 55s gcc-15-base libatomic1 libbinutils libctf-nobfd0 libctf0 libgcc-s1 55s libnss-systemd libpam-systemd libpython3-stdlib libstdc++6 libsystemd-shared 55s libsystemd0 libudev1 libzstd1 python3 python3-gdbm python3-minimal systemd 55s systemd-cryptsetup systemd-resolved systemd-sysv systemd-userdbd udev 55s vim-common vim-tiny xxd zstd 55s 31 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. 55s Need to get 20.1 MB of archives. 55s After this operation, 22.7 MB of additional disk space will be used. 55s Get:1 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.14-minimal armhf 3.14.2-1 [905 kB] 55s Get:2 http://ftpmaster.internal/ubuntu resolute/main armhf python3.14-minimal armhf 3.14.2-1 [2155 kB] 56s Get:3 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf python3-minimal armhf 3.14.2-1 [28.2 kB] 56s Get:4 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf python3 armhf 3.14.2-1 [22.9 kB] 56s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libzstd1 armhf 1.5.7+dfsg-3 [275 kB] 56s Get:6 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.14-stdlib armhf 3.14.2-1 [2270 kB] 56s Get:7 http://ftpmaster.internal/ubuntu resolute/main armhf python3.14 armhf 3.14.2-1 [816 kB] 56s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libpython3-stdlib armhf 3.14.2-1 [10.9 kB] 56s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/universe armhf systemd-userdbd armhf 259-1ubuntu3 [52.0 kB] 56s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libnss-systemd armhf 259-1ubuntu3 [277 kB] 56s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libsystemd0 armhf 259-1ubuntu3 [517 kB] 56s Get:12 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf systemd-sysv armhf 259-1ubuntu3 [9246 B] 56s Get:13 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf systemd-resolved armhf 259-1ubuntu3 [292 kB] 56s Get:14 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libpam-systemd armhf 259-1ubuntu3 [252 kB] 56s Get:15 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libsystemd-shared armhf 259-1ubuntu3 [2430 kB] 56s Get:16 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf systemd armhf 259-1ubuntu3 [3156 kB] 56s Get:17 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf systemd-cryptsetup armhf 259-1ubuntu3 [126 kB] 56s Get:18 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf udev armhf 259-1ubuntu3 [1492 kB] 56s Get:19 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libudev1 armhf 259-1ubuntu3 [204 kB] 56s Get:20 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf gcc-15-base armhf 15.2.0-12ubuntu1 [59.6 kB] 56s Get:21 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libstdc++6 armhf 15.2.0-12ubuntu1 [731 kB] 56s Get:22 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libatomic1 armhf 15.2.0-12ubuntu1 [7824 B] 56s Get:23 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libgcc-s1 armhf 15.2.0-12ubuntu1 [40.5 kB] 56s Get:24 http://ftpmaster.internal/ubuntu resolute/main armhf dhcpcd-base armhf 1:10.3.0-7 [194 kB] 56s Get:25 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf vim-tiny armhf 2:9.1.1882-1ubuntu2 [727 kB] 56s Get:26 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf vim-common all 2:9.1.1882-1ubuntu2 [402 kB] 56s Get:27 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf xxd armhf 2:9.1.1882-1ubuntu2 [70.2 kB] 56s Get:28 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf python3-gdbm armhf 3.14.2-1 [11.1 kB] 56s Get:29 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libctf0 armhf 2.45.50.20260119-1ubuntu1 [75.7 kB] 56s Get:30 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libctf-nobfd0 armhf 2.45.50.20260119-1ubuntu1 [78.3 kB] 56s Get:31 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf binutils-arm-linux-gnueabihf armhf 2.45.50.20260119-1ubuntu1 [1034 kB] 56s Get:32 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libbinutils armhf 2.45.50.20260119-1ubuntu1 [404 kB] 56s Get:33 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf binutils armhf 2.45.50.20260119-1ubuntu1 [3264 B] 56s Get:34 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf binutils-common armhf 2.45.50.20260119-1ubuntu1 [222 kB] 56s Get:35 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libsframe3 armhf 2.45.50.20260119-1ubuntu1 [16.4 kB] 56s Get:36 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf zstd armhf 1.5.7+dfsg-3 [728 kB] 57s Fetched 20.1 MB in 1s (15.2 MB/s) 57s Selecting previously unselected package libpython3.14-minimal:armhf. 57s (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 ... 66485 files and directories currently installed.) 57s Preparing to unpack .../libpython3.14-minimal_3.14.2-1_armhf.deb ... 57s Unpacking libpython3.14-minimal:armhf (3.14.2-1) ... 57s Selecting previously unselected package python3.14-minimal. 57s Preparing to unpack .../python3.14-minimal_3.14.2-1_armhf.deb ... 57s Unpacking python3.14-minimal (3.14.2-1) ... 57s Setting up libpython3.14-minimal:armhf (3.14.2-1) ... 57s Setting up python3.14-minimal (3.14.2-1) ... 59s (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 ... 66827 files and directories currently installed.) 59s Preparing to unpack .../python3-minimal_3.14.2-1_armhf.deb ... 59s Unpacking python3-minimal (3.14.2-1) over (3.13.9-3) ... 59s Setting up python3-minimal (3.14.2-1) ... 59s (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 ... 66827 files and directories currently installed.) 59s Preparing to unpack .../python3_3.14.2-1_armhf.deb ... 59s Unpacking python3 (3.14.2-1) over (3.13.9-3) ... 59s Preparing to unpack .../libzstd1_1.5.7+dfsg-3_armhf.deb ... 59s Unpacking libzstd1:armhf (1.5.7+dfsg-3) over (1.5.7+dfsg-2) ... 59s Setting up libzstd1:armhf (1.5.7+dfsg-3) ... 59s Selecting previously unselected package libpython3.14-stdlib:armhf. 59s (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 ... 66828 files and directories currently installed.) 59s Preparing to unpack .../0-libpython3.14-stdlib_3.14.2-1_armhf.deb ... 59s Unpacking libpython3.14-stdlib:armhf (3.14.2-1) ... 60s Selecting previously unselected package python3.14. 60s Preparing to unpack .../1-python3.14_3.14.2-1_armhf.deb ... 60s Unpacking python3.14 (3.14.2-1) ... 60s Preparing to unpack .../2-libpython3-stdlib_3.14.2-1_armhf.deb ... 60s Unpacking libpython3-stdlib:armhf (3.14.2-1) over (3.13.9-3) ... 60s Preparing to unpack .../3-systemd-userdbd_259-1ubuntu3_armhf.deb ... 60s Unpacking systemd-userdbd (259-1ubuntu3) over (259-1ubuntu2) ... 60s Preparing to unpack .../4-libnss-systemd_259-1ubuntu3_armhf.deb ... 60s Unpacking libnss-systemd:armhf (259-1ubuntu3) over (259-1ubuntu2) ... 60s Preparing to unpack .../5-libsystemd0_259-1ubuntu3_armhf.deb ... 60s Unpacking libsystemd0:armhf (259-1ubuntu3) over (259-1ubuntu2) ... 60s Setting up libsystemd0:armhf (259-1ubuntu3) ... 60s (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 ... 67259 files and directories currently installed.) 60s Preparing to unpack .../systemd-sysv_259-1ubuntu3_armhf.deb ... 60s Unpacking systemd-sysv (259-1ubuntu3) over (259-1ubuntu2) ... 60s Preparing to unpack .../systemd-resolved_259-1ubuntu3_armhf.deb ... 60s Unpacking systemd-resolved (259-1ubuntu3) over (259-1ubuntu2) ... 60s Preparing to unpack .../libpam-systemd_259-1ubuntu3_armhf.deb ... 60s Unpacking libpam-systemd:armhf (259-1ubuntu3) over (259-1ubuntu2) ... 60s Preparing to unpack .../libsystemd-shared_259-1ubuntu3_armhf.deb ... 60s Unpacking libsystemd-shared:armhf (259-1ubuntu3) over (259-1ubuntu2) ... 60s Setting up libsystemd-shared:armhf (259-1ubuntu3) ... 60s (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 ... 67259 files and directories currently installed.) 60s Preparing to unpack .../systemd_259-1ubuntu3_armhf.deb ... 60s Unpacking systemd (259-1ubuntu3) over (259-1ubuntu2) ... 61s Preparing to unpack .../systemd-cryptsetup_259-1ubuntu3_armhf.deb ... 61s Unpacking systemd-cryptsetup (259-1ubuntu3) over (259-1ubuntu2) ... 61s Preparing to unpack .../udev_259-1ubuntu3_armhf.deb ... 61s Unpacking udev (259-1ubuntu3) over (259-1ubuntu2) ... 61s Preparing to unpack .../libudev1_259-1ubuntu3_armhf.deb ... 61s Unpacking libudev1:armhf (259-1ubuntu3) over (259-1ubuntu2) ... 61s Setting up libudev1:armhf (259-1ubuntu3) ... 61s (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 ... 67259 files and directories currently installed.) 61s Preparing to unpack .../gcc-15-base_15.2.0-12ubuntu1_armhf.deb ... 61s Unpacking gcc-15-base:armhf (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 61s Setting up gcc-15-base:armhf (15.2.0-12ubuntu1) ... 61s (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 ... 67259 files and directories currently installed.) 61s Preparing to unpack .../libstdc++6_15.2.0-12ubuntu1_armhf.deb ... 61s Unpacking libstdc++6:armhf (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 61s Setting up libstdc++6:armhf (15.2.0-12ubuntu1) ... 61s (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 ... 67259 files and directories currently installed.) 61s Preparing to unpack .../libatomic1_15.2.0-12ubuntu1_armhf.deb ... 61s Unpacking libatomic1:armhf (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 61s Preparing to unpack .../libgcc-s1_15.2.0-12ubuntu1_armhf.deb ... 61s Unpacking libgcc-s1:armhf (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 62s Setting up libgcc-s1:armhf (15.2.0-12ubuntu1) ... 62s (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 ... 67259 files and directories currently installed.) 62s Preparing to unpack .../00-dhcpcd-base_1%3a10.3.0-7_armhf.deb ... 62s Unpacking dhcpcd-base (1:10.3.0-7) over (1:10.3.0-3) ... 62s Preparing to unpack .../01-vim-tiny_2%3a9.1.1882-1ubuntu2_armhf.deb ... 62s Unpacking vim-tiny (2:9.1.1882-1ubuntu2) over (2:9.1.1882-1ubuntu1) ... 62s Preparing to unpack .../02-vim-common_2%3a9.1.1882-1ubuntu2_all.deb ... 62s Unpacking vim-common (2:9.1.1882-1ubuntu2) over (2:9.1.1882-1ubuntu1) ... 62s Preparing to unpack .../03-xxd_2%3a9.1.1882-1ubuntu2_armhf.deb ... 62s Unpacking xxd (2:9.1.1882-1ubuntu2) over (2:9.1.1882-1ubuntu1) ... 62s Preparing to unpack .../04-python3-gdbm_3.14.2-1_armhf.deb ... 62s Unpacking python3-gdbm (3.14.2-1) over (3.13.9-3) ... 62s Preparing to unpack .../05-libctf0_2.45.50.20260119-1ubuntu1_armhf.deb ... 62s Unpacking libctf0:armhf (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 62s Preparing to unpack .../06-libctf-nobfd0_2.45.50.20260119-1ubuntu1_armhf.deb ... 62s Unpacking libctf-nobfd0:armhf (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 62s Preparing to unpack .../07-binutils-arm-linux-gnueabihf_2.45.50.20260119-1ubuntu1_armhf.deb ... 62s Unpacking binutils-arm-linux-gnueabihf (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 62s Preparing to unpack .../08-libbinutils_2.45.50.20260119-1ubuntu1_armhf.deb ... 62s Unpacking libbinutils:armhf (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 62s Preparing to unpack .../09-binutils_2.45.50.20260119-1ubuntu1_armhf.deb ... 62s Unpacking binutils (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 62s Preparing to unpack .../10-binutils-common_2.45.50.20260119-1ubuntu1_armhf.deb ... 62s Unpacking binutils-common:armhf (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 62s Selecting previously unselected package libsframe3:armhf. 62s Preparing to unpack .../11-libsframe3_2.45.50.20260119-1ubuntu1_armhf.deb ... 62s Unpacking libsframe3:armhf (2.45.50.20260119-1ubuntu1) ... 62s Preparing to unpack .../12-zstd_1.5.7+dfsg-3_armhf.deb ... 62s Unpacking zstd (1.5.7+dfsg-3) over (1.5.7+dfsg-2) ... 62s Setting up libpython3.14-stdlib:armhf (3.14.2-1) ... 62s Setting up binutils-common:armhf (2.45.50.20260119-1ubuntu1) ... 62s Setting up libsframe3:armhf (2.45.50.20260119-1ubuntu1) ... 62s Setting up libctf-nobfd0:armhf (2.45.50.20260119-1ubuntu1) ... 62s Setting up libnss-systemd:armhf (259-1ubuntu3) ... 62s Setting up systemd (259-1ubuntu3) ... 62s /usr/lib/tmpfiles.d/legacy.conf:14: Duplicate line for path "/run/lock", ignoring. 62s /usr/lib/tmpfiles.d/legacy.conf:14: Duplicate line for path "/run/lock", ignoring. 63s Setting up xxd (2:9.1.1882-1ubuntu2) ... 63s Setting up vim-common (2:9.1.1882-1ubuntu2) ... 63s Setting up systemd-cryptsetup (259-1ubuntu3) ... 63s Setting up libatomic1:armhf (15.2.0-12ubuntu1) ... 63s Setting up udev (259-1ubuntu3) ... 64s Setting up dhcpcd-base (1:10.3.0-7) ... 64s Setting up python3.14 (3.14.2-1) ... 66s Setting up libbinutils:armhf (2.45.50.20260119-1ubuntu1) ... 66s Setting up zstd (1.5.7+dfsg-3) ... 66s Setting up libpython3-stdlib:armhf (3.14.2-1) ... 66s Setting up systemd-resolved (259-1ubuntu3) ... 67s Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 148. 67s Setting up libctf0:armhf (2.45.50.20260119-1ubuntu1) ... 67s Setting up systemd-userdbd (259-1ubuntu3) ... 67s Setting up systemd-sysv (259-1ubuntu3) ... 67s Setting up python3-gdbm (3.14.2-1) ... 67s Setting up python3 (3.14.2-1) ... 67s Setting up vim-tiny (2:9.1.1882-1ubuntu2) ... 67s Setting up libpam-systemd:armhf (259-1ubuntu3) ... 68s Setting up binutils-arm-linux-gnueabihf (2.45.50.20260119-1ubuntu1) ... 68s Setting up binutils (2.45.50.20260119-1ubuntu1) ... 68s Processing triggers for dbus (1.16.2-2ubuntu2) ... 68s Processing triggers for shared-mime-info (2.4-5build2) ... 68s Processing triggers for procps (2:4.0.4-9ubuntu1) ... 68s Processing triggers for initramfs-tools (0.150ubuntu7) ... 68s Processing triggers for libc-bin (2.42-2ubuntu4) ... 69s Processing triggers for man-db (2.13.1-1) ... 72s Reading package lists... 73s Building dependency tree... 73s Reading state information... 73s Solving dependencies... 74s The following packages will be REMOVED: 74s libpython3.13-minimal* libpython3.13-stdlib* libsframe2* python3.13* 74s python3.13-minimal* 75s 0 upgraded, 0 newly installed, 5 to remove and 0 not upgraded. 75s After this operation, 21.4 MB disk space will be freed. 75s (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 ... 67259 files and directories currently installed.) 75s Removing python3.13 (3.13.11-1) ... 75s Removing libpython3.13-stdlib:armhf (3.13.11-1) ... 75s Removing python3.13-minimal (3.13.11-1) ... 77s Removing libpython3.13-minimal:armhf (3.13.11-1) ... 77s Removing libsframe2:armhf (2.45.50.20251209-1ubuntu1) ... 77s Processing triggers for systemd (259-1ubuntu3) ... 77s Processing triggers for man-db (2.13.1-1) ... 77s Processing triggers for libc-bin (2.42-2ubuntu4) ... 77s (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 ... 66515 files and directories currently installed.) 77s Purging configuration files for libpython3.13-minimal:armhf (3.13.11-1) ... 77s Purging configuration files for python3.13-minimal (3.13.11-1) ... 80s autopkgtest [05:07:31]: rebooting testbed after setup commands that affected boot 121s autopkgtest [05:08:12]: testbed running kernel: Linux 6.8.0-87-generic #88~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Oct 14 14:00:09 UTC 2 146s autopkgtest [05:08:37]: @@@@@@@@@@@@@@@@@@@@ apt-source pytango 161s Get:1 http://ftpmaster.internal/ubuntu resolute/universe pytango 10.0.2-3 (dsc) [3646 B] 161s Get:2 http://ftpmaster.internal/ubuntu resolute/universe pytango 10.0.2-3 (tar) [4854 kB] 161s Get:3 http://ftpmaster.internal/ubuntu resolute/universe pytango 10.0.2-3 (diff) [13.6 kB] 161s gpgv: Signature made Thu Oct 2 15:09:36 2025 UTC 161s gpgv: using RSA key 9B03EBB98300DF97C2B123BFCC8C6BDD1403F4CA 161s gpgv: issuer "roehling@debian.org" 161s gpgv: Can't check signature: No public key 161s dpkg-source: warning: cannot verify inline signature for ./pytango_10.0.2-3.dsc: no acceptable signature found 161s autopkgtest [05:08:52]: testing package pytango version 10.0.2-3 163s autopkgtest [05:08:54]: build not needed 166s autopkgtest [05:08:57]: test command1: preparing testbed 168s Reading package lists... 168s Building dependency tree... 168s Reading state information... 168s Solving dependencies... 169s The following NEW packages will be installed: 169s libabsl20240722 libblas3 libboost-python1.88.0 libc-dev-bin libc6-dev 169s libcares2 libcos4-3 libcrypt-dev libev4t64 libexpat1-dev libgfortran5 169s libgrpc++1.51t64 libgrpc29t64 libjpeg-turbo8 libjpeg8 liblapack3 libnorm1t64 169s libomniorb4-3t64 libomnithread4 libpgm-5.3-0t64 libprotobuf32t64 169s libprotoc32t64 libpython3-all-dev libpython3-dev libpython3.13 169s libpython3.13-dev libpython3.13-minimal libpython3.13-stdlib libpython3.14 169s libpython3.14-dev libre2-11 libsodium23 libtango-tools libtango10 libzmq5 169s linux-libc-dev opentelemetry-cpp python3-all python3-all-dev python3-dev 169s python3-gevent python3-greenlet python3-iniconfig python3-numpy 169s python3-numpy-dev python3-pluggy python3-psutil python3-py python3-pytest 169s python3-pytest-asyncio python3-pytest-forked python3-pytest-rerunfailures 169s python3-tango python3-zope.event python3-zope.interface python3.13 169s python3.13-dev python3.13-minimal python3.14-dev rpcsvc-proto tango-common 169s tango-starter tango-test zlib1g-dev 169s 0 upgraded, 64 newly installed, 0 to remove and 0 not upgraded. 169s Need to get 49.3 MB of archives. 169s After this operation, 196 MB of additional disk space will be used. 169s Get:1 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.13-minimal armhf 3.13.11-1 [875 kB] 170s Get:2 http://ftpmaster.internal/ubuntu resolute/main armhf python3.13-minimal armhf 3.13.11-1 [2055 kB] 170s Get:3 http://ftpmaster.internal/ubuntu resolute/main armhf python3-numpy-dev armhf 1:2.3.5+ds-3 [141 kB] 170s Get:4 http://ftpmaster.internal/ubuntu resolute/main armhf libblas3 armhf 3.12.1-7ubuntu1 [133 kB] 170s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libgfortran5 armhf 15.2.0-12ubuntu1 [334 kB] 170s Get:6 http://ftpmaster.internal/ubuntu resolute/main armhf liblapack3 armhf 3.12.1-7ubuntu1 [2090 kB] 170s Get:7 http://ftpmaster.internal/ubuntu resolute/main armhf python3-numpy armhf 1:2.3.5+ds-3 [4729 kB] 170s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/universe armhf libomnithread4 armhf 4.3.3+ds1-1build1 [12.2 kB] 170s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/universe armhf libomniorb4-3t64 armhf 4.3.3+ds1-1build1 [1129 kB] 170s Get:10 http://ftpmaster.internal/ubuntu resolute/main armhf libabsl20240722 armhf 20240722.0-4ubuntu1 [500 kB] 170s Get:11 http://ftpmaster.internal/ubuntu resolute/main armhf libcares2 armhf 1.34.6-1 [86.9 kB] 170s Get:12 http://ftpmaster.internal/ubuntu resolute/main armhf libprotobuf32t64 armhf 3.21.12-15 [905 kB] 170s Get:13 http://ftpmaster.internal/ubuntu resolute/main armhf libprotoc32t64 armhf 3.21.12-15 [821 kB] 170s Get:14 http://ftpmaster.internal/ubuntu resolute/main armhf libre2-11 armhf 20250805-1build1 [154 kB] 170s Get:15 http://ftpmaster.internal/ubuntu resolute/universe armhf libgrpc29t64 armhf 1.51.1-7 [2769 kB] 170s Get:16 http://ftpmaster.internal/ubuntu resolute/universe armhf libgrpc++1.51t64 armhf 1.51.1-7 [475 kB] 170s Get:17 http://ftpmaster.internal/ubuntu resolute/universe armhf opentelemetry-cpp armhf 1.23.0-3 [653 kB] 170s Get:18 http://ftpmaster.internal/ubuntu resolute/universe armhf tango-common all 10.0.2+dfsg1-4 [8520 B] 170s Get:19 http://ftpmaster.internal/ubuntu resolute-proposed/universe armhf libcos4-3 armhf 4.3.3+ds1-1build1 [1096 kB] 170s Get:20 http://ftpmaster.internal/ubuntu resolute/main armhf libjpeg-turbo8 armhf 2.1.5-4ubuntu2 [127 kB] 170s Get:21 http://ftpmaster.internal/ubuntu resolute/main armhf libjpeg8 armhf 8c-2ubuntu11 [2148 B] 170s Get:22 http://ftpmaster.internal/ubuntu resolute/universe armhf libnorm1t64 armhf 1.5.9+dfsg-4 [210 kB] 170s Get:23 http://ftpmaster.internal/ubuntu resolute/universe armhf libpgm-5.3-0t64 armhf 5.3.128~dfsg-2.1build2 [173 kB] 170s Get:24 http://ftpmaster.internal/ubuntu resolute/main armhf libsodium23 armhf 1.0.18-2 [141 kB] 170s Get:25 http://ftpmaster.internal/ubuntu resolute/universe armhf libzmq5 armhf 4.3.5-1build3 [271 kB] 170s Get:26 http://ftpmaster.internal/ubuntu resolute/universe armhf libtango10 armhf 10.0.2+dfsg1-4 [2146 kB] 171s Get:27 http://ftpmaster.internal/ubuntu resolute/universe armhf libtango-tools armhf 10.0.2+dfsg1-4 [30.8 kB] 171s Get:28 http://ftpmaster.internal/ubuntu resolute/universe armhf tango-starter armhf 10.0.2+dfsg1-4 [88.3 kB] 171s Get:29 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.13-stdlib armhf 3.13.11-1 [1960 kB] 171s Get:30 http://ftpmaster.internal/ubuntu resolute/main armhf python3.13 armhf 3.13.11-1 [758 kB] 171s Get:31 http://ftpmaster.internal/ubuntu resolute/main armhf libboost-python1.88.0 armhf 1.88.0-1.4ubuntu3 [354 kB] 171s Get:32 http://ftpmaster.internal/ubuntu resolute/main armhf libc-dev-bin armhf 2.42-2ubuntu4 [21.8 kB] 171s Get:33 http://ftpmaster.internal/ubuntu resolute/main armhf linux-libc-dev armhf 6.18.0-9.9 [1819 kB] 171s Get:34 http://ftpmaster.internal/ubuntu resolute/main armhf libcrypt-dev armhf 1:4.5.1-1 [128 kB] 171s Get:35 http://ftpmaster.internal/ubuntu resolute/main armhf rpcsvc-proto armhf 1.4.3-1 [62.3 kB] 171s Get:36 http://ftpmaster.internal/ubuntu resolute/main armhf libc6-dev armhf 2.42-2ubuntu4 [1416 kB] 171s Get:37 http://ftpmaster.internal/ubuntu resolute/universe armhf libev4t64 armhf 1:4.33-2.1build2 [27.0 kB] 171s Get:38 http://ftpmaster.internal/ubuntu resolute/main armhf libexpat1-dev armhf 2.7.3-1 [126 kB] 171s Get:39 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.14 armhf 3.14.2-1 [2213 kB] 171s Get:40 http://ftpmaster.internal/ubuntu resolute/main armhf zlib1g-dev armhf 1:1.3.dfsg+really1.3.1-1ubuntu2 [881 kB] 171s Get:41 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.14-dev armhf 3.14.2-1 [4504 kB] 171s Get:42 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libpython3-dev armhf 3.14.2-1 [11.2 kB] 171s Get:43 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.13 armhf 3.13.11-1 [2124 kB] 171s Get:44 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.13-dev armhf 3.13.11-1 [4564 kB] 171s Get:45 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libpython3-all-dev armhf 3.14.2-1 [916 B] 171s Get:46 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf python3-all armhf 3.14.2-1 [888 B] 171s Get:47 http://ftpmaster.internal/ubuntu resolute/main armhf python3.14-dev armhf 3.14.2-1 [512 kB] 171s Get:48 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf python3-dev armhf 3.14.2-1 [26.6 kB] 171s Get:49 http://ftpmaster.internal/ubuntu resolute/main armhf python3.13-dev armhf 3.13.11-1 [508 kB] 171s Get:50 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf python3-all-dev armhf 3.14.2-1 [912 B] 171s Get:51 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-iniconfig all 2.1.0-2 [6962 B] 171s Get:52 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pluggy all 1.6.0-2 [21.1 kB] 171s Get:53 http://ftpmaster.internal/ubuntu resolute/main armhf python3-psutil armhf 7.1.0-1ubuntu1 [189 kB] 171s Get:54 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-py all 1.11.0-6 [72.9 kB] 171s Get:55 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pytest all 9.0.2-2 [277 kB] 171s Get:56 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pytest-asyncio all 1.3.0-1 [13.8 kB] 171s Get:57 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pytest-forked all 1.6.0-5 [7758 B] 171s Get:58 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pytest-rerunfailures all 16.1-1 [14.9 kB] 171s Get:59 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-zope.event all 6.0-2 [7710 B] 171s Get:60 http://ftpmaster.internal/ubuntu resolute/main armhf python3-zope.interface armhf 8.2-1 [144 kB] 171s Get:61 http://ftpmaster.internal/ubuntu resolute/main armhf python3-greenlet armhf 3.2.4-3 [184 kB] 171s Get:62 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-gevent armhf 24.11.1-1build2 [1150 kB] 171s Get:63 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-tango armhf 10.0.2-3 [2926 kB] 171s Get:64 http://ftpmaster.internal/ubuntu resolute/universe armhf tango-test armhf 10.0.2+dfsg1-4 [94.1 kB] 172s Preconfiguring packages ... 172s Fetched 49.3 MB in 2s (22.7 MB/s) 172s Selecting previously unselected package libpython3.13-minimal:armhf. 172s (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 ... 66515 files and directories currently installed.) 172s Preparing to unpack .../00-libpython3.13-minimal_3.13.11-1_armhf.deb ... 172s Unpacking libpython3.13-minimal:armhf (3.13.11-1) ... 172s Selecting previously unselected package python3.13-minimal. 172s Preparing to unpack .../01-python3.13-minimal_3.13.11-1_armhf.deb ... 172s Unpacking python3.13-minimal (3.13.11-1) ... 173s Selecting previously unselected package python3-numpy-dev:armhf. 173s Preparing to unpack .../02-python3-numpy-dev_1%3a2.3.5+ds-3_armhf.deb ... 173s Unpacking python3-numpy-dev:armhf (1:2.3.5+ds-3) ... 173s Selecting previously unselected package libblas3:armhf. 173s Preparing to unpack .../03-libblas3_3.12.1-7ubuntu1_armhf.deb ... 173s Unpacking libblas3:armhf (3.12.1-7ubuntu1) ... 173s Selecting previously unselected package libgfortran5:armhf. 173s Preparing to unpack .../04-libgfortran5_15.2.0-12ubuntu1_armhf.deb ... 173s Unpacking libgfortran5:armhf (15.2.0-12ubuntu1) ... 173s Selecting previously unselected package liblapack3:armhf. 173s Preparing to unpack .../05-liblapack3_3.12.1-7ubuntu1_armhf.deb ... 173s Unpacking liblapack3:armhf (3.12.1-7ubuntu1) ... 173s Selecting previously unselected package python3-numpy. 173s Preparing to unpack .../06-python3-numpy_1%3a2.3.5+ds-3_armhf.deb ... 173s Unpacking python3-numpy (1:2.3.5+ds-3) ... 173s Selecting previously unselected package libomnithread4:armhf. 173s Preparing to unpack .../07-libomnithread4_4.3.3+ds1-1build1_armhf.deb ... 173s Unpacking libomnithread4:armhf (4.3.3+ds1-1build1) ... 173s Selecting previously unselected package libomniorb4-3t64:armhf. 173s Preparing to unpack .../08-libomniorb4-3t64_4.3.3+ds1-1build1_armhf.deb ... 173s Unpacking libomniorb4-3t64:armhf (4.3.3+ds1-1build1) ... 173s Selecting previously unselected package libabsl20240722:armhf. 173s Preparing to unpack .../09-libabsl20240722_20240722.0-4ubuntu1_armhf.deb ... 173s Unpacking libabsl20240722:armhf (20240722.0-4ubuntu1) ... 173s Selecting previously unselected package libcares2:armhf. 174s Preparing to unpack .../10-libcares2_1.34.6-1_armhf.deb ... 174s Unpacking libcares2:armhf (1.34.6-1) ... 174s Selecting previously unselected package libprotobuf32t64:armhf. 174s Preparing to unpack .../11-libprotobuf32t64_3.21.12-15_armhf.deb ... 174s Unpacking libprotobuf32t64:armhf (3.21.12-15) ... 174s Selecting previously unselected package libprotoc32t64:armhf. 174s Preparing to unpack .../12-libprotoc32t64_3.21.12-15_armhf.deb ... 174s Unpacking libprotoc32t64:armhf (3.21.12-15) ... 174s Selecting previously unselected package libre2-11:armhf. 174s Preparing to unpack .../13-libre2-11_20250805-1build1_armhf.deb ... 174s Unpacking libre2-11:armhf (20250805-1build1) ... 174s Selecting previously unselected package libgrpc29t64:armhf. 174s Preparing to unpack .../14-libgrpc29t64_1.51.1-7_armhf.deb ... 174s Unpacking libgrpc29t64:armhf (1.51.1-7) ... 174s Selecting previously unselected package libgrpc++1.51t64:armhf. 174s Preparing to unpack .../15-libgrpc++1.51t64_1.51.1-7_armhf.deb ... 174s Unpacking libgrpc++1.51t64:armhf (1.51.1-7) ... 174s Selecting previously unselected package opentelemetry-cpp:armhf. 174s Preparing to unpack .../16-opentelemetry-cpp_1.23.0-3_armhf.deb ... 174s Unpacking opentelemetry-cpp:armhf (1.23.0-3) ... 174s Selecting previously unselected package tango-common. 174s Preparing to unpack .../17-tango-common_10.0.2+dfsg1-4_all.deb ... 174s Unpacking tango-common (10.0.2+dfsg1-4) ... 174s Selecting previously unselected package libcos4-3:armhf. 174s Preparing to unpack .../18-libcos4-3_4.3.3+ds1-1build1_armhf.deb ... 174s Unpacking libcos4-3:armhf (4.3.3+ds1-1build1) ... 174s Selecting previously unselected package libjpeg-turbo8:armhf. 174s Preparing to unpack .../19-libjpeg-turbo8_2.1.5-4ubuntu2_armhf.deb ... 174s Unpacking libjpeg-turbo8:armhf (2.1.5-4ubuntu2) ... 174s Selecting previously unselected package libjpeg8:armhf. 174s Preparing to unpack .../20-libjpeg8_8c-2ubuntu11_armhf.deb ... 174s Unpacking libjpeg8:armhf (8c-2ubuntu11) ... 174s Selecting previously unselected package libnorm1t64:armhf. 174s Preparing to unpack .../21-libnorm1t64_1.5.9+dfsg-4_armhf.deb ... 174s Unpacking libnorm1t64:armhf (1.5.9+dfsg-4) ... 174s Selecting previously unselected package libpgm-5.3-0t64:armhf. 174s Preparing to unpack .../22-libpgm-5.3-0t64_5.3.128~dfsg-2.1build2_armhf.deb ... 174s Unpacking libpgm-5.3-0t64:armhf (5.3.128~dfsg-2.1build2) ... 174s Selecting previously unselected package libsodium23:armhf. 174s Preparing to unpack .../23-libsodium23_1.0.18-2_armhf.deb ... 174s Unpacking libsodium23:armhf (1.0.18-2) ... 174s Selecting previously unselected package libzmq5:armhf. 174s Preparing to unpack .../24-libzmq5_4.3.5-1build3_armhf.deb ... 174s Unpacking libzmq5:armhf (4.3.5-1build3) ... 175s Selecting previously unselected package libtango10:armhf. 175s Preparing to unpack .../25-libtango10_10.0.2+dfsg1-4_armhf.deb ... 175s Unpacking libtango10:armhf (10.0.2+dfsg1-4) ... 175s Selecting previously unselected package libtango-tools. 175s Preparing to unpack .../26-libtango-tools_10.0.2+dfsg1-4_armhf.deb ... 175s Unpacking libtango-tools (10.0.2+dfsg1-4) ... 175s Selecting previously unselected package tango-starter. 175s Preparing to unpack .../27-tango-starter_10.0.2+dfsg1-4_armhf.deb ... 175s Unpacking tango-starter (10.0.2+dfsg1-4) ... 175s Selecting previously unselected package libpython3.13-stdlib:armhf. 175s Preparing to unpack .../28-libpython3.13-stdlib_3.13.11-1_armhf.deb ... 175s Unpacking libpython3.13-stdlib:armhf (3.13.11-1) ... 175s Selecting previously unselected package python3.13. 175s Preparing to unpack .../29-python3.13_3.13.11-1_armhf.deb ... 175s Unpacking python3.13 (3.13.11-1) ... 175s Selecting previously unselected package libboost-python1.88.0. 175s Preparing to unpack .../30-libboost-python1.88.0_1.88.0-1.4ubuntu3_armhf.deb ... 175s Unpacking libboost-python1.88.0 (1.88.0-1.4ubuntu3) ... 175s Selecting previously unselected package libc-dev-bin. 175s Preparing to unpack .../31-libc-dev-bin_2.42-2ubuntu4_armhf.deb ... 175s Unpacking libc-dev-bin (2.42-2ubuntu4) ... 175s Selecting previously unselected package linux-libc-dev:armhf. 175s Preparing to unpack .../32-linux-libc-dev_6.18.0-9.9_armhf.deb ... 175s Unpacking linux-libc-dev:armhf (6.18.0-9.9) ... 175s Selecting previously unselected package libcrypt-dev:armhf. 175s Preparing to unpack .../33-libcrypt-dev_1%3a4.5.1-1_armhf.deb ... 175s Unpacking libcrypt-dev:armhf (1:4.5.1-1) ... 175s Selecting previously unselected package rpcsvc-proto. 175s Preparing to unpack .../34-rpcsvc-proto_1.4.3-1_armhf.deb ... 175s Unpacking rpcsvc-proto (1.4.3-1) ... 175s Selecting previously unselected package libc6-dev:armhf. 175s Preparing to unpack .../35-libc6-dev_2.42-2ubuntu4_armhf.deb ... 175s Unpacking libc6-dev:armhf (2.42-2ubuntu4) ... 176s Selecting previously unselected package libev4t64:armhf. 176s Preparing to unpack .../36-libev4t64_1%3a4.33-2.1build2_armhf.deb ... 176s Unpacking libev4t64:armhf (1:4.33-2.1build2) ... 176s Selecting previously unselected package libexpat1-dev:armhf. 176s Preparing to unpack .../37-libexpat1-dev_2.7.3-1_armhf.deb ... 176s Unpacking libexpat1-dev:armhf (2.7.3-1) ... 176s Selecting previously unselected package libpython3.14:armhf. 176s Preparing to unpack .../38-libpython3.14_3.14.2-1_armhf.deb ... 176s Unpacking libpython3.14:armhf (3.14.2-1) ... 176s Selecting previously unselected package zlib1g-dev:armhf. 176s Preparing to unpack .../39-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1ubuntu2_armhf.deb ... 176s Unpacking zlib1g-dev:armhf (1:1.3.dfsg+really1.3.1-1ubuntu2) ... 176s Selecting previously unselected package libpython3.14-dev:armhf. 176s Preparing to unpack .../40-libpython3.14-dev_3.14.2-1_armhf.deb ... 176s Unpacking libpython3.14-dev:armhf (3.14.2-1) ... 176s Selecting previously unselected package libpython3-dev:armhf. 176s Preparing to unpack .../41-libpython3-dev_3.14.2-1_armhf.deb ... 176s Unpacking libpython3-dev:armhf (3.14.2-1) ... 176s Selecting previously unselected package libpython3.13:armhf. 176s Preparing to unpack .../42-libpython3.13_3.13.11-1_armhf.deb ... 176s Unpacking libpython3.13:armhf (3.13.11-1) ... 176s Selecting previously unselected package libpython3.13-dev:armhf. 176s Preparing to unpack .../43-libpython3.13-dev_3.13.11-1_armhf.deb ... 176s Unpacking libpython3.13-dev:armhf (3.13.11-1) ... 176s Selecting previously unselected package libpython3-all-dev:armhf. 176s Preparing to unpack .../44-libpython3-all-dev_3.14.2-1_armhf.deb ... 176s Unpacking libpython3-all-dev:armhf (3.14.2-1) ... 176s Selecting previously unselected package python3-all. 177s Preparing to unpack .../45-python3-all_3.14.2-1_armhf.deb ... 177s Unpacking python3-all (3.14.2-1) ... 177s Selecting previously unselected package python3.14-dev. 177s Preparing to unpack .../46-python3.14-dev_3.14.2-1_armhf.deb ... 177s Unpacking python3.14-dev (3.14.2-1) ... 177s Selecting previously unselected package python3-dev. 177s Preparing to unpack .../47-python3-dev_3.14.2-1_armhf.deb ... 177s Unpacking python3-dev (3.14.2-1) ... 177s Selecting previously unselected package python3.13-dev. 177s Preparing to unpack .../48-python3.13-dev_3.13.11-1_armhf.deb ... 177s Unpacking python3.13-dev (3.13.11-1) ... 177s Selecting previously unselected package python3-all-dev. 177s Preparing to unpack .../49-python3-all-dev_3.14.2-1_armhf.deb ... 177s Unpacking python3-all-dev (3.14.2-1) ... 177s Selecting previously unselected package python3-iniconfig. 177s Preparing to unpack .../50-python3-iniconfig_2.1.0-2_all.deb ... 177s Unpacking python3-iniconfig (2.1.0-2) ... 177s Selecting previously unselected package python3-pluggy. 177s Preparing to unpack .../51-python3-pluggy_1.6.0-2_all.deb ... 177s Unpacking python3-pluggy (1.6.0-2) ... 177s Selecting previously unselected package python3-psutil. 177s Preparing to unpack .../52-python3-psutil_7.1.0-1ubuntu1_armhf.deb ... 177s Unpacking python3-psutil (7.1.0-1ubuntu1) ... 177s Selecting previously unselected package python3-py. 177s Preparing to unpack .../53-python3-py_1.11.0-6_all.deb ... 177s Unpacking python3-py (1.11.0-6) ... 177s Selecting previously unselected package python3-pytest. 177s Preparing to unpack .../54-python3-pytest_9.0.2-2_all.deb ... 177s Unpacking python3-pytest (9.0.2-2) ... 177s Selecting previously unselected package python3-pytest-asyncio. 177s Preparing to unpack .../55-python3-pytest-asyncio_1.3.0-1_all.deb ... 177s Unpacking python3-pytest-asyncio (1.3.0-1) ... 177s Selecting previously unselected package python3-pytest-forked. 177s Preparing to unpack .../56-python3-pytest-forked_1.6.0-5_all.deb ... 177s Unpacking python3-pytest-forked (1.6.0-5) ... 177s Selecting previously unselected package python3-pytest-rerunfailures. 177s Preparing to unpack .../57-python3-pytest-rerunfailures_16.1-1_all.deb ... 177s Unpacking python3-pytest-rerunfailures (16.1-1) ... 177s Selecting previously unselected package python3-zope.event. 177s Preparing to unpack .../58-python3-zope.event_6.0-2_all.deb ... 177s Unpacking python3-zope.event (6.0-2) ... 177s Selecting previously unselected package python3-zope.interface. 177s Preparing to unpack .../59-python3-zope.interface_8.2-1_armhf.deb ... 177s Unpacking python3-zope.interface (8.2-1) ... 177s Selecting previously unselected package python3-greenlet. 177s Preparing to unpack .../60-python3-greenlet_3.2.4-3_armhf.deb ... 177s Unpacking python3-greenlet (3.2.4-3) ... 177s Selecting previously unselected package python3-gevent. 177s Preparing to unpack .../61-python3-gevent_24.11.1-1build2_armhf.deb ... 177s Unpacking python3-gevent (24.11.1-1build2) ... 177s Selecting previously unselected package python3-tango. 177s Preparing to unpack .../62-python3-tango_10.0.2-3_armhf.deb ... 177s Unpacking python3-tango (10.0.2-3) ... 178s Selecting previously unselected package tango-test. 178s Preparing to unpack .../63-tango-test_10.0.2+dfsg1-4_armhf.deb ... 178s Unpacking tango-test (10.0.2+dfsg1-4) ... 178s Setting up python3-iniconfig (2.1.0-2) ... 178s Setting up libev4t64:armhf (1:4.33-2.1build2) ... 178s Setting up libnorm1t64:armhf (1.5.9+dfsg-4) ... 178s Setting up libprotobuf32t64:armhf (3.21.12-15) ... 178s Setting up libboost-python1.88.0 (1.88.0-1.4ubuntu3) ... 178s Setting up libsodium23:armhf (1.0.18-2) ... 178s Setting up python3-py (1.11.0-6) ... 179s Setting up python3-zope.event (6.0-2) ... 179s Setting up python3-zope.interface (8.2-1) ... 179s Setting up linux-libc-dev:armhf (6.18.0-9.9) ... 179s Setting up libabsl20240722:armhf (20240722.0-4ubuntu1) ... 179s Setting up python3-psutil (7.1.0-1ubuntu1) ... 180s Setting up libpython3.13-minimal:armhf (3.13.11-1) ... 180s Setting up libpgm-5.3-0t64:armhf (5.3.128~dfsg-2.1build2) ... 180s Setting up libblas3:armhf (3.12.1-7ubuntu1) ... 180s update-alternatives: using /usr/lib/arm-linux-gnueabihf/blas/libblas.so.3 to provide /usr/lib/arm-linux-gnueabihf/libblas.so.3 (libblas.so.3-arm-linux-gnueabihf) in auto mode 180s Setting up rpcsvc-proto (1.4.3-1) ... 180s Setting up python3-greenlet (3.2.4-3) ... 181s Setting up libcares2:armhf (1.34.6-1) ... 181s Setting up python3-numpy-dev:armhf (1:2.3.5+ds-3) ... 181s Setting up libjpeg-turbo8:armhf (2.1.5-4ubuntu2) ... 181s Setting up libomnithread4:armhf (4.3.3+ds1-1build1) ... 181s Setting up libgfortran5:armhf (15.2.0-12ubuntu1) ... 181s Setting up python3-pluggy (1.6.0-2) ... 181s Setting up libcrypt-dev:armhf (1:4.5.1-1) ... 181s Setting up libpython3.14:armhf (3.14.2-1) ... 181s Setting up python3.13-minimal (3.13.11-1) ... 182s Setting up libprotoc32t64:armhf (3.21.12-15) ... 182s Setting up libc-dev-bin (2.42-2ubuntu4) ... 182s Setting up libpython3.13-stdlib:armhf (3.13.11-1) ... 182s Setting up libpython3.13:armhf (3.13.11-1) ... 182s Setting up libjpeg8:armhf (8c-2ubuntu11) ... 182s Setting up libre2-11:armhf (20250805-1build1) ... 182s Setting up liblapack3:armhf (3.12.1-7ubuntu1) ... 182s update-alternatives: using /usr/lib/arm-linux-gnueabihf/lapack/liblapack.so.3 to provide /usr/lib/arm-linux-gnueabihf/liblapack.so.3 (liblapack.so.3-arm-linux-gnueabihf) in auto mode 182s Setting up libzmq5:armhf (4.3.5-1build3) ... 182s Setting up libomniorb4-3t64:armhf (4.3.3+ds1-1build1) ... 182s Setting up python3.13 (3.13.11-1) ... 183s Setting up python3-pytest (9.0.2-2) ... 184s Setting up python3-all (3.14.2-1) ... 184s Setting up python3-gevent (24.11.1-1build2) ... 185s /usr/lib/python3/dist-packages/gevent/_ffi/loop.py:226: SyntaxWarning: 'return' in a 'finally' block 185s return # pylint:disable=lost-exception,return-in-finally 185s Setting up python3-pytest-forked (1.6.0-5) ... 186s Setting up libgrpc29t64:armhf (1.51.1-7) ... 186s Setting up python3-numpy (1:2.3.5+ds-3) ... 191s Setting up python3-pytest-asyncio (1.3.0-1) ... 191s Setting up libc6-dev:armhf (2.42-2ubuntu4) ... 191s Setting up libcos4-3:armhf (4.3.3+ds1-1build1) ... 191s Setting up python3-pytest-rerunfailures (16.1-1) ... 191s Setting up libgrpc++1.51t64:armhf (1.51.1-7) ... 191s Setting up libexpat1-dev:armhf (2.7.3-1) ... 191s Setting up opentelemetry-cpp:armhf (1.23.0-3) ... 191s Setting up zlib1g-dev:armhf (1:1.3.dfsg+really1.3.1-1ubuntu2) ... 191s Setting up libpython3.14-dev:armhf (3.14.2-1) ... 191s Setting up tango-common (10.0.2+dfsg1-4) ... 191s Adding group tango....done 191s Adding system user tango....done 191s Setting up libpython3-dev:armhf (3.14.2-1) ... 191s Setting up libtango10:armhf (10.0.2+dfsg1-4) ... 191s Setting up python3.14-dev (3.14.2-1) ... 191s Setting up libtango-tools (10.0.2+dfsg1-4) ... 191s Setting up python3-tango (10.0.2-3) ... 192s Setting up libpython3.13-dev:armhf (3.13.11-1) ... 192s Setting up python3-dev (3.14.2-1) ... 192s Setting up tango-starter (10.0.2+dfsg1-4) ... 193s Created symlink '/etc/systemd/system/multi-user.target.wants/tango-starter.service' → '/usr/lib/systemd/system/tango-starter.service'. 193s Failed to start tango-starter.service: Unit tango-db.service not found. 193s Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 148. 193s Setting up tango-test (10.0.2+dfsg1-4) ... 193s Setting up python3.13-dev (3.13.11-1) ... 193s Setting up libpython3-all-dev:armhf (3.14.2-1) ... 193s Setting up python3-all-dev (3.14.2-1) ... 193s Processing triggers for systemd (259-1ubuntu3) ... 193s Processing triggers for man-db (2.13.1-1) ... 194s Processing triggers for libc-bin (2.42-2ubuntu4) ... 202s autopkgtest [05:09:33]: 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 202s autopkgtest [05:09:33]: test command1: [----------------------- 204s Testing with python3.13: 205s ============================= test session starts ============================== 205s platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0 -- /usr/bin/python3.13 205s cachedir: .pytest_cache 205s rootdir: /tmp/autopkgtest.NUz5QV/autopkgtest_tmp 205s plugins: typeguard-4.4.4, asyncio-1.3.0, forked-1.6.0, rerunfailures-16.1 205s asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function 206s collecting ... collected 1170 items 206s 206s tests/test_api_util.py::test_get_env_var PASSED [ 0%] 207s tests/test_async.py::test_green_mode_kwarg_for_proxy_methods PASSED [ 0%] 207s tests/test_async.py::test_async_attribute_polled PASSED [ 0%] 207s tests/test_async.py::test_async_attribute_with_callback[poll] SKIPPED [ 0%] 207s tests/test_async.py::test_async_attribute_with_callback[push] SKIPPED [ 0%] 208s tests/test_async.py::test_async_command_polled PASSED [ 0%] 208s tests/test_async.py::test_async_command_with_polled_callback[cmd_ok-123-123-False] PASSED [ 0%] 208s tests/test_async.py::test_async_command_with_polled_callback[cmd_timeout-123-None-True] PASSED [ 0%] 208s tests/test_async.py::test_async_command_with_polled_callback[cmd_exception-123-None-True] PASSED [ 0%] 209s tests/test_async.py::test_async_attribute_read_with_polled_callback[attr_ok-argout0-False] PASSED [ 0%] 209s tests/test_async.py::test_async_attribute_read_with_polled_callback[attr_timeout-None-True] PASSED [ 0%] 209s tests/test_async.py::test_async_attribute_read_with_polled_callback[attr_exception-argout2-False] PASSED [ 1%] 210s tests/test_async.py::test_async_attribute_write_with_polled_callback[attr_ok-False] PASSED [ 1%] 210s tests/test_async.py::test_async_attribute_write_with_polled_callback[attr_timeout-True] PASSED [ 1%] 210s tests/test_async.py::test_async_attribute_write_with_polled_callback[attr_exception-False] PASSED [ 1%] 210s tests/test_async.py::test_async_command_with_pushed_callback[cmd_ok-123-123-False] PASSED [ 1%] 211s tests/test_async.py::test_async_command_with_pushed_callback[cmd_timeout-123-None-True] PASSED [ 1%] 211s tests/test_async.py::test_async_command_with_pushed_callback[cmd_exception-123-None-True] PASSED [ 1%] 211s tests/test_async.py::test_async_attribute_read_with_pushed_callback[attr_ok-argout0-False] PASSED [ 1%] 212s tests/test_async.py::test_async_attribute_read_with_pushed_callback[attr_timeout-None-True] PASSED [ 1%] 212s tests/test_async.py::test_async_attribute_read_with_pushed_callback[attr_exception-argout2-False] PASSED [ 1%] 212s tests/test_async.py::test_async_attribute_write_with_pushed_callback[attr_ok-False] PASSED [ 1%] 213s tests/test_async.py::test_async_attribute_write_with_pushed_callback[attr_timeout-True] PASSED [ 1%] 213s tests/test_async.py::test_async_attribute_write_with_pushed_callback[attr_exception-False] PASSED [ 2%] 213s tests/test_async.py::test_async_exception_in_callback PASSED [ 2%] 214s tests/test_attrconfeventdata.py::test_attribute_configuration_event PASSED [ 2%] 214s tests/test_attrconfeventdata.py::test_attribute_configuration_event_set_errors PASSED [ 2%] 214s tests/test_attribute_proxy.py::test_ping[scalar_int] PASSED [ 2%] 214s tests/test_attribute_proxy.py::test_ping[spectrum_str] PASSED [ 2%] 215s tests/test_attribute_proxy.py::test_ping[image_float] PASSED [ 2%] 215s tests/test_attribute_proxy.py::test_state_status[scalar_int] PASSED [ 2%] 215s tests/test_attribute_proxy.py::test_state_status[spectrum_str] PASSED [ 2%] 215s tests/test_attribute_proxy.py::test_state_status[image_float] PASSED [ 2%] 215s tests/test_attribute_proxy.py::test_read_write_attribute[scalar_int] PASSED [ 2%] 215s tests/test_attribute_proxy.py::test_read_write_attribute[spectrum_str] PASSED [ 2%] 215s tests/test_attribute_proxy.py::test_read_write_attribute[image_float] PASSED [ 3%] 216s tests/test_attribute_proxy.py::test_attribute_poll[scalar_int] PASSED [ 3%] 216s tests/test_attribute_proxy.py::test_attribute_poll[spectrum_str] PASSED [ 3%] 217s tests/test_attribute_proxy.py::test_attribute_poll[image_float] PASSED [ 3%] 218s tests/test_attribute_proxy.py::test_read_write_attribute_async[scalar_int] PASSED [ 3%] 218s tests/test_attribute_proxy.py::test_read_write_attribute_async[spectrum_str] PASSED [ 3%] 218s tests/test_attribute_proxy.py::test_read_write_attribute_async[image_float] PASSED [ 3%] 218s tests/test_attribute_proxy.py::test_event[Synchronous] SKIPPED (This...) [ 3%] 218s tests/test_attribute_proxy.py::test_event[Futures] SKIPPED (This tes...) [ 3%] 218s tests/test_attribute_proxy.py::test_event[Gevent] SKIPPED (This test...) [ 3%] 218s tests/test_attribute_proxy.py::test_event[Asyncio] SKIPPED (This tes...) [ 3%] 218s tests/test_attributes.py::test_read_write_attribute[int-Synchronous] PASSED [ 4%] 218s tests/test_attributes.py::test_read_write_attribute[int-Asyncio] PASSED [ 4%] 218s tests/test_attributes.py::test_read_write_attribute[int-Gevent] PASSED [ 4%] 219s tests/test_attributes.py::test_read_write_attribute[float-Synchronous] PASSED [ 4%] 219s tests/test_attributes.py::test_read_write_attribute[float-Asyncio] PASSED [ 4%] 219s tests/test_attributes.py::test_read_write_attribute[float-Gevent] PASSED [ 4%] 219s tests/test_attributes.py::test_read_write_attribute[str-Synchronous] PASSED [ 4%] 219s tests/test_attributes.py::test_read_write_attribute[str-Asyncio] PASSED [ 4%] 219s tests/test_attributes.py::test_read_write_attribute[str-Gevent] PASSED [ 4%] 219s tests/test_attributes.py::test_read_write_attribute[bool-Synchronous] PASSED [ 4%] 219s tests/test_attributes.py::test_read_write_attribute[bool-Asyncio] PASSED [ 4%] 219s tests/test_attributes.py::test_read_write_attribute[bool-Gevent] PASSED [ 4%] 219s tests/test_attributes.py::test_read_write_attribute[(int,)-Synchronous] PASSED [ 5%] 219s tests/test_attributes.py::test_read_write_attribute[(int,)-Asyncio] PASSED [ 5%] 220s tests/test_attributes.py::test_read_write_attribute[(int,)-Gevent] PASSED [ 5%] 220s tests/test_attributes.py::test_read_write_attribute[(float,)-Synchronous] PASSED [ 5%] 220s tests/test_attributes.py::test_read_write_attribute[(float,)-Asyncio] PASSED [ 5%] 220s tests/test_attributes.py::test_read_write_attribute[(float,)-Gevent] PASSED [ 5%] 220s tests/test_attributes.py::test_read_write_attribute[(str,)-Synchronous] PASSED [ 5%] 220s tests/test_attributes.py::test_read_write_attribute[(str,)-Asyncio] PASSED [ 5%] 220s tests/test_attributes.py::test_read_write_attribute[(str,)-Gevent] PASSED [ 5%] 220s tests/test_attributes.py::test_read_write_attribute[(bool,)-Synchronous] PASSED [ 5%] 220s tests/test_attributes.py::test_read_write_attribute[(bool,)-Asyncio] PASSED [ 5%] 220s tests/test_attributes.py::test_read_write_attribute[(bool,)-Gevent] PASSED [ 5%] 221s tests/test_attributes.py::test_read_write_attribute[((int,),)-Synchronous] PASSED [ 6%] 221s tests/test_attributes.py::test_read_write_attribute[((int,),)-Asyncio] PASSED [ 6%] 221s tests/test_attributes.py::test_read_write_attribute[((int,),)-Gevent] PASSED [ 6%] 221s tests/test_attributes.py::test_read_write_attribute[((float,),)-Synchronous] PASSED [ 6%] 221s tests/test_attributes.py::test_read_write_attribute[((float,),)-Asyncio] PASSED [ 6%] 221s tests/test_attributes.py::test_read_write_attribute[((float,),)-Gevent] PASSED [ 6%] 221s tests/test_attributes.py::test_read_write_attribute[((str,),)-Synchronous] PASSED [ 6%] 221s tests/test_attributes.py::test_read_write_attribute[((str,),)-Asyncio] PASSED [ 6%] 221s tests/test_attributes.py::test_read_write_attribute[((str,),)-Gevent] PASSED [ 6%] 221s tests/test_attributes.py::test_read_write_attribute[((bool,),)-Synchronous] PASSED [ 6%] 222s tests/test_attributes.py::test_read_write_attribute[((bool,),)-Asyncio] PASSED [ 6%] 222s tests/test_attributes.py::test_read_write_attribute[((bool,),)-Gevent] PASSED [ 7%] 222s tests/test_attributes.py::test_wrong_encoding_string PASSED [ 7%] 222s tests/test_attributes.py::test_attribute_declared_with_typing[int-True] PASSED [ 7%] 222s tests/test_attributes.py::test_attribute_declared_with_typing[int-False] PASSED [ 7%] 222s tests/test_attributes.py::test_attribute_declared_with_typing[float-True] PASSED [ 7%] 222s tests/test_attributes.py::test_attribute_declared_with_typing[float-False] PASSED [ 7%] 222s tests/test_attributes.py::test_attribute_declared_with_typing[str-True] PASSED [ 7%] 222s tests/test_attributes.py::test_attribute_declared_with_typing[str-False] PASSED [ 7%] 222s tests/test_attributes.py::test_attribute_declared_with_typing[bool-True] PASSED [ 7%] 222s tests/test_attributes.py::test_attribute_declared_with_typing[bool-False] PASSED [ 7%] 223s tests/test_attributes.py::test_attribute_declared_with_typing[(int,)-True] PASSED [ 7%] 223s tests/test_attributes.py::test_attribute_declared_with_typing[(int,)-False] PASSED [ 7%] 223s tests/test_attributes.py::test_attribute_declared_with_typing[(float,)-True] PASSED [ 8%] 223s tests/test_attributes.py::test_attribute_declared_with_typing[(float,)-False] PASSED [ 8%] 223s tests/test_attributes.py::test_attribute_declared_with_typing[(str,)-True] PASSED [ 8%] 223s tests/test_attributes.py::test_attribute_declared_with_typing[(str,)-False] PASSED [ 8%] 223s tests/test_attributes.py::test_attribute_declared_with_typing[(bool,)-True] PASSED [ 8%] 223s tests/test_attributes.py::test_attribute_declared_with_typing[(bool,)-False] PASSED [ 8%] 223s tests/test_attributes.py::test_attribute_declared_with_typing[((int,),)-True] PASSED [ 8%] 223s tests/test_attributes.py::test_attribute_declared_with_typing[((int,),)-False] PASSED [ 8%] 223s tests/test_attributes.py::test_attribute_declared_with_typing[((float,),)-True] PASSED [ 8%] 223s tests/test_attributes.py::test_attribute_declared_with_typing[((float,),)-False] PASSED [ 8%] 224s tests/test_attributes.py::test_attribute_declared_with_typing[((str,),)-True] PASSED [ 8%] 224s tests/test_attributes.py::test_attribute_declared_with_typing[((str,),)-False] PASSED [ 8%] 224s tests/test_attributes.py::test_attribute_declared_with_typing[((bool,),)-True] PASSED [ 9%] 224s tests/test_attributes.py::test_attribute_declared_with_typing[((bool,),)-False] PASSED [ 9%] 224s tests/test_attributes.py::test_attribute_self_typed_with_not_defined_name PASSED [ 9%] 224s tests/test_attributes.py::test_read_write_attribute_with_unbound_functions PASSED [ 9%] 224s tests/test_attributes.py::test_read_write_attribute_decorated_methods[Synchronous] PASSED [ 9%] 224s tests/test_attributes.py::test_read_write_attribute_decorated_methods[Asyncio] PASSED [ 9%] 224s tests/test_attributes.py::test_read_write_attribute_decorated_methods[Gevent] PASSED [ 9%] 224s tests/test_attributes.py::test_read_write_wvalue_attribute[int-True] PASSED [ 9%] 224s tests/test_attributes.py::test_read_write_wvalue_attribute[int-False] PASSED [ 9%] 224s tests/test_attributes.py::test_read_write_wvalue_attribute[float-True] PASSED [ 9%] 224s tests/test_attributes.py::test_read_write_wvalue_attribute[float-False] PASSED [ 9%] 225s tests/test_attributes.py::test_read_write_wvalue_attribute[str-True] PASSED [ 10%] 225s tests/test_attributes.py::test_read_write_wvalue_attribute[str-False] PASSED [ 10%] 225s tests/test_attributes.py::test_read_write_wvalue_attribute[bool-True] PASSED [ 10%] 225s tests/test_attributes.py::test_read_write_wvalue_attribute[bool-False] PASSED [ 10%] 225s tests/test_attributes.py::test_read_write_wvalue_attribute[(int,)-True] PASSED [ 10%] 225s tests/test_attributes.py::test_read_write_wvalue_attribute[(int,)-False] PASSED [ 10%] 225s tests/test_attributes.py::test_read_write_wvalue_attribute[(float,)-True] PASSED [ 10%] 225s tests/test_attributes.py::test_read_write_wvalue_attribute[(float,)-False] PASSED [ 10%] 226s tests/test_attributes.py::test_read_write_wvalue_attribute[(str,)-True] PASSED [ 10%] 226s tests/test_attributes.py::test_read_write_wvalue_attribute[(str,)-False] PASSED [ 10%] 226s tests/test_attributes.py::test_read_write_wvalue_attribute[(bool,)-True] PASSED [ 10%] 226s tests/test_attributes.py::test_read_write_wvalue_attribute[(bool,)-False] PASSED [ 10%] 226s tests/test_attributes.py::test_read_write_wvalue_attribute[((int,),)-True] PASSED [ 11%] 226s tests/test_attributes.py::test_read_write_wvalue_attribute[((int,),)-False] PASSED [ 11%] 226s tests/test_attributes.py::test_read_write_wvalue_attribute[((float,),)-True] PASSED [ 11%] 226s tests/test_attributes.py::test_read_write_wvalue_attribute[((float,),)-False] PASSED [ 11%] 226s tests/test_attributes.py::test_read_write_wvalue_attribute[((str,),)-True] PASSED [ 11%] 226s tests/test_attributes.py::test_read_write_wvalue_attribute[((str,),)-False] PASSED [ 11%] 226s tests/test_attributes.py::test_read_write_wvalue_attribute[((bool,),)-True] PASSED [ 11%] 226s tests/test_attributes.py::test_read_write_wvalue_attribute[((bool,),)-False] PASSED [ 11%] 227s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-float] PASSED [ 11%] 227s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-int] PASSED [ 11%] 227s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-str] PASSED [ 11%] 227s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-bool] PASSED [ 11%] 227s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-float] PASSED [ 12%] 227s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-int] PASSED [ 12%] 227s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-str] PASSED [ 12%] 227s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-bool] PASSED [ 12%] 227s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-float] PASSED [ 12%] 227s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-int] PASSED [ 12%] 227s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-str] PASSED [ 12%] 228s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-bool] PASSED [ 12%] 228s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-float] PASSED [ 12%] 228s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-int] PASSED [ 12%] 228s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-str] XFAIL [ 12%] 228s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-bool] PASSED [ 12%] 228s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-float] PASSED [ 13%] 228s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-int] PASSED [ 13%] 228s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-str] XFAIL [ 13%] 228s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-bool] PASSED [ 13%] 228s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-float] PASSED [ 13%] 228s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-int] PASSED [ 13%] 229s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-str] XFAIL [ 13%] 229s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-bool] PASSED [ 13%] 229s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-Device_4Impl] PASSED [ 13%] 229s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-Device_5Impl] PASSED [ 13%] 229s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-Device_6Impl] PASSED [ 13%] 229s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-LatestDeviceImpl] PASSED [ 14%] 229s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-Device_4Impl] PASSED [ 14%] 229s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-Device_5Impl] PASSED [ 14%] 229s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-Device_6Impl] PASSED [ 14%] 229s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-LatestDeviceImpl] PASSED [ 14%] 229s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-Device_4Impl] PASSED [ 14%] 229s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-Device_5Impl] PASSED [ 14%] 229s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-Device_6Impl] PASSED [ 14%] 230s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-LatestDeviceImpl] PASSED [ 14%] 230s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-Device_4Impl] PASSED [ 14%] 230s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-Device_5Impl] PASSED [ 14%] 230s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-Device_6Impl] PASSED [ 14%] 230s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-LatestDeviceImpl] PASSED [ 15%] 230s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-Device_4Impl] PASSED [ 15%] 230s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-Device_5Impl] PASSED [ 15%] 230s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-Device_6Impl] PASSED [ 15%] 230s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-LatestDeviceImpl] PASSED [ 15%] 230s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-Device_4Impl] PASSED [ 15%] 230s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-Device_5Impl] PASSED [ 15%] 230s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-Device_6Impl] PASSED [ 15%] 230s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-LatestDeviceImpl] PASSED [ 15%] 231s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-Device_4Impl] PASSED [ 15%] 231s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-Device_5Impl] PASSED [ 15%] 231s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-Device_6Impl] PASSED [ 15%] 231s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-LatestDeviceImpl] PASSED [ 16%] 231s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-Device_4Impl] PASSED [ 16%] 231s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-Device_5Impl] PASSED [ 16%] 231s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-Device_6Impl] PASSED [ 16%] 231s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-LatestDeviceImpl] PASSED [ 16%] 231s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-Device_4Impl] PASSED [ 16%] 231s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-Device_5Impl] PASSED [ 16%] 231s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-Device_6Impl] PASSED [ 16%] 232s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-LatestDeviceImpl] PASSED [ 16%] 232s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-Device_4Impl] PASSED [ 16%] 232s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-Device_5Impl] PASSED [ 16%] 232s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-Device_6Impl] PASSED [ 17%] 232s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-LatestDeviceImpl] PASSED [ 17%] 232s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-Device_4Impl] PASSED [ 17%] 232s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-Device_5Impl] PASSED [ 17%] 232s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-Device_6Impl] PASSED [ 17%] 232s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-LatestDeviceImpl] PASSED [ 17%] 232s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-Device_4Impl] PASSED [ 17%] 232s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-Device_5Impl] PASSED [ 17%] 232s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-Device_6Impl] PASSED [ 17%] 233s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-LatestDeviceImpl] PASSED [ 17%] 233s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-Device_4Impl] PASSED [ 17%] 233s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-Device_5Impl] PASSED [ 17%] 233s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-Device_6Impl] PASSED [ 18%] 233s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-LatestDeviceImpl] PASSED [ 18%] 233s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-Device_4Impl] PASSED [ 18%] 233s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-Device_5Impl] PASSED [ 18%] 233s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-Device_6Impl] PASSED [ 18%] 233s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-LatestDeviceImpl] PASSED [ 18%] 233s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-Device_4Impl] XFAIL [ 18%] 234s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-Device_5Impl] XFAIL [ 18%] 234s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-Device_6Impl] XFAIL [ 18%] 234s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-LatestDeviceImpl] XFAIL [ 18%] 234s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-Device_4Impl] PASSED [ 18%] 234s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-Device_5Impl] PASSED [ 18%] 234s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-Device_6Impl] PASSED [ 19%] 234s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-LatestDeviceImpl] PASSED [ 19%] 234s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-Device_4Impl] PASSED [ 19%] 234s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-Device_5Impl] PASSED [ 19%] 234s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-Device_6Impl] PASSED [ 19%] 234s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-LatestDeviceImpl] PASSED [ 19%] 234s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-Device_4Impl] PASSED [ 19%] 234s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-Device_5Impl] PASSED [ 19%] 235s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-Device_6Impl] PASSED [ 19%] 235s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-LatestDeviceImpl] PASSED [ 19%] 235s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-Device_4Impl] XFAIL [ 19%] 235s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-Device_5Impl] XFAIL [ 20%] 235s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-Device_6Impl] XFAIL [ 20%] 235s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-LatestDeviceImpl] XFAIL [ 20%] 235s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-Device_4Impl] PASSED [ 20%] 235s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-Device_5Impl] PASSED [ 20%] 235s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-Device_6Impl] PASSED [ 20%] 235s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-LatestDeviceImpl] PASSED [ 20%] 235s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-Device_4Impl] PASSED [ 20%] 236s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-Device_5Impl] PASSED [ 20%] 236s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-Device_6Impl] PASSED [ 20%] 236s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-LatestDeviceImpl] PASSED [ 20%] 236s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-Device_4Impl] PASSED [ 20%] 236s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-Device_5Impl] PASSED [ 21%] 236s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-Device_6Impl] PASSED [ 21%] 236s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-LatestDeviceImpl] PASSED [ 21%] 236s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-Device_4Impl] XFAIL [ 21%] 236s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-Device_5Impl] XFAIL [ 21%] 236s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-Device_6Impl] XFAIL [ 21%] 236s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-LatestDeviceImpl] XFAIL [ 21%] 237s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-Device_4Impl] PASSED [ 21%] 237s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-Device_5Impl] PASSED [ 21%] 237s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-Device_6Impl] PASSED [ 21%] 237s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-LatestDeviceImpl] PASSED [ 21%] 237s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SCALAR-state] PASSED [ 21%] 237s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SCALAR-DevState0] PASSED [ 22%] 237s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SCALAR-DevState1] PASSED [ 22%] 237s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SPECTRUM-state] PASSED [ 22%] 237s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SPECTRUM-DevState0] PASSED [ 22%] 237s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SPECTRUM-DevState1] PASSED [ 22%] 237s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[IMAGE-state] PASSED [ 22%] 237s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[IMAGE-DevState0] PASSED [ 22%] 237s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[IMAGE-DevState1] PASSED [ 22%] 238s tests/test_attributes.py::test_read_write_attribute_enum[SCALAR] PASSED [ 22%] 238s tests/test_attributes.py::test_read_write_attribute_enum[SPECTRUM] PASSED [ 22%] 238s tests/test_attributes.py::test_read_write_attribute_enum[IMAGE] PASSED [ 22%] 238s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SCALAR-DevState] PASSED [ 22%] 238s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SCALAR-GoodEnum] PASSED [ 23%] 238s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SPECTRUM-DevState] PASSED [ 23%] 238s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SPECTRUM-GoodEnum] PASSED [ 23%] 238s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[IMAGE-DevState] PASSED [ 23%] 238s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[IMAGE-GoodEnum] PASSED [ 23%] 238s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[int] PASSED [ 23%] 238s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[float] PASSED [ 23%] 238s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[str] PASSED [ 23%] 238s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[bool] PASSED [ 23%] 238s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(int,)] PASSED [ 23%] 239s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(float,)] PASSED [ 23%] 239s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(str,)] PASSED [ 24%] 239s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(bool,)] PASSED [ 24%] 239s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((int,),)] PASSED [ 24%] 239s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((float,),)] PASSED [ 24%] 239s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((str,),)] PASSED [ 24%] 239s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((bool,),)] PASSED [ 24%] 239s tests/test_attributes.py::test_read_enum_attribute_with_invalid_quality_is_none PASSED [ 24%] 239s tests/test_attributes.py::test_wrong_attribute_read PASSED [ 24%] 239s tests/test_attributes.py::test_attribute_access_with_default_method_names PASSED [ 24%] 239s tests/test_attributes.py::test_read_write_dynamic_attribute[low_level_read-Synchronous] PASSED [ 24%] 239s tests/test_attributes.py::test_read_write_dynamic_attribute[low_level_read-Asyncio] PASSED [ 24%] 239s tests/test_attributes.py::test_read_write_dynamic_attribute[low_level_read-Gevent] PASSED [ 24%] 240s tests/test_attributes.py::test_read_write_dynamic_attribute[high_level_read-Synchronous] PASSED [ 25%] 240s tests/test_attributes.py::test_read_write_dynamic_attribute[high_level_read-Asyncio] PASSED [ 25%] 240s tests/test_attributes.py::test_read_write_dynamic_attribute[high_level_read-Gevent] PASSED [ 25%] 240s tests/test_attributes.py::test_async_add_remove_dynamic_attribute PASSED [ 25%] 240s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[int] PASSED [ 25%] 240s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[float] PASSED [ 25%] 240s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[str] PASSED [ 25%] 240s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[bool] PASSED [ 25%] 240s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(int,)] PASSED [ 25%] 240s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(float,)] PASSED [ 25%] 241s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(str,)] PASSED [ 25%] 241s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(bool,)] PASSED [ 25%] 241s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((int,),)] PASSED [ 26%] 241s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((float,),)] PASSED [ 26%] 241s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((str,),)] PASSED [ 26%] 241s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((bool,),)] PASSED [ 26%] 241s tests/test_attributes.py::test_dynamic_attribute_self_typed_with_not_defined_name PASSED [ 26%] 241s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[bool, SCALAR] PASSED [ 26%] 241s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[bool], SPECTRUM] PASSED [ 26%] 241s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint8, SCALAR] PASSED [ 26%] 241s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint8], SPECTRUM] PASSED [ 26%] 241s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[int16, SCALAR] PASSED [ 26%] 242s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[int16], SPECTRUM] PASSED [ 26%] 242s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint16, SCALAR] PASSED [ 27%] 242s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint16], SPECTRUM] PASSED [ 27%] 242s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[int32, SCALAR] PASSED [ 27%] 242s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[int32], SPECTRUM] PASSED [ 27%] 242s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint32, SCALAR] PASSED [ 27%] 242s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint32], SPECTRUM] PASSED [ 27%] 242s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[int64, SCALAR] PASSED [ 27%] 242s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[int64], SPECTRUM] PASSED [ 27%] 242s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint64, SCALAR] PASSED [ 27%] 242s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint64], SPECTRUM] PASSED [ 27%] 242s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[float64, SCALAR] PASSED [ 27%] 243s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[float64], SPECTRUM] PASSED [ 27%] 243s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[float32, SCALAR] PASSED [ 28%] 243s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[float32], SPECTRUM] PASSED [ 28%] 243s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[bool], IMAGE] PASSED [ 28%] 243s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint8], IMAGE] PASSED [ 28%] 243s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[int16], IMAGE] PASSED [ 28%] 243s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint16], IMAGE] PASSED [ 28%] 243s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[int32], IMAGE] PASSED [ 28%] 243s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint32], IMAGE] PASSED [ 28%] 243s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[int64], IMAGE] PASSED [ 28%] 243s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint64], IMAGE] PASSED [ 28%] 243s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[float64], IMAGE] PASSED [ 28%] 243s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[float32], IMAGE] PASSED [ 28%] 243s tests/test_attributes.py::test_attribute_wrong_declared_with_numpy_typing[RuntimeError: AttrDataFormat has to be specified] PASSED [ 29%] 244s tests/test_attributes.py::test_attribute_wrong_declared_with_numpy_typing[DevFailed: Maximum y dim. wrongly defined] PASSED [ 29%] 244s tests/test_attributes.py::test_attribute_wrong_declared_with_numpy_typing[TypeError: No registered converter] PASSED [ 29%] 244s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_default_names[Synchronous] PASSED [ 29%] 244s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_default_names[Asyncio] PASSED [ 29%] 244s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_default_names[Gevent] PASSED [ 29%] 244s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_user_names[Synchronous] PASSED [ 29%] 244s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_user_names[Asyncio] PASSED [ 29%] 244s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_user_names[Gevent] PASSED [ 29%] 244s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_shared_user_functions PASSED [ 29%] 244s tests/test_attributes.py::test_read_write_dynamic_attribute_enum[SCALAR] PASSED [ 29%] 244s tests/test_attributes.py::test_read_write_dynamic_attribute_enum[SPECTRUM] PASSED [ 30%] 244s tests/test_attributes.py::test_read_write_dynamic_attribute_enum[IMAGE] PASSED [ 30%] 245s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SCALAR-DevState] PASSED [ 30%] 245s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SCALAR-GoodEnum] PASSED [ 30%] 245s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SPECTRUM-DevState] PASSED [ 30%] 245s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SPECTRUM-GoodEnum] PASSED [ 30%] 245s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[IMAGE-DevState] PASSED [ 30%] 245s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[IMAGE-GoodEnum] PASSED [ 30%] 245s tests/test_attributes.py::test_read_write_dynamic_attribute_is_allowed_with_async[Synchronous] PASSED [ 30%] 245s tests/test_attributes.py::test_read_write_dynamic_attribute_is_allowed_with_async[Asyncio] PASSED [ 30%] 245s tests/test_attributes.py::test_read_write_dynamic_attribute_is_allowed_with_async[Gevent] PASSED [ 30%] 245s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Synchronous-True] PASSED [ 30%] 245s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Synchronous-False] PASSED [ 31%] 245s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Asyncio-True] PASSED [ 31%] 246s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Asyncio-False] PASSED [ 31%] 246s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Gevent-True] PASSED [ 31%] 246s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Gevent-False] PASSED [ 31%] 246s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[Device_4Impl] PASSED [ 31%] 246s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[Device_5Impl] PASSED [ 31%] 246s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[Device_6Impl] PASSED [ 31%] 246s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[LatestDeviceImpl] PASSED [ 31%] 246s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[True-low_level] PASSED [ 31%] 246s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[True-high_level] PASSED [ 31%] 246s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[False-low_level] PASSED [ 31%] 246s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[False-high_level] PASSED [ 32%] 247s tests/test_attributes.py::test_attribute_decorators[Synchronous] PASSED [ 32%] 247s tests/test_attributes.py::test_attribute_decorators[Asyncio] PASSED [ 32%] 247s tests/test_attributes.py::test_attribute_decorators[Gevent] PASSED [ 32%] 247s tests/test_attributes.py::test_attribute_info_description PASSED [ 32%] 247s tests/test_attributes.py::test_read_only_dynamic_attribute_with_dummy_write_method[low_level_read] PASSED [ 32%] 247s tests/test_attributes.py::test_read_only_dynamic_attribute_with_dummy_write_method[high_level_read] PASSED [ 32%] 247s tests/test_attributes.py::test_dynamic_attribute_with_method_in_other_class PASSED [ 32%] 247s tests/test_attributes.py::test_polled_attribute[Synchronous] PASSED [ 32%] 247s tests/test_attributes.py::test_polled_attribute[Asyncio] PASSED [ 32%] 247s tests/test_attributes.py::test_polled_attribute[Gevent] PASSED [ 32%] 247s tests/test_attributes.py::test_read_write_dev_encoded[str] PASSED [ 32%] 248s tests/test_attributes.py::test_read_write_dev_encoded[bytes] PASSED [ 33%] 248s tests/test_attributes.py::test_read_write_dev_encoded[bytearray] PASSED [ 33%] 248s tests/test_attributes.py::test_dev_encoded_wrong_encoding PASSED [ 33%] 248s tests/test_attributes.py::test_set_value_None PASSED [ 33%] 248s tests/test_attributes.py::test_encoded_attribute[gray8] PASSED [ 33%] 248s tests/test_attributes.py::test_encoded_attribute[gray16] PASSED [ 33%] 248s tests/test_attributes.py::test_encoded_attribute[rgb24] PASSED [ 33%] 248s tests/test_attributes.py::test_encoded_attribute[jpeg_gray8] PASSED [ 33%] 248s tests/test_attributes.py::test_encoded_attribute[jpeg_rgb24] PASSED [ 33%] 248s tests/test_attributes.py::test_encoded_attribute[jpeg_rgb32] XFAIL (...) [ 33%] 254s tests/test_attributes.py::test_dev_encoded_memory_usage PASSED [ 33%] 254s tests/test_attributes.py::test_attribute_list PASSED [ 34%] 254s tests/test_auto_tango_allow_threads.py::test_dont_crash_with_nested_tango_allow_threads PASSED [ 34%] 254s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_DEVICE-True] PASSED [ 34%] 257s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_DEVICE-False] PASSED [ 34%] 257s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_CLASS-True] XFAIL [ 34%] 260s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_CLASS-False] PASSED [ 34%] 261s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_PROCESS-True] XFAIL [ 34%] 264s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_PROCESS-False] PASSED [ 34%] 264s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-NO_SYNC-True] PASSED [ 34%] 264s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-NO_SYNC-False] PASSED [ 34%] 264s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_DEVICE-True] PASSED [ 34%] 267s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_DEVICE-False] PASSED [ 34%] 267s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_CLASS-True] XFAIL [ 35%] 271s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_CLASS-False] PASSED [ 35%] 271s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_PROCESS-True] XFAIL [ 35%] 274s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_PROCESS-False] PASSED [ 35%] 274s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-NO_SYNC-True] PASSED [ 35%] 274s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-NO_SYNC-False] PASSED [ 35%] 274s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_DEVICE-True] PASSED [ 35%] 278s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_DEVICE-False] PASSED [ 35%] 278s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_CLASS-True] XFAIL [ 35%] 281s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_CLASS-False] PASSED [ 35%] 281s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_PROCESS-True] XFAIL [ 35%] 284s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_PROCESS-False] PASSED [ 35%] 284s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-NO_SYNC-True] PASSED [ 36%] 284s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-NO_SYNC-False] PASSED [ 36%] 288s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_DEVICE-True] PASSED [ 36%] 291s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_DEVICE-False] PASSED [ 36%] 294s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_CLASS-True] PASSED [ 36%] 297s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_CLASS-False] PASSED [ 36%] 301s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_PROCESS-True] PASSED [ 36%] 304s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_PROCESS-False] PASSED [ 36%] 304s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-NO_SYNC-True] PASSED [ 36%] 304s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-NO_SYNC-False] PASSED [ 36%] 307s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_DEVICE-True] PASSED [ 36%] 311s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_DEVICE-False] PASSED [ 37%] 314s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_CLASS-True] PASSED [ 37%] 317s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_CLASS-False] PASSED [ 37%] 320s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_PROCESS-True] PASSED [ 37%] 324s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_PROCESS-False] PASSED [ 37%] 324s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-NO_SYNC-True] PASSED [ 37%] 324s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-NO_SYNC-False] PASSED [ 37%] 327s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_DEVICE-True] PASSED [ 37%] 330s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_DEVICE-False] PASSED [ 37%] 334s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_CLASS-True] PASSED [ 37%] 337s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_CLASS-False] PASSED [ 37%] 340s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_PROCESS-True] PASSED [ 37%] 344s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_PROCESS-False] PASSED [ 38%] 344s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-NO_SYNC-True] PASSED [ 38%] 344s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-NO_SYNC-False] PASSED [ 38%] 344s tests/test_commands.py::test_identity_command[int-Synchronous] PASSED [ 38%] 344s tests/test_commands.py::test_identity_command[int-Asyncio] PASSED [ 38%] 344s tests/test_commands.py::test_identity_command[int-Gevent] PASSED [ 38%] 344s tests/test_commands.py::test_identity_command[float-Synchronous] PASSED [ 38%] 344s tests/test_commands.py::test_identity_command[float-Asyncio] PASSED [ 38%] 344s tests/test_commands.py::test_identity_command[float-Gevent] PASSED [ 38%] 344s tests/test_commands.py::test_identity_command[str-Synchronous] PASSED [ 38%] 345s tests/test_commands.py::test_identity_command[str-Asyncio] PASSED [ 38%] 345s tests/test_commands.py::test_identity_command[str-Gevent] PASSED [ 38%] 345s tests/test_commands.py::test_identity_command[bool-Synchronous] PASSED [ 39%] 345s tests/test_commands.py::test_identity_command[bool-Asyncio] PASSED [ 39%] 345s tests/test_commands.py::test_identity_command[bool-Gevent] PASSED [ 39%] 345s tests/test_commands.py::test_identity_command[(int,)-Synchronous] PASSED [ 39%] 345s tests/test_commands.py::test_identity_command[(int,)-Asyncio] PASSED [ 39%] 345s tests/test_commands.py::test_identity_command[(int,)-Gevent] PASSED [ 39%] 345s tests/test_commands.py::test_identity_command[(float,)-Synchronous] PASSED [ 39%] 345s tests/test_commands.py::test_identity_command[(float,)-Asyncio] PASSED [ 39%] 345s tests/test_commands.py::test_identity_command[(float,)-Gevent] PASSED [ 39%] 346s tests/test_commands.py::test_identity_command[(str,)-Synchronous] PASSED [ 39%] 346s tests/test_commands.py::test_identity_command[(str,)-Asyncio] PASSED [ 39%] 346s tests/test_commands.py::test_identity_command[(str,)-Gevent] PASSED [ 40%] 346s tests/test_commands.py::test_identity_command[(bool,)-Synchronous] XFAIL [ 40%] 346s tests/test_commands.py::test_identity_command[(bool,)-Asyncio] XFAIL [ 40%] 346s tests/test_commands.py::test_identity_command[(bool,)-Gevent] XFAIL [ 40%] 346s tests/test_commands.py::test_identity_command[DevVarLongStringArray-Synchronous] PASSED [ 40%] 346s tests/test_commands.py::test_identity_command[DevVarLongStringArray-Asyncio] PASSED [ 40%] 346s tests/test_commands.py::test_identity_command[DevVarLongStringArray-Gevent] PASSED [ 40%] 346s tests/test_commands.py::test_identity_command[DevVarDoubleStringArray-Synchronous] PASSED [ 40%] 346s tests/test_commands.py::test_identity_command[DevVarDoubleStringArray-Asyncio] PASSED [ 40%] 346s tests/test_commands.py::test_identity_command[DevVarDoubleStringArray-Gevent] PASSED [ 40%] 346s tests/test_commands.py::test_identity_command_with_typing[int] PASSED [ 40%] 347s tests/test_commands.py::test_identity_command_with_typing[float] PASSED [ 40%] 347s tests/test_commands.py::test_identity_command_with_typing[str] PASSED [ 41%] 347s tests/test_commands.py::test_identity_command_with_typing[bool] PASSED [ 41%] 347s tests/test_commands.py::test_identity_command_with_typing[(int,)] PASSED [ 41%] 347s tests/test_commands.py::test_identity_command_with_typing[(float,)] PASSED [ 41%] 347s tests/test_commands.py::test_identity_command_with_typing[(str,)] PASSED [ 41%] 347s tests/test_commands.py::test_identity_command_with_typing[(bool,)] XFAIL [ 41%] 347s tests/test_commands.py::test_identity_command_with_typing[DevVarLongStringArray] PASSED [ 41%] 347s tests/test_commands.py::test_identity_command_with_typing[DevVarDoubleStringArray] PASSED [ 41%] 347s tests/test_commands.py::test_devstate_command_with_typing PASSED [ 41%] 347s tests/test_commands.py::test_command_self_typed_with_not_defined_name PASSED [ 41%] 347s tests/test_commands.py::test_decorated_command[Synchronous] PASSED [ 41%] 347s tests/test_commands.py::test_decorated_command[Asyncio] PASSED [ 41%] 348s tests/test_commands.py::test_decorated_command[Gevent] PASSED [ 42%] 348s tests/test_commands.py::test_command_isallowed[Synchronous] PASSED [ 42%] 348s tests/test_commands.py::test_command_isallowed[Asyncio] PASSED [ 42%] 348s tests/test_commands.py::test_command_isallowed[Gevent] PASSED [ 42%] 348s tests/test_commands.py::test_dynamic_command[Synchronous-True] PASSED [ 42%] 348s tests/test_commands.py::test_dynamic_command[Synchronous-False] PASSED [ 42%] 348s tests/test_commands.py::test_dynamic_command[Asyncio-True] PASSED [ 42%] 348s tests/test_commands.py::test_dynamic_command[Asyncio-False] PASSED [ 42%] 348s tests/test_commands.py::test_dynamic_command[Gevent-True] PASSED [ 42%] 348s tests/test_commands.py::test_dynamic_command[Gevent-False] PASSED [ 42%] 348s tests/test_commands.py::test_identity_dynamic_command_with_typing[int] PASSED [ 42%] 349s tests/test_commands.py::test_identity_dynamic_command_with_typing[float] PASSED [ 42%] 349s tests/test_commands.py::test_identity_dynamic_command_with_typing[str] PASSED [ 43%] 349s tests/test_commands.py::test_identity_dynamic_command_with_typing[bool] PASSED [ 43%] 349s tests/test_commands.py::test_identity_dynamic_command_with_typing[(int,)] PASSED [ 43%] 349s tests/test_commands.py::test_identity_dynamic_command_with_typing[(float,)] PASSED [ 43%] 349s tests/test_commands.py::test_identity_dynamic_command_with_typing[(str,)] PASSED [ 43%] 349s tests/test_commands.py::test_identity_dynamic_command_with_typing[(bool,)] XFAIL [ 43%] 349s tests/test_commands.py::test_identity_dynamic_command_with_typing[DevVarLongStringArray] PASSED [ 43%] 349s tests/test_commands.py::test_identity_dynamic_command_with_typing[DevVarDoubleStringArray] PASSED [ 43%] 349s tests/test_commands.py::test_identity_commands_with_numpy_typing[bool, SCALAR] PASSED [ 43%] 349s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[bool], SPECTRUM] PASSED [ 43%] 349s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint8, SCALAR] XFAIL [ 43%] 349s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint8], SPECTRUM] PASSED [ 44%] 349s tests/test_commands.py::test_identity_commands_with_numpy_typing[int16, SCALAR] PASSED [ 44%] 350s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[int16], SPECTRUM] PASSED [ 44%] 350s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint16, SCALAR] PASSED [ 44%] 350s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint16], SPECTRUM] PASSED [ 44%] 350s tests/test_commands.py::test_identity_commands_with_numpy_typing[int32, SCALAR] PASSED [ 44%] 350s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[int32], SPECTRUM] PASSED [ 44%] 350s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint32, SCALAR] PASSED [ 44%] 350s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint32], SPECTRUM] PASSED [ 44%] 350s tests/test_commands.py::test_identity_commands_with_numpy_typing[int64, SCALAR] PASSED [ 44%] 350s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[int64], SPECTRUM] PASSED [ 44%] 350s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint64, SCALAR] PASSED [ 44%] 350s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint64], SPECTRUM] PASSED [ 45%] 350s tests/test_commands.py::test_identity_commands_with_numpy_typing[float64, SCALAR] PASSED [ 45%] 350s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[float64], SPECTRUM] PASSED [ 45%] 351s tests/test_commands.py::test_identity_commands_with_numpy_typing[float32, SCALAR] PASSED [ 45%] 351s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[float32], SPECTRUM] PASSED [ 45%] 351s tests/test_commands.py::test_polled_command PASSED [ 45%] 351s tests/test_commands.py::test_wrong_command_result PASSED [ 45%] 351s tests/test_commands.py::test_command_info PASSED [ 45%] 351s tests/test_database.py::test_put_remove_attribute_properties PASSED [ 45%] 351s tests/test_databaseds.py::test_ping SKIPPED (This test is failing wh...) [ 45%] 351s tests/test_databaseds.py::test_status SKIPPED (This test is failing ...) [ 45%] 351s tests/test_databaseds.py::test_state SKIPPED (This test is failing w...) [ 45%] 351s tests/test_databaseds.py::test_device_property SKIPPED (This test is...) [ 46%] 351s tests/test_databaseds.py::test_info SKIPPED (This test is failing wh...) [ 46%] 351s tests/test_device_proxy.py::test_ping PASSED [ 46%] 351s tests/test_device_proxy.py::test_info PASSED [ 46%] 352s tests/test_device_proxy.py::test_read_attribute[State] PASSED [ 46%] 352s tests/test_device_proxy.py::test_read_attribute[Status] PASSED [ 46%] 352s tests/test_device_proxy.py::test_read_attribute[ampli] PASSED [ 46%] 352s tests/test_device_proxy.py::test_read_attribute[boolean_image] PASSED [ 46%] 352s tests/test_device_proxy.py::test_read_attribute[boolean_image_ro] PASSED [ 46%] 352s tests/test_device_proxy.py::test_read_attribute[boolean_scalar] PASSED [ 46%] 352s tests/test_device_proxy.py::test_read_attribute[boolean_spectrum] PASSED [ 46%] 353s tests/test_device_proxy.py::test_read_attribute[boolean_spectrum_ro] PASSED [ 47%] 353s tests/test_device_proxy.py::test_read_attribute[double_image] PASSED [ 47%] 353s tests/test_device_proxy.py::test_read_attribute[double_image_ro] PASSED [ 47%] 353s tests/test_device_proxy.py::test_read_attribute[double_scalar] PASSED [ 47%] 353s tests/test_device_proxy.py::test_read_attribute[double_scalar_rww] PASSED [ 47%] 353s tests/test_device_proxy.py::test_read_attribute[double_scalar_w] PASSED [ 47%] 354s tests/test_device_proxy.py::test_read_attribute[double_spectrum] PASSED [ 47%] 354s tests/test_device_proxy.py::test_read_attribute[double_spectrum_ro] PASSED [ 47%] 354s tests/test_device_proxy.py::test_read_attribute[echo_mode] SKIPPED (...) [ 47%] 354s tests/test_device_proxy.py::test_read_attribute[enum_image] PASSED [ 47%] 354s tests/test_device_proxy.py::test_read_attribute[enum_image_ro] PASSED [ 47%] 354s tests/test_device_proxy.py::test_read_attribute[enum_scalar] PASSED [ 47%] 355s tests/test_device_proxy.py::test_read_attribute[enum_scalar_ro] PASSED [ 48%] 355s tests/test_device_proxy.py::test_read_attribute[enum_spectrum] PASSED [ 48%] 355s tests/test_device_proxy.py::test_read_attribute[enum_spectrum_ro] PASSED [ 48%] 355s tests/test_device_proxy.py::test_read_attribute[float_image] PASSED [ 48%] 355s tests/test_device_proxy.py::test_read_attribute[float_image_ro] PASSED [ 48%] 356s tests/test_device_proxy.py::test_read_attribute[float_scalar] PASSED [ 48%] 356s tests/test_device_proxy.py::test_read_attribute[float_spectrum] PASSED [ 48%] 356s tests/test_device_proxy.py::test_read_attribute[float_spectrum_ro] PASSED [ 48%] 356s tests/test_device_proxy.py::test_read_attribute[freq] PASSED [ 48%] 356s tests/test_device_proxy.py::test_read_attribute[long64_image_ro] PASSED [ 48%] 357s tests/test_device_proxy.py::test_read_attribute[long64_scalar] PASSED [ 48%] 357s tests/test_device_proxy.py::test_read_attribute[long64_spectrum_ro] PASSED [ 48%] 358s tests/test_device_proxy.py::test_read_attribute[long_image] PASSED [ 49%] 358s tests/test_device_proxy.py::test_read_attribute[long_image_ro] PASSED [ 49%] 358s tests/test_device_proxy.py::test_read_attribute[long_scalar] PASSED [ 49%] 358s tests/test_device_proxy.py::test_read_attribute[long_scalar_rww] PASSED [ 49%] 358s tests/test_device_proxy.py::test_read_attribute[long_scalar_w] PASSED [ 49%] 358s tests/test_device_proxy.py::test_read_attribute[long_spectrum] PASSED [ 49%] 358s tests/test_device_proxy.py::test_read_attribute[long_spectrum_ro] PASSED [ 49%] 358s tests/test_device_proxy.py::test_read_attribute[short_image] PASSED [ 49%] 358s tests/test_device_proxy.py::test_read_attribute[short_image_ro] PASSED [ 49%] 358s tests/test_device_proxy.py::test_read_attribute[short_scalar] PASSED [ 49%] 359s tests/test_device_proxy.py::test_read_attribute[short_scalar_ro] PASSED [ 49%] 359s tests/test_device_proxy.py::test_read_attribute[short_scalar_rww] PASSED [ 50%] 359s tests/test_device_proxy.py::test_read_attribute[short_scalar_w] PASSED [ 50%] 359s tests/test_device_proxy.py::test_read_attribute[short_spectrum] PASSED [ 50%] 359s tests/test_device_proxy.py::test_read_attribute[short_spectrum_ro] PASSED [ 50%] 359s tests/test_device_proxy.py::test_read_attribute[string_image] PASSED [ 50%] 360s tests/test_device_proxy.py::test_read_attribute[string_image_ro] XFAIL [ 50%] 360s tests/test_device_proxy.py::test_read_attribute[string_scalar] PASSED [ 50%] 360s tests/test_device_proxy.py::test_read_attribute[string_spectrum] PASSED [ 50%] 360s tests/test_device_proxy.py::test_read_attribute[string_spectrum_ro] XFAIL [ 50%] 360s tests/test_device_proxy.py::test_read_attribute[uchar_image] PASSED [ 50%] 360s tests/test_device_proxy.py::test_read_attribute[uchar_image_ro] PASSED [ 50%] 361s tests/test_device_proxy.py::test_read_attribute[uchar_scalar] PASSED [ 50%] 361s tests/test_device_proxy.py::test_read_attribute[uchar_spectrum] PASSED [ 51%] 361s tests/test_device_proxy.py::test_read_attribute[uchar_spectrum_ro] PASSED [ 51%] 361s tests/test_device_proxy.py::test_read_attribute[ulong64_image_ro] PASSED [ 51%] 361s tests/test_device_proxy.py::test_read_attribute[ulong64_scalar] PASSED [ 51%] 361s tests/test_device_proxy.py::test_read_attribute[ulong64_spectrum_ro] PASSED [ 51%] 361s tests/test_device_proxy.py::test_read_attribute[ulong_image_ro] PASSED [ 51%] 362s tests/test_device_proxy.py::test_read_attribute[ulong_scalar] PASSED [ 51%] 362s tests/test_device_proxy.py::test_read_attribute[ulong_spectrum_ro] PASSED [ 51%] 362s tests/test_device_proxy.py::test_read_attribute[ushort_image] PASSED [ 51%] 362s tests/test_device_proxy.py::test_read_attribute[ushort_image_ro] PASSED [ 51%] 362s tests/test_device_proxy.py::test_read_attribute[ushort_scalar] PASSED [ 51%] 362s tests/test_device_proxy.py::test_read_attribute[ushort_spectrum] PASSED [ 51%] 363s tests/test_device_proxy.py::test_read_attribute[ushort_spectrum_ro] PASSED [ 52%] 363s tests/test_device_proxy.py::test_read_attribute[wave] PASSED [ 52%] 363s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Synchronous] PASSED [ 52%] 363s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Futures] PASSED [ 52%] 363s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Gevent] PASSED [ 52%] 363s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Asyncio] PASSED [ 52%] 364s tests/test_device_proxy.py::test_high_level_api_for_asyncio PASSED [ 52%] 364s tests/test_device_proxy.py::test_write_scalar_attribute[boolean_scalar] PASSED [ 52%] 364s tests/test_device_proxy.py::test_write_scalar_attribute[double_scalar] PASSED [ 52%] 364s tests/test_device_proxy.py::test_write_scalar_attribute[double_scalar_w] PASSED [ 52%] 364s tests/test_device_proxy.py::test_write_scalar_attribute[enum_scalar] XFAIL [ 52%] 364s tests/test_device_proxy.py::test_write_scalar_attribute[float_scalar] PASSED [ 52%] 365s tests/test_device_proxy.py::test_write_scalar_attribute[long64_scalar] PASSED [ 53%] 365s tests/test_device_proxy.py::test_write_scalar_attribute[long_scalar] PASSED [ 53%] 365s tests/test_device_proxy.py::test_write_scalar_attribute[long_scalar_w] PASSED [ 53%] 365s tests/test_device_proxy.py::test_write_scalar_attribute[short_scalar] PASSED [ 53%] 365s tests/test_device_proxy.py::test_write_scalar_attribute[short_scalar_w] PASSED [ 53%] 365s tests/test_device_proxy.py::test_write_scalar_attribute[string_scalar] PASSED [ 53%] 366s tests/test_device_proxy.py::test_write_scalar_attribute[uchar_scalar] XFAIL [ 53%] 366s tests/test_device_proxy.py::test_write_scalar_attribute[ulong64_scalar] PASSED [ 53%] 366s tests/test_device_proxy.py::test_write_scalar_attribute[ulong_scalar] PASSED [ 53%] 366s tests/test_device_proxy.py::test_write_scalar_attribute[ushort_scalar] PASSED [ 53%] 366s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.Numpy] PASSED [ 53%] 366s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.Tuple] PASSED [ 54%] 366s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.List] PASSED [ 54%] 367s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.Bytes] PASSED [ 54%] 367s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.ByteArray] PASSED [ 54%] 367s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.String] PASSED [ 54%] 367s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.Numpy] PASSED [ 54%] 367s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.Tuple] PASSED [ 54%] 367s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.List] PASSED [ 54%] 368s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.Bytes] PASSED [ 54%] 368s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.ByteArray] PASSED [ 54%] 368s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.String] PASSED [ 54%] 368s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.Numpy] XFAIL [ 54%] 368s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.Tuple] XFAIL [ 55%] 368s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.List] XFAIL [ 55%] 369s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.Bytes] XFAIL [ 55%] 369s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.ByteArray] XFAIL [ 55%] 369s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.String] XFAIL [ 55%] 369s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.Numpy] PASSED [ 55%] 369s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.Tuple] PASSED [ 55%] 370s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.List] PASSED [ 55%] 370s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.Bytes] PASSED [ 55%] 370s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.ByteArray] PASSED [ 55%] 370s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.String] PASSED [ 55%] 370s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.Numpy] PASSED [ 55%] 370s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.Tuple] PASSED [ 56%] 370s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.List] PASSED [ 56%] 371s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.Bytes] PASSED [ 56%] 371s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.ByteArray] PASSED [ 56%] 371s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.String] PASSED [ 56%] 371s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.Numpy] PASSED [ 56%] 371s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.Tuple] PASSED [ 56%] 371s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.List] PASSED [ 56%] 372s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.Bytes] PASSED [ 56%] 372s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.ByteArray] PASSED [ 56%] 372s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.String] PASSED [ 56%] 372s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.Numpy] PASSED [ 57%] 372s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.Tuple] PASSED [ 57%] 372s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.List] PASSED [ 57%] 373s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.Bytes] XFAIL [ 57%] 373s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.ByteArray] XFAIL [ 57%] 373s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.String] XFAIL [ 57%] 373s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.Numpy] XFAIL [ 57%] 373s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.Tuple] XFAIL [ 57%] 374s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.List] XFAIL [ 57%] 374s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.Bytes] XFAIL [ 57%] 374s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.ByteArray] XFAIL [ 57%] 374s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.String] XFAIL [ 57%] 374s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.Numpy] PASSED [ 58%] 375s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.Tuple] PASSED [ 58%] 375s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.List] PASSED [ 58%] 375s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.Bytes] PASSED [ 58%] 375s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.ByteArray] PASSED [ 58%] 375s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.String] PASSED [ 58%] 375s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[boolean_spectrum] PASSED [ 58%] 377s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[double_spectrum] PASSED [ 58%] 377s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[enum_spectrum] PASSED [ 58%] 377s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[float_spectrum] PASSED [ 58%] 377s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[long_spectrum] PASSED [ 58%] 377s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[short_spectrum] PASSED [ 58%] 377s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[string_spectrum] XFAIL [ 59%] 377s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[uchar_spectrum] PASSED [ 59%] 377s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[ushort_spectrum] PASSED [ 59%] 377s tests/test_device_proxy.py::test_write_read_string_attribute PASSED [ 59%] 377s tests/test_device_proxy.py::test_set_non_existent_attribute_raises_by_default PASSED [ 59%] 377s tests/test_device_proxy.py::test_set_non_existent_attribute_allowed_if_dynamic_interface_unfrozen PASSED [ 59%] 377s tests/test_device_proxy.py::test_dynamic_interface_can_be_toggled PASSED [ 59%] 378s tests/test_device_proxy.py::test_dynamic_interface_flag_can_be_read PASSED [ 59%] 378s tests/test_device_proxy.py::test_dynamic_interface_only_applies_to_device_proxy_instance PASSED [ 59%] 378s tests/test_device_proxy.py::test_dynamic_interface_unfreeze_generates_a_user_warning PASSED [ 59%] 378s tests/test_device_proxy.py::test_read_attribute_config SKIPPED (This...) [ 59%] 378s tests/test_device_proxy.py::test_read_attribute_config_ex PASSED [ 60%] 378s tests/test_device_proxy.py::test_attribute_list_query SKIPPED (This ...) [ 60%] 378s tests/test_device_proxy.py::test_attribute_list_query_ex SKIPPED (Th...) [ 60%] 378s tests/test_device_proxy.py::test_device_proxy_dir_method PASSED [ 60%] 378s tests/test_device_proxy.py::test_device_polling_command PASSED [ 60%] 379s tests/test_device_proxy.py::test_device_polling_attribute PASSED [ 60%] 379s tests/test_device_proxy.py::test_command_string PASSED [ 60%] 379s tests/test_device_proxy.py::test_command_raises_type_error_for_bad_input PASSED [ 60%] 379s tests/test_device_proxy.py::test_repr_uses_info[Synchronous] PASSED [ 60%] 379s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Synchronous] PASSED [ 60%] 379s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Synchronous] PASSED [ 60%] 380s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Synchronous] PASSED [ 60%] 380s tests/test_device_proxy.py::test_no_memory_leak_for_str[Synchronous] PASSED [ 61%] 380s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Synchronous] PASSED [ 61%] 380s tests/test_device_proxy.py::test_repr_uses_info[Futures] PASSED [ 61%] 380s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Futures] PASSED [ 61%] 380s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Futures] PASSED [ 61%] 380s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Futures] PASSED [ 61%] 381s tests/test_device_proxy.py::test_no_memory_leak_for_str[Futures] PASSED [ 61%] 381s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Futures] PASSED [ 61%] 381s tests/test_device_proxy.py::test_repr_uses_info[Gevent] PASSED [ 61%] 381s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Gevent] PASSED [ 61%] 381s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Gevent] PASSED [ 61%] 381s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Gevent] PASSED [ 61%] 381s tests/test_device_proxy.py::test_no_memory_leak_for_str[Gevent] PASSED [ 62%] 381s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Gevent] PASSED [ 62%] 381s tests/test_device_proxy.py::test_repr_uses_info[Asyncio] PASSED [ 62%] 382s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Asyncio] PASSED [ 62%] 382s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Asyncio] PASSED [ 62%] 382s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Asyncio] PASSED [ 62%] 382s tests/test_device_proxy.py::test_no_memory_leak_for_str[Asyncio] PASSED [ 62%] 382s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Asyncio] PASSED [ 62%] 382s tests/test_device_proxy.py::test_client_destructor_does_not_deadlock[group_client_lifecycle] SKIPPED [ 62%] 382s tests/test_device_proxy.py::test_client_destructor_does_not_deadlock[device_proxy_lifecycle] SKIPPED [ 62%] 382s tests/test_group.py::test_nested_multi_group PASSED [ 62%] 382s tests/test_group.py::test_read_write_attribute PASSED [ 62%] 383s tests/test_group.py::test_command PASSED [ 63%] 383s tests/test_log.py::test_logging_decorators PASSED [ 63%] 383s tests/test_log.py::test_async_logging_decorators PASSED [ 63%] 383s tests/test_log.py::test_tango_stream PASSED [ 63%] 383s tests/test_log.py::test_logging[Synchronous] PASSED [ 63%] 384s tests/test_log.py::test_logging[Asyncio] PASSED [ 63%] 384s tests/test_log.py::test_logging[Gevent] PASSED [ 63%] 384s tests/test_log.py::test_decorator_logging_source_location[Synchronous] SKIPPED [ 63%] 384s tests/test_log.py::test_decorator_logging_source_location[Asyncio] SKIPPED [ 63%] 384s tests/test_log.py::test_decorator_logging_source_location[Gevent] SKIPPED [ 63%] 384s tests/test_log.py::test_stream_logging_source_location[Synchronous] SKIPPED [ 63%] 384s tests/test_log.py::test_stream_logging_source_location[Asyncio] SKIPPED [ 64%] 384s tests/test_log.py::test_stream_logging_source_location[Gevent] SKIPPED [ 64%] 384s tests/test_multi_attr_prop.py::test_stuff PASSED [ 64%] 384s tests/test_properties.py::test_device_property_no_default[int] PASSED [ 64%] 384s tests/test_properties.py::test_device_property_no_default[float] PASSED [ 64%] 384s tests/test_properties.py::test_device_property_no_default[str] PASSED [ 64%] 384s tests/test_properties.py::test_device_property_no_default[bool] PASSED [ 64%] 384s tests/test_properties.py::test_device_property_no_default[(int,)] PASSED [ 64%] 385s tests/test_properties.py::test_device_property_no_default[(float,)] PASSED [ 64%] 385s tests/test_properties.py::test_device_property_no_default[(str,)] PASSED [ 64%] 385s tests/test_properties.py::test_device_property_no_default[(bool,)] PASSED [ 64%] 385s tests/test_properties.py::test_device_property_with_typing[int] PASSED [ 64%] 385s tests/test_properties.py::test_device_property_with_typing[float] PASSED [ 65%] 385s tests/test_properties.py::test_device_property_with_typing[str] PASSED [ 65%] 385s tests/test_properties.py::test_device_property_with_typing[bool] PASSED [ 65%] 385s tests/test_properties.py::test_device_property_with_typing[(int,)] PASSED [ 65%] 385s tests/test_properties.py::test_device_property_with_typing[(float,)] PASSED [ 65%] 385s tests/test_properties.py::test_device_property_with_typing[(str,)] PASSED [ 65%] 385s tests/test_properties.py::test_device_property_with_typing[(bool,)] PASSED [ 65%] 386s tests/test_properties.py::test_device_property_with_numpy_typing[bool, SCALAR] PASSED [ 65%] 386s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[bool], SPECTRUM] PASSED [ 65%] 386s tests/test_properties.py::test_device_property_with_numpy_typing[uint8, SCALAR] XFAIL [ 65%] 386s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint8], SPECTRUM] XFAIL [ 65%] 386s tests/test_properties.py::test_device_property_with_numpy_typing[int16, SCALAR] PASSED [ 65%] 386s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[int16], SPECTRUM] PASSED [ 66%] 386s tests/test_properties.py::test_device_property_with_numpy_typing[uint16, SCALAR] PASSED [ 66%] 386s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint16], SPECTRUM] PASSED [ 66%] 386s tests/test_properties.py::test_device_property_with_numpy_typing[int32, SCALAR] PASSED [ 66%] 386s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[int32], SPECTRUM] PASSED [ 66%] 386s tests/test_properties.py::test_device_property_with_numpy_typing[uint32, SCALAR] PASSED [ 66%] 387s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint32], SPECTRUM] PASSED [ 66%] 387s tests/test_properties.py::test_device_property_with_numpy_typing[int64, SCALAR] PASSED [ 66%] 387s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[int64], SPECTRUM] PASSED [ 66%] 387s tests/test_properties.py::test_device_property_with_numpy_typing[uint64, SCALAR] PASSED [ 66%] 387s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint64], SPECTRUM] PASSED [ 66%] 387s tests/test_properties.py::test_device_property_with_numpy_typing[float64, SCALAR] PASSED [ 67%] 387s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[float64], SPECTRUM] PASSED [ 67%] 387s tests/test_properties.py::test_device_property_with_numpy_typing[float32, SCALAR] PASSED [ 67%] 387s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[float32], SPECTRUM] PASSED [ 67%] 387s tests/test_properties.py::test_device_property_with_default_value[int] PASSED [ 67%] 388s tests/test_properties.py::test_device_property_with_default_value[float] PASSED [ 67%] 388s tests/test_properties.py::test_device_property_with_default_value[str] PASSED [ 67%] 388s tests/test_properties.py::test_device_property_with_default_value[bool] PASSED [ 67%] 388s tests/test_properties.py::test_device_property_with_default_value[(int,)] PASSED [ 67%] 388s tests/test_properties.py::test_device_property_with_default_value[(float,)] PASSED [ 67%] 388s tests/test_properties.py::test_device_property_with_default_value[(str,)] PASSED [ 67%] 388s tests/test_properties.py::test_device_property_with_default_value[(bool,)] PASSED [ 67%] 388s tests/test_properties.py::test_device_get_device_properties_when_init_device PASSED [ 68%] 388s tests/test_properties.py::test_mandatory_device_property_with_db_value_succeeds[True] PASSED [ 68%] 388s tests/test_properties.py::test_mandatory_device_property_with_db_value_succeeds[False] PASSED [ 68%] 388s tests/test_server.py::test_uncorrect_typing_hints[property-tuple-Property does not support IMAGE type0] PASSED [ 68%] 388s tests/test_server.py::test_uncorrect_typing_hints[property-tuple-Property does not support IMAGE type1] PASSED [ 68%] 388s tests/test_server.py::test_uncorrect_typing_hints[property-tuple-PyTango does not support mixed types] PASSED [ 68%] 389s tests/test_server.py::test_uncorrect_typing_hints[attribute-tuple-PyTango does not support mixed types0] PASSED [ 68%] 389s tests/test_server.py::test_uncorrect_typing_hints[attribute-tuple-PyTango does not support mixed types1] PASSED [ 68%] 389s tests/test_server.py::test_uncorrect_typing_hints[attribute-tuple-PyTango does not support mixed types2] PASSED [ 68%] 389s tests/test_server.py::test_uncorrect_typing_hints[attribute-Callable-Cannot translate] PASSED [ 68%] 389s tests/test_server.py::test_get_enum_labels_success[GoodEnum] PASSED [ 68%] 389s tests/test_server.py::test_get_enum_labels_fail[BadEnumNonZero] PASSED [ 68%] 389s tests/test_server.py::test_get_enum_labels_fail[BadEnumSkipValues] PASSED [ 69%] 389s tests/test_server.py::test_get_enum_labels_fail[BadEnumDuplicates] PASSED [ 69%] 389s tests/test_server.py::test_device_classes_use_latest_implementation PASSED [ 69%] 389s tests/test_server.py::test_empty_device[Synchronous] PASSED [ 69%] 389s tests/test_server.py::test_empty_device[Asyncio] PASSED [ 69%] 389s tests/test_server.py::test_empty_device[Gevent] PASSED [ 69%] 389s tests/test_server.py::test_set_desc_status_state_at_init[doc] PASSED [ 69%] 389s tests/test_server.py::test_set_desc_status_state_at_init[description] PASSED [ 69%] 389s tests/test_server.py::test_set_state_status[ON-Synchronous-False] PASSED [ 69%] 389s tests/test_server.py::test_set_state_status[ON-Synchronous-True] PASSED [ 69%] 389s tests/test_server.py::test_set_state_status[ON-Asyncio-False] PASSED [ 69%] 390s tests/test_server.py::test_set_state_status[ON-Asyncio-True] PASSED [ 70%] 390s tests/test_server.py::test_set_state_status[ON-Gevent-False] PASSED [ 70%] 390s tests/test_server.py::test_set_state_status[ON-Gevent-True] PASSED [ 70%] 390s tests/test_server.py::test_set_state_status[OFF-Synchronous-False] PASSED [ 70%] 390s tests/test_server.py::test_set_state_status[OFF-Synchronous-True] PASSED [ 70%] 390s tests/test_server.py::test_set_state_status[OFF-Asyncio-False] PASSED [ 70%] 390s tests/test_server.py::test_set_state_status[OFF-Asyncio-True] PASSED [ 70%] 390s tests/test_server.py::test_set_state_status[OFF-Gevent-False] PASSED [ 70%] 390s tests/test_server.py::test_set_state_status[OFF-Gevent-True] PASSED [ 70%] 390s tests/test_server.py::test_set_state_status[CLOSE-Synchronous-False] PASSED [ 70%] 391s tests/test_server.py::test_set_state_status[CLOSE-Synchronous-True] PASSED [ 70%] 391s tests/test_server.py::test_set_state_status[CLOSE-Asyncio-False] PASSED [ 70%] 391s tests/test_server.py::test_set_state_status[CLOSE-Asyncio-True] PASSED [ 71%] 391s tests/test_server.py::test_set_state_status[CLOSE-Gevent-False] PASSED [ 71%] 391s tests/test_server.py::test_set_state_status[CLOSE-Gevent-True] PASSED [ 71%] 391s tests/test_server.py::test_set_state_status[OPEN-Synchronous-False] PASSED [ 71%] 391s tests/test_server.py::test_set_state_status[OPEN-Synchronous-True] PASSED [ 71%] 391s tests/test_server.py::test_set_state_status[OPEN-Asyncio-False] PASSED [ 71%] 391s tests/test_server.py::test_set_state_status[OPEN-Asyncio-True] PASSED [ 71%] 391s tests/test_server.py::test_set_state_status[OPEN-Gevent-False] PASSED [ 71%] 391s tests/test_server.py::test_set_state_status[OPEN-Gevent-True] PASSED [ 71%] 392s tests/test_server.py::test_set_state_status[INSERT-Synchronous-False] PASSED [ 71%] 392s tests/test_server.py::test_set_state_status[INSERT-Synchronous-True] PASSED [ 71%] 392s tests/test_server.py::test_set_state_status[INSERT-Asyncio-False] PASSED [ 71%] 392s tests/test_server.py::test_set_state_status[INSERT-Asyncio-True] PASSED [ 72%] 392s tests/test_server.py::test_set_state_status[INSERT-Gevent-False] PASSED [ 72%] 392s tests/test_server.py::test_set_state_status[INSERT-Gevent-True] PASSED [ 72%] 392s tests/test_server.py::test_set_state_status[EXTRACT-Synchronous-False] PASSED [ 72%] 392s tests/test_server.py::test_set_state_status[EXTRACT-Synchronous-True] PASSED [ 72%] 392s tests/test_server.py::test_set_state_status[EXTRACT-Asyncio-False] PASSED [ 72%] 392s tests/test_server.py::test_set_state_status[EXTRACT-Asyncio-True] PASSED [ 72%] 392s tests/test_server.py::test_set_state_status[EXTRACT-Gevent-False] PASSED [ 72%] 393s tests/test_server.py::test_set_state_status[EXTRACT-Gevent-True] PASSED [ 72%] 393s tests/test_server.py::test_set_state_status[MOVING-Synchronous-False] PASSED [ 72%] 393s tests/test_server.py::test_set_state_status[MOVING-Synchronous-True] PASSED [ 72%] 393s tests/test_server.py::test_set_state_status[MOVING-Asyncio-False] PASSED [ 72%] 393s tests/test_server.py::test_set_state_status[MOVING-Asyncio-True] PASSED [ 73%] 393s tests/test_server.py::test_set_state_status[MOVING-Gevent-False] PASSED [ 73%] 393s tests/test_server.py::test_set_state_status[MOVING-Gevent-True] PASSED [ 73%] 393s tests/test_server.py::test_set_state_status[STANDBY-Synchronous-False] PASSED [ 73%] 393s tests/test_server.py::test_set_state_status[STANDBY-Synchronous-True] PASSED [ 73%] 393s tests/test_server.py::test_set_state_status[STANDBY-Asyncio-False] PASSED [ 73%] 393s tests/test_server.py::test_set_state_status[STANDBY-Asyncio-True] PASSED [ 73%] 394s tests/test_server.py::test_set_state_status[STANDBY-Gevent-False] PASSED [ 73%] 394s tests/test_server.py::test_set_state_status[STANDBY-Gevent-True] PASSED [ 73%] 394s tests/test_server.py::test_set_state_status[FAULT-Synchronous-False] PASSED [ 73%] 394s tests/test_server.py::test_set_state_status[FAULT-Synchronous-True] PASSED [ 73%] 394s tests/test_server.py::test_set_state_status[FAULT-Asyncio-False] PASSED [ 74%] 394s tests/test_server.py::test_set_state_status[FAULT-Asyncio-True] PASSED [ 74%] 394s tests/test_server.py::test_set_state_status[FAULT-Gevent-False] PASSED [ 74%] 394s tests/test_server.py::test_set_state_status[FAULT-Gevent-True] PASSED [ 74%] 394s tests/test_server.py::test_set_state_status[INIT-Synchronous-False] PASSED [ 74%] 394s tests/test_server.py::test_set_state_status[INIT-Synchronous-True] PASSED [ 74%] 395s tests/test_server.py::test_set_state_status[INIT-Asyncio-False] PASSED [ 74%] 395s tests/test_server.py::test_set_state_status[INIT-Asyncio-True] PASSED [ 74%] 395s tests/test_server.py::test_set_state_status[INIT-Gevent-False] PASSED [ 74%] 395s tests/test_server.py::test_set_state_status[INIT-Gevent-True] PASSED [ 74%] 395s tests/test_server.py::test_set_state_status[RUNNING-Synchronous-False] PASSED [ 74%] 395s tests/test_server.py::test_set_state_status[RUNNING-Synchronous-True] PASSED [ 74%] 395s tests/test_server.py::test_set_state_status[RUNNING-Asyncio-False] PASSED [ 75%] 395s tests/test_server.py::test_set_state_status[RUNNING-Asyncio-True] PASSED [ 75%] 395s tests/test_server.py::test_set_state_status[RUNNING-Gevent-False] PASSED [ 75%] 395s tests/test_server.py::test_set_state_status[RUNNING-Gevent-True] PASSED [ 75%] 396s tests/test_server.py::test_set_state_status[ALARM-Synchronous-False] PASSED [ 75%] 396s tests/test_server.py::test_set_state_status[ALARM-Synchronous-True] PASSED [ 75%] 396s tests/test_server.py::test_set_state_status[ALARM-Asyncio-False] PASSED [ 75%] 396s tests/test_server.py::test_set_state_status[ALARM-Asyncio-True] PASSED [ 75%] 396s tests/test_server.py::test_set_state_status[ALARM-Gevent-False] PASSED [ 75%] 396s tests/test_server.py::test_set_state_status[ALARM-Gevent-True] PASSED [ 75%] 396s tests/test_server.py::test_set_state_status[DISABLE-Synchronous-False] PASSED [ 75%] 396s tests/test_server.py::test_set_state_status[DISABLE-Synchronous-True] PASSED [ 75%] 396s tests/test_server.py::test_set_state_status[DISABLE-Asyncio-False] PASSED [ 76%] 397s tests/test_server.py::test_set_state_status[DISABLE-Asyncio-True] PASSED [ 76%] 397s tests/test_server.py::test_set_state_status[DISABLE-Gevent-False] PASSED [ 76%] 397s tests/test_server.py::test_set_state_status[DISABLE-Gevent-True] PASSED [ 76%] 397s tests/test_server.py::test_set_state_status[UNKNOWN-Synchronous-False] PASSED [ 76%] 397s tests/test_server.py::test_set_state_status[UNKNOWN-Synchronous-True] PASSED [ 76%] 397s tests/test_server.py::test_set_state_status[UNKNOWN-Asyncio-False] PASSED [ 76%] 397s tests/test_server.py::test_set_state_status[UNKNOWN-Asyncio-True] PASSED [ 76%] 397s tests/test_server.py::test_set_state_status[UNKNOWN-Gevent-False] PASSED [ 76%] 397s tests/test_server.py::test_set_state_status[UNKNOWN-Gevent-True] PASSED [ 76%] 397s tests/test_server.py::test_user_dev_state_status[Synchronous] PASSED [ 76%] 398s tests/test_server.py::test_user_dev_state_status[Asyncio] PASSED [ 77%] 398s tests/test_server.py::test_user_dev_state_status[Gevent] PASSED [ 77%] 398s tests/test_server.py::test_attr_quality_checked_with_state[Synchronous] PASSED [ 77%] 398s tests/test_server.py::test_attr_quality_checked_with_state[Asyncio] PASSED [ 77%] 398s tests/test_server.py::test_attr_quality_checked_with_state[Gevent] PASSED [ 77%] 398s tests/test_server.py::test_device_get_attr_config[Synchronous] PASSED [ 77%] 398s tests/test_server.py::test_device_get_attr_config[Asyncio] PASSED [ 77%] 398s tests/test_server.py::test_device_get_attr_config[Gevent] PASSED [ 77%] 398s tests/test_server.py::test_device_set_attr_config[Synchronous] PASSED [ 77%] 398s tests/test_server.py::test_device_set_attr_config[Asyncio] PASSED [ 77%] 399s tests/test_server.py::test_device_set_attr_config[Gevent] PASSED [ 77%] 399s tests/test_server.py::test_default_units PASSED [ 77%] 399s tests/test_server.py::test_custom_units PASSED [ 78%] 399s tests/test_server.py::test_inheritance_overrides_a_property PASSED [ 78%] 399s tests/test_server.py::test_inheritance_override_dev_status PASSED [ 78%] 399s tests/test_server.py::test_inheritance_init_device PASSED [ 78%] 399s tests/test_server.py::test_inheritance_with_decorated_attributes PASSED [ 78%] 399s tests/test_server.py::test_inheritance_with_undecorated_attributes PASSED [ 78%] 399s tests/test_server.py::test_inheritance_with_undecorated_attribute_and_bound_methods PASSED [ 78%] 399s tests/test_server.py::test_inheritance_with_undecorated_attributes_and_unbound_functions PASSED [ 78%] 400s tests/test_server.py::test_inheritance_command_is_allowed_by_naming_convention PASSED [ 78%] 400s tests/test_server.py::test_inheritance_command_is_allowed_by_kwarg_method PASSED [ 78%] 400s tests/test_server.py::test_inheritance_command_is_allowed_by_kwarg_unbound_function PASSED [ 78%] 400s tests/test_server.py::test_exception_propagation[Synchronous] PASSED [ 78%] 400s tests/test_server.py::test_exception_propagation[Asyncio] PASSED [ 79%] 400s tests/test_server.py::test_exception_propagation[Gevent] PASSED [ 79%] 400s tests/test_server.py::test_arguments[linux-applicable_os0-MyDs instance --nodb --port 1234-expected_output0] PASSED [ 79%] 400s tests/test_server.py::test_arguments[linux-applicable_os1-MyDs -port 1234 -host myhost instance-expected_output1] PASSED [ 79%] 400s tests/test_server.py::test_arguments[linux-applicable_os2-MyDs instance --ORBendPoint giop:tcp:_:1234-expected_output2] PASSED [ 79%] 400s 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%] 400s tests/test_server.py::test_arguments[linux-applicable_os4-MyDs instance -file a/b/c-expected_output4] PASSED [ 79%] 400s tests/test_server.py::test_arguments[linux-applicable_os5-MyDs instance -nodb-expected_output5] PASSED [ 79%] 400s tests/test_server.py::test_arguments[linux-applicable_os6-MyDs instance -dlist a/b/c;d/e/f-expected_output6] PASSED [ 79%] 400s tests/test_server.py::test_arguments[linux-applicable_os7-MyDs instance -vvvv-expected_output7] PASSED [ 79%] 400s tests/test_server.py::test_arguments[linux-applicable_os8-MyDs instance --verbose --verbose --verbose --verbose-expected_output8] PASSED [ 79%] 400s tests/test_server.py::test_arguments[linux-applicable_os9-MyDs instance -v4-expected_output9] PASSED [ 80%] 400s tests/test_server.py::test_arguments[linux-applicable_os10-MyDs instance -v 4-expected_output10] PASSED [ 80%] 400s tests/test_server.py::test_arguments[linux-applicable_os11-MyDs instance -dbg -i -s -u-expected_output11] PASSED [ 80%] 400s tests/test_server.py::test_arguments[linux-applicable_os12-MyDs instance -ORBtest1 test1 --ORBtest2 test2-expected_output12] PASSED [ 80%] 400s tests/test_server.py::test_arguments[linux-applicable_os13-MyDs ORBinstance -ORBtest myORBparam-expected_output13] PASSED [ 80%] 401s 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%] 401s tests/test_server.py::test_arguments[linux-applicable_os15-MyDs instance -ORBtest1 test1 --orbinvalid value-expected_output15] PASSED [ 80%] 401s tests/test_server.py::test_arguments[win-applicable_os0-MyDs instance --nodb --port 1234-expected_output0] PASSED [ 80%] 401s tests/test_server.py::test_arguments[win-applicable_os1-MyDs -port 1234 -host myhost instance-expected_output1] PASSED [ 80%] 401s tests/test_server.py::test_arguments[win-applicable_os2-MyDs instance --ORBendPoint giop:tcp:_:1234-expected_output2] PASSED [ 80%] 401s 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%] 401s tests/test_server.py::test_arguments[win-applicable_os4-MyDs instance -file a/b/c-expected_output4] PASSED [ 80%] 401s tests/test_server.py::test_arguments[win-applicable_os5-MyDs instance -nodb-expected_output5] PASSED [ 81%] 401s tests/test_server.py::test_arguments[win-applicable_os6-MyDs instance -dlist a/b/c;d/e/f-expected_output6] PASSED [ 81%] 401s tests/test_server.py::test_arguments[win-applicable_os7-MyDs instance -vvvv-expected_output7] PASSED [ 81%] 401s tests/test_server.py::test_arguments[win-applicable_os8-MyDs instance --verbose --verbose --verbose --verbose-expected_output8] PASSED [ 81%] 401s tests/test_server.py::test_arguments[win-applicable_os9-MyDs instance -v4-expected_output9] PASSED [ 81%] 401s tests/test_server.py::test_arguments[win-applicable_os10-MyDs instance -v 4-expected_output10] PASSED [ 81%] 401s tests/test_server.py::test_arguments[win-applicable_os11-MyDs instance -dbg -i -s -u-expected_output11] PASSED [ 81%] 401s tests/test_server.py::test_arguments[win-applicable_os12-MyDs instance -ORBtest1 test1 --ORBtest2 test2-expected_output12] PASSED [ 81%] 401s tests/test_server.py::test_arguments[win-applicable_os13-MyDs ORBinstance -ORBtest myORBparam-expected_output13] PASSED [ 81%] 401s 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%] 401s tests/test_server.py::test_arguments[win-applicable_os15-MyDs instance -ORBtest1 test1 --orbinvalid value-expected_output15] PASSED [ 81%] 401s tests/test_server.py::test_server_init_hook_called[Synchronous] PASSED [ 81%] 401s tests/test_server.py::test_server_init_hook_called[Asyncio] SKIPPED [ 82%] 401s tests/test_server.py::test_server_init_hook_called[Gevent] PASSED [ 82%] 401s tests/test_server.py::test_server_init_hook_change_state PASSED [ 82%] 401s tests/test_server.py::test_asyncio_server_init_hook_change_state PASSED [ 82%] 401s tests/test_server.py::test_server_init_hook_called_after_init PASSED [ 82%] 401s tests/test_server.py::test_async_server_init_hook_called_after_init PASSED [ 82%] 402s tests/test_server.py::test_server_init_hook_exception PASSED [ 82%] 402s tests/test_server.py::test_asyncio_server_init_hook_exception PASSED [ 82%] 402s tests/test_server.py::test_server_init_hook_with_low_level_api_called PASSED [ 82%] 402s tests/test_server.py::test_server_init_hook_with_low_level_api_change_state PASSED [ 82%] 402s tests/test_server.py::test_server_init_hook_with_low_level_api_called_after_init PASSED [ 82%] 402s tests/test_server.py::test_server_init_hook_with_low_level_api_exception PASSED [ 82%] 402s tests/test_server.py::test_server_init_multiple_devices PASSED [ 83%] 402s tests/test_server.py::test_server_init_hook_subscribe_event_multiple_devices XFAIL [ 83%] 402s tests/test_server.py::test_deprecation_warning_for_sync_attr_com_methods_in_asyncio_device PASSED [ 83%] 402s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[init_device] PASSED [ 83%] 402s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[delete_device] PASSED [ 83%] 403s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_state] PASSED [ 83%] 403s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_status] PASSED [ 83%] 403s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[read_attr_hardware] PASSED [ 83%] 403s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[always_executed_hook] PASSED [ 83%] 403s tests/test_server.py::test_no_sync_attribute_locks[Synchronous] SKIPPED [ 83%] 403s tests/test_server.py::test_no_sync_attribute_locks[Asyncio] SKIPPED [ 83%] 403s tests/test_server.py::test_no_sync_attribute_locks[Gevent] SKIPPED (...) [ 84%] 403s tests/test_server.py::test_read_slow_and_fast_attributes_with_asyncio SKIPPED [ 84%] 403s tests/test_server.py::test_get_version_info_classic_api PASSED [ 84%] 403s tests/test_server.py::test_get_version_info_high_level_api PASSED [ 84%] 403s tests/test_server.py::test_add_version_info_classic_api PASSED [ 84%] 403s tests/test_server.py::test_add_version_info_high_level_api PASSED [ 84%] 403s tests/test_server.py::test_restart_server_command_cpp_and_py SKIPPED [ 84%] 403s tests/test_server.py::test_attr_data_default_fwd_properties PASSED [ 84%] 403s tests/test_server.py::test_attr_data_default_properties PASSED [ 84%] 403s tests/test_server.py::test_attr_data_default_properties_throws_on_unknown PASSED [ 84%] 403s tests/test_server.py::test_attr_data_enum_labels PASSED [ 84%] 403s tests/test_server.py::test_attr_data_to_attr PASSED [ 84%] 403s tests/test_server.py::test_from_attr_info_exceptions[some string-Wrong data type for value for describing attribute] PASSED [ 85%] 403s tests/test_server.py::test_from_attr_info_exceptions[attr_info1-Wrong number of argument for describing attribute] PASSED [ 85%] 403s tests/test_server.py::test_from_attr_info_exceptions[attr_info2-Wrong number of argument for describing attribute] PASSED [ 85%] 403s tests/test_server.py::test_from_attr_info_exceptions[attr_info3-Wrong data type for describing mandatory information] PASSED [ 85%] 403s tests/test_server.py::test_from_attr_info_exceptions[attr_info4-Wrong data type for describing mandatory information] PASSED [ 85%] 404s tests/test_server.py::test_from_attr_info_exceptions[attr_info5-Wrong data type in attribute argument for attribute] PASSED [ 85%] 404s tests/test_server.py::test_from_attr_info_exceptions[attr_info6-Wrong data format in attribute argument for attribute] PASSED [ 85%] 404s 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%] 404s 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%] 404s 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%] 404s 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%] 404s 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%] 404s 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%] 404s tests/test_server.py::test_from_attr_info_exceptions[attr_info13-Wrong data write type in attribute argument] PASSED [ 86%] 404s tests/test_server.py::test_from_attr_info_exceptions[attr_info14-Wrong display level] PASSED [ 86%] 404s tests/test_server.py::test_from_attr_info_exceptions[attr_info15-Wrong polling period] PASSED [ 86%] 404s tests/test_server.py::test_from_attr_info_exceptions[attr_info16-Wrong memorized value] PASSED [ 86%] 404s tests/test_server.py::test_from_attr_info_exceptions[attr_info17-Missing 'enum_labels' key in attr_list definition] PASSED [ 86%] 404s tests/test_server.py::test_from_attr_info_hw_memorized PASSED [ 86%] 404s tests/test_server.py::test_from_attr_info_memorized PASSED [ 86%] 404s tests/test_server.py::test_device_repr_does_not_segfault_with_pytest PASSED [ 86%] 404s tests/test_telemetry.py::test_telemetry_available_constant_exists PASSED [ 86%] 404s tests/test_telemetry.py::test_telemetry_packages_available_if_telemetry_active SKIPPED [ 86%] 404s tests/test_telemetry.py::test_init_device_and_basic_span_details[Synchronous] SKIPPED [ 87%] 404s tests/test_telemetry.py::test_init_device_and_basic_span_details[Asyncio] SKIPPED [ 87%] 404s tests/test_telemetry.py::test_init_device_and_basic_span_details[Gevent] SKIPPED [ 87%] 404s tests/test_telemetry.py::test_delete_device[Synchronous] SKIPPED (Te...) [ 87%] 404s tests/test_telemetry.py::test_delete_device[Asyncio] SKIPPED (Teleme...) [ 87%] 404s tests/test_telemetry.py::test_delete_device[Gevent] SKIPPED (Telemet...) [ 87%] 404s tests/test_telemetry.py::test_state[Synchronous] SKIPPED (Telemetry ...) [ 87%] 404s tests/test_telemetry.py::test_state[Asyncio] SKIPPED (Telemetry not ...) [ 87%] 404s tests/test_telemetry.py::test_state[Gevent] SKIPPED (Telemetry not a...) [ 87%] 404s tests/test_telemetry.py::test_static_command[Synchronous] SKIPPED (T...) [ 87%] 404s tests/test_telemetry.py::test_static_command[Asyncio] SKIPPED (Telem...) [ 87%] 404s tests/test_telemetry.py::test_static_command[Gevent] SKIPPED (Teleme...) [ 87%] 404s tests/test_telemetry.py::test_static_attribute[Synchronous] SKIPPED [ 88%] 404s tests/test_telemetry.py::test_static_attribute[Asyncio] SKIPPED (Tel...) [ 88%] 404s tests/test_telemetry.py::test_static_attribute[Gevent] SKIPPED (Tele...) [ 88%] 404s tests/test_telemetry.py::test_user_span_traceid_propagates_to_tango[Synchronous] SKIPPED [ 88%] 404s tests/test_telemetry.py::test_user_span_traceid_propagates_to_tango[Asyncio] SKIPPED [ 88%] 404s tests/test_telemetry.py::test_user_span_traceid_propagates_to_tango[Gevent] SKIPPED [ 88%] 404s tests/test_telemetry.py::test_base_device_kernel_tracing_disabled_by_default SKIPPED [ 88%] 404s tests/test_telemetry.py::test_base_device_traces_if_kernel_tracing_enabled[Synchronous] SKIPPED [ 88%] 404s tests/test_telemetry.py::test_base_device_traces_if_kernel_tracing_enabled[Asyncio] SKIPPED [ 88%] 404s tests/test_telemetry.py::test_base_device_traces_if_kernel_tracing_enabled[Gevent] SKIPPED [ 88%] 405s tests/test_telemetry.py::test_no_device_traces_if_device_tracing_disabled[Synchronous] SKIPPED [ 88%] 405s tests/test_telemetry.py::test_no_device_traces_if_device_tracing_disabled[Asyncio] SKIPPED [ 88%] 405s tests/test_telemetry.py::test_no_device_traces_if_device_tracing_disabled[Gevent] SKIPPED [ 89%] 405s tests/test_test_context.py::test_no_warnings_in_test_context PASSED [ 89%] 405s tests/test_test_context.py::test_single_device[Synchronous] PASSED [ 89%] 405s tests/test_test_context.py::test_single_device[Asyncio] PASSED [ 89%] 405s tests/test_test_context.py::test_single_device[Gevent] PASSED [ 89%] 405s tests/test_test_context.py::test_single_device_old_api PASSED [ 89%] 405s tests/test_test_context.py::test_nested_single_device_in_same_process_failure SKIPPED [ 89%] 405s tests/test_test_context.py::test_nested_single_device_in_different_processes_success_without_short_names PASSED [ 89%] 406s tests/test_test_context.py::test_nested_single_device_in_different_processes_failure_with_short_names PASSED [ 89%] 406s tests/test_test_context.py::test_multi_devices_info[SimpleDevice-SimpleDevice] PASSED [ 89%] 406s tests/test_test_context.py::test_multi_devices_info[tango.test_utils.SimpleDevice-SimpleDevice] PASSED [ 89%] 406s tests/test_test_context.py::test_multi_devices_info[class_field2-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 406s tests/test_test_context.py::test_multi_devices_info[class_field3-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 406s tests/test_test_context.py::test_multi_devices_info[class_field4-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 406s tests/test_test_context.py::test_multi_devices_info[class_field5-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 406s tests/test_test_context.py::test_multi_with_single_device[Synchronous] PASSED [ 90%] 406s tests/test_test_context.py::test_multi_with_single_device[Asyncio] PASSED [ 90%] 407s tests/test_test_context.py::test_multi_with_single_device[Gevent] PASSED [ 90%] 407s tests/test_test_context.py::test_multi_with_single_device_old_api PASSED [ 90%] 407s tests/test_test_context.py::test_multi_with_two_devices[Synchronous] PASSED [ 90%] 407s tests/test_test_context.py::test_multi_with_two_devices[Asyncio] PASSED [ 90%] 407s tests/test_test_context.py::test_multi_with_two_devices[Gevent] PASSED [ 90%] 407s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2GreenModeUnspecified-None] PASSED [ 90%] 407s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2Synchronous-None] PASSED [ 91%] 407s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2Gevent-ValueError] PASSED [ 91%] 407s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2Asyncio-ValueError] PASSED [ 91%] 407s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2GreenModeUnspecified-None] PASSED [ 91%] 407s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2Synchronous-None] PASSED [ 91%] 408s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2Gevent-ValueError] PASSED [ 91%] 408s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2Asyncio-ValueError] PASSED [ 91%] 408s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2GreenModeUnspecified-ValueError] PASSED [ 91%] 408s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Synchronous-ValueError] PASSED [ 91%] 408s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Gevent-ValueError] PASSED [ 91%] 408s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Asyncio-None] PASSED [ 91%] 408s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2GreenModeUnspecified-ValueError] PASSED [ 91%] 408s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2Synchronous-ValueError] PASSED [ 92%] 408s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2Gevent-None] PASSED [ 92%] 408s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2Asyncio-ValueError] PASSED [ 92%] 408s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Synchronous-Asyncio-Asyncio-None-SynchronousExecutor] PASSED [ 92%] 408s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Synchronous-Gevent-Gevent-None-SynchronousExecutor] PASSED [ 92%] 408s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Synchronous-Synchronous-None-AsyncioExecutor] PASSED [ 92%] 408s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Gevent-Gevent-None-AsyncioExecutor] PASSED [ 92%] 408s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Gevent-Synchronous-Synchronous-None-GeventExecutor] PASSED [ 92%] 408s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Gevent-Asyncio-Asyncio-None-GeventExecutor] PASSED [ 92%] 409s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Synchronous-Asyncio-None-SynchronousExecutor] PASSED [ 92%] 409s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Synchronous-Gevent-None-SynchronousExecutor] PASSED [ 92%] 409s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Gevent-Synchronous-None-GeventExecutor] PASSED [ 92%] 409s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Gevent-Asyncio-None-GeventExecutor] PASSED [ 93%] 409s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-None-Synchronous-None-SynchronousExecutor] PASSED [ 93%] 409s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Synchronous-DeprecationWarning-AsyncioExecutor] PASSED [ 93%] 409s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Gevent-DeprecationWarning-AsyncioExecutor] PASSED [ 93%] 410s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-None-Asyncio-RuntimeError-AsyncioExecutor] PASSED [ 93%] 410s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-None-Gevent-RuntimeError-GeventExecutor] PASSED [ 93%] 411s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-None-Asyncio-RuntimeError-AsyncioExecutor] PASSED [ 93%] 411s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Gevent-None-Gevent-RuntimeError-GeventExecutor] PASSED [ 93%] 411s tests/test_test_context.py::test_multi_with_async_devices_initialised PASSED [ 93%] 411s tests/test_test_context.py::test_multi_device_access_via_test_context_methods PASSED [ 93%] 412s tests/test_test_context.py::test_multi_short_name_device_proxy_access_without_tango_db PASSED [ 93%] 412s tests/test_test_context.py::test_multi_short_name_device_proxy_with_dependencies_access_without_tango_db PASSED [ 94%] 412s tests/test_test_context.py::test_multi_short_name_attribute_proxy_access_without_tango_db PASSED [ 94%] 412s tests/test_test_context.py::test_single_short_name_device_proxy_access_without_tango_db PASSED [ 94%] 412s tests/test_test_context.py::test_single_short_name_attribute_proxy_access_without_tango_db PASSED [ 94%] 412s tests/test_test_context.py::test_multi_short_name_access_fails_if_override_disabled PASSED [ 94%] 412s tests/test_test_context.py::test_multi_device_proxy_cached PASSED [ 94%] 412s tests/test_test_context.py::test_multi_with_two_devices_with_properties[Synchronous] PASSED [ 94%] 413s tests/test_test_context.py::test_multi_with_two_devices_with_properties[Asyncio] PASSED [ 94%] 413s tests/test_test_context.py::test_multi_with_two_devices_with_properties[Gevent] PASSED [ 94%] 413s tests/test_test_context.py::test_multi_raises_on_invalid_file_database_properties PASSED [ 94%] 413s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config0] PASSED [ 94%] 413s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config1] PASSED [ 94%] 413s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config2] PASSED [ 95%] 413s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config3] PASSED [ 95%] 413s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config4] PASSED [ 95%] 413s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config5] PASSED [ 95%] 413s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config6] PASSED [ 95%] 413s tests/test_test_context.py::test_multi_with_memorized_attribute_values[False-None-0] PASSED [ 95%] 413s tests/test_test_context.py::test_multi_with_memorized_attribute_values[False-1-0] PASSED [ 95%] 413s tests/test_test_context.py::test_multi_with_memorized_attribute_values[True-None-0] PASSED [ 95%] 413s tests/test_test_context.py::test_multi_with_memorized_attribute_values[True-1-1] PASSED [ 95%] 413s tests/test_test_context.py::test_single_with_memorized_attribute_values[False-None-0] PASSED [ 95%] 413s tests/test_test_context.py::test_single_with_memorized_attribute_values[False-1-0] PASSED [ 95%] 413s tests/test_test_context.py::test_single_with_memorized_attribute_values[True-None-0] PASSED [ 95%] 413s tests/test_test_context.py::test_single_with_memorized_attribute_values[True-1-1] PASSED [ 96%] 413s tests/test_test_context.py::test_empty_string_property_bug[str-property_value0- ] PASSED [ 96%] 414s tests/test_test_context.py::test_empty_string_property_bug[property_type1-property_value1-expected_outcome1] PASSED [ 96%] 414s tests/test_test_context.py::test_empty_string_property_bug[property_type2-property_value2-expected_outcome2] PASSED [ 96%] 414s tests/test_test_context.py::test_test_context_async_device_proxy[True] PASSED [ 96%] 414s tests/test_test_context.py::test_test_context_async_device_proxy[False] PASSED [ 96%] 414s tests/test_test_context.py::test_test_context_multi_async_device_proxy[True] PASSED [ 96%] 414s tests/test_test_context.py::test_test_context_multi_async_device_proxy[False] PASSED [ 96%] 415s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[True-Futures] PASSED [ 96%] 415s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[True-Gevent] PASSED [ 96%] 415s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[False-Futures] PASSED [ 96%] 415s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[False-Gevent] PASSED [ 97%] 415s tests/test_test_context.py::test_forwarded_attributes[True] XFAIL (D...) [ 97%] 415s tests/test_test_context.py::test_forwarded_attributes[False] XFAIL (...) [ 97%] 415s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-a/b/c-a/b/c] PASSED [ 97%] 415s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-a/b/c/d-a/b/c/d] PASSED [ 97%] 415s 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%] 415s 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%] 415s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-no://trl/validation-no://trl/validation] PASSED [ 97%] 415s 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%] 415s 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%] 415s 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%] 415s 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%] 415s 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%] 415s 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%] 415s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[host:123-a/b/c] PASSED [ 98%] 415s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://-a/b/c] PASSED [ 98%] 415s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://:123-a/b/c] PASSED [ 98%] 415s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host-a/b/c] PASSED [ 98%] 415s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:0-a/b/c] PASSED [ 98%] 415s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:12/path-a/b/c] PASSED [ 98%] 416s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:123?query=1-a/b/c] PASSED [ 98%] 416s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:123#dbase=invalid-a/b/c] PASSED [ 98%] 416s tests/test_utils.py::test_global_state_default_set_and_clear PASSED [ 98%] 416s tests/test_utils.py::test_clear_global_var_without_set_does_not_raise PASSED [ 98%] 416s tests/test_utils.py::test_get_tango_type_valid PASSED [ 99%] 416s tests/test_utils.py::test_get_tango_type_invalid_raises_type_error PASSED [ 99%] 416s tests/test_utils.py::test_sequence_to_string_vector_and_back PASSED [ 99%] 416s tests/test_utils.py::test_sequence_to_double_vector_and_back PASSED [ 99%] 416s tests/test_utils.py::test_sequence_to_dbdevinfo_vector_and_back PASSED [ 99%] 416s tests/test_utils.py::test_sequence_to_dbdevexportinfo_vector_and_back PASSED [ 99%] 416s tests/test_utils.py::test_sequence_to_dbdata_vector_and_back PASSED [ 99%] 416s tests/test_utils.py::test_sequence_to_dbdevimport_vector_and_back PASSED [ 99%] 416s tests/test_utils.py::test_sequence_to_dbhistorylist_vector_and_back PASSED [ 99%] 416s tests/test_utils.py::test_sequence_to_devicedatalist_vector_and_back PASSED [ 99%] 416s tests/test_utils.py::test_sequence_to_devicedatahistorylist_vector_and_back PASSED [ 99%] 416s tests/test_zzz_deprecated_pytango_module.py::test_import_aliased_module PASSED [100%] 416s 416s =========== 1061 passed, 56 skipped, 53 xfailed in 210.89s (0:03:30) =========== 417s Testing with python3.14: 417s ============================= test session starts ============================== 417s platform linux -- Python 3.14.2, pytest-9.0.2, pluggy-1.6.0 -- /usr/bin/python3.14 417s cachedir: .pytest_cache 417s rootdir: /tmp/autopkgtest.NUz5QV/autopkgtest_tmp 417s plugins: typeguard-4.4.4, asyncio-1.3.0, forked-1.6.0, rerunfailures-16.1 417s asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function 418s collecting ... collected 1170 items 418s 418s tests/test_api_util.py::test_get_env_var PASSED [ 0%] 418s tests/test_async.py::test_green_mode_kwarg_for_proxy_methods FAILED [ 0%] 419s tests/test_async.py::test_async_attribute_polled PASSED [ 0%] 419s tests/test_async.py::test_async_attribute_with_callback[poll] SKIPPED [ 0%] 419s tests/test_async.py::test_async_attribute_with_callback[push] SKIPPED [ 0%] 419s tests/test_async.py::test_async_command_polled PASSED [ 0%] 420s tests/test_async.py::test_async_command_with_polled_callback[cmd_ok-123-123-False] PASSED [ 0%] 421s tests/test_async.py::test_async_command_with_polled_callback[cmd_timeout-123-None-True] PASSED [ 0%] 422s tests/test_async.py::test_async_command_with_polled_callback[cmd_exception-123-None-True] PASSED [ 0%] 422s tests/test_async.py::test_async_attribute_read_with_polled_callback[attr_ok-argout0-False] PASSED [ 0%] 423s tests/test_async.py::test_async_attribute_read_with_polled_callback[attr_timeout-None-True] PASSED [ 0%] 424s tests/test_async.py::test_async_attribute_read_with_polled_callback[attr_exception-argout2-False] PASSED [ 1%] 425s tests/test_async.py::test_async_attribute_write_with_polled_callback[attr_ok-False] PASSED [ 1%] 426s tests/test_async.py::test_async_attribute_write_with_polled_callback[attr_timeout-True] PASSED [ 1%] 427s tests/test_async.py::test_async_attribute_write_with_polled_callback[attr_exception-False] PASSED [ 1%] 427s tests/test_async.py::test_async_command_with_pushed_callback[cmd_ok-123-123-False] PASSED [ 1%] 428s tests/test_async.py::test_async_command_with_pushed_callback[cmd_timeout-123-None-True] PASSED [ 1%] 429s tests/test_async.py::test_async_command_with_pushed_callback[cmd_exception-123-None-True] PASSED [ 1%] 430s tests/test_async.py::test_async_attribute_read_with_pushed_callback[attr_ok-argout0-False] PASSED [ 1%] 431s tests/test_async.py::test_async_attribute_read_with_pushed_callback[attr_timeout-None-True] PASSED [ 1%] 431s tests/test_async.py::test_async_attribute_read_with_pushed_callback[attr_exception-argout2-False] PASSED [ 1%] 432s tests/test_async.py::test_async_attribute_write_with_pushed_callback[attr_ok-False] PASSED [ 1%] 433s tests/test_async.py::test_async_attribute_write_with_pushed_callback[attr_timeout-True] PASSED [ 1%] 434s tests/test_async.py::test_async_attribute_write_with_pushed_callback[attr_exception-False] PASSED [ 2%] 434s tests/test_async.py::test_async_exception_in_callback PASSED [ 2%] 436s tests/test_attrconfeventdata.py::test_attribute_configuration_event PASSED [ 2%] 436s tests/test_attrconfeventdata.py::test_attribute_configuration_event_set_errors PASSED [ 2%] 436s tests/test_attribute_proxy.py::test_ping[scalar_int] PASSED [ 2%] 436s tests/test_attribute_proxy.py::test_ping[spectrum_str] PASSED [ 2%] 436s tests/test_attribute_proxy.py::test_ping[image_float] PASSED [ 2%] 437s tests/test_attribute_proxy.py::test_state_status[scalar_int] PASSED [ 2%] 437s tests/test_attribute_proxy.py::test_state_status[spectrum_str] PASSED [ 2%] 437s tests/test_attribute_proxy.py::test_state_status[image_float] PASSED [ 2%] 437s tests/test_attribute_proxy.py::test_read_write_attribute[scalar_int] PASSED [ 2%] 437s tests/test_attribute_proxy.py::test_read_write_attribute[spectrum_str] PASSED [ 2%] 437s tests/test_attribute_proxy.py::test_read_write_attribute[image_float] PASSED [ 3%] 438s tests/test_attribute_proxy.py::test_attribute_poll[scalar_int] PASSED [ 3%] 438s tests/test_attribute_proxy.py::test_attribute_poll[spectrum_str] PASSED [ 3%] 439s tests/test_attribute_proxy.py::test_attribute_poll[image_float] PASSED [ 3%] 439s tests/test_attribute_proxy.py::test_read_write_attribute_async[scalar_int] PASSED [ 3%] 440s tests/test_attribute_proxy.py::test_read_write_attribute_async[spectrum_str] PASSED [ 3%] 440s tests/test_attribute_proxy.py::test_read_write_attribute_async[image_float] PASSED [ 3%] 440s tests/test_attribute_proxy.py::test_event[Synchronous] SKIPPED (This...) [ 3%] 440s tests/test_attribute_proxy.py::test_event[Futures] SKIPPED (This tes...) [ 3%] 440s tests/test_attribute_proxy.py::test_event[Gevent] SKIPPED (This test...) [ 3%] 440s tests/test_attribute_proxy.py::test_event[Asyncio] SKIPPED (This tes...) [ 3%] 440s tests/test_attributes.py::test_read_write_attribute[int-Synchronous] PASSED [ 4%] 441s tests/test_attributes.py::test_read_write_attribute[int-Asyncio] FAILED [ 4%] 441s tests/test_attributes.py::test_read_write_attribute[int-Gevent] PASSED [ 4%] 441s tests/test_attributes.py::test_read_write_attribute[float-Synchronous] PASSED [ 4%] 441s tests/test_attributes.py::test_read_write_attribute[float-Asyncio] FAILED [ 4%] 441s tests/test_attributes.py::test_read_write_attribute[float-Gevent] PASSED [ 4%] 442s tests/test_attributes.py::test_read_write_attribute[str-Synchronous] PASSED [ 4%] 442s tests/test_attributes.py::test_read_write_attribute[str-Asyncio] FAILED [ 4%] 442s tests/test_attributes.py::test_read_write_attribute[str-Gevent] PASSED [ 4%] 442s tests/test_attributes.py::test_read_write_attribute[bool-Synchronous] PASSED [ 4%] 443s tests/test_attributes.py::test_read_write_attribute[bool-Asyncio] FAILED [ 4%] 443s tests/test_attributes.py::test_read_write_attribute[bool-Gevent] PASSED [ 4%] 443s tests/test_attributes.py::test_read_write_attribute[(int,)-Synchronous] PASSED [ 5%] 443s tests/test_attributes.py::test_read_write_attribute[(int,)-Asyncio] FAILED [ 5%] 443s tests/test_attributes.py::test_read_write_attribute[(int,)-Gevent] PASSED [ 5%] 444s tests/test_attributes.py::test_read_write_attribute[(float,)-Synchronous] PASSED [ 5%] 444s tests/test_attributes.py::test_read_write_attribute[(float,)-Asyncio] FAILED [ 5%] 444s tests/test_attributes.py::test_read_write_attribute[(float,)-Gevent] PASSED [ 5%] 444s tests/test_attributes.py::test_read_write_attribute[(str,)-Synchronous] PASSED [ 5%] 445s tests/test_attributes.py::test_read_write_attribute[(str,)-Asyncio] FAILED [ 5%] 445s tests/test_attributes.py::test_read_write_attribute[(str,)-Gevent] PASSED [ 5%] 445s tests/test_attributes.py::test_read_write_attribute[(bool,)-Synchronous] PASSED [ 5%] 445s tests/test_attributes.py::test_read_write_attribute[(bool,)-Asyncio] FAILED [ 5%] 445s tests/test_attributes.py::test_read_write_attribute[(bool,)-Gevent] PASSED [ 5%] 445s tests/test_attributes.py::test_read_write_attribute[((int,),)-Synchronous] PASSED [ 6%] 446s tests/test_attributes.py::test_read_write_attribute[((int,),)-Asyncio] FAILED [ 6%] 446s tests/test_attributes.py::test_read_write_attribute[((int,),)-Gevent] PASSED [ 6%] 446s tests/test_attributes.py::test_read_write_attribute[((float,),)-Synchronous] PASSED [ 6%] 447s tests/test_attributes.py::test_read_write_attribute[((float,),)-Asyncio] FAILED [ 6%] 447s tests/test_attributes.py::test_read_write_attribute[((float,),)-Gevent] PASSED [ 6%] 447s tests/test_attributes.py::test_read_write_attribute[((str,),)-Synchronous] PASSED [ 6%] 447s tests/test_attributes.py::test_read_write_attribute[((str,),)-Asyncio] FAILED [ 6%] 447s tests/test_attributes.py::test_read_write_attribute[((str,),)-Gevent] PASSED [ 6%] 447s tests/test_attributes.py::test_read_write_attribute[((bool,),)-Synchronous] PASSED [ 6%] 448s tests/test_attributes.py::test_read_write_attribute[((bool,),)-Asyncio] FAILED [ 6%] 448s tests/test_attributes.py::test_read_write_attribute[((bool,),)-Gevent] PASSED [ 7%] 448s tests/test_attributes.py::test_wrong_encoding_string PASSED [ 7%] 448s tests/test_attributes.py::test_attribute_declared_with_typing[int-True] PASSED [ 7%] 448s tests/test_attributes.py::test_attribute_declared_with_typing[int-False] PASSED [ 7%] 448s tests/test_attributes.py::test_attribute_declared_with_typing[float-True] PASSED [ 7%] 448s tests/test_attributes.py::test_attribute_declared_with_typing[float-False] PASSED [ 7%] 448s tests/test_attributes.py::test_attribute_declared_with_typing[str-True] PASSED [ 7%] 448s tests/test_attributes.py::test_attribute_declared_with_typing[str-False] PASSED [ 7%] 448s tests/test_attributes.py::test_attribute_declared_with_typing[bool-True] PASSED [ 7%] 448s tests/test_attributes.py::test_attribute_declared_with_typing[bool-False] PASSED [ 7%] 449s tests/test_attributes.py::test_attribute_declared_with_typing[(int,)-True] PASSED [ 7%] 449s tests/test_attributes.py::test_attribute_declared_with_typing[(int,)-False] PASSED [ 7%] 449s tests/test_attributes.py::test_attribute_declared_with_typing[(float,)-True] PASSED [ 8%] 449s tests/test_attributes.py::test_attribute_declared_with_typing[(float,)-False] PASSED [ 8%] 449s tests/test_attributes.py::test_attribute_declared_with_typing[(str,)-True] PASSED [ 8%] 449s tests/test_attributes.py::test_attribute_declared_with_typing[(str,)-False] PASSED [ 8%] 449s tests/test_attributes.py::test_attribute_declared_with_typing[(bool,)-True] PASSED [ 8%] 449s tests/test_attributes.py::test_attribute_declared_with_typing[(bool,)-False] PASSED [ 8%] 449s tests/test_attributes.py::test_attribute_declared_with_typing[((int,),)-True] PASSED [ 8%] 449s tests/test_attributes.py::test_attribute_declared_with_typing[((int,),)-False] PASSED [ 8%] 449s tests/test_attributes.py::test_attribute_declared_with_typing[((float,),)-True] PASSED [ 8%] 449s tests/test_attributes.py::test_attribute_declared_with_typing[((float,),)-False] PASSED [ 8%] 450s tests/test_attributes.py::test_attribute_declared_with_typing[((str,),)-True] PASSED [ 8%] 450s tests/test_attributes.py::test_attribute_declared_with_typing[((str,),)-False] PASSED [ 8%] 450s tests/test_attributes.py::test_attribute_declared_with_typing[((bool,),)-True] PASSED [ 9%] 450s tests/test_attributes.py::test_attribute_declared_with_typing[((bool,),)-False] PASSED [ 9%] 450s tests/test_attributes.py::test_attribute_self_typed_with_not_defined_name PASSED [ 9%] 450s tests/test_attributes.py::test_read_write_attribute_with_unbound_functions PASSED [ 9%] 450s tests/test_attributes.py::test_read_write_attribute_decorated_methods[Synchronous] PASSED [ 9%] 450s tests/test_attributes.py::test_read_write_attribute_decorated_methods[Asyncio] FAILED [ 9%] 450s tests/test_attributes.py::test_read_write_attribute_decorated_methods[Gevent] PASSED [ 9%] 451s tests/test_attributes.py::test_read_write_wvalue_attribute[int-True] PASSED [ 9%] 451s tests/test_attributes.py::test_read_write_wvalue_attribute[int-False] PASSED [ 9%] 451s tests/test_attributes.py::test_read_write_wvalue_attribute[float-True] PASSED [ 9%] 451s tests/test_attributes.py::test_read_write_wvalue_attribute[float-False] PASSED [ 9%] 451s tests/test_attributes.py::test_read_write_wvalue_attribute[str-True] PASSED [ 10%] 451s tests/test_attributes.py::test_read_write_wvalue_attribute[str-False] PASSED [ 10%] 451s tests/test_attributes.py::test_read_write_wvalue_attribute[bool-True] PASSED [ 10%] 451s tests/test_attributes.py::test_read_write_wvalue_attribute[bool-False] PASSED [ 10%] 451s tests/test_attributes.py::test_read_write_wvalue_attribute[(int,)-True] PASSED [ 10%] 451s tests/test_attributes.py::test_read_write_wvalue_attribute[(int,)-False] PASSED [ 10%] 451s tests/test_attributes.py::test_read_write_wvalue_attribute[(float,)-True] PASSED [ 10%] 451s tests/test_attributes.py::test_read_write_wvalue_attribute[(float,)-False] PASSED [ 10%] 451s tests/test_attributes.py::test_read_write_wvalue_attribute[(str,)-True] PASSED [ 10%] 452s tests/test_attributes.py::test_read_write_wvalue_attribute[(str,)-False] PASSED [ 10%] 452s tests/test_attributes.py::test_read_write_wvalue_attribute[(bool,)-True] PASSED [ 10%] 452s tests/test_attributes.py::test_read_write_wvalue_attribute[(bool,)-False] PASSED [ 10%] 452s tests/test_attributes.py::test_read_write_wvalue_attribute[((int,),)-True] PASSED [ 11%] 452s tests/test_attributes.py::test_read_write_wvalue_attribute[((int,),)-False] PASSED [ 11%] 452s tests/test_attributes.py::test_read_write_wvalue_attribute[((float,),)-True] PASSED [ 11%] 452s tests/test_attributes.py::test_read_write_wvalue_attribute[((float,),)-False] PASSED [ 11%] 452s tests/test_attributes.py::test_read_write_wvalue_attribute[((str,),)-True] PASSED [ 11%] 452s tests/test_attributes.py::test_read_write_wvalue_attribute[((str,),)-False] PASSED [ 11%] 452s tests/test_attributes.py::test_read_write_wvalue_attribute[((bool,),)-True] PASSED [ 11%] 452s tests/test_attributes.py::test_read_write_wvalue_attribute[((bool,),)-False] PASSED [ 11%] 452s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-float] PASSED [ 11%] 453s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-int] PASSED [ 11%] 453s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-str] PASSED [ 11%] 453s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Numpy-bool] PASSED [ 11%] 453s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-float] PASSED [ 12%] 453s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-int] PASSED [ 12%] 453s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-str] PASSED [ 12%] 453s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Tuple-bool] PASSED [ 12%] 453s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-float] PASSED [ 12%] 453s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-int] PASSED [ 12%] 453s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-str] PASSED [ 12%] 453s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.List-bool] PASSED [ 12%] 453s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-float] PASSED [ 12%] 453s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-int] PASSED [ 12%] 454s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-str] XFAIL [ 12%] 454s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.Bytes-bool] PASSED [ 12%] 454s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-float] PASSED [ 13%] 454s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-int] PASSED [ 13%] 454s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-str] XFAIL [ 13%] 454s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.ByteArray-bool] PASSED [ 13%] 454s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-float] PASSED [ 13%] 454s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-int] PASSED [ 13%] 454s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-str] XFAIL [ 13%] 454s tests/test_attributes.py::test_write_read_empty_spectrum_attribute[extract_as.String-bool] PASSED [ 13%] 455s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-Device_4Impl] PASSED [ 13%] 455s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-Device_5Impl] PASSED [ 13%] 455s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-Device_6Impl] PASSED [ 13%] 455s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-float-LatestDeviceImpl] PASSED [ 14%] 455s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-Device_4Impl] PASSED [ 14%] 455s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-Device_5Impl] PASSED [ 14%] 455s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-Device_6Impl] PASSED [ 14%] 455s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-int-LatestDeviceImpl] PASSED [ 14%] 455s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-Device_4Impl] PASSED [ 14%] 456s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-Device_5Impl] PASSED [ 14%] 456s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-Device_6Impl] PASSED [ 14%] 456s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-str-LatestDeviceImpl] PASSED [ 14%] 456s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-Device_4Impl] PASSED [ 14%] 456s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-Device_5Impl] PASSED [ 14%] 456s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-Device_6Impl] PASSED [ 14%] 456s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Numpy-bool-LatestDeviceImpl] PASSED [ 15%] 456s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-Device_4Impl] PASSED [ 15%] 457s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-Device_5Impl] PASSED [ 15%] 457s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-Device_6Impl] PASSED [ 15%] 457s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-float-LatestDeviceImpl] PASSED [ 15%] 457s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-Device_4Impl] PASSED [ 15%] 457s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-Device_5Impl] PASSED [ 15%] 457s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-Device_6Impl] PASSED [ 15%] 457s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-int-LatestDeviceImpl] PASSED [ 15%] 458s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-Device_4Impl] PASSED [ 15%] 458s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-Device_5Impl] PASSED [ 15%] 458s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-Device_6Impl] PASSED [ 15%] 458s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-str-LatestDeviceImpl] PASSED [ 16%] 458s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-Device_4Impl] PASSED [ 16%] 458s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-Device_5Impl] PASSED [ 16%] 458s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-Device_6Impl] PASSED [ 16%] 458s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Tuple-bool-LatestDeviceImpl] PASSED [ 16%] 459s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-Device_4Impl] PASSED [ 16%] 459s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-Device_5Impl] PASSED [ 16%] 459s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-Device_6Impl] PASSED [ 16%] 459s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-float-LatestDeviceImpl] PASSED [ 16%] 459s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-Device_4Impl] PASSED [ 16%] 459s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-Device_5Impl] PASSED [ 16%] 459s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-Device_6Impl] PASSED [ 17%] 459s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-int-LatestDeviceImpl] PASSED [ 17%] 459s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-Device_4Impl] PASSED [ 17%] 460s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-Device_5Impl] PASSED [ 17%] 460s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-Device_6Impl] PASSED [ 17%] 460s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-str-LatestDeviceImpl] PASSED [ 17%] 460s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-Device_4Impl] PASSED [ 17%] 460s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-Device_5Impl] PASSED [ 17%] 460s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-Device_6Impl] PASSED [ 17%] 460s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.List-bool-LatestDeviceImpl] PASSED [ 17%] 460s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-Device_4Impl] PASSED [ 17%] 461s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-Device_5Impl] PASSED [ 17%] 461s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-Device_6Impl] PASSED [ 18%] 461s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-float-LatestDeviceImpl] PASSED [ 18%] 461s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-Device_4Impl] PASSED [ 18%] 461s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-Device_5Impl] PASSED [ 18%] 461s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-Device_6Impl] PASSED [ 18%] 461s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-int-LatestDeviceImpl] PASSED [ 18%] 461s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-Device_4Impl] XFAIL [ 18%] 462s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-Device_5Impl] XFAIL [ 18%] 462s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-Device_6Impl] XFAIL [ 18%] 462s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-str-LatestDeviceImpl] XFAIL [ 18%] 462s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-Device_4Impl] PASSED [ 18%] 462s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-Device_5Impl] PASSED [ 18%] 462s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-Device_6Impl] PASSED [ 19%] 462s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.Bytes-bool-LatestDeviceImpl] PASSED [ 19%] 463s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-Device_4Impl] PASSED [ 19%] 463s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-Device_5Impl] PASSED [ 19%] 463s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-Device_6Impl] PASSED [ 19%] 463s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-float-LatestDeviceImpl] PASSED [ 19%] 463s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-Device_4Impl] PASSED [ 19%] 463s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-Device_5Impl] PASSED [ 19%] 463s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-Device_6Impl] PASSED [ 19%] 463s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-int-LatestDeviceImpl] PASSED [ 19%] 463s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-Device_4Impl] XFAIL [ 19%] 464s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-Device_5Impl] XFAIL [ 20%] 464s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-Device_6Impl] XFAIL [ 20%] 464s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-str-LatestDeviceImpl] XFAIL [ 20%] 464s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-Device_4Impl] PASSED [ 20%] 464s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-Device_5Impl] PASSED [ 20%] 464s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-Device_6Impl] PASSED [ 20%] 464s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.ByteArray-bool-LatestDeviceImpl] PASSED [ 20%] 464s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-Device_4Impl] PASSED [ 20%] 464s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-Device_5Impl] PASSED [ 20%] 464s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-Device_6Impl] PASSED [ 20%] 464s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-float-LatestDeviceImpl] PASSED [ 20%] 464s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-Device_4Impl] PASSED [ 20%] 465s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-Device_5Impl] PASSED [ 21%] 465s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-Device_6Impl] PASSED [ 21%] 465s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-int-LatestDeviceImpl] PASSED [ 21%] 465s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-Device_4Impl] XFAIL [ 21%] 465s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-Device_5Impl] XFAIL [ 21%] 465s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-Device_6Impl] XFAIL [ 21%] 465s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-str-LatestDeviceImpl] XFAIL [ 21%] 465s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-Device_4Impl] PASSED [ 21%] 465s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-Device_5Impl] PASSED [ 21%] 465s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-Device_6Impl] PASSED [ 21%] 465s tests/test_attributes.py::test_write_read_empty_spectrum_attribute_classic_api[extract_as.String-bool-LatestDeviceImpl] PASSED [ 21%] 465s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SCALAR-state] PASSED [ 21%] 466s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SCALAR-DevState0] PASSED [ 22%] 466s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SCALAR-DevState1] PASSED [ 22%] 466s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SPECTRUM-state] PASSED [ 22%] 466s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SPECTRUM-DevState0] PASSED [ 22%] 466s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[SPECTRUM-DevState1] PASSED [ 22%] 466s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[IMAGE-state] PASSED [ 22%] 466s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[IMAGE-DevState0] PASSED [ 22%] 466s tests/test_attributes.py::test_ensure_devstate_is_pytango_enum[IMAGE-DevState1] PASSED [ 22%] 466s tests/test_attributes.py::test_read_write_attribute_enum[SCALAR] PASSED [ 22%] 466s tests/test_attributes.py::test_read_write_attribute_enum[SPECTRUM] PASSED [ 22%] 466s tests/test_attributes.py::test_read_write_attribute_enum[IMAGE] PASSED [ 22%] 466s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SCALAR-DevState] PASSED [ 22%] 466s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SCALAR-GoodEnum] PASSED [ 23%] 466s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SPECTRUM-DevState] PASSED [ 23%] 466s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[SPECTRUM-GoodEnum] PASSED [ 23%] 466s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[IMAGE-DevState] PASSED [ 23%] 467s tests/test_attributes.py::test_enum_devstate_attribute_declared_with_typing[IMAGE-GoodEnum] PASSED [ 23%] 467s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[int] PASSED [ 23%] 467s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[float] PASSED [ 23%] 467s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[str] PASSED [ 23%] 467s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[bool] PASSED [ 23%] 467s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(int,)] PASSED [ 23%] 467s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(float,)] PASSED [ 23%] 467s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(str,)] PASSED [ 24%] 467s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[(bool,)] PASSED [ 24%] 467s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((int,),)] PASSED [ 24%] 467s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((float,),)] PASSED [ 24%] 467s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((str,),)] PASSED [ 24%] 467s tests/test_attributes.py::test_read_attribute_with_invalid_quality_is_none[((bool,),)] PASSED [ 24%] 468s tests/test_attributes.py::test_read_enum_attribute_with_invalid_quality_is_none PASSED [ 24%] 468s tests/test_attributes.py::test_wrong_attribute_read PASSED [ 24%] 468s tests/test_attributes.py::test_attribute_access_with_default_method_names PASSED [ 24%] 468s tests/test_attributes.py::test_read_write_dynamic_attribute[low_level_read-Synchronous] PASSED [ 24%] 468s tests/test_attributes.py::test_read_write_dynamic_attribute[low_level_read-Asyncio] FAILED [ 24%] 468s tests/test_attributes.py::test_read_write_dynamic_attribute[low_level_read-Gevent] PASSED [ 24%] 468s tests/test_attributes.py::test_read_write_dynamic_attribute[high_level_read-Synchronous] PASSED [ 25%] 469s tests/test_attributes.py::test_read_write_dynamic_attribute[high_level_read-Asyncio] FAILED [ 25%] 469s tests/test_attributes.py::test_read_write_dynamic_attribute[high_level_read-Gevent] PASSED [ 25%] 469s tests/test_attributes.py::test_async_add_remove_dynamic_attribute FAILED [ 25%] 469s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[int] PASSED [ 25%] 469s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[float] PASSED [ 25%] 469s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[str] PASSED [ 25%] 469s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[bool] PASSED [ 25%] 469s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(int,)] PASSED [ 25%] 469s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(float,)] PASSED [ 25%] 469s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(str,)] PASSED [ 25%] 470s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[(bool,)] PASSED [ 25%] 470s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((int,),)] PASSED [ 26%] 470s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((float,),)] PASSED [ 26%] 470s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((str,),)] PASSED [ 26%] 470s tests/test_attributes.py::test_dynamic_attribute_declared_with_typing[((bool,),)] PASSED [ 26%] 470s tests/test_attributes.py::test_dynamic_attribute_self_typed_with_not_defined_name PASSED [ 26%] 470s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[bool, SCALAR] PASSED [ 26%] 470s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[bool], SPECTRUM] PASSED [ 26%] 470s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint8, SCALAR] PASSED [ 26%] 470s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint8], SPECTRUM] PASSED [ 26%] 470s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[int16, SCALAR] PASSED [ 26%] 470s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[int16], SPECTRUM] PASSED [ 26%] 470s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint16, SCALAR] PASSED [ 27%] 471s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint16], SPECTRUM] PASSED [ 27%] 471s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[int32, SCALAR] PASSED [ 27%] 471s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[int32], SPECTRUM] PASSED [ 27%] 471s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint32, SCALAR] PASSED [ 27%] 471s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint32], SPECTRUM] PASSED [ 27%] 471s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[int64, SCALAR] PASSED [ 27%] 471s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[int64], SPECTRUM] PASSED [ 27%] 471s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[uint64, SCALAR] PASSED [ 27%] 471s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[uint64], SPECTRUM] PASSED [ 27%] 471s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[float64, SCALAR] PASSED [ 27%] 471s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[float64], SPECTRUM] PASSED [ 27%] 471s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[float32, SCALAR] PASSED [ 28%] 472s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.NDarray[float32], SPECTRUM] PASSED [ 28%] 472s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[bool], IMAGE] PASSED [ 28%] 472s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint8], IMAGE] PASSED [ 28%] 472s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[int16], IMAGE] PASSED [ 28%] 472s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint16], IMAGE] PASSED [ 28%] 472s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[int32], IMAGE] PASSED [ 28%] 472s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint32], IMAGE] PASSED [ 28%] 472s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[int64], IMAGE] PASSED [ 28%] 472s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[uint64], IMAGE] PASSED [ 28%] 472s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[float64], IMAGE] PASSED [ 28%] 472s tests/test_attributes.py::test_attribute_declared_with_numpy_typing[np.n2array[float32], IMAGE] PASSED [ 28%] 472s tests/test_attributes.py::test_attribute_wrong_declared_with_numpy_typing[RuntimeError: AttrDataFormat has to be specified] PASSED [ 29%] 472s tests/test_attributes.py::test_attribute_wrong_declared_with_numpy_typing[DevFailed: Maximum y dim. wrongly defined] PASSED [ 29%] 472s tests/test_attributes.py::test_attribute_wrong_declared_with_numpy_typing[TypeError: No registered converter] PASSED [ 29%] 473s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_default_names[Synchronous] PASSED [ 29%] 473s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_default_names[Asyncio] FAILED [ 29%] 473s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_default_names[Gevent] PASSED [ 29%] 473s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_user_names[Synchronous] PASSED [ 29%] 473s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_user_names[Asyncio] FAILED [ 29%] 474s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_user_names[Gevent] PASSED [ 29%] 474s tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_shared_user_functions PASSED [ 29%] 474s tests/test_attributes.py::test_read_write_dynamic_attribute_enum[SCALAR] PASSED [ 29%] 474s tests/test_attributes.py::test_read_write_dynamic_attribute_enum[SPECTRUM] PASSED [ 30%] 474s tests/test_attributes.py::test_read_write_dynamic_attribute_enum[IMAGE] PASSED [ 30%] 474s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SCALAR-DevState] PASSED [ 30%] 474s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SCALAR-GoodEnum] PASSED [ 30%] 474s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SPECTRUM-DevState] PASSED [ 30%] 474s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[SPECTRUM-GoodEnum] PASSED [ 30%] 474s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[IMAGE-DevState] PASSED [ 30%] 474s tests/test_attributes.py::test_enum_devstate_dynamic_attribute_declared_with_typing[IMAGE-GoodEnum] PASSED [ 30%] 474s tests/test_attributes.py::test_read_write_dynamic_attribute_is_allowed_with_async[Synchronous] PASSED [ 30%] 475s tests/test_attributes.py::test_read_write_dynamic_attribute_is_allowed_with_async[Asyncio] FAILED [ 30%] 475s tests/test_attributes.py::test_read_write_dynamic_attribute_is_allowed_with_async[Gevent] PASSED [ 30%] 475s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Synchronous-True] PASSED [ 30%] 475s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Synchronous-False] PASSED [ 31%] 475s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Asyncio-True] FAILED [ 31%] 476s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Asyncio-False] FAILED [ 31%] 476s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Gevent-True] PASSED [ 31%] 476s tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Gevent-False] PASSED [ 31%] 476s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[Device_4Impl] PASSED [ 31%] 476s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[Device_5Impl] PASSED [ 31%] 476s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[Device_6Impl] PASSED [ 31%] 476s tests/test_attributes.py::test_dynamic_attribute_using_classic_api_like_sardana[LatestDeviceImpl] PASSED [ 31%] 476s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[True-low_level] PASSED [ 31%] 476s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[True-high_level] PASSED [ 31%] 477s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[False-low_level] PASSED [ 31%] 477s tests/test_attributes.py::test_dynamic_attribute_with_unbound_functions[False-high_level] PASSED [ 32%] 477s tests/test_attributes.py::test_attribute_decorators[Synchronous] PASSED [ 32%] 477s tests/test_attributes.py::test_attribute_decorators[Asyncio] FAILED [ 32%] 477s tests/test_attributes.py::test_attribute_decorators[Gevent] PASSED [ 32%] 477s tests/test_attributes.py::test_attribute_info_description PASSED [ 32%] 477s tests/test_attributes.py::test_read_only_dynamic_attribute_with_dummy_write_method[low_level_read] PASSED [ 32%] 478s tests/test_attributes.py::test_read_only_dynamic_attribute_with_dummy_write_method[high_level_read] PASSED [ 32%] 478s tests/test_attributes.py::test_dynamic_attribute_with_method_in_other_class PASSED [ 32%] 478s tests/test_attributes.py::test_polled_attribute[Synchronous] PASSED [ 32%] 478s tests/test_attributes.py::test_polled_attribute[Asyncio] FAILED [ 32%] 478s tests/test_attributes.py::test_polled_attribute[Gevent] PASSED [ 32%] 478s tests/test_attributes.py::test_read_write_dev_encoded[str] PASSED [ 32%] 478s tests/test_attributes.py::test_read_write_dev_encoded[bytes] PASSED [ 33%] 478s tests/test_attributes.py::test_read_write_dev_encoded[bytearray] PASSED [ 33%] 479s tests/test_attributes.py::test_dev_encoded_wrong_encoding PASSED [ 33%] 479s tests/test_attributes.py::test_set_value_None PASSED [ 33%] 479s tests/test_attributes.py::test_encoded_attribute[gray8] PASSED [ 33%] 479s tests/test_attributes.py::test_encoded_attribute[gray16] PASSED [ 33%] 479s tests/test_attributes.py::test_encoded_attribute[rgb24] PASSED [ 33%] 479s tests/test_attributes.py::test_encoded_attribute[jpeg_gray8] PASSED [ 33%] 479s tests/test_attributes.py::test_encoded_attribute[jpeg_rgb24] PASSED [ 33%] 479s tests/test_attributes.py::test_encoded_attribute[jpeg_rgb32] XFAIL (...) [ 33%] 485s tests/test_attributes.py::test_dev_encoded_memory_usage PASSED [ 33%] 485s tests/test_attributes.py::test_attribute_list PASSED [ 34%] 485s tests/test_auto_tango_allow_threads.py::test_dont_crash_with_nested_tango_allow_threads PASSED [ 34%] 485s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_DEVICE-True] PASSED [ 34%] 488s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_DEVICE-False] PASSED [ 34%] 488s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_CLASS-True] XFAIL [ 34%] 492s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_CLASS-False] PASSED [ 34%] 492s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_PROCESS-True] XFAIL [ 34%] 495s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-BY_PROCESS-False] PASSED [ 34%] 495s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-NO_SYNC-True] PASSED [ 34%] 495s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Synchronous-NO_SYNC-False] PASSED [ 34%] 495s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_DEVICE-True] PASSED [ 34%] 499s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_DEVICE-False] PASSED [ 34%] 499s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_CLASS-True] XFAIL [ 35%] 502s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_CLASS-False] PASSED [ 35%] 502s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_PROCESS-True] XFAIL [ 35%] 505s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-BY_PROCESS-False] PASSED [ 35%] 505s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-NO_SYNC-True] PASSED [ 35%] 505s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Asyncio-NO_SYNC-False] PASSED [ 35%] 505s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_DEVICE-True] PASSED [ 35%] 509s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_DEVICE-False] PASSED [ 35%] 509s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_CLASS-True] XFAIL [ 35%] 512s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_CLASS-False] PASSED [ 35%] 512s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_PROCESS-True] XFAIL [ 35%] 515s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-BY_PROCESS-False] PASSED [ 35%] 516s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-NO_SYNC-True] PASSED [ 36%] 516s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_same_thread[Gevent-NO_SYNC-False] PASSED [ 36%] 519s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_DEVICE-True] PASSED [ 36%] 522s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_DEVICE-False] PASSED [ 36%] 526s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_CLASS-True] PASSED [ 36%] 529s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_CLASS-False] PASSED [ 36%] 532s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_PROCESS-True] PASSED [ 36%] 535s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-BY_PROCESS-False] PASSED [ 36%] 535s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-NO_SYNC-True] PASSED [ 36%] 536s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Synchronous-NO_SYNC-False] PASSED [ 36%] 539s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_DEVICE-True] PASSED [ 36%] 542s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_DEVICE-False] PASSED [ 37%] 545s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_CLASS-True] PASSED [ 37%] 549s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_CLASS-False] PASSED [ 37%] 552s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_PROCESS-True] PASSED [ 37%] 555s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-BY_PROCESS-False] PASSED [ 37%] 555s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-NO_SYNC-True] PASSED [ 37%] 555s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Asyncio-NO_SYNC-False] PASSED [ 37%] 559s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_DEVICE-True] PASSED [ 37%] 562s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_DEVICE-False] PASSED [ 37%] 565s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_CLASS-True] PASSED [ 37%] 568s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_CLASS-False] PASSED [ 37%] 572s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_PROCESS-True] PASSED [ 37%] 575s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-BY_PROCESS-False] PASSED [ 38%] 575s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-NO_SYNC-True] PASSED [ 38%] 575s tests/test_auto_tango_allow_threads.py::test_monitor_force_unlock_from_different_thread[Gevent-NO_SYNC-False] PASSED [ 38%] 575s tests/test_commands.py::test_identity_command[int-Synchronous] PASSED [ 38%] 575s tests/test_commands.py::test_identity_command[int-Asyncio] FAILED [ 38%] 576s tests/test_commands.py::test_identity_command[int-Gevent] PASSED [ 38%] 576s tests/test_commands.py::test_identity_command[float-Synchronous] PASSED [ 38%] 576s tests/test_commands.py::test_identity_command[float-Asyncio] FAILED [ 38%] 576s tests/test_commands.py::test_identity_command[float-Gevent] PASSED [ 38%] 576s tests/test_commands.py::test_identity_command[str-Synchronous] PASSED [ 38%] 576s tests/test_commands.py::test_identity_command[str-Asyncio] FAILED [ 38%] 577s tests/test_commands.py::test_identity_command[str-Gevent] PASSED [ 38%] 577s tests/test_commands.py::test_identity_command[bool-Synchronous] PASSED [ 39%] 577s tests/test_commands.py::test_identity_command[bool-Asyncio] FAILED [ 39%] 577s tests/test_commands.py::test_identity_command[bool-Gevent] PASSED [ 39%] 577s tests/test_commands.py::test_identity_command[(int,)-Synchronous] PASSED [ 39%] 578s tests/test_commands.py::test_identity_command[(int,)-Asyncio] FAILED [ 39%] 578s tests/test_commands.py::test_identity_command[(int,)-Gevent] PASSED [ 39%] 578s tests/test_commands.py::test_identity_command[(float,)-Synchronous] PASSED [ 39%] 578s tests/test_commands.py::test_identity_command[(float,)-Asyncio] FAILED [ 39%] 578s tests/test_commands.py::test_identity_command[(float,)-Gevent] PASSED [ 39%] 578s tests/test_commands.py::test_identity_command[(str,)-Synchronous] PASSED [ 39%] 578s tests/test_commands.py::test_identity_command[(str,)-Asyncio] FAILED [ 39%] 579s tests/test_commands.py::test_identity_command[(str,)-Gevent] PASSED [ 40%] 579s tests/test_commands.py::test_identity_command[(bool,)-Synchronous] XFAIL [ 40%] 579s tests/test_commands.py::test_identity_command[(bool,)-Asyncio] XFAIL [ 40%] 579s tests/test_commands.py::test_identity_command[(bool,)-Gevent] XFAIL [ 40%] 579s tests/test_commands.py::test_identity_command[DevVarLongStringArray-Synchronous] PASSED [ 40%] 579s tests/test_commands.py::test_identity_command[DevVarLongStringArray-Asyncio] FAILED [ 40%] 579s tests/test_commands.py::test_identity_command[DevVarLongStringArray-Gevent] PASSED [ 40%] 579s tests/test_commands.py::test_identity_command[DevVarDoubleStringArray-Synchronous] PASSED [ 40%] 580s tests/test_commands.py::test_identity_command[DevVarDoubleStringArray-Asyncio] FAILED [ 40%] 580s tests/test_commands.py::test_identity_command[DevVarDoubleStringArray-Gevent] PASSED [ 40%] 580s tests/test_commands.py::test_identity_command_with_typing[int] PASSED [ 40%] 580s tests/test_commands.py::test_identity_command_with_typing[float] PASSED [ 40%] 580s tests/test_commands.py::test_identity_command_with_typing[str] PASSED [ 41%] 580s tests/test_commands.py::test_identity_command_with_typing[bool] PASSED [ 41%] 580s tests/test_commands.py::test_identity_command_with_typing[(int,)] PASSED [ 41%] 580s tests/test_commands.py::test_identity_command_with_typing[(float,)] PASSED [ 41%] 580s tests/test_commands.py::test_identity_command_with_typing[(str,)] PASSED [ 41%] 580s tests/test_commands.py::test_identity_command_with_typing[(bool,)] XFAIL [ 41%] 580s tests/test_commands.py::test_identity_command_with_typing[DevVarLongStringArray] PASSED [ 41%] 580s tests/test_commands.py::test_identity_command_with_typing[DevVarDoubleStringArray] PASSED [ 41%] 580s tests/test_commands.py::test_devstate_command_with_typing PASSED [ 41%] 581s tests/test_commands.py::test_command_self_typed_with_not_defined_name PASSED [ 41%] 581s tests/test_commands.py::test_decorated_command[Synchronous] PASSED [ 41%] 581s tests/test_commands.py::test_decorated_command[Asyncio] FAILED [ 41%] 581s tests/test_commands.py::test_decorated_command[Gevent] PASSED [ 42%] 581s tests/test_commands.py::test_command_isallowed[Synchronous] PASSED [ 42%] 581s tests/test_commands.py::test_command_isallowed[Asyncio] FAILED [ 42%] 582s tests/test_commands.py::test_command_isallowed[Gevent] PASSED [ 42%] 582s tests/test_commands.py::test_dynamic_command[Synchronous-True] PASSED [ 42%] 582s tests/test_commands.py::test_dynamic_command[Synchronous-False] PASSED [ 42%] 582s tests/test_commands.py::test_dynamic_command[Asyncio-True] FAILED [ 42%] 582s tests/test_commands.py::test_dynamic_command[Asyncio-False] FAILED [ 42%] 582s tests/test_commands.py::test_dynamic_command[Gevent-True] PASSED [ 42%] 583s tests/test_commands.py::test_dynamic_command[Gevent-False] PASSED [ 42%] 583s tests/test_commands.py::test_identity_dynamic_command_with_typing[int] PASSED [ 42%] 583s tests/test_commands.py::test_identity_dynamic_command_with_typing[float] PASSED [ 42%] 583s tests/test_commands.py::test_identity_dynamic_command_with_typing[str] PASSED [ 43%] 583s tests/test_commands.py::test_identity_dynamic_command_with_typing[bool] PASSED [ 43%] 583s tests/test_commands.py::test_identity_dynamic_command_with_typing[(int,)] PASSED [ 43%] 583s tests/test_commands.py::test_identity_dynamic_command_with_typing[(float,)] PASSED [ 43%] 583s tests/test_commands.py::test_identity_dynamic_command_with_typing[(str,)] PASSED [ 43%] 583s tests/test_commands.py::test_identity_dynamic_command_with_typing[(bool,)] XFAIL [ 43%] 583s tests/test_commands.py::test_identity_dynamic_command_with_typing[DevVarLongStringArray] PASSED [ 43%] 583s tests/test_commands.py::test_identity_dynamic_command_with_typing[DevVarDoubleStringArray] PASSED [ 43%] 583s tests/test_commands.py::test_identity_commands_with_numpy_typing[bool, SCALAR] PASSED [ 43%] 583s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[bool], SPECTRUM] PASSED [ 43%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint8, SCALAR] XFAIL [ 43%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint8], SPECTRUM] PASSED [ 44%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[int16, SCALAR] PASSED [ 44%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[int16], SPECTRUM] PASSED [ 44%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint16, SCALAR] PASSED [ 44%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint16], SPECTRUM] PASSED [ 44%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[int32, SCALAR] PASSED [ 44%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[int32], SPECTRUM] PASSED [ 44%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint32, SCALAR] PASSED [ 44%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint32], SPECTRUM] PASSED [ 44%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[int64, SCALAR] PASSED [ 44%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[int64], SPECTRUM] PASSED [ 44%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[uint64, SCALAR] PASSED [ 44%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[uint64], SPECTRUM] PASSED [ 45%] 584s tests/test_commands.py::test_identity_commands_with_numpy_typing[float64, SCALAR] PASSED [ 45%] 585s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[float64], SPECTRUM] PASSED [ 45%] 585s tests/test_commands.py::test_identity_commands_with_numpy_typing[float32, SCALAR] PASSED [ 45%] 585s tests/test_commands.py::test_identity_commands_with_numpy_typing[np.NDarray[float32], SPECTRUM] PASSED [ 45%] 585s tests/test_commands.py::test_polled_command PASSED [ 45%] 585s tests/test_commands.py::test_wrong_command_result PASSED [ 45%] 585s tests/test_commands.py::test_command_info PASSED [ 45%] 585s tests/test_database.py::test_put_remove_attribute_properties PASSED [ 45%] 585s tests/test_databaseds.py::test_ping SKIPPED (This test is failing wh...) [ 45%] 585s tests/test_databaseds.py::test_status SKIPPED (This test is failing ...) [ 45%] 585s tests/test_databaseds.py::test_state SKIPPED (This test is failing w...) [ 45%] 585s tests/test_databaseds.py::test_device_property SKIPPED (This test is...) [ 46%] 585s tests/test_databaseds.py::test_info SKIPPED (This test is failing wh...) [ 46%] 585s tests/test_device_proxy.py::test_ping PASSED [ 46%] 585s tests/test_device_proxy.py::test_info PASSED [ 46%] 585s tests/test_device_proxy.py::test_read_attribute[State] PASSED [ 46%] 586s tests/test_device_proxy.py::test_read_attribute[Status] PASSED [ 46%] 586s tests/test_device_proxy.py::test_read_attribute[ampli] PASSED [ 46%] 586s tests/test_device_proxy.py::test_read_attribute[boolean_image] PASSED [ 46%] 586s tests/test_device_proxy.py::test_read_attribute[boolean_image_ro] PASSED [ 46%] 586s tests/test_device_proxy.py::test_read_attribute[boolean_scalar] PASSED [ 46%] 586s tests/test_device_proxy.py::test_read_attribute[boolean_spectrum] PASSED [ 46%] 586s tests/test_device_proxy.py::test_read_attribute[boolean_spectrum_ro] PASSED [ 47%] 587s tests/test_device_proxy.py::test_read_attribute[double_image] PASSED [ 47%] 587s tests/test_device_proxy.py::test_read_attribute[double_image_ro] PASSED [ 47%] 587s tests/test_device_proxy.py::test_read_attribute[double_scalar] PASSED [ 47%] 587s tests/test_device_proxy.py::test_read_attribute[double_scalar_rww] PASSED [ 47%] 587s tests/test_device_proxy.py::test_read_attribute[double_scalar_w] PASSED [ 47%] 587s tests/test_device_proxy.py::test_read_attribute[double_spectrum] PASSED [ 47%] 587s tests/test_device_proxy.py::test_read_attribute[double_spectrum_ro] PASSED [ 47%] 587s tests/test_device_proxy.py::test_read_attribute[echo_mode] SKIPPED (...) [ 47%] 588s tests/test_device_proxy.py::test_read_attribute[enum_image] PASSED [ 47%] 588s tests/test_device_proxy.py::test_read_attribute[enum_image_ro] PASSED [ 47%] 588s tests/test_device_proxy.py::test_read_attribute[enum_scalar] PASSED [ 47%] 588s tests/test_device_proxy.py::test_read_attribute[enum_scalar_ro] PASSED [ 48%] 588s tests/test_device_proxy.py::test_read_attribute[enum_spectrum] PASSED [ 48%] 588s tests/test_device_proxy.py::test_read_attribute[enum_spectrum_ro] PASSED [ 48%] 588s tests/test_device_proxy.py::test_read_attribute[float_image] PASSED [ 48%] 589s tests/test_device_proxy.py::test_read_attribute[float_image_ro] PASSED [ 48%] 589s tests/test_device_proxy.py::test_read_attribute[float_scalar] PASSED [ 48%] 589s tests/test_device_proxy.py::test_read_attribute[float_spectrum] PASSED [ 48%] 589s tests/test_device_proxy.py::test_read_attribute[float_spectrum_ro] PASSED [ 48%] 589s tests/test_device_proxy.py::test_read_attribute[freq] PASSED [ 48%] 589s tests/test_device_proxy.py::test_read_attribute[long64_image_ro] PASSED [ 48%] 589s tests/test_device_proxy.py::test_read_attribute[long64_scalar] PASSED [ 48%] 589s tests/test_device_proxy.py::test_read_attribute[long64_spectrum_ro] PASSED [ 48%] 590s tests/test_device_proxy.py::test_read_attribute[long_image] PASSED [ 49%] 590s tests/test_device_proxy.py::test_read_attribute[long_image_ro] PASSED [ 49%] 590s tests/test_device_proxy.py::test_read_attribute[long_scalar] PASSED [ 49%] 590s tests/test_device_proxy.py::test_read_attribute[long_scalar_rww] PASSED [ 49%] 590s tests/test_device_proxy.py::test_read_attribute[long_scalar_w] PASSED [ 49%] 590s tests/test_device_proxy.py::test_read_attribute[long_spectrum] PASSED [ 49%] 590s tests/test_device_proxy.py::test_read_attribute[long_spectrum_ro] PASSED [ 49%] 591s tests/test_device_proxy.py::test_read_attribute[short_image] PASSED [ 49%] 591s tests/test_device_proxy.py::test_read_attribute[short_image_ro] PASSED [ 49%] 591s tests/test_device_proxy.py::test_read_attribute[short_scalar] PASSED [ 49%] 591s tests/test_device_proxy.py::test_read_attribute[short_scalar_ro] PASSED [ 49%] 591s tests/test_device_proxy.py::test_read_attribute[short_scalar_rww] PASSED [ 50%] 591s tests/test_device_proxy.py::test_read_attribute[short_scalar_w] PASSED [ 50%] 591s tests/test_device_proxy.py::test_read_attribute[short_spectrum] PASSED [ 50%] 592s tests/test_device_proxy.py::test_read_attribute[short_spectrum_ro] PASSED [ 50%] 592s tests/test_device_proxy.py::test_read_attribute[string_image] PASSED [ 50%] 592s tests/test_device_proxy.py::test_read_attribute[string_image_ro] XFAIL [ 50%] 592s tests/test_device_proxy.py::test_read_attribute[string_scalar] PASSED [ 50%] 592s tests/test_device_proxy.py::test_read_attribute[string_spectrum] PASSED [ 50%] 592s tests/test_device_proxy.py::test_read_attribute[string_spectrum_ro] XFAIL [ 50%] 593s tests/test_device_proxy.py::test_read_attribute[uchar_image] PASSED [ 50%] 593s tests/test_device_proxy.py::test_read_attribute[uchar_image_ro] PASSED [ 50%] 593s tests/test_device_proxy.py::test_read_attribute[uchar_scalar] PASSED [ 50%] 593s tests/test_device_proxy.py::test_read_attribute[uchar_spectrum] PASSED [ 51%] 593s tests/test_device_proxy.py::test_read_attribute[uchar_spectrum_ro] PASSED [ 51%] 593s tests/test_device_proxy.py::test_read_attribute[ulong64_image_ro] PASSED [ 51%] 593s tests/test_device_proxy.py::test_read_attribute[ulong64_scalar] PASSED [ 51%] 593s tests/test_device_proxy.py::test_read_attribute[ulong64_spectrum_ro] PASSED [ 51%] 594s tests/test_device_proxy.py::test_read_attribute[ulong_image_ro] PASSED [ 51%] 594s tests/test_device_proxy.py::test_read_attribute[ulong_scalar] PASSED [ 51%] 594s tests/test_device_proxy.py::test_read_attribute[ulong_spectrum_ro] PASSED [ 51%] 594s tests/test_device_proxy.py::test_read_attribute[ushort_image] PASSED [ 51%] 594s tests/test_device_proxy.py::test_read_attribute[ushort_image_ro] PASSED [ 51%] 594s tests/test_device_proxy.py::test_read_attribute[ushort_scalar] PASSED [ 51%] 594s tests/test_device_proxy.py::test_read_attribute[ushort_spectrum] PASSED [ 51%] 595s tests/test_device_proxy.py::test_read_attribute[ushort_spectrum_ro] PASSED [ 52%] 595s tests/test_device_proxy.py::test_read_attribute[wave] PASSED [ 52%] 595s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Synchronous] PASSED [ 52%] 595s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Futures] PASSED [ 52%] 595s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Gevent] PASSED [ 52%] 595s tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Asyncio] ERROR [ 52%] 596s tests/test_device_proxy.py::test_high_level_api_for_asyncio FAILED [ 52%] 596s tests/test_device_proxy.py::test_write_scalar_attribute[boolean_scalar] PASSED [ 52%] 596s tests/test_device_proxy.py::test_write_scalar_attribute[double_scalar] PASSED [ 52%] 596s tests/test_device_proxy.py::test_write_scalar_attribute[double_scalar_w] PASSED [ 52%] 596s tests/test_device_proxy.py::test_write_scalar_attribute[enum_scalar] XFAIL [ 52%] 596s tests/test_device_proxy.py::test_write_scalar_attribute[float_scalar] PASSED [ 52%] 597s tests/test_device_proxy.py::test_write_scalar_attribute[long64_scalar] PASSED [ 53%] 597s tests/test_device_proxy.py::test_write_scalar_attribute[long_scalar] PASSED [ 53%] 597s tests/test_device_proxy.py::test_write_scalar_attribute[long_scalar_w] PASSED [ 53%] 597s tests/test_device_proxy.py::test_write_scalar_attribute[short_scalar] PASSED [ 53%] 597s tests/test_device_proxy.py::test_write_scalar_attribute[short_scalar_w] PASSED [ 53%] 597s tests/test_device_proxy.py::test_write_scalar_attribute[string_scalar] PASSED [ 53%] 598s tests/test_device_proxy.py::test_write_scalar_attribute[uchar_scalar] XFAIL [ 53%] 598s tests/test_device_proxy.py::test_write_scalar_attribute[ulong64_scalar] PASSED [ 53%] 598s tests/test_device_proxy.py::test_write_scalar_attribute[ulong_scalar] PASSED [ 53%] 598s tests/test_device_proxy.py::test_write_scalar_attribute[ushort_scalar] PASSED [ 53%] 598s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.Numpy] PASSED [ 53%] 598s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.Tuple] PASSED [ 54%] 598s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.List] PASSED [ 54%] 598s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.Bytes] PASSED [ 54%] 599s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.ByteArray] PASSED [ 54%] 599s tests/test_device_proxy.py::test_write_read_spectrum_attribute[boolean_spectrum-extract_as.String] PASSED [ 54%] 599s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.Numpy] PASSED [ 54%] 599s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.Tuple] PASSED [ 54%] 599s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.List] PASSED [ 54%] 599s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.Bytes] PASSED [ 54%] 599s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.ByteArray] PASSED [ 54%] 600s tests/test_device_proxy.py::test_write_read_spectrum_attribute[double_spectrum-extract_as.String] PASSED [ 54%] 600s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.Numpy] XFAIL [ 54%] 600s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.Tuple] XFAIL [ 55%] 600s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.List] XFAIL [ 55%] 600s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.Bytes] XFAIL [ 55%] 600s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.ByteArray] XFAIL [ 55%] 601s tests/test_device_proxy.py::test_write_read_spectrum_attribute[enum_spectrum-extract_as.String] XFAIL [ 55%] 601s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.Numpy] PASSED [ 55%] 601s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.Tuple] PASSED [ 55%] 601s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.List] PASSED [ 55%] 601s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.Bytes] PASSED [ 55%] 601s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.ByteArray] PASSED [ 55%] 601s tests/test_device_proxy.py::test_write_read_spectrum_attribute[float_spectrum-extract_as.String] PASSED [ 55%] 601s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.Numpy] PASSED [ 55%] 602s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.Tuple] PASSED [ 56%] 602s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.List] PASSED [ 56%] 602s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.Bytes] PASSED [ 56%] 602s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.ByteArray] PASSED [ 56%] 602s tests/test_device_proxy.py::test_write_read_spectrum_attribute[long_spectrum-extract_as.String] PASSED [ 56%] 602s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.Numpy] PASSED [ 56%] 602s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.Tuple] PASSED [ 56%] 603s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.List] PASSED [ 56%] 603s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.Bytes] PASSED [ 56%] 603s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.ByteArray] PASSED [ 56%] 603s tests/test_device_proxy.py::test_write_read_spectrum_attribute[short_spectrum-extract_as.String] PASSED [ 56%] 603s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.Numpy] PASSED [ 57%] 603s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.Tuple] PASSED [ 57%] 603s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.List] PASSED [ 57%] 604s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.Bytes] XFAIL [ 57%] 604s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.ByteArray] XFAIL [ 57%] 604s tests/test_device_proxy.py::test_write_read_spectrum_attribute[string_spectrum-extract_as.String] XFAIL [ 57%] 604s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.Numpy] XFAIL [ 57%] 604s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.Tuple] XFAIL [ 57%] 604s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.List] XFAIL [ 57%] 605s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.Bytes] XFAIL [ 57%] 605s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.ByteArray] XFAIL [ 57%] 605s tests/test_device_proxy.py::test_write_read_spectrum_attribute[uchar_spectrum-extract_as.String] XFAIL [ 57%] 605s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.Numpy] PASSED [ 58%] 605s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.Tuple] PASSED [ 58%] 605s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.List] PASSED [ 58%] 605s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.Bytes] PASSED [ 58%] 606s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.ByteArray] PASSED [ 58%] 606s tests/test_device_proxy.py::test_write_read_spectrum_attribute[ushort_spectrum-extract_as.String] PASSED [ 58%] 606s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[boolean_spectrum] PASSED [ 58%] 606s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[double_spectrum] PASSED [ 58%] 606s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[enum_spectrum] PASSED [ 58%] 606s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[float_spectrum] PASSED [ 58%] 606s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[long_spectrum] PASSED [ 58%] 607s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[short_spectrum] PASSED [ 58%] 607s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[string_spectrum] XFAIL [ 59%] 607s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[uchar_spectrum] PASSED [ 59%] 607s tests/test_device_proxy.py::test_write_read_empty_spectrum_attribute[ushort_spectrum] PASSED [ 59%] 607s tests/test_device_proxy.py::test_write_read_string_attribute PASSED [ 59%] 607s tests/test_device_proxy.py::test_set_non_existent_attribute_raises_by_default PASSED [ 59%] 608s tests/test_device_proxy.py::test_set_non_existent_attribute_allowed_if_dynamic_interface_unfrozen PASSED [ 59%] 608s tests/test_device_proxy.py::test_dynamic_interface_can_be_toggled PASSED [ 59%] 608s tests/test_device_proxy.py::test_dynamic_interface_flag_can_be_read PASSED [ 59%] 608s tests/test_device_proxy.py::test_dynamic_interface_only_applies_to_device_proxy_instance PASSED [ 59%] 608s tests/test_device_proxy.py::test_dynamic_interface_unfreeze_generates_a_user_warning PASSED [ 59%] 608s tests/test_device_proxy.py::test_read_attribute_config SKIPPED (This...) [ 59%] 608s tests/test_device_proxy.py::test_read_attribute_config_ex PASSED [ 60%] 608s tests/test_device_proxy.py::test_attribute_list_query SKIPPED (This ...) [ 60%] 608s tests/test_device_proxy.py::test_attribute_list_query_ex SKIPPED (Th...) [ 60%] 608s tests/test_device_proxy.py::test_device_proxy_dir_method PASSED [ 60%] 609s tests/test_device_proxy.py::test_device_polling_command PASSED [ 60%] 609s tests/test_device_proxy.py::test_device_polling_attribute PASSED [ 60%] 609s tests/test_device_proxy.py::test_command_string PASSED [ 60%] 609s tests/test_device_proxy.py::test_command_raises_type_error_for_bad_input PASSED [ 60%] 609s tests/test_device_proxy.py::test_repr_uses_info[Synchronous] PASSED [ 60%] 609s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Synchronous] PASSED [ 60%] 609s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Synchronous] PASSED [ 60%] 610s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Synchronous] PASSED [ 60%] 610s tests/test_device_proxy.py::test_no_memory_leak_for_str[Synchronous] PASSED [ 61%] 610s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Synchronous] PASSED [ 61%] 610s tests/test_device_proxy.py::test_repr_uses_info[Futures] PASSED [ 61%] 610s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Futures] PASSED [ 61%] 610s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Futures] PASSED [ 61%] 610s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Futures] PASSED [ 61%] 610s tests/test_device_proxy.py::test_no_memory_leak_for_str[Futures] PASSED [ 61%] 610s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Futures] PASSED [ 61%] 611s tests/test_device_proxy.py::test_repr_uses_info[Gevent] PASSED [ 61%] 611s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Gevent] PASSED [ 61%] 611s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Gevent] PASSED [ 61%] 611s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Gevent] PASSED [ 61%] 611s tests/test_device_proxy.py::test_no_memory_leak_for_str[Gevent] PASSED [ 62%] 611s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Gevent] PASSED [ 62%] 611s tests/test_device_proxy.py::test_repr_uses_info[Asyncio] FAILED [ 62%] 612s tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Asyncio] FAILED [ 62%] 612s tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Asyncio] FAILED [ 62%] 612s tests/test_device_proxy.py::test_no_memory_leak_for_repr[Asyncio] FAILED [ 62%] 612s tests/test_device_proxy.py::test_no_memory_leak_for_str[Asyncio] FAILED [ 62%] 612s tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Asyncio] FAILED [ 62%] 612s tests/test_device_proxy.py::test_client_destructor_does_not_deadlock[group_client_lifecycle] SKIPPED [ 62%] 612s tests/test_device_proxy.py::test_client_destructor_does_not_deadlock[device_proxy_lifecycle] SKIPPED [ 62%] 612s tests/test_group.py::test_nested_multi_group PASSED [ 62%] 612s tests/test_group.py::test_read_write_attribute PASSED [ 62%] 613s tests/test_group.py::test_command PASSED [ 63%] 613s tests/test_log.py::test_logging_decorators PASSED [ 63%] 613s tests/test_log.py::test_async_logging_decorators FAILED [ 63%] 613s tests/test_log.py::test_tango_stream PASSED [ 63%] 613s tests/test_log.py::test_logging[Synchronous] PASSED [ 63%] 614s tests/test_log.py::test_logging[Asyncio] FAILED [ 63%] 614s tests/test_log.py::test_logging[Gevent] PASSED [ 63%] 614s tests/test_log.py::test_decorator_logging_source_location[Synchronous] SKIPPED [ 63%] 614s tests/test_log.py::test_decorator_logging_source_location[Asyncio] SKIPPED [ 63%] 614s tests/test_log.py::test_decorator_logging_source_location[Gevent] SKIPPED [ 63%] 614s tests/test_log.py::test_stream_logging_source_location[Synchronous] SKIPPED [ 63%] 614s tests/test_log.py::test_stream_logging_source_location[Asyncio] SKIPPED [ 64%] 614s tests/test_log.py::test_stream_logging_source_location[Gevent] SKIPPED [ 64%] 614s tests/test_multi_attr_prop.py::test_stuff PASSED [ 64%] 614s tests/test_properties.py::test_device_property_no_default[int] PASSED [ 64%] 614s tests/test_properties.py::test_device_property_no_default[float] PASSED [ 64%] 614s tests/test_properties.py::test_device_property_no_default[str] PASSED [ 64%] 614s tests/test_properties.py::test_device_property_no_default[bool] PASSED [ 64%] 614s tests/test_properties.py::test_device_property_no_default[(int,)] PASSED [ 64%] 614s tests/test_properties.py::test_device_property_no_default[(float,)] PASSED [ 64%] 614s tests/test_properties.py::test_device_property_no_default[(str,)] PASSED [ 64%] 614s tests/test_properties.py::test_device_property_no_default[(bool,)] PASSED [ 64%] 615s tests/test_properties.py::test_device_property_with_typing[int] PASSED [ 64%] 615s tests/test_properties.py::test_device_property_with_typing[float] PASSED [ 65%] 615s tests/test_properties.py::test_device_property_with_typing[str] PASSED [ 65%] 615s tests/test_properties.py::test_device_property_with_typing[bool] PASSED [ 65%] 615s tests/test_properties.py::test_device_property_with_typing[(int,)] PASSED [ 65%] 615s tests/test_properties.py::test_device_property_with_typing[(float,)] PASSED [ 65%] 615s tests/test_properties.py::test_device_property_with_typing[(str,)] PASSED [ 65%] 615s tests/test_properties.py::test_device_property_with_typing[(bool,)] PASSED [ 65%] 615s tests/test_properties.py::test_device_property_with_numpy_typing[bool, SCALAR] PASSED [ 65%] 615s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[bool], SPECTRUM] PASSED [ 65%] 615s tests/test_properties.py::test_device_property_with_numpy_typing[uint8, SCALAR] XFAIL [ 65%] 615s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint8], SPECTRUM] XFAIL [ 65%] 615s tests/test_properties.py::test_device_property_with_numpy_typing[int16, SCALAR] PASSED [ 65%] 615s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[int16], SPECTRUM] PASSED [ 66%] 616s tests/test_properties.py::test_device_property_with_numpy_typing[uint16, SCALAR] PASSED [ 66%] 616s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint16], SPECTRUM] PASSED [ 66%] 616s tests/test_properties.py::test_device_property_with_numpy_typing[int32, SCALAR] PASSED [ 66%] 616s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[int32], SPECTRUM] PASSED [ 66%] 616s tests/test_properties.py::test_device_property_with_numpy_typing[uint32, SCALAR] PASSED [ 66%] 616s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint32], SPECTRUM] PASSED [ 66%] 616s tests/test_properties.py::test_device_property_with_numpy_typing[int64, SCALAR] PASSED [ 66%] 616s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[int64], SPECTRUM] PASSED [ 66%] 616s tests/test_properties.py::test_device_property_with_numpy_typing[uint64, SCALAR] PASSED [ 66%] 616s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[uint64], SPECTRUM] PASSED [ 66%] 616s tests/test_properties.py::test_device_property_with_numpy_typing[float64, SCALAR] PASSED [ 67%] 616s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[float64], SPECTRUM] PASSED [ 67%] 617s tests/test_properties.py::test_device_property_with_numpy_typing[float32, SCALAR] PASSED [ 67%] 617s tests/test_properties.py::test_device_property_with_numpy_typing[np.NDarray[float32], SPECTRUM] PASSED [ 67%] 617s tests/test_properties.py::test_device_property_with_default_value[int] PASSED [ 67%] 617s tests/test_properties.py::test_device_property_with_default_value[float] PASSED [ 67%] 617s tests/test_properties.py::test_device_property_with_default_value[str] PASSED [ 67%] 617s tests/test_properties.py::test_device_property_with_default_value[bool] PASSED [ 67%] 617s tests/test_properties.py::test_device_property_with_default_value[(int,)] PASSED [ 67%] 617s tests/test_properties.py::test_device_property_with_default_value[(float,)] PASSED [ 67%] 617s tests/test_properties.py::test_device_property_with_default_value[(str,)] PASSED [ 67%] 617s tests/test_properties.py::test_device_property_with_default_value[(bool,)] PASSED [ 67%] 617s tests/test_properties.py::test_device_get_device_properties_when_init_device PASSED [ 68%] 617s tests/test_properties.py::test_mandatory_device_property_with_db_value_succeeds[True] PASSED [ 68%] 617s tests/test_properties.py::test_mandatory_device_property_with_db_value_succeeds[False] PASSED [ 68%] 617s tests/test_server.py::test_uncorrect_typing_hints[property-tuple-Property does not support IMAGE type0] PASSED [ 68%] 617s tests/test_server.py::test_uncorrect_typing_hints[property-tuple-Property does not support IMAGE type1] PASSED [ 68%] 617s tests/test_server.py::test_uncorrect_typing_hints[property-tuple-PyTango does not support mixed types] PASSED [ 68%] 618s tests/test_server.py::test_uncorrect_typing_hints[attribute-tuple-PyTango does not support mixed types0] PASSED [ 68%] 618s tests/test_server.py::test_uncorrect_typing_hints[attribute-tuple-PyTango does not support mixed types1] PASSED [ 68%] 618s tests/test_server.py::test_uncorrect_typing_hints[attribute-tuple-PyTango does not support mixed types2] PASSED [ 68%] 618s tests/test_server.py::test_uncorrect_typing_hints[attribute-Callable-Cannot translate] PASSED [ 68%] 618s tests/test_server.py::test_get_enum_labels_success[GoodEnum] PASSED [ 68%] 618s tests/test_server.py::test_get_enum_labels_fail[BadEnumNonZero] PASSED [ 68%] 618s tests/test_server.py::test_get_enum_labels_fail[BadEnumSkipValues] PASSED [ 69%] 618s tests/test_server.py::test_get_enum_labels_fail[BadEnumDuplicates] PASSED [ 69%] 618s tests/test_server.py::test_device_classes_use_latest_implementation PASSED [ 69%] 618s tests/test_server.py::test_empty_device[Synchronous] PASSED [ 69%] 618s tests/test_server.py::test_empty_device[Asyncio] FAILED [ 69%] 618s tests/test_server.py::test_empty_device[Gevent] PASSED [ 69%] 618s tests/test_server.py::test_set_desc_status_state_at_init[doc] PASSED [ 69%] 618s tests/test_server.py::test_set_desc_status_state_at_init[description] PASSED [ 69%] 618s tests/test_server.py::test_set_state_status[ON-Synchronous-False] PASSED [ 69%] 618s tests/test_server.py::test_set_state_status[ON-Synchronous-True] PASSED [ 69%] 619s tests/test_server.py::test_set_state_status[ON-Asyncio-False] FAILED [ 69%] 619s tests/test_server.py::test_set_state_status[ON-Asyncio-True] FAILED [ 70%] 619s tests/test_server.py::test_set_state_status[ON-Gevent-False] PASSED [ 70%] 619s tests/test_server.py::test_set_state_status[ON-Gevent-True] PASSED [ 70%] 619s tests/test_server.py::test_set_state_status[OFF-Synchronous-False] PASSED [ 70%] 619s tests/test_server.py::test_set_state_status[OFF-Synchronous-True] PASSED [ 70%] 620s tests/test_server.py::test_set_state_status[OFF-Asyncio-False] FAILED [ 70%] 620s tests/test_server.py::test_set_state_status[OFF-Asyncio-True] FAILED [ 70%] 620s tests/test_server.py::test_set_state_status[OFF-Gevent-False] PASSED [ 70%] 620s tests/test_server.py::test_set_state_status[OFF-Gevent-True] PASSED [ 70%] 620s tests/test_server.py::test_set_state_status[CLOSE-Synchronous-False] PASSED [ 70%] 620s tests/test_server.py::test_set_state_status[CLOSE-Synchronous-True] PASSED [ 70%] 620s tests/test_server.py::test_set_state_status[CLOSE-Asyncio-False] FAILED [ 70%] 621s tests/test_server.py::test_set_state_status[CLOSE-Asyncio-True] FAILED [ 71%] 621s tests/test_server.py::test_set_state_status[CLOSE-Gevent-False] PASSED [ 71%] 621s tests/test_server.py::test_set_state_status[CLOSE-Gevent-True] PASSED [ 71%] 621s tests/test_server.py::test_set_state_status[OPEN-Synchronous-False] PASSED [ 71%] 621s tests/test_server.py::test_set_state_status[OPEN-Synchronous-True] PASSED [ 71%] 621s tests/test_server.py::test_set_state_status[OPEN-Asyncio-False] FAILED [ 71%] 622s tests/test_server.py::test_set_state_status[OPEN-Asyncio-True] FAILED [ 71%] 622s tests/test_server.py::test_set_state_status[OPEN-Gevent-False] PASSED [ 71%] 622s tests/test_server.py::test_set_state_status[OPEN-Gevent-True] PASSED [ 71%] 622s tests/test_server.py::test_set_state_status[INSERT-Synchronous-False] PASSED [ 71%] 622s tests/test_server.py::test_set_state_status[INSERT-Synchronous-True] PASSED [ 71%] 622s tests/test_server.py::test_set_state_status[INSERT-Asyncio-False] FAILED [ 71%] 623s tests/test_server.py::test_set_state_status[INSERT-Asyncio-True] FAILED [ 72%] 623s tests/test_server.py::test_set_state_status[INSERT-Gevent-False] PASSED [ 72%] 623s tests/test_server.py::test_set_state_status[INSERT-Gevent-True] PASSED [ 72%] 623s tests/test_server.py::test_set_state_status[EXTRACT-Synchronous-False] PASSED [ 72%] 623s tests/test_server.py::test_set_state_status[EXTRACT-Synchronous-True] PASSED [ 72%] 623s tests/test_server.py::test_set_state_status[EXTRACT-Asyncio-False] FAILED [ 72%] 624s tests/test_server.py::test_set_state_status[EXTRACT-Asyncio-True] FAILED [ 72%] 624s tests/test_server.py::test_set_state_status[EXTRACT-Gevent-False] PASSED [ 72%] 624s tests/test_server.py::test_set_state_status[EXTRACT-Gevent-True] PASSED [ 72%] 624s tests/test_server.py::test_set_state_status[MOVING-Synchronous-False] PASSED [ 72%] 624s tests/test_server.py::test_set_state_status[MOVING-Synchronous-True] PASSED [ 72%] 624s tests/test_server.py::test_set_state_status[MOVING-Asyncio-False] FAILED [ 72%] 625s tests/test_server.py::test_set_state_status[MOVING-Asyncio-True] FAILED [ 73%] 625s tests/test_server.py::test_set_state_status[MOVING-Gevent-False] PASSED [ 73%] 625s tests/test_server.py::test_set_state_status[MOVING-Gevent-True] PASSED [ 73%] 625s tests/test_server.py::test_set_state_status[STANDBY-Synchronous-False] PASSED [ 73%] 625s tests/test_server.py::test_set_state_status[STANDBY-Synchronous-True] PASSED [ 73%] 625s tests/test_server.py::test_set_state_status[STANDBY-Asyncio-False] FAILED [ 73%] 626s tests/test_server.py::test_set_state_status[STANDBY-Asyncio-True] FAILED [ 73%] 626s tests/test_server.py::test_set_state_status[STANDBY-Gevent-False] PASSED [ 73%] 626s tests/test_server.py::test_set_state_status[STANDBY-Gevent-True] PASSED [ 73%] 626s tests/test_server.py::test_set_state_status[FAULT-Synchronous-False] PASSED [ 73%] 626s tests/test_server.py::test_set_state_status[FAULT-Synchronous-True] PASSED [ 73%] 626s tests/test_server.py::test_set_state_status[FAULT-Asyncio-False] FAILED [ 74%] 626s tests/test_server.py::test_set_state_status[FAULT-Asyncio-True] FAILED [ 74%] 627s tests/test_server.py::test_set_state_status[FAULT-Gevent-False] PASSED [ 74%] 627s tests/test_server.py::test_set_state_status[FAULT-Gevent-True] PASSED [ 74%] 627s tests/test_server.py::test_set_state_status[INIT-Synchronous-False] PASSED [ 74%] 627s tests/test_server.py::test_set_state_status[INIT-Synchronous-True] PASSED [ 74%] 627s tests/test_server.py::test_set_state_status[INIT-Asyncio-False] FAILED [ 74%] 627s tests/test_server.py::test_set_state_status[INIT-Asyncio-True] FAILED [ 74%] 627s tests/test_server.py::test_set_state_status[INIT-Gevent-False] PASSED [ 74%] 628s tests/test_server.py::test_set_state_status[INIT-Gevent-True] PASSED [ 74%] 628s tests/test_server.py::test_set_state_status[RUNNING-Synchronous-False] PASSED [ 74%] 628s tests/test_server.py::test_set_state_status[RUNNING-Synchronous-True] PASSED [ 74%] 628s tests/test_server.py::test_set_state_status[RUNNING-Asyncio-False] FAILED [ 75%] 628s tests/test_server.py::test_set_state_status[RUNNING-Asyncio-True] FAILED [ 75%] 628s tests/test_server.py::test_set_state_status[RUNNING-Gevent-False] PASSED [ 75%] 628s tests/test_server.py::test_set_state_status[RUNNING-Gevent-True] PASSED [ 75%] 628s tests/test_server.py::test_set_state_status[ALARM-Synchronous-False] PASSED [ 75%] 629s tests/test_server.py::test_set_state_status[ALARM-Synchronous-True] PASSED [ 75%] 629s tests/test_server.py::test_set_state_status[ALARM-Asyncio-False] FAILED [ 75%] 629s tests/test_server.py::test_set_state_status[ALARM-Asyncio-True] FAILED [ 75%] 629s tests/test_server.py::test_set_state_status[ALARM-Gevent-False] PASSED [ 75%] 629s tests/test_server.py::test_set_state_status[ALARM-Gevent-True] PASSED [ 75%] 629s tests/test_server.py::test_set_state_status[DISABLE-Synchronous-False] PASSED [ 75%] 630s tests/test_server.py::test_set_state_status[DISABLE-Synchronous-True] PASSED [ 75%] 630s tests/test_server.py::test_set_state_status[DISABLE-Asyncio-False] FAILED [ 76%] 630s tests/test_server.py::test_set_state_status[DISABLE-Asyncio-True] FAILED [ 76%] 630s tests/test_server.py::test_set_state_status[DISABLE-Gevent-False] PASSED [ 76%] 630s tests/test_server.py::test_set_state_status[DISABLE-Gevent-True] PASSED [ 76%] 630s tests/test_server.py::test_set_state_status[UNKNOWN-Synchronous-False] PASSED [ 76%] 630s tests/test_server.py::test_set_state_status[UNKNOWN-Synchronous-True] PASSED [ 76%] 631s tests/test_server.py::test_set_state_status[UNKNOWN-Asyncio-False] FAILED [ 76%] 631s tests/test_server.py::test_set_state_status[UNKNOWN-Asyncio-True] FAILED [ 76%] 631s tests/test_server.py::test_set_state_status[UNKNOWN-Gevent-False] PASSED [ 76%] 631s tests/test_server.py::test_set_state_status[UNKNOWN-Gevent-True] PASSED [ 76%] 631s tests/test_server.py::test_user_dev_state_status[Synchronous] PASSED [ 76%] 632s tests/test_server.py::test_user_dev_state_status[Asyncio] FAILED [ 77%] 632s tests/test_server.py::test_user_dev_state_status[Gevent] PASSED [ 77%] 632s tests/test_server.py::test_attr_quality_checked_with_state[Synchronous] PASSED [ 77%] 632s tests/test_server.py::test_attr_quality_checked_with_state[Asyncio] FAILED [ 77%] 632s tests/test_server.py::test_attr_quality_checked_with_state[Gevent] PASSED [ 77%] 632s tests/test_server.py::test_device_get_attr_config[Synchronous] PASSED [ 77%] 633s tests/test_server.py::test_device_get_attr_config[Asyncio] FAILED [ 77%] 633s tests/test_server.py::test_device_get_attr_config[Gevent] PASSED [ 77%] 633s tests/test_server.py::test_device_set_attr_config[Synchronous] PASSED [ 77%] 633s tests/test_server.py::test_device_set_attr_config[Asyncio] FAILED [ 77%] 633s tests/test_server.py::test_device_set_attr_config[Gevent] PASSED [ 77%] 633s tests/test_server.py::test_default_units PASSED [ 77%] 634s tests/test_server.py::test_custom_units PASSED [ 78%] 634s tests/test_server.py::test_inheritance_overrides_a_property PASSED [ 78%] 634s tests/test_server.py::test_inheritance_override_dev_status PASSED [ 78%] 634s tests/test_server.py::test_inheritance_init_device PASSED [ 78%] 634s tests/test_server.py::test_inheritance_with_decorated_attributes PASSED [ 78%] 634s tests/test_server.py::test_inheritance_with_undecorated_attributes PASSED [ 78%] 634s tests/test_server.py::test_inheritance_with_undecorated_attribute_and_bound_methods PASSED [ 78%] 634s tests/test_server.py::test_inheritance_with_undecorated_attributes_and_unbound_functions PASSED [ 78%] 634s tests/test_server.py::test_inheritance_command_is_allowed_by_naming_convention PASSED [ 78%] 634s tests/test_server.py::test_inheritance_command_is_allowed_by_kwarg_method PASSED [ 78%] 634s tests/test_server.py::test_inheritance_command_is_allowed_by_kwarg_unbound_function PASSED [ 78%] 635s tests/test_server.py::test_exception_propagation[Synchronous] PASSED [ 78%] 635s tests/test_server.py::test_exception_propagation[Asyncio] FAILED [ 79%] 635s tests/test_server.py::test_exception_propagation[Gevent] PASSED [ 79%] 635s tests/test_server.py::test_arguments[linux-applicable_os0-MyDs instance --nodb --port 1234-expected_output0] PASSED [ 79%] 635s tests/test_server.py::test_arguments[linux-applicable_os1-MyDs -port 1234 -host myhost instance-expected_output1] PASSED [ 79%] 635s tests/test_server.py::test_arguments[linux-applicable_os2-MyDs instance --ORBendPoint giop:tcp:_:1234-expected_output2] PASSED [ 79%] 635s 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%] 635s tests/test_server.py::test_arguments[linux-applicable_os4-MyDs instance -file a/b/c-expected_output4] PASSED [ 79%] 635s tests/test_server.py::test_arguments[linux-applicable_os5-MyDs instance -nodb-expected_output5] PASSED [ 79%] 635s tests/test_server.py::test_arguments[linux-applicable_os6-MyDs instance -dlist a/b/c;d/e/f-expected_output6] PASSED [ 79%] 635s tests/test_server.py::test_arguments[linux-applicable_os7-MyDs instance -vvvv-expected_output7] PASSED [ 79%] 635s tests/test_server.py::test_arguments[linux-applicable_os8-MyDs instance --verbose --verbose --verbose --verbose-expected_output8] PASSED [ 79%] 635s tests/test_server.py::test_arguments[linux-applicable_os9-MyDs instance -v4-expected_output9] PASSED [ 80%] 635s tests/test_server.py::test_arguments[linux-applicable_os10-MyDs instance -v 4-expected_output10] PASSED [ 80%] 635s tests/test_server.py::test_arguments[linux-applicable_os11-MyDs instance -dbg -i -s -u-expected_output11] PASSED [ 80%] 635s tests/test_server.py::test_arguments[linux-applicable_os12-MyDs instance -ORBtest1 test1 --ORBtest2 test2-expected_output12] PASSED [ 80%] 635s tests/test_server.py::test_arguments[linux-applicable_os13-MyDs ORBinstance -ORBtest myORBparam-expected_output13] PASSED [ 80%] 635s 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%] 636s tests/test_server.py::test_arguments[linux-applicable_os15-MyDs instance -ORBtest1 test1 --orbinvalid value-expected_output15] PASSED [ 80%] 636s tests/test_server.py::test_arguments[win-applicable_os0-MyDs instance --nodb --port 1234-expected_output0] PASSED [ 80%] 636s tests/test_server.py::test_arguments[win-applicable_os1-MyDs -port 1234 -host myhost instance-expected_output1] PASSED [ 80%] 636s tests/test_server.py::test_arguments[win-applicable_os2-MyDs instance --ORBendPoint giop:tcp:_:1234-expected_output2] PASSED [ 80%] 636s 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%] 636s tests/test_server.py::test_arguments[win-applicable_os4-MyDs instance -file a/b/c-expected_output4] PASSED [ 80%] 636s tests/test_server.py::test_arguments[win-applicable_os5-MyDs instance -nodb-expected_output5] PASSED [ 81%] 636s tests/test_server.py::test_arguments[win-applicable_os6-MyDs instance -dlist a/b/c;d/e/f-expected_output6] PASSED [ 81%] 636s tests/test_server.py::test_arguments[win-applicable_os7-MyDs instance -vvvv-expected_output7] PASSED [ 81%] 636s tests/test_server.py::test_arguments[win-applicable_os8-MyDs instance --verbose --verbose --verbose --verbose-expected_output8] PASSED [ 81%] 636s tests/test_server.py::test_arguments[win-applicable_os9-MyDs instance -v4-expected_output9] PASSED [ 81%] 636s tests/test_server.py::test_arguments[win-applicable_os10-MyDs instance -v 4-expected_output10] PASSED [ 81%] 636s tests/test_server.py::test_arguments[win-applicable_os11-MyDs instance -dbg -i -s -u-expected_output11] PASSED [ 81%] 636s tests/test_server.py::test_arguments[win-applicable_os12-MyDs instance -ORBtest1 test1 --ORBtest2 test2-expected_output12] PASSED [ 81%] 636s tests/test_server.py::test_arguments[win-applicable_os13-MyDs ORBinstance -ORBtest myORBparam-expected_output13] PASSED [ 81%] 636s 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%] 636s tests/test_server.py::test_arguments[win-applicable_os15-MyDs instance -ORBtest1 test1 --orbinvalid value-expected_output15] PASSED [ 81%] 636s tests/test_server.py::test_server_init_hook_called[Synchronous] PASSED [ 81%] 636s tests/test_server.py::test_server_init_hook_called[Asyncio] SKIPPED [ 82%] 636s tests/test_server.py::test_server_init_hook_called[Gevent] PASSED [ 82%] 636s tests/test_server.py::test_server_init_hook_change_state PASSED [ 82%] 637s tests/test_server.py::test_asyncio_server_init_hook_change_state FAILED [ 82%] 637s tests/test_server.py::test_server_init_hook_called_after_init PASSED [ 82%] 637s tests/test_server.py::test_async_server_init_hook_called_after_init FAILED [ 82%] 637s tests/test_server.py::test_server_init_hook_exception PASSED [ 82%] 638s tests/test_server.py::test_asyncio_server_init_hook_exception FAILED [ 82%] 638s tests/test_server.py::test_server_init_hook_with_low_level_api_called PASSED [ 82%] 638s tests/test_server.py::test_server_init_hook_with_low_level_api_change_state PASSED [ 82%] 638s tests/test_server.py::test_server_init_hook_with_low_level_api_called_after_init PASSED [ 82%] 638s tests/test_server.py::test_server_init_hook_with_low_level_api_exception PASSED [ 82%] 638s tests/test_server.py::test_server_init_multiple_devices PASSED [ 83%] 638s tests/test_server.py::test_server_init_hook_subscribe_event_multiple_devices XFAIL [ 83%] 638s tests/test_server.py::test_deprecation_warning_for_sync_attr_com_methods_in_asyncio_device FAILED [ 83%] 639s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[init_device] FAILED [ 83%] 639s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[delete_device] FAILED [ 83%] 639s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_state] FAILED [ 83%] 640s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_status] FAILED [ 83%] 640s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[read_attr_hardware] FAILED [ 83%] 640s tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[always_executed_hook] FAILED [ 83%] 640s tests/test_server.py::test_no_sync_attribute_locks[Synchronous] SKIPPED [ 83%] 640s tests/test_server.py::test_no_sync_attribute_locks[Asyncio] SKIPPED [ 83%] 640s tests/test_server.py::test_no_sync_attribute_locks[Gevent] SKIPPED (...) [ 84%] 640s tests/test_server.py::test_read_slow_and_fast_attributes_with_asyncio SKIPPED [ 84%] 640s tests/test_server.py::test_get_version_info_classic_api PASSED [ 84%] 640s tests/test_server.py::test_get_version_info_high_level_api PASSED [ 84%] 641s tests/test_server.py::test_add_version_info_classic_api PASSED [ 84%] 641s tests/test_server.py::test_add_version_info_high_level_api PASSED [ 84%] 641s tests/test_server.py::test_restart_server_command_cpp_and_py SKIPPED [ 84%] 641s tests/test_server.py::test_attr_data_default_fwd_properties PASSED [ 84%] 641s tests/test_server.py::test_attr_data_default_properties PASSED [ 84%] 641s tests/test_server.py::test_attr_data_default_properties_throws_on_unknown PASSED [ 84%] 641s tests/test_server.py::test_attr_data_enum_labels PASSED [ 84%] 641s tests/test_server.py::test_attr_data_to_attr PASSED [ 84%] 641s tests/test_server.py::test_from_attr_info_exceptions[some string-Wrong data type for value for describing attribute] PASSED [ 85%] 641s tests/test_server.py::test_from_attr_info_exceptions[attr_info1-Wrong number of argument for describing attribute] PASSED [ 85%] 641s tests/test_server.py::test_from_attr_info_exceptions[attr_info2-Wrong number of argument for describing attribute] PASSED [ 85%] 641s tests/test_server.py::test_from_attr_info_exceptions[attr_info3-Wrong data type for describing mandatory information] PASSED [ 85%] 641s tests/test_server.py::test_from_attr_info_exceptions[attr_info4-Wrong data type for describing mandatory information] PASSED [ 85%] 641s tests/test_server.py::test_from_attr_info_exceptions[attr_info5-Wrong data type in attribute argument for attribute] PASSED [ 85%] 641s tests/test_server.py::test_from_attr_info_exceptions[attr_info6-Wrong data format in attribute argument for attribute] PASSED [ 85%] 641s 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%] 641s 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%] 641s 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%] 641s 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%] 641s 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%] 641s 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%] 641s tests/test_server.py::test_from_attr_info_exceptions[attr_info13-Wrong data write type in attribute argument] PASSED [ 86%] 641s tests/test_server.py::test_from_attr_info_exceptions[attr_info14-Wrong display level] PASSED [ 86%] 641s tests/test_server.py::test_from_attr_info_exceptions[attr_info15-Wrong polling period] PASSED [ 86%] 641s tests/test_server.py::test_from_attr_info_exceptions[attr_info16-Wrong memorized value] PASSED [ 86%] 641s tests/test_server.py::test_from_attr_info_exceptions[attr_info17-Missing 'enum_labels' key in attr_list definition] PASSED [ 86%] 641s tests/test_server.py::test_from_attr_info_hw_memorized PASSED [ 86%] 641s tests/test_server.py::test_from_attr_info_memorized PASSED [ 86%] 641s tests/test_server.py::test_device_repr_does_not_segfault_with_pytest PASSED [ 86%] 641s tests/test_telemetry.py::test_telemetry_available_constant_exists PASSED [ 86%] 641s tests/test_telemetry.py::test_telemetry_packages_available_if_telemetry_active SKIPPED [ 86%] 641s tests/test_telemetry.py::test_init_device_and_basic_span_details[Synchronous] SKIPPED [ 87%] 641s tests/test_telemetry.py::test_init_device_and_basic_span_details[Asyncio] SKIPPED [ 87%] 641s tests/test_telemetry.py::test_init_device_and_basic_span_details[Gevent] SKIPPED [ 87%] 642s tests/test_telemetry.py::test_delete_device[Synchronous] SKIPPED (Te...) [ 87%] 642s tests/test_telemetry.py::test_delete_device[Asyncio] SKIPPED (Teleme...) [ 87%] 642s tests/test_telemetry.py::test_delete_device[Gevent] SKIPPED (Telemet...) [ 87%] 642s tests/test_telemetry.py::test_state[Synchronous] SKIPPED (Telemetry ...) [ 87%] 642s tests/test_telemetry.py::test_state[Asyncio] SKIPPED (Telemetry not ...) [ 87%] 642s tests/test_telemetry.py::test_state[Gevent] SKIPPED (Telemetry not a...) [ 87%] 642s tests/test_telemetry.py::test_static_command[Synchronous] SKIPPED (T...) [ 87%] 642s tests/test_telemetry.py::test_static_command[Asyncio] SKIPPED (Telem...) [ 87%] 642s tests/test_telemetry.py::test_static_command[Gevent] SKIPPED (Teleme...) [ 87%] 642s tests/test_telemetry.py::test_static_attribute[Synchronous] SKIPPED [ 88%] 642s tests/test_telemetry.py::test_static_attribute[Asyncio] SKIPPED (Tel...) [ 88%] 642s tests/test_telemetry.py::test_static_attribute[Gevent] SKIPPED (Tele...) [ 88%] 642s tests/test_telemetry.py::test_user_span_traceid_propagates_to_tango[Synchronous] SKIPPED [ 88%] 642s tests/test_telemetry.py::test_user_span_traceid_propagates_to_tango[Asyncio] SKIPPED [ 88%] 642s tests/test_telemetry.py::test_user_span_traceid_propagates_to_tango[Gevent] SKIPPED [ 88%] 642s tests/test_telemetry.py::test_base_device_kernel_tracing_disabled_by_default SKIPPED [ 88%] 642s tests/test_telemetry.py::test_base_device_traces_if_kernel_tracing_enabled[Synchronous] SKIPPED [ 88%] 642s tests/test_telemetry.py::test_base_device_traces_if_kernel_tracing_enabled[Asyncio] SKIPPED [ 88%] 642s tests/test_telemetry.py::test_base_device_traces_if_kernel_tracing_enabled[Gevent] SKIPPED [ 88%] 642s tests/test_telemetry.py::test_no_device_traces_if_device_tracing_disabled[Synchronous] SKIPPED [ 88%] 642s tests/test_telemetry.py::test_no_device_traces_if_device_tracing_disabled[Asyncio] SKIPPED [ 88%] 642s tests/test_telemetry.py::test_no_device_traces_if_device_tracing_disabled[Gevent] SKIPPED [ 89%] 642s tests/test_test_context.py::test_no_warnings_in_test_context PASSED [ 89%] 642s tests/test_test_context.py::test_single_device[Synchronous] PASSED [ 89%] 642s tests/test_test_context.py::test_single_device[Asyncio] FAILED [ 89%] 642s tests/test_test_context.py::test_single_device[Gevent] PASSED [ 89%] 643s tests/test_test_context.py::test_single_device_old_api PASSED [ 89%] 643s tests/test_test_context.py::test_nested_single_device_in_same_process_failure SKIPPED [ 89%] 644s tests/test_test_context.py::test_nested_single_device_in_different_processes_success_without_short_names PASSED [ 89%] 646s tests/test_test_context.py::test_nested_single_device_in_different_processes_failure_with_short_names PASSED [ 89%] 646s tests/test_test_context.py::test_multi_devices_info[SimpleDevice-SimpleDevice] PASSED [ 89%] 646s tests/test_test_context.py::test_multi_devices_info[tango.test_utils.SimpleDevice-SimpleDevice] PASSED [ 89%] 646s tests/test_test_context.py::test_multi_devices_info[class_field2-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 646s tests/test_test_context.py::test_multi_devices_info[class_field3-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 646s tests/test_test_context.py::test_multi_devices_info[class_field4-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 646s tests/test_test_context.py::test_multi_devices_info[class_field5-ClassicAPISimpleDeviceImpl] PASSED [ 90%] 646s tests/test_test_context.py::test_multi_with_single_device[Synchronous] PASSED [ 90%] 647s tests/test_test_context.py::test_multi_with_single_device[Asyncio] FAILED [ 90%] 647s tests/test_test_context.py::test_multi_with_single_device[Gevent] PASSED [ 90%] 647s tests/test_test_context.py::test_multi_with_single_device_old_api PASSED [ 90%] 647s tests/test_test_context.py::test_multi_with_two_devices[Synchronous] PASSED [ 90%] 647s tests/test_test_context.py::test_multi_with_two_devices[Asyncio] FAILED [ 90%] 647s tests/test_test_context.py::test_multi_with_two_devices[Gevent] PASSED [ 90%] 647s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2GreenModeUnspecified-None] PASSED [ 90%] 647s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2Synchronous-None] PASSED [ 91%] 647s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2Gevent-ValueError] PASSED [ 91%] 647s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1GreenModeUnspecified-Device2Asyncio-ValueError] PASSED [ 91%] 647s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2GreenModeUnspecified-None] PASSED [ 91%] 648s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2Synchronous-None] PASSED [ 91%] 648s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2Gevent-ValueError] PASSED [ 91%] 648s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Synchronous-Device2Asyncio-ValueError] PASSED [ 91%] 648s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2GreenModeUnspecified-ValueError] PASSED [ 91%] 648s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Synchronous-ValueError] PASSED [ 91%] 648s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Gevent-ValueError] PASSED [ 91%] 648s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Asyncio-None] FAILED [ 91%] 648s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2GreenModeUnspecified-ValueError] PASSED [ 91%] 648s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2Synchronous-ValueError] PASSED [ 92%] 648s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2Gevent-None] PASSED [ 92%] 648s tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Gevent-Device2Asyncio-ValueError] PASSED [ 92%] 649s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Synchronous-Asyncio-Asyncio-None-SynchronousExecutor] FAILED [ 92%] 649s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Synchronous-Gevent-Gevent-None-SynchronousExecutor] PASSED [ 92%] 649s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Synchronous-Synchronous-None-AsyncioExecutor] FAILED [ 92%] 649s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Gevent-Gevent-None-AsyncioExecutor] FAILED [ 92%] 649s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Gevent-Synchronous-Synchronous-None-GeventExecutor] PASSED [ 92%] 650s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Gevent-Asyncio-Asyncio-None-GeventExecutor] FAILED [ 92%] 650s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Synchronous-Asyncio-None-SynchronousExecutor] FAILED [ 92%] 650s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Synchronous-Gevent-None-SynchronousExecutor] PASSED [ 92%] 650s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Gevent-Synchronous-None-GeventExecutor] PASSED [ 92%] 650s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Gevent-Asyncio-None-GeventExecutor] FAILED [ 93%] 650s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-None-Synchronous-None-SynchronousExecutor] PASSED [ 93%] 651s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Synchronous-DeprecationWarning-AsyncioExecutor] FAILED [ 93%] 651s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Gevent-DeprecationWarning-AsyncioExecutor] FAILED [ 93%] 652s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-None-Asyncio-RuntimeError-AsyncioExecutor] PASSED [ 93%] 652s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-None-Gevent-RuntimeError-GeventExecutor] PASSED [ 93%] 653s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-None-Asyncio-RuntimeError-AsyncioExecutor] PASSED [ 93%] 653s tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Gevent-None-Gevent-RuntimeError-GeventExecutor] PASSED [ 93%] 653s tests/test_test_context.py::test_multi_with_async_devices_initialised FAILED [ 93%] 654s tests/test_test_context.py::test_multi_device_access_via_test_context_methods PASSED [ 93%] 654s tests/test_test_context.py::test_multi_short_name_device_proxy_access_without_tango_db PASSED [ 93%] 655s tests/test_test_context.py::test_multi_short_name_device_proxy_with_dependencies_access_without_tango_db PASSED [ 94%] 655s tests/test_test_context.py::test_multi_short_name_attribute_proxy_access_without_tango_db PASSED [ 94%] 655s tests/test_test_context.py::test_single_short_name_device_proxy_access_without_tango_db PASSED [ 94%] 656s tests/test_test_context.py::test_single_short_name_attribute_proxy_access_without_tango_db PASSED [ 94%] 657s tests/test_test_context.py::test_multi_short_name_access_fails_if_override_disabled PASSED [ 94%] 657s tests/test_test_context.py::test_multi_device_proxy_cached PASSED [ 94%] 657s tests/test_test_context.py::test_multi_with_two_devices_with_properties[Synchronous] PASSED [ 94%] 657s tests/test_test_context.py::test_multi_with_two_devices_with_properties[Asyncio] FAILED [ 94%] 657s tests/test_test_context.py::test_multi_with_two_devices_with_properties[Gevent] PASSED [ 94%] 657s tests/test_test_context.py::test_multi_raises_on_invalid_file_database_properties PASSED [ 94%] 657s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config0] PASSED [ 94%] 657s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config1] PASSED [ 94%] 657s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config2] PASSED [ 95%] 657s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config3] PASSED [ 95%] 657s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config4] PASSED [ 95%] 657s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config5] PASSED [ 95%] 657s tests/test_test_context.py::test_multi_bad_config_fails[bad_multi_device_config6] PASSED [ 95%] 658s tests/test_test_context.py::test_multi_with_memorized_attribute_values[False-None-0] PASSED [ 95%] 658s tests/test_test_context.py::test_multi_with_memorized_attribute_values[False-1-0] PASSED [ 95%] 658s tests/test_test_context.py::test_multi_with_memorized_attribute_values[True-None-0] PASSED [ 95%] 658s tests/test_test_context.py::test_multi_with_memorized_attribute_values[True-1-1] PASSED [ 95%] 658s tests/test_test_context.py::test_single_with_memorized_attribute_values[False-None-0] PASSED [ 95%] 658s tests/test_test_context.py::test_single_with_memorized_attribute_values[False-1-0] PASSED [ 95%] 658s tests/test_test_context.py::test_single_with_memorized_attribute_values[True-None-0] PASSED [ 95%] 658s tests/test_test_context.py::test_single_with_memorized_attribute_values[True-1-1] PASSED [ 96%] 658s tests/test_test_context.py::test_empty_string_property_bug[str-property_value0- ] PASSED [ 96%] 658s tests/test_test_context.py::test_empty_string_property_bug[property_type1-property_value1-expected_outcome1] PASSED [ 96%] 658s tests/test_test_context.py::test_empty_string_property_bug[property_type2-property_value2-expected_outcome2] PASSED [ 96%] 659s tests/test_test_context.py::test_test_context_async_device_proxy[True] FAILED [ 96%] 660s tests/test_test_context.py::test_test_context_async_device_proxy[False] FAILED [ 96%] 660s tests/test_test_context.py::test_test_context_multi_async_device_proxy[True] FAILED [ 96%] 661s tests/test_test_context.py::test_test_context_multi_async_device_proxy[False] FAILED [ 96%] 661s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[True-Futures] PASSED [ 96%] 662s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[True-Gevent] PASSED [ 96%] 662s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[False-Futures] PASSED [ 96%] 662s tests/test_test_context.py::test_test_context_future_and_gevent_device_proxy[False-Gevent] PASSED [ 97%] 662s tests/test_test_context.py::test_forwarded_attributes[True] XFAIL (D...) [ 97%] 663s tests/test_test_context.py::test_forwarded_attributes[False] XFAIL (...) [ 97%] 663s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-a/b/c-a/b/c] PASSED [ 97%] 663s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-a/b/c/d-a/b/c/d] PASSED [ 97%] 663s 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%] 663s 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%] 663s tests/test_utils.py::test_get_trl_with_test_fqtrl_success[None-no://trl/validation-no://trl/validation] PASSED [ 97%] 663s 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%] 663s 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%] 663s 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%] 663s 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%] 663s 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%] 663s 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%] 663s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[host:123-a/b/c] PASSED [ 98%] 663s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://-a/b/c] PASSED [ 98%] 663s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://:123-a/b/c] PASSED [ 98%] 663s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host-a/b/c] PASSED [ 98%] 663s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:0-a/b/c] PASSED [ 98%] 663s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:12/path-a/b/c] PASSED [ 98%] 663s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:123?query=1-a/b/c] PASSED [ 98%] 663s tests/test_utils.py::test_get_trl_with_test_fdqn_failure[tango://host:123#dbase=invalid-a/b/c] PASSED [ 98%] 663s tests/test_utils.py::test_global_state_default_set_and_clear PASSED [ 98%] 663s tests/test_utils.py::test_clear_global_var_without_set_does_not_raise PASSED [ 98%] 663s tests/test_utils.py::test_get_tango_type_valid PASSED [ 99%] 663s tests/test_utils.py::test_get_tango_type_invalid_raises_type_error PASSED [ 99%] 663s tests/test_utils.py::test_sequence_to_string_vector_and_back PASSED [ 99%] 663s tests/test_utils.py::test_sequence_to_double_vector_and_back PASSED [ 99%] 663s tests/test_utils.py::test_sequence_to_dbdevinfo_vector_and_back PASSED [ 99%] 663s tests/test_utils.py::test_sequence_to_dbdevexportinfo_vector_and_back PASSED [ 99%] 663s tests/test_utils.py::test_sequence_to_dbdata_vector_and_back PASSED [ 99%] 663s tests/test_utils.py::test_sequence_to_dbdevimport_vector_and_back PASSED [ 99%] 663s tests/test_utils.py::test_sequence_to_dbhistorylist_vector_and_back PASSED [ 99%] 663s tests/test_utils.py::test_sequence_to_devicedatalist_vector_and_back PASSED [ 99%] 663s tests/test_utils.py::test_sequence_to_devicedatahistorylist_vector_and_back PASSED [ 99%] 663s tests/test_zzz_deprecated_pytango_module.py::test_import_aliased_module PASSED [100%] 663s 663s ==================================== ERRORS ==================================== 663s ____ ERROR at setup of test_read_write_attribute_with_green_modes[Asyncio] _____ 663s fixturedef = 663s request = > 663s 663s @pytest.hookimpl(wrapper=True) 663s def pytest_fixture_setup(fixturedef: FixtureDef, request) -> object | None: 663s asyncio_mode = _get_asyncio_mode(request.config) 663s if not _is_asyncio_fixture_function(fixturedef.func): 663s if asyncio_mode == Mode.STRICT: 663s # Ignore async fixtures without explicit asyncio mark in strict mode 663s # This applies to pytest_trio fixtures, for example 663s > return (yield) 663s ^^^^^ 663s 663s /usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:728: 663s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 663s tests/conftest.py:201: in tango_test_with_green_modes 663s proxy = wait_for_proxy(host, proc, device, green_mode) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s tests/conftest.py:176: in wait_for_proxy 663s proxy = get_proxy(host, port, device, green_mode) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s tests/conftest.py:167: in get_proxy 663s return device_proxy_map[green_mode](access) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 663s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s /usr/lib/python3/dist-packages/tango/green.py:118: in run 663s accessor = self.delegate(fn, *args, **kwargs) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 663s coro = self.loop.run_in_executor(self.subexecutor, callback) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 663s executor.submit(func, *args), loop=self) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 663s self._adjust_thread_count() 663s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 663s 663s self = 663s 663s def _adjust_thread_count(self): 663s # if idle threads are available, don't spin new threads 663s if self._idle_semaphore.acquire(timeout=0): 663s return 663s 663s # When the executor gets lost, the weakref callback will wake up 663s # the worker threads. 663s def weakref_cb(_, q=self._work_queue): 663s q.put(None) 663s 663s num_threads = len(self._threads) 663s if num_threads < self._max_workers: 663s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 663s t = threading.Thread( 663s name=thread_name, 663s target=_thread_pool_executor_worker, 663s args=( 663s weakref.ref(self, weakref_cb), 663s self._work_queue, 663s > self._initializer, 663s ^^^^^^^^^^^^^^^^^ 663s self._initargs, 663s ), 663s ) 663s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 663s 663s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 663s =================================== FAILURES =================================== 663s ___________________ test_green_mode_kwarg_for_proxy_methods ____________________ 663s @pytest.mark.asyncio 663s async def test_green_mode_kwarg_for_proxy_methods(): 663s with DeviceTestContext(ServerTest, device_name="test/test_device/1"): 663s > dev = await get_device_proxy("test/test_device/1", green_mode=GreenMode.Asyncio) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s 663s tests/test_async.py:41: 663s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 663s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 663s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s /usr/lib/python3/dist-packages/tango/green.py:118: in run 663s accessor = self.delegate(fn, *args, **kwargs) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 663s coro = self.loop.run_in_executor(self.subexecutor, callback) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 663s executor.submit(func, *args), loop=self) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 663s self._adjust_thread_count() 663s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 663s 663s self = 663s 663s def _adjust_thread_count(self): 663s # if idle threads are available, don't spin new threads 663s if self._idle_semaphore.acquire(timeout=0): 663s return 663s 663s # When the executor gets lost, the weakref callback will wake up 663s # the worker threads. 663s def weakref_cb(_, q=self._work_queue): 663s q.put(None) 663s 663s num_threads = len(self._threads) 663s if num_threads < self._max_workers: 663s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 663s t = threading.Thread( 663s name=thread_name, 663s target=_thread_pool_executor_worker, 663s args=( 663s weakref.ref(self, weakref_cb), 663s self._work_queue, 663s > self._initializer, 663s ^^^^^^^^^^^^^^^^^ 663s self._initargs, 663s ), 663s ) 663s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 663s 663s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 663s ----------------------------- Captured stdout call ----------------------------- 663s Ready to accept request 663s ----------------------------- Captured stderr call ----------------------------- 663s Can't create notifd event supplier. Notifd event not available 663s ____________________ test_read_write_attribute[int-Asyncio] ____________________ 663s attribute_typed_values = (, (1, 2, -65535, 23), . at 0xebdc8970>) 663s server_green_mode = tango._tango.GreenMode.Asyncio 663s 663s def test_read_write_attribute(attribute_typed_values, server_green_mode): 663s dtype, values, expected = attribute_typed_values 663s 663s if server_green_mode == GreenMode.Asyncio: 663s 663s class TestDevice(Device): 663s green_mode = server_green_mode 663s _is_allowed = None 663s 663s @attribute( 663s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 663s ) 663s async def attr(self): 663s return self.attr_value 663s 663s @attr.write 663s async def attr(self, value): 663s self.attr_value = value 663s 663s async def is_attr_allowed(self, req_type): 663s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 663s return self._is_allowed 663s 663s @command(dtype_in=bool) 663s async def make_allowed(self, yesno): 663s self._is_allowed = yesno 663s 663s else: 663s 663s class TestDevice(Device): 663s green_mode = server_green_mode 663s _is_allowed = None 663s 663s @attribute( 663s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 663s ) 663s def attr(self): 663s return self.attr_value 663s 663s @attr.write 663s def attr(self, value): 663s self.attr_value = value 663s 663s def is_attr_allowed(self, req_type): 663s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 663s return self._is_allowed 663s 663s @command(dtype_in=bool) 663s def make_allowed(self, yesno): 663s self._is_allowed = yesno 663s 663s > with DeviceTestContext(TestDevice) as proxy: 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s 663s tests/test_attributes.py:131: 663s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 663s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 663s self.start() 663s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 663s self.connect() 663s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 663s super().connect() 663s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 663s raise self._startup_exception 663s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 663s runserver( 663s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 663s return run((cls,), args, **kwargs) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 663s return server_run() 663s ^^^^^^^^^^^^ 663s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 663s worker.run(tango_loop, wait=True) 663s /usr/lib/python3/dist-packages/tango/green.py:118: in run 663s accessor = self.delegate(fn, *args, **kwargs) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 663s coro = self.loop.run_in_executor(self.subexecutor, callback) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 663s executor.submit(func, *args), loop=self) 663s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 663s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 663s self._adjust_thread_count() 663s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 663s 663s self = 663s 663s def _adjust_thread_count(self): 663s # if idle threads are available, don't spin new threads 663s if self._idle_semaphore.acquire(timeout=0): 663s return 663s 663s # When the executor gets lost, the weakref callback will wake up 663s # the worker threads. 663s def weakref_cb(_, q=self._work_queue): 663s q.put(None) 663s 663s num_threads = len(self._threads) 663s if num_threads < self._max_workers: 663s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 663s t = threading.Thread( 663s name=thread_name, 663s target=_thread_pool_executor_worker, 663s args=( 663s weakref.ref(self, weakref_cb), 663s self._work_queue, 663s > self._initializer, 663s ^^^^^^^^^^^^^^^^^ 663s self._initargs, 663s ), 663s ) 663s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 663s 663s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 663s ----------------------------- Captured stderr call ----------------------------- 663s Can't create notifd event supplier. Notifd event not available 663s ___________________ test_read_write_attribute[float-Asyncio] ___________________ 663s attribute_typed_values = (, (2.71, 3.14, -3.4678e-09, 1.2678e+16), . at 0xebdc8e40>) 663s server_green_mode = tango._tango.GreenMode.Asyncio 663s 663s def test_read_write_attribute(attribute_typed_values, server_green_mode): 663s dtype, values, expected = attribute_typed_values 663s 663s if server_green_mode == GreenMode.Asyncio: 663s 663s class TestDevice(Device): 663s green_mode = server_green_mode 663s _is_allowed = None 663s 663s @attribute( 663s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 663s ) 663s async def attr(self): 663s return self.attr_value 663s 664s @attr.write 664s async def attr(self, value): 664s self.attr_value = value 664s 664s async def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s def attr(self, value): 664s self.attr_value = value 664s 664s def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:131: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ____________________ test_read_write_attribute[str-Asyncio] ____________________ 664s 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 0xebdbb340>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_attribute(attribute_typed_values, server_green_mode): 664s dtype, values, expected = attribute_typed_values 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s async def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s async def attr(self, value): 664s self.attr_value = value 664s 664s async def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s def attr(self, value): 664s self.attr_value = value 664s 664s def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:131: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ___________________ test_read_write_attribute[bool-Asyncio] ____________________ 664s attribute_typed_values = (, (False, True, True, False), . at 0xebdbb810>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_attribute(attribute_typed_values, server_green_mode): 664s dtype, values, expected = attribute_typed_values 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s async def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s async def attr(self, value): 664s self.attr_value = value 664s 664s async def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s def attr(self, value): 664s self.attr_value = value 664s 664s def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:131: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_read_write_attribute[(int,)-Asyncio] ___________________ 664s attribute_typed_values = ((,), (array([1, 2]), (1, 2, 3), [9, 8, 7], [-65535, 2224], [0, 0]), . at 0xebdbbc88>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_attribute(attribute_typed_values, server_green_mode): 664s dtype, values, expected = attribute_typed_values 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s async def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s async def attr(self, value): 664s self.attr_value = value 664s 664s async def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s def attr(self, value): 664s self.attr_value = value 664s 664s def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:131: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_read_write_attribute[(float,)-Asyncio] __________________ 664s 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 0xebdba188>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_attribute(attribute_typed_values, server_green_mode): 664s dtype, values, expected = attribute_typed_values 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s async def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s async def attr(self, value): 664s self.attr_value = value 664s 664s async def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s def attr(self, value): 664s self.attr_value = value 664s 664s def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:131: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_read_write_attribute[(str,)-Asyncio] ___________________ 664s attribute_typed_values = ((,), (array(['foo', 'bar'], dtype='. at 0xebe2a5a8>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_attribute(attribute_typed_values, server_green_mode): 664s dtype, values, expected = attribute_typed_values 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s async def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s async def attr(self, value): 664s self.attr_value = value 664s 664s async def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s def attr(self, value): 664s self.attr_value = value 664s 664s def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:131: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_read_write_attribute[(bool,)-Asyncio] __________________ 664s attribute_typed_values = ((,), (array([ True, False]), [False, False, True], [True, False, False], [False], [True]), . at 0xebe2aa78>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_attribute(attribute_typed_values, server_green_mode): 664s dtype, values, expected = attribute_typed_values 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s async def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s async def attr(self, value): 664s self.attr_value = value 664s 664s async def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s def attr(self, value): 664s self.attr_value = value 664s 664s def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:131: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_read_write_attribute[((int,),)-Asyncio] _________________ 664s attribute_typed_values = (((,),), (array([[1, 2], 664s [3, 4]]), ((1, 2, 3), (4, 5, 6)), [[-65535, 2224], [-65535, 2224]]), . at 0xebe2aef0>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_attribute(attribute_typed_values, server_green_mode): 664s dtype, values, expected = attribute_typed_values 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s async def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s async def attr(self, value): 664s self.attr_value = value 664s 664s async def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s def attr(self, value): 664s self.attr_value = value 664s 664s def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:131: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ________________ test_read_write_attribute[((float,),)-Asyncio] ________________ 664s attribute_typed_values = (((,),), (array([[0.1, 0.2], 664s [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 0xebddb340>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_attribute(attribute_typed_values, server_green_mode): 664s dtype, values, expected = attribute_typed_values 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s async def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s async def attr(self, value): 664s self.attr_value = value 664s 664s async def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s def attr(self, value): 664s self.attr_value = value 664s 664s def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:131: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_read_write_attribute[((str,),)-Asyncio] _________________ 664s attribute_typed_values = (((,),), (array([['hi-hi', 'ha-ha'], 664s ['hu-hu', 'yuhuu']], dtype='. at 0xebddb760>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_attribute(attribute_typed_values, server_green_mode): 664s dtype, values, expected = attribute_typed_values 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s async def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s async def attr(self, value): 664s self.attr_value = value 664s 664s async def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s def attr(self, value): 664s self.attr_value = value 664s 664s def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:131: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ________________ test_read_write_attribute[((bool,),)-Asyncio] _________________ 664s attribute_typed_values = (((,),), (array([[ True, False], 664s [False, True]]), [[False, False, True], [True, False, False]], [[False]], [[True]]), . at 0xebddbb80>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_attribute(attribute_typed_values, server_green_mode): 664s dtype, values, expected = attribute_typed_values 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s async def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s async def attr(self, value): 664s self.attr_value = value 664s 664s async def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s _is_allowed = None 664s 664s @attribute( 664s dtype=dtype, max_dim_x=3, max_dim_y=3, access=AttrWriteType.READ_WRITE 664s ) 664s def attr(self): 664s return self.attr_value 664s 664s @attr.write 664s def attr(self, value): 664s self.attr_value = value 664s 664s def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self._is_allowed 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:131: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _____________ test_read_write_attribute_decorated_methods[Asyncio] _____________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_attribute_decorated_methods(server_green_mode): 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class BaseTestDevice(Device): 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self.is_allowed = yesno 664s 664s else: 664s 664s class BaseTestDevice(Device): 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self.is_allowed = yesno 664s 664s class TestDevice(BaseTestDevice): 664s green_mode = server_green_mode 664s 664s attr_value = None 664s is_allowed = None 664s 664s attr = attribute(dtype=int, access=AttrWriteType.READ_WRITE) 664s 664s sync_code = textwrap.dedent( 664s """ 664s @general_decorator 664s def read_attr(self): 664s return self.attr_value 664s 664s @general_decorator 664s def write_attr(self, value): 664s self.attr_value = value 664s 664s @general_decorator 664s def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self.is_allowed 664s """ 664s ) 664s 664s if server_green_mode == GreenMode.Asyncio: 664s exec( 664s sync_code.replace("def", "async def").replace( 664s "general_decorator", "general_asyncio_decorator" 664s ) 664s ) 664s else: 664s exec(sync_code) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:421: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________ test_read_write_dynamic_attribute[low_level_read-Asyncio] ___________ 664s dynamic_attribute_read_function = 'def read_dyn_attr(self, attr):\n attr.set_value(self.attr_value)\n' 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_dynamic_attribute( 664s dynamic_attribute_read_function, server_green_mode 664s ): 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s attr_value = None 664s 664s @command 664s async def add_dyn_attr(self): 664s attr = attribute( 664s name="dyn_attr", 664s dtype=int, 664s access=AttrWriteType.READ_WRITE, 664s fget=self.read_dyn_attr, 664s fset=self.write_dyn_attr, 664s ) 664s await self.async_add_attribute(attr) 664s 664s @command 664s async def delete_dyn_attr(self): 664s await self.async_remove_attribute("dyn_attr") 664s 664s async def write_dyn_attr(self, attr): 664s self.attr_value = attr.get_write_value() 664s 664s exec(dynamic_attribute_read_function.replace("def ", "async def ")) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s attr_value = None 664s 664s @command 664s def add_dyn_attr(self): 664s attr = attribute( 664s name="dyn_attr", 664s dtype=int, 664s access=AttrWriteType.READ_WRITE, 664s fget=self.read_dyn_attr, 664s fset=self.write_dyn_attr, 664s ) 664s self.add_attribute(attr) 664s 664s @command 664s def delete_dyn_attr(self): 664s self.remove_attribute("dyn_attr") 664s 664s def write_dyn_attr(self, attr): 664s self.attr_value = attr.get_write_value() 664s 664s exec(dynamic_attribute_read_function) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:918: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________ test_read_write_dynamic_attribute[high_level_read-Asyncio] __________ 664s dynamic_attribute_read_function = 'def read_dyn_attr(self, attr):\n return self.attr_value\n' 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_dynamic_attribute( 664s dynamic_attribute_read_function, server_green_mode 664s ): 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s attr_value = None 664s 664s @command 664s async def add_dyn_attr(self): 664s attr = attribute( 664s name="dyn_attr", 664s dtype=int, 664s access=AttrWriteType.READ_WRITE, 664s fget=self.read_dyn_attr, 664s fset=self.write_dyn_attr, 664s ) 664s await self.async_add_attribute(attr) 664s 664s @command 664s async def delete_dyn_attr(self): 664s await self.async_remove_attribute("dyn_attr") 664s 664s async def write_dyn_attr(self, attr): 664s self.attr_value = attr.get_write_value() 664s 664s exec(dynamic_attribute_read_function.replace("def ", "async def ")) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s attr_value = None 664s 664s @command 664s def add_dyn_attr(self): 664s attr = attribute( 664s name="dyn_attr", 664s dtype=int, 664s access=AttrWriteType.READ_WRITE, 664s fget=self.read_dyn_attr, 664s fset=self.write_dyn_attr, 664s ) 664s self.add_attribute(attr) 664s 664s @command 664s def delete_dyn_attr(self): 664s self.remove_attribute("dyn_attr") 664s 664s def write_dyn_attr(self, attr): 664s self.attr_value = attr.get_write_value() 664s 664s exec(dynamic_attribute_read_function) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:918: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ___________________ test_async_add_remove_dynamic_attribute ____________________ 664s def test_async_add_remove_dynamic_attribute(): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s def __init__(self, *args, **kwargs): 664s super().__init__(*args, **kwargs) 664s self.attr_value = None 664s 664s @command 664s async def add_dyn_attr(self): 664s attr = attribute( 664s name="dyn_attr", 664s dtype=int, 664s access=AttrWriteType.READ_WRITE, 664s fget=self.read_dyn_attr, 664s fset=self.write_dyn_attr, 664s ) 664s self.add_attribute(attr) 664s 664s @command 664s async def delete_dyn_attr(self): 664s self.remove_attribute("dyn_attr") 664s 664s @command 664s async def async_add_dyn_attr(self): 664s attr = attribute( 664s name="dyn_attr", 664s dtype=int, 664s access=AttrWriteType.READ_WRITE, 664s fget=self.read_dyn_attr, 664s fset=self.write_dyn_attr, 664s ) 664s await self.async_add_attribute(attr) 664s 664s @command 664s async def async_delete_dyn_attr(self): 664s await self.async_remove_attribute("dyn_attr") 664s 664s async def write_dyn_attr(self, attr): 664s self.attr_value = attr.get_write_value() 664s 664s async def read_dyn_attr(self, attr): 664s return self.attr_value 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:970: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __ test_read_write_dynamic_attribute_decorated_methods_default_names[Asyncio] __ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_dynamic_attribute_decorated_methods_default_names( 664s server_green_mode, 664s ): 664s 664s is_allowed = True 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s attr_value = None 664s is_allowed = None 664s 664s def initialize_dynamic_attributes(self): 664s attr = attribute(name="attr", dtype=int, access=AttrWriteType.READ_WRITE) 664s self.add_attribute(attr) 664s 664s def allowed(self): 664s return is_allowed 664s 664s sync_code = textwrap.dedent( 664s """\ 664s @general_decorator 664s def read_attr(self, attr): 664s return self.attr_value 664s 664s @general_decorator 664s def write_attr(self, attr): 664s self.attr_value = attr.get_write_value() 664s 664s @general_decorator 664s def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self.allowed() 664s """ 664s ) 664s 664s if server_green_mode != GreenMode.Asyncio: 664s exec(sync_code) 664s else: 664s exec( 664s sync_code.replace("def ", "async def ").replace( 664s "general_decorator", "general_asyncio_decorator" 664s ) 664s ) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:1291: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ___ test_read_write_dynamic_attribute_decorated_methods_user_names[Asyncio] ____ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_dynamic_attribute_decorated_methods_user_names(server_green_mode): 664s 664s is_allowed = True 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s attr_value = None 664s is_allowed = None 664s 664s def initialize_dynamic_attributes(self): 664s attr = attribute( 664s name="attr", 664s dtype=int, 664s access=AttrWriteType.READ_WRITE, 664s fget=self.user_read, 664s fset=self.user_write, 664s fisallowed=self.user_is_allowed, 664s ) 664s self.add_attribute(attr) 664s 664s def allowed(self): 664s return is_allowed 664s 664s sync_code = textwrap.dedent( 664s """\ 664s @general_decorator 664s def user_read(self, attr): 664s return self.attr_value 664s 664s @general_decorator 664s def user_write(self, attr): 664s self.attr_value = attr.get_write_value() 664s 664s @general_decorator 664s def user_is_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self.allowed() 664s """ 664s ) 664s 664s if server_green_mode != GreenMode.Asyncio: 664s exec(sync_code) 664s else: 664s exec( 664s sync_code.replace("def ", "async def ").replace( 664s "general_decorator", "general_asyncio_decorator" 664s ) 664s ) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:1352: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _______ test_read_write_dynamic_attribute_is_allowed_with_async[Asyncio] _______ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_read_write_dynamic_attribute_is_allowed_with_async(server_green_mode): 664s DYN_ATTRS_END_RANGE = 9 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class BaseTestDevice(Device): 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s for att_num in range(1, DYN_ATTRS_END_RANGE): 664s setattr(self, f"attr{att_num}_allowed", yesno) 664s 664s else: 664s 664s class BaseTestDevice(Device): 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s for att_num in range(1, DYN_ATTRS_END_RANGE): 664s setattr(self, f"attr{att_num}_allowed", yesno) 664s 664s class TestDevice(BaseTestDevice): 664s green_mode = server_green_mode 664s 664s def __init__(self, *args, **kwargs): 664s super().__init__(*args, **kwargs) 664s for att_num in range(1, DYN_ATTRS_END_RANGE): 664s setattr(self, f"attr{att_num}_allowed", True) 664s for att_num in range(1, DYN_ATTRS_END_RANGE): 664s setattr(self, f"attr{att_num}_value", None) 664s 664s def initialize_dynamic_attributes(self): 664s # recommended approach: using attribute() and bound methods: 664s attr = attribute( 664s name="dyn_attr1", 664s dtype=int, 664s access=AttrWriteType.READ_WRITE, 664s fget=self.read_dyn_attr1, 664s fset=self.write_dyn_attr1, 664s fisallowed=self.is_attr1_allowed, 664s ) 664s self.add_attribute(attr) 664s 664s # not recommended: using attribute() with unbound methods: 664s attr = attribute( 664s name="dyn_attr2", 664s dtype=int, 664s access=AttrWriteType.READ_WRITE, 664s fget=TestDevice.read_dyn_attr2, 664s fset=TestDevice.write_dyn_attr2, 664s fisallowed=TestDevice.is_attr2_allowed, 664s ) 664s self.add_attribute(attr) 664s 664s # possible approach: using attribute() with method name strings: 664s attr = attribute( 664s name="dyn_attr3", 664s dtype=int, 664s access=AttrWriteType.READ_WRITE, 664s fget="read_dyn_attr3", 664s fset="write_dyn_attr3", 664s fisallowed="is_attr3_allowed", 664s ) 664s self.add_attribute(attr) 664s 664s # old approach: using tango.AttrData with bound methods: 664s attr_name = "dyn_attr4" 664s data_info = self._get_attr_data_info() 664s dev_class = self.get_device_class() 664s attr_data = AttrData(attr_name, dev_class.get_name(), data_info) 664s self.add_attribute( 664s attr_data, 664s self.read_dyn_attr4, 664s self.write_dyn_attr4, 664s self.is_attr4_allowed, 664s ) 664s 664s # old approach: using tango.AttrData with unbound methods: 664s attr_name = "dyn_attr5" 664s attr_data = AttrData(attr_name, dev_class.get_name(), data_info) 664s self.add_attribute( 664s attr_data, 664s TestDevice.read_dyn_attr5, 664s TestDevice.write_dyn_attr5, 664s TestDevice.is_attr5_allowed, 664s ) 664s 664s # old approach: using tango.AttrData with default method names 664s attr_name = "dyn_attr6" 664s attr_data = AttrData(attr_name, dev_class.get_name(), data_info) 664s self.add_attribute(attr_data) 664s 664s # old approach: using tango.AttrData filled from dictionary 664s attr_name = "dyn_attr7" 664s d = { 664s "name": attr_name, 664s "class_name": dev_class.get_name(), 664s # not setting access explicitly 664s "fread": "read_dyn_attr7", 664s "fwrite": "write_dyn_attr7", 664s "fisallowed": self.is_attr7_allowed, 664s } 664s attr_data = AttrData.from_dict(d) 664s self.add_attribute(attr_data) 664s 664s # not recommened: implicit access level 664s attr = attribute( 664s name="dyn_attr8", 664s fset=self.write_dyn_attr8, 664s fisallowed=self.is_attr8_allowed, 664s ) 664s self.add_attribute(attr) 664s 664s def _get_attr_data_info(self): 664s simple_type, fmt = get_tango_type_format(int) 664s data_info = [[simple_type, fmt, READ_WRITE]] 664s return data_info 664s 664s # the following methods are written in plain text which looks 664s # weird. This is done so that it is easy to change for async 664s # tests without duplicating all the code. 664s read_code = textwrap.dedent( 664s """ 664s def read_dyn_attr(self, attr): 664s return self.attr_value 664s """ 664s ) 664s 664s write_code = textwrap.dedent( 664s """ 664s def write_dyn_attr(self, attr): 664s self.attr_value = attr.get_write_value() 664s """ 664s ) 664s 664s is_allowed_code = textwrap.dedent( 664s """ 664s def is_attr_allowed(self, req_type): 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return self.attr_allowed 664s """ 664s ) 664s 664s for attr_num in range(1, DYN_ATTRS_END_RANGE): 664s read_method = read_code.replace("read_dyn_attr", f"read_dyn_attr{attr_num}") 664s read_method = read_method.replace("attr_value", f"attr{attr_num}_value") 664s write_method = write_code.replace( 664s "write_dyn_attr", f"write_dyn_attr{attr_num}" 664s ) 664s write_method = write_method.replace("attr_value", f"attr{attr_num}_value") 664s if attr_num != 6: 664s is_allowed_method = is_allowed_code.replace( 664s "is_attr_allowed", f"is_attr{attr_num}_allowed" 664s ) 664s else: 664s # default name differs 664s is_allowed_method = is_allowed_code.replace( 664s "is_attr_allowed", f"is_dyn_attr{attr_num}_allowed" 664s ) 664s is_allowed_method = is_allowed_method.replace( 664s "self.attr_allowed", f"self.attr{attr_num}_allowed" 664s ) 664s 664s if server_green_mode != GreenMode.Asyncio: 664s exec(read_method) 664s exec(write_method) 664s exec(is_allowed_method) 664s else: 664s exec(read_method.replace("def ", "async def ")) 664s exec(write_method.replace("def ", "async def ")) 664s exec(is_allowed_method.replace("def ", "async def ")) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:1702: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _____________ test_dynamic_attribute_with_green_mode[Asyncio-True] _____________ 664s use_green_mode = True, server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s @pytest.mark.parametrize("use_green_mode", [True, False]) 664s def test_dynamic_attribute_with_green_mode(use_green_mode, server_green_mode): 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s attr_value = 123 664s 664s def initialize_dynamic_attributes(self): 664s global executor 664s executor = get_executor(server_green_mode) 664s attr = attribute( 664s name="attr_r", 664s dtype=int, 664s access=AttrWriteType.READ, 664s fget=self.user_read, 664s read_green_mode=use_green_mode, 664s ) 664s self.add_attribute(attr) 664s attr = attribute( 664s name="attr_rw", 664s dtype=int, 664s access=AttrWriteType.READ_WRITE, 664s fget=self.user_read, 664s fset=self.user_write, 664s read_green_mode=use_green_mode, 664s write_green_mode=use_green_mode, 664s ) 664s self.add_attribute(attr) 664s attr = attribute( 664s name="attr_ia", 664s dtype=int, 664s access=AttrWriteType.READ, 664s fget=self.user_read, 664s fisallowed=self.user_is_allowed, 664s read_green_mode=use_green_mode, 664s isallowed_green_mode=use_green_mode, 664s ) 664s self.add_attribute(attr) 664s attr = attribute( 664s name="attr_rw_always_ok", 664s dtype=int, 664s access=AttrWriteType.READ_WRITE, 664s fget=self.user_read, 664s fset=self.user_write, 664s green_mode=True, 664s ) 664s self.add_attribute(attr) 664s 664s sync_code = textwrap.dedent( 664s """ 664s def user_read(self, attr): 664s self.assert_executor_context_correct(attr.get_name()) 664s return self.attr_value 664s 664s def user_write(self, attr): 664s self.assert_executor_context_correct(attr.get_name()) 664s self.attr_value = attr.get_write_value() 664s 664s def user_is_allowed(self, req_type): 664s self.assert_executor_context_correct() 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return True 664s 664s """ 664s ) 664s 664s def assert_executor_context_correct(self, attr_name=""): 664s check_required = attr_name != "attr_rw_always_ok" 664s if check_required and executor.asynchronous: 664s assert executor.in_executor_context() == use_green_mode 664s 664s if server_green_mode == GreenMode.Asyncio and use_green_mode: 664s exec(sync_code.replace("def", "async def")) 664s else: 664s exec(sync_code) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:1799: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ____________ test_dynamic_attribute_with_green_mode[Asyncio-False] _____________ 664s use_green_mode = False, server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s @pytest.mark.parametrize("use_green_mode", [True, False]) 664s def test_dynamic_attribute_with_green_mode(use_green_mode, server_green_mode): 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s attr_value = 123 664s 664s def initialize_dynamic_attributes(self): 664s global executor 664s executor = get_executor(server_green_mode) 664s attr = attribute( 664s name="attr_r", 664s dtype=int, 664s access=AttrWriteType.READ, 664s fget=self.user_read, 664s read_green_mode=use_green_mode, 664s ) 664s self.add_attribute(attr) 664s attr = attribute( 664s name="attr_rw", 664s dtype=int, 664s access=AttrWriteType.READ_WRITE, 664s fget=self.user_read, 664s fset=self.user_write, 664s read_green_mode=use_green_mode, 664s write_green_mode=use_green_mode, 664s ) 664s self.add_attribute(attr) 664s attr = attribute( 664s name="attr_ia", 664s dtype=int, 664s access=AttrWriteType.READ, 664s fget=self.user_read, 664s fisallowed=self.user_is_allowed, 664s read_green_mode=use_green_mode, 664s isallowed_green_mode=use_green_mode, 664s ) 664s self.add_attribute(attr) 664s attr = attribute( 664s name="attr_rw_always_ok", 664s dtype=int, 664s access=AttrWriteType.READ_WRITE, 664s fget=self.user_read, 664s fset=self.user_write, 664s green_mode=True, 664s ) 664s self.add_attribute(attr) 664s 664s sync_code = textwrap.dedent( 664s """ 664s def user_read(self, attr): 664s self.assert_executor_context_correct(attr.get_name()) 664s return self.attr_value 664s 664s def user_write(self, attr): 664s self.assert_executor_context_correct(attr.get_name()) 664s self.attr_value = attr.get_write_value() 664s 664s def user_is_allowed(self, req_type): 664s self.assert_executor_context_correct() 664s assert req_type in (AttReqType.READ_REQ, AttReqType.WRITE_REQ) 664s return True 664s 664s """ 664s ) 664s 664s def assert_executor_context_correct(self, attr_name=""): 664s check_required = attr_name != "attr_rw_always_ok" 664s if check_required and executor.asynchronous: 664s assert executor.in_executor_context() == use_green_mode 664s 664s if server_green_mode == GreenMode.Asyncio and use_green_mode: 664s exec(sync_code.replace("def", "async def")) 664s else: 664s exec(sync_code) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:1799: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ______________________ test_attribute_decorators[Asyncio] ______________________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_attribute_decorators(server_green_mode): 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class BaseTestDevice(Device): 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self.is_allowed = yesno 664s 664s else: 664s 664s class BaseTestDevice(Device): 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self.is_allowed = yesno 664s 664s class TestDevice(BaseTestDevice): 664s green_mode = server_green_mode 664s current_value = None 664s voltage_value = None 664s is_allowed = None 664s 664s current = attribute(label="Current", unit="mA", dtype=float) 664s voltage = attribute(label="Voltage", unit="V", dtype=float) 664s 664s sync_code = textwrap.dedent( 664s """ 664s @current.getter 664s def cur_read(self): 664s return self.current_value 664s 664s @current.setter 664s def cur_write(self, current): 664s self.current_value = current 664s 664s @current.is_allowed 664s def cur_allo(self, req_type): 664s return self.is_allowed 664s 664s @voltage.read 664s def vol_read(self): 664s return self.voltage_value 664s 664s @voltage.write 664s def vol_write(self, voltage): 664s self.voltage_value = voltage 664s 664s @voltage.is_allowed 664s def vol_allo(self, req_type): 664s return self.is_allowed 664s """ 664s ) 664s 664s if server_green_mode == GreenMode.Asyncio: 664s exec(sync_code.replace("def ", "async def ")) 664s else: 664s exec(sync_code) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:2013: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ________________________ test_polled_attribute[Asyncio] ________________________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_polled_attribute(server_green_mode): 664s dct = {"PolledAttribute1": 100, "PolledAttribute2": 100000, "PolledAttribute3": 500} 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @attribute(polling_period=dct["PolledAttribute1"]) 664s def PolledAttribute1(self): 664s return 42.0 664s 664s @attribute(polling_period=dct["PolledAttribute2"]) 664s def PolledAttribute2(self): 664s return 43.0 664s 664s @attribute(polling_period=dct["PolledAttribute3"]) 664s def PolledAttribute3(self): 664s return 44.0 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_attributes.py:2164: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ______________________ test_identity_command[int-Asyncio] ______________________ 664s command_typed_values = (, (1, 2, -65535, 23), . at 0xec200de8>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_identity_command(command_typed_values, server_green_mode): 664s dtype, values, expected = command_typed_values 664s 664s if dtype == (bool,): 664s pytest.xfail("Not supported for some reasons") 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s async def identity(self, arg): 664s return arg 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s def identity(self, arg): 664s return arg 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_commands.py:57: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _____________________ test_identity_command[float-Asyncio] _____________________ 664s command_typed_values = (, (2.71, 3.14, -3.4678e-09, 1.2678e+16), . at 0xebf7a2e8>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_identity_command(command_typed_values, server_green_mode): 664s dtype, values, expected = command_typed_values 664s 664s if dtype == (bool,): 664s pytest.xfail("Not supported for some reasons") 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s async def identity(self, arg): 664s return arg 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s def identity(self, arg): 664s return arg 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_commands.py:57: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ______________________ test_identity_command[str-Asyncio] ______________________ 664s 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 0xebf7a760>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_identity_command(command_typed_values, server_green_mode): 664s dtype, values, expected = command_typed_values 664s 664s if dtype == (bool,): 664s pytest.xfail("Not supported for some reasons") 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s async def identity(self, arg): 664s return arg 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s def identity(self, arg): 664s return arg 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_commands.py:57: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _____________________ test_identity_command[bool-Asyncio] ______________________ 664s command_typed_values = (, (False, True, True, False), . at 0xebf7ac30>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_identity_command(command_typed_values, server_green_mode): 664s dtype, values, expected = command_typed_values 664s 664s if dtype == (bool,): 664s pytest.xfail("Not supported for some reasons") 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s async def identity(self, arg): 664s return arg 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s def identity(self, arg): 664s return arg 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_commands.py:57: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ____________________ test_identity_command[(int,)-Asyncio] _____________________ 664s command_typed_values = ((,), (array([1, 2]), (1, 2, 3), [9, 8, 7], [-65535, 2224], [0, 0]), . at 0xebfa40d8>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_identity_command(command_typed_values, server_green_mode): 664s dtype, values, expected = command_typed_values 664s 664s if dtype == (bool,): 664s pytest.xfail("Not supported for some reasons") 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s async def identity(self, arg): 664s return arg 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s def identity(self, arg): 664s return arg 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_commands.py:57: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ___________________ test_identity_command[(float,)-Asyncio] ____________________ 664s 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 0xebfa2600>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_identity_command(command_typed_values, server_green_mode): 664s dtype, values, expected = command_typed_values 664s 664s if dtype == (bool,): 664s pytest.xfail("Not supported for some reasons") 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s async def identity(self, arg): 664s return arg 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s def identity(self, arg): 664s return arg 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_commands.py:57: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ____________________ test_identity_command[(str,)-Asyncio] _____________________ 664s command_typed_values = ((,), (array(['foo', 'bar'], dtype='. at 0xebfa2b28>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_identity_command(command_typed_values, server_green_mode): 664s dtype, values, expected = command_typed_values 664s 664s if dtype == (bool,): 664s pytest.xfail("Not supported for some reasons") 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s async def identity(self, arg): 664s return arg 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s def identity(self, arg): 664s return arg 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_commands.py:57: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _____________ test_identity_command[DevVarLongStringArray-Asyncio] _____________ 664s command_typed_values = (tango._tango.CmdArgType.DevVarLongStringArray, ([[1, 2, 3], ['foo', 'bar', 'hmm']],), . at 0xebfa7398>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_identity_command(command_typed_values, server_green_mode): 664s dtype, values, expected = command_typed_values 664s 664s if dtype == (bool,): 664s pytest.xfail("Not supported for some reasons") 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s async def identity(self, arg): 664s return arg 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s def identity(self, arg): 664s return arg 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_commands.py:57: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ____________ test_identity_command[DevVarDoubleStringArray-Asyncio] ____________ 664s command_typed_values = (tango._tango.CmdArgType.DevVarDoubleStringArray, ([[1.1, 2.2, 3.3], ['foo', 'bar', 'hmm']],), . at 0xebfa77b8>) 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_identity_command(command_typed_values, server_green_mode): 664s dtype, values, expected = command_typed_values 664s 664s if dtype == (bool,): 664s pytest.xfail("Not supported for some reasons") 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s async def identity(self, arg): 664s return arg 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @command(dtype_in=dtype, dtype_out=dtype) 664s def identity(self, arg): 664s return arg 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_commands.py:57: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _______________________ test_decorated_command[Asyncio] ________________________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_decorated_command(server_green_mode): 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s is_allowed = None 664s 664s @command(dtype_in=int, dtype_out=int) 664s @general_asyncio_decorator() 664s async def identity(self, arg): 664s return arg 664s 664s @general_asyncio_decorator 664s async def is_identity_allowed(self): 664s return self.is_allowed 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self.is_allowed = yesno 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s is_allowed = None 664s 664s @command(dtype_in=int, dtype_out=int) 664s @general_decorator() 664s def identity(self, arg): 664s return arg 664s 664s @general_decorator 664s def is_identity_allowed(self): 664s return self.is_allowed 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self.is_allowed = yesno 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_commands.py:158: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _______________________ test_command_isallowed[Asyncio] ________________________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_command_isallowed(server_green_mode): 664s is_allowed = None 664s 664s def sync_allowed(device): 664s assert isinstance(device, TestDevice) 664s return is_allowed 664s 664s async def async_allowed(device): 664s assert isinstance(device, TestDevice) 664s return is_allowed 664s 664s class IsAllowedCallableClass: 664s def __init__(self): 664s self._is_allowed = None 664s 664s def __call__(self, device): 664s assert isinstance(device, TestDevice) 664s return self._is_allowed 664s 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s is_allowed_callable_class = IsAllowedCallableClass() 664s 664s class AsyncIsAllowedCallableClass(IsAllowedCallableClass): 664s async def __call__(self, device): 664s assert isinstance(device, TestDevice) 664s return self._is_allowed 664s 664s async_is_allowed_callable_class = AsyncIsAllowedCallableClass() 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def __init__(self, *args, **kwargs): 664s super().__init__(*args, **kwargs) 664s self._is_allowed = True 664s 664s @command(dtype_in=int, dtype_out=int) 664s async def identity(self, arg): 664s return arg 664s 664s @command(dtype_in=int, dtype_out=int, fisallowed="is_identity_allowed") 664s async def identity_kwarg_string(self, arg): 664s return arg 664s 664s @command( 664s dtype_in=int, 664s dtype_out=int, 664s fisallowed=async_allowed, 664s ) 664s async def identity_kwarg_callable(self, arg): 664s return arg 664s 664s @command( 664s dtype_in=int, dtype_out=int, fisallowed=async_is_allowed_callable_class 664s ) 664s async def identity_kwarg_callable_class(self, arg): 664s return arg 664s 664s @command(dtype_in=int, dtype_out=int) 664s async def identity_always_allowed(self, arg): 664s return arg 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s async def is_identity_allowed(self): 664s return self._is_allowed 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def __init__(self, *args, **kwargs): 664s super().__init__(*args, **kwargs) 664s self._is_allowed = True 664s 664s @command(dtype_in=int, dtype_out=int) 664s def identity(self, arg): 664s return arg 664s 664s @command(dtype_in=int, dtype_out=int, fisallowed="is_identity_allowed") 664s def identity_kwarg_string(self, arg): 664s return arg 664s 664s @command(dtype_in=int, dtype_out=int, fisallowed=sync_allowed) 664s def identity_kwarg_callable(self, arg): 664s return arg 664s 664s @command(dtype_in=int, dtype_out=int, fisallowed=is_allowed_callable_class) 664s def identity_kwarg_callable_class(self, arg): 664s return arg 664s 664s @command(dtype_in=int, dtype_out=int) 664s def identity_always_allowed(self, arg): 664s return arg 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s def is_identity_allowed(self): 664s return self._is_allowed 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_commands.py:276: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ______________________ test_dynamic_command[Asyncio-True] ______________________ 664s device_command_level = True, server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s @pytest.mark.parametrize("device_command_level", [True, False]) 664s def test_dynamic_command(device_command_level, server_green_mode): 664s is_allowed = None 664s 664s def sync_allowed(device): 664s assert isinstance(device, TestDevice) 664s return is_allowed 664s 664s async def async_allowed(device): 664s assert isinstance(device, TestDevice) 664s return is_allowed 664s 664s class IsAllowedCallable: 664s def __init__(self): 664s self._is_allowed = None 664s 664s def __call__(self, device): 664s assert isinstance(device, TestDevice) 664s return self._is_allowed 664s 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s class AsyncIsAllowedCallable(IsAllowedCallable): 664s async def __call__(self, device): 664s assert isinstance(device, TestDevice) 664s return self._is_allowed 664s 664s is_allowed_callable_class = IsAllowedCallable() 664s async_is_allowed_callable_class = AsyncIsAllowedCallable() 664s 664s class BaseTestDevice(Device): 664s green_mode = server_green_mode 664s 664s def __init__(self, *args, **kwargs): 664s super().__init__(*args, **kwargs) 664s self._is_allowed = True 664s 664s def _add_dyn_cmd(self): 664s cmd = command(f=self.identity, dtype_in=int, dtype_out=int) 664s self.add_command(cmd, device_command_level) 664s 664s cmd = command( 664s f=self.identity_kwarg_string, 664s dtype_in=int, 664s dtype_out=int, 664s fisallowed="is_identity_allowed", 664s ) 664s self.add_command(cmd, device_command_level) 664s 664s cmd = command( 664s f=self.identity_kwarg_callable, 664s dtype_in=int, 664s dtype_out=int, 664s fisallowed=self.is_identity_allowed, 664s ) 664s self.add_command(cmd, device_command_level) 664s 664s cmd = command( 664s f=self.identity_kwarg_callable_outside_class, 664s dtype_in=int, 664s dtype_out=int, 664s fisallowed=( 664s sync_allowed 664s if server_green_mode != GreenMode.Asyncio 664s else async_allowed 664s ), 664s ) 664s self.add_command(cmd, device_command_level) 664s 664s cmd = command( 664s f=self.identity_kwarg_callable_class, 664s dtype_in=int, 664s dtype_out=int, 664s fisallowed=( 664s is_allowed_callable_class 664s if server_green_mode != GreenMode.Asyncio 664s else async_is_allowed_callable_class 664s ), 664s ) 664s self.add_command(cmd, device_command_level) 664s 664s cmd = command(f=self.identity_always_allowed, dtype_in=int, dtype_out=int) 664s self.add_command(cmd, device_command_level) 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(BaseTestDevice): 664s async def identity(self, arg): 664s return arg 664s 664s async def identity_kwarg_string(self, arg): 664s return arg 664s 664s async def identity_kwarg_callable(self, arg): 664s return arg 664s 664s async def identity_kwarg_callable_outside_class(self, arg): 664s return arg 664s 664s async def identity_kwarg_callable_class(self, arg): 664s return arg 664s 664s async def identity_always_allowed(self, arg): 664s return arg 664s 664s @command() 664s async def add_dyn_cmd(self): 664s self._add_dyn_cmd() 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s async def is_identity_allowed(self): 664s return self._is_allowed 664s 664s else: 664s 664s class TestDevice(BaseTestDevice): 664s def identity(self, arg): 664s return arg 664s 664s def identity_kwarg_string(self, arg): 664s return arg 664s 664s def identity_kwarg_callable(self, arg): 664s return arg 664s 664s def identity_kwarg_callable_outside_class(self, arg): 664s return arg 664s 664s def identity_kwarg_callable_class(self, arg): 664s return arg 664s 664s def identity_always_allowed(self, arg): 664s return arg 664s 664s @command() 664s def add_dyn_cmd(self): 664s self._add_dyn_cmd() 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s def is_identity_allowed(self): 664s return self._is_allowed 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_commands.py:457: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _____________________ test_dynamic_command[Asyncio-False] ______________________ 664s device_command_level = False, server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s @pytest.mark.parametrize("device_command_level", [True, False]) 664s def test_dynamic_command(device_command_level, server_green_mode): 664s is_allowed = None 664s 664s def sync_allowed(device): 664s assert isinstance(device, TestDevice) 664s return is_allowed 664s 664s async def async_allowed(device): 664s assert isinstance(device, TestDevice) 664s return is_allowed 664s 664s class IsAllowedCallable: 664s def __init__(self): 664s self._is_allowed = None 664s 664s def __call__(self, device): 664s assert isinstance(device, TestDevice) 664s return self._is_allowed 664s 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s class AsyncIsAllowedCallable(IsAllowedCallable): 664s async def __call__(self, device): 664s assert isinstance(device, TestDevice) 664s return self._is_allowed 664s 664s is_allowed_callable_class = IsAllowedCallable() 664s async_is_allowed_callable_class = AsyncIsAllowedCallable() 664s 664s class BaseTestDevice(Device): 664s green_mode = server_green_mode 664s 664s def __init__(self, *args, **kwargs): 664s super().__init__(*args, **kwargs) 664s self._is_allowed = True 664s 664s def _add_dyn_cmd(self): 664s cmd = command(f=self.identity, dtype_in=int, dtype_out=int) 664s self.add_command(cmd, device_command_level) 664s 664s cmd = command( 664s f=self.identity_kwarg_string, 664s dtype_in=int, 664s dtype_out=int, 664s fisallowed="is_identity_allowed", 664s ) 664s self.add_command(cmd, device_command_level) 664s 664s cmd = command( 664s f=self.identity_kwarg_callable, 664s dtype_in=int, 664s dtype_out=int, 664s fisallowed=self.is_identity_allowed, 664s ) 664s self.add_command(cmd, device_command_level) 664s 664s cmd = command( 664s f=self.identity_kwarg_callable_outside_class, 664s dtype_in=int, 664s dtype_out=int, 664s fisallowed=( 664s sync_allowed 664s if server_green_mode != GreenMode.Asyncio 664s else async_allowed 664s ), 664s ) 664s self.add_command(cmd, device_command_level) 664s 664s cmd = command( 664s f=self.identity_kwarg_callable_class, 664s dtype_in=int, 664s dtype_out=int, 664s fisallowed=( 664s is_allowed_callable_class 664s if server_green_mode != GreenMode.Asyncio 664s else async_is_allowed_callable_class 664s ), 664s ) 664s self.add_command(cmd, device_command_level) 664s 664s cmd = command(f=self.identity_always_allowed, dtype_in=int, dtype_out=int) 664s self.add_command(cmd, device_command_level) 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(BaseTestDevice): 664s async def identity(self, arg): 664s return arg 664s 664s async def identity_kwarg_string(self, arg): 664s return arg 664s 664s async def identity_kwarg_callable(self, arg): 664s return arg 664s 664s async def identity_kwarg_callable_outside_class(self, arg): 664s return arg 664s 664s async def identity_kwarg_callable_class(self, arg): 664s return arg 664s 664s async def identity_always_allowed(self, arg): 664s return arg 664s 664s @command() 664s async def add_dyn_cmd(self): 664s self._add_dyn_cmd() 664s 664s @command(dtype_in=bool) 664s async def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s async def is_identity_allowed(self): 664s return self._is_allowed 664s 664s else: 664s 664s class TestDevice(BaseTestDevice): 664s def identity(self, arg): 664s return arg 664s 664s def identity_kwarg_string(self, arg): 664s return arg 664s 664s def identity_kwarg_callable(self, arg): 664s return arg 664s 664s def identity_kwarg_callable_outside_class(self, arg): 664s return arg 664s 664s def identity_kwarg_callable_class(self, arg): 664s return arg 664s 664s def identity_always_allowed(self, arg): 664s return arg 664s 664s @command() 664s def add_dyn_cmd(self): 664s self._add_dyn_cmd() 664s 664s @command(dtype_in=bool) 664s def make_allowed(self, yesno): 664s self._is_allowed = yesno 664s 664s def is_identity_allowed(self): 664s return self._is_allowed 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_commands.py:457: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _______________________ test_high_level_api_for_asyncio ________________________ 664s tango_test = TangoTest(sys/tg_test/17) 664s 664s @pytest.mark.asyncio 664s async def test_high_level_api_for_asyncio(tango_test): 664s tango_test.set_green_mode(GreenMode.Asyncio) 664s > _ = await tango_test.long_scalar 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_device_proxy.py:234: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/device_proxy.py:387: in __async_get_attribute_value 664s attr_value = await self.read_attribute(name) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 664s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ---------------------------- Captured stdout setup ----------------------------- 664s Ready to accept request 664s _________________________ test_repr_uses_info[Asyncio] _________________________ 664s green_mode_device_proxy = functools.partial(functools.partial(, green_mode=tango._tango.GreenMode.Asyncio), wait=True) 664s simple_device_fqdn = 'tango://127.0.0.1:58403/test/nodb/testdevice#dbase=no' 664s 664s def test_repr_uses_info(green_mode_device_proxy, simple_device_fqdn): 664s > proxy = green_mode_device_proxy(simple_device_fqdn) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_device_proxy.py:578: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 664s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ---------------------------- Captured stdout setup ----------------------------- 664s Ready to accept request 664s ---------------------------- Captured stderr setup ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ________________ test_repr_default_if_info_unavailable[Asyncio] ________________ 664s green_mode_device_proxy = functools.partial(functools.partial(, green_mode=tango._tango.GreenMode.Asyncio), wait=True) 664s simple_device_fqdn = 'tango://127.0.0.1:59877/test/nodb/testdevice#dbase=no' 664s 664s def test_repr_default_if_info_unavailable(green_mode_device_proxy, simple_device_fqdn): 664s > proxy = green_mode_device_proxy(simple_device_fqdn) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_device_proxy.py:583: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 664s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ---------------------------- Captured stdout setup ----------------------------- 664s Ready to accept request 664s ---------------------------- Captured stderr setup ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ____________ test_multiple_repr_calls_only_call_info_once[Asyncio] _____________ 664s green_mode_device_proxy = functools.partial(functools.partial(, green_mode=tango._tango.GreenMode.Asyncio), wait=True) 664s simple_device_fqdn = 'tango://127.0.0.1:47457/test/nodb/testdevice#dbase=no' 664s 664s def test_multiple_repr_calls_only_call_info_once( 664s green_mode_device_proxy, simple_device_fqdn 664s ): 664s > proxy = green_mode_device_proxy(simple_device_fqdn) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_device_proxy.py:596: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 664s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ---------------------------- Captured stdout setup ----------------------------- 664s Ready to accept request 664s ---------------------------- Captured stderr setup ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ____________________ test_no_memory_leak_for_repr[Asyncio] _____________________ 664s green_mode_device_proxy = functools.partial(functools.partial(, green_mode=tango._tango.GreenMode.Asyncio), wait=True) 664s simple_device_fqdn = 'tango://127.0.0.1:33667/test/nodb/testdevice#dbase=no' 664s 664s def test_no_memory_leak_for_repr(green_mode_device_proxy, simple_device_fqdn): 664s > proxy = green_mode_device_proxy(simple_device_fqdn) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_device_proxy.py:613: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 664s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ---------------------------- Captured stdout setup ----------------------------- 664s Ready to accept request 664s ---------------------------- Captured stderr setup ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _____________________ test_no_memory_leak_for_str[Asyncio] _____________________ 664s green_mode_device_proxy = functools.partial(functools.partial(, green_mode=tango._tango.GreenMode.Asyncio), wait=True) 664s simple_device_fqdn = 'tango://127.0.0.1:39719/test/nodb/testdevice#dbase=no' 664s 664s def test_no_memory_leak_for_str(green_mode_device_proxy, simple_device_fqdn): 664s > proxy = green_mode_device_proxy(simple_device_fqdn) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_device_proxy.py:625: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 664s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ---------------------------- Captured stdout setup ----------------------------- 664s Ready to accept request 664s ---------------------------- Captured stderr setup ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ____________________ test_no_cyclic_ref_for_proxy[Asyncio] _____________________ 664s green_mode_device_proxy = functools.partial(functools.partial(, green_mode=tango._tango.GreenMode.Asyncio), wait=True) 664s simple_device_fqdn = 'tango://127.0.0.1:45589/test/nodb/testdevice#dbase=no' 664s 664s def test_no_cyclic_ref_for_proxy(green_mode_device_proxy, simple_device_fqdn): 664s > proxy = green_mode_device_proxy(simple_device_fqdn) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_device_proxy.py:637: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 664s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ---------------------------- Captured stdout setup ----------------------------- 664s Ready to accept request 664s ---------------------------- Captured stderr setup ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ________________________ test_async_logging_decorators _________________________ 664s def test_async_logging_decorators(): 664s > with MultiDeviceTestContext(async_devices_info) as context: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_log.py:279: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ____________________________ test_logging[Asyncio] _____________________________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_logging(server_green_mode): 664s log_received = threading.Event() 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class LogSourceDevice(Device): 664s green_mode = server_green_mode 664s _last_log_time = 0.0 664s 664s @command(dtype_in=("str",)) 664s async def log_fatal_message(self, msg): 664s self._last_log_time = time.time() 664s if len(msg) > 1: 664s self.fatal_stream(msg[0], msg[1]) 664s else: 664s self.fatal_stream(msg[0]) 664s 664s @command(dtype_in=("str",)) 664s async def log_error_message(self, msg): 664s self._last_log_time = time.time() 664s if len(msg) > 1: 664s self.error_stream(msg[0], msg[1]) 664s else: 664s self.error_stream(msg[0]) 664s 664s @command(dtype_in=("str",)) 664s async def log_warn_message(self, msg): 664s self._last_log_time = time.time() 664s if len(msg) > 1: 664s self.warn_stream(msg[0], msg[1]) 664s else: 664s self.warn_stream(msg[0]) 664s 664s @command(dtype_in=("str",)) 664s async def log_info_message(self, msg): 664s self._last_log_time = time.time() 664s if len(msg) > 1: 664s self.info_stream(msg[0], msg[1]) 664s else: 664s self.info_stream(msg[0]) 664s 664s @command(dtype_in=("str",)) 664s async def log_debug_message(self, msg): 664s self._last_log_time = time.time() 664s if len(msg) > 1: 664s self.debug_stream(msg[0], msg[1]) 664s else: 664s self.debug_stream(msg[0]) 664s 664s @attribute(dtype=float) 664s async def last_log_time(self): 664s return self._last_log_time 664s 664s class LogConsumerDevice(Device): 664s green_mode = server_green_mode 664s _last_log_data = [] 664s 664s @command(dtype_in=("str",)) 664s async def Log(self, argin): 664s self._last_log_data = argin 664s log_received.set() 664s 664s @attribute(dtype=int) 664s async def last_log_timestamp_ms(self): 664s return int(self._last_log_data[0]) 664s 664s @attribute(dtype=str) 664s async def last_log_level(self): 664s return self._last_log_data[1] 664s 664s @attribute(dtype=str) 664s async def last_log_source(self): 664s return self._last_log_data[2] 664s 664s @attribute(dtype=str) 664s async def last_log_message(self): 664s return self._last_log_data[3] 664s 664s @attribute(dtype=str) 664s async def last_log_context_unused(self): 664s return self._last_log_data[4] 664s 664s @attribute(dtype=str) 664s async def last_log_thread_id(self): 664s return self._last_log_data[5] 664s 664s else: 664s 664s class LogSourceDevice(Device): 664s green_mode = server_green_mode 664s _last_log_time = 0.0 664s 664s @command(dtype_in=("str",)) 664s def log_fatal_message(self, msg): 664s self._last_log_time = time.time() 664s if len(msg) > 1: 664s self.fatal_stream(msg[0], msg[1]) 664s else: 664s self.fatal_stream(msg[0]) 664s 664s @command(dtype_in=("str",)) 664s def log_error_message(self, msg): 664s self._last_log_time = time.time() 664s if len(msg) > 1: 664s self.error_stream(msg[0], msg[1]) 664s else: 664s self.error_stream(msg[0]) 664s 664s @command(dtype_in=("str",)) 664s def log_warn_message(self, msg): 664s self._last_log_time = time.time() 664s if len(msg) > 1: 664s self.warn_stream(msg[0], msg[1]) 664s else: 664s self.warn_stream(msg[0]) 664s 664s @command(dtype_in=("str",)) 664s def log_info_message(self, msg): 664s self._last_log_time = time.time() 664s if len(msg) > 1: 664s self.info_stream(msg[0], msg[1]) 664s else: 664s self.info_stream(msg[0]) 664s 664s @command(dtype_in=("str",)) 664s def log_debug_message(self, msg): 664s self._last_log_time = time.time() 664s if len(msg) > 1: 664s self.debug_stream(msg[0], msg[1]) 664s else: 664s self.debug_stream(msg[0]) 664s 664s @attribute(dtype=float) 664s def last_log_time(self): 664s return self._last_log_time 664s 664s class LogConsumerDevice(Device): 664s green_mode = server_green_mode 664s _last_log_data = [] 664s 664s @command(dtype_in=("str",)) 664s def Log(self, argin): 664s self._last_log_data = argin 664s log_received.set() 664s 664s @attribute(dtype=int) 664s def last_log_timestamp_ms(self): 664s return int(self._last_log_data[0]) 664s 664s @attribute(dtype=str) 664s def last_log_level(self): 664s return self._last_log_data[1] 664s 664s @attribute(dtype=str) 664s def last_log_source(self): 664s return self._last_log_data[2] 664s 664s @attribute(dtype=str) 664s def last_log_message(self): 664s return self._last_log_data[3] 664s 664s @attribute(dtype=str) 664s def last_log_context_unused(self): 664s return self._last_log_data[4] 664s 664s @attribute(dtype=str) 664s def last_log_thread_id(self): 664s return self._last_log_data[5] 664s 664s def assert_log_details_correct(level, msg): 664s assert log_received.wait(0.5) 664s _assert_log_time_close_enough() 664s _assert_log_fields_correct_for_level(level, msg) 664s log_received.clear() 664s 664s def _assert_log_time_close_enough(): 664s log_emit_time = proxy_source.last_log_time 664s log_receive_time = proxy_consumer.last_log_timestamp_ms / 1000.0 664s now = time.time() 664s # cppTango logger time function may use a different 664s # implementation to CPython's time.time(). This is 664s # especially noticeable on Windows platforms. 664s timer_implementation_tolerance = 0.020 if WINDOWS else 0.001 664s min_time = log_emit_time - timer_implementation_tolerance 664s max_time = now + timer_implementation_tolerance 664s assert min_time <= log_receive_time <= max_time 664s 664s def _assert_log_fields_correct_for_level(level, msg): 664s assert proxy_consumer.last_log_level == level.upper() 664s assert proxy_consumer.last_log_source == "test/log/source" 664s assert proxy_consumer.last_log_message == msg 664s assert proxy_consumer.last_log_context_unused == "" 664s assert len(proxy_consumer.last_log_thread_id) > 0 664s 664s devices_info = ( 664s {"class": LogSourceDevice, "devices": [{"name": "test/log/source"}]}, 664s {"class": LogConsumerDevice, "devices": [{"name": "test/log/consumer"}]}, 664s ) 664s 664s > with MultiDeviceTestContext(devices_info) as context: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_log.py:528: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________________ test_empty_device[Asyncio] __________________________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_empty_device(server_green_mode): 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:133: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ___________________ test_set_state_status[ON-Asyncio-False] ____________________ 664s state = tango._tango.DevState.ON 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ____________________ test_set_state_status[ON-Asyncio-True] ____________________ 664s state = tango._tango.DevState.ON 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ___________________ test_set_state_status[OFF-Asyncio-False] ___________________ 664s state = tango._tango.DevState.OFF 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ___________________ test_set_state_status[OFF-Asyncio-True] ____________________ 664s state = tango._tango.DevState.OFF 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_set_state_status[CLOSE-Asyncio-False] __________________ 664s state = tango._tango.DevState.CLOSE 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_set_state_status[CLOSE-Asyncio-True] ___________________ 664s state = tango._tango.DevState.CLOSE 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_set_state_status[OPEN-Asyncio-False] ___________________ 664s state = tango._tango.DevState.OPEN 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ___________________ test_set_state_status[OPEN-Asyncio-True] ___________________ 664s state = tango._tango.DevState.OPEN 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_set_state_status[INSERT-Asyncio-False] __________________ 664s state = tango._tango.DevState.INSERT 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_set_state_status[INSERT-Asyncio-True] __________________ 664s state = tango._tango.DevState.INSERT 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_set_state_status[EXTRACT-Asyncio-False] _________________ 664s state = tango._tango.DevState.EXTRACT 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_set_state_status[EXTRACT-Asyncio-True] __________________ 664s state = tango._tango.DevState.EXTRACT 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_set_state_status[MOVING-Asyncio-False] __________________ 664s state = tango._tango.DevState.MOVING 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_set_state_status[MOVING-Asyncio-True] __________________ 664s state = tango._tango.DevState.MOVING 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_set_state_status[STANDBY-Asyncio-False] _________________ 664s state = tango._tango.DevState.STANDBY 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_set_state_status[STANDBY-Asyncio-True] __________________ 664s state = tango._tango.DevState.STANDBY 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_set_state_status[FAULT-Asyncio-False] __________________ 664s state = tango._tango.DevState.FAULT 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_set_state_status[FAULT-Asyncio-True] ___________________ 664s state = tango._tango.DevState.FAULT 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_set_state_status[INIT-Asyncio-False] ___________________ 664s state = tango._tango.DevState.INIT 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ___________________ test_set_state_status[INIT-Asyncio-True] ___________________ 664s state = tango._tango.DevState.INIT 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_set_state_status[RUNNING-Asyncio-False] _________________ 664s state = tango._tango.DevState.RUNNING 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_set_state_status[RUNNING-Asyncio-True] __________________ 664s state = tango._tango.DevState.RUNNING 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_set_state_status[ALARM-Asyncio-False] __________________ 664s state = tango._tango.DevState.ALARM 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_set_state_status[ALARM-Asyncio-True] ___________________ 664s state = tango._tango.DevState.ALARM 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_set_state_status[DISABLE-Asyncio-False] _________________ 664s state = tango._tango.DevState.DISABLE 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_set_state_status[DISABLE-Asyncio-True] __________________ 664s state = tango._tango.DevState.DISABLE 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_set_state_status[UNKNOWN-Asyncio-False] _________________ 664s state = tango._tango.DevState.UNKNOWN 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = False 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_set_state_status[UNKNOWN-Asyncio-True] __________________ 664s state = tango._tango.DevState.UNKNOWN 664s server_green_mode = tango._tango.GreenMode.Asyncio, force_user_status = True 664s 664s @pytest.mark.parametrize("force_user_status", [False, True]) 664s def test_set_state_status(state, server_green_mode, force_user_status): 664s if force_user_status: 664s status = "\n".join( 664s ( 664s "This is a multiline status", 664s "with special characters such as", 664s "Café à la crème", 664s ) 664s ) 664s else: 664s status = f"The device is in {state!s} state." 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def init_device(self): 664s self.set_state(state) 664s if force_user_status: 664s self.set_status(status) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:215: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _____________________ test_user_dev_state_status[Asyncio] ______________________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_user_dev_state_status(server_green_mode): 664s state = DevState.MOVING 664s status = "Device is MOVING" 664s 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s async def dev_state(self): 664s return state 664s 664s async def dev_status(self): 664s return status 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s def dev_state(self): 664s return state 664s 664s def dev_status(self): 664s return status 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:246: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ________________ test_attr_quality_checked_with_state[Asyncio] _________________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_attr_quality_checked_with_state(server_green_mode): 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class BaseTestDevice(Device): 664s @command(dtype_out=bool) 664s async def check_sub_function_was_called(self): 664s return ( 664s self.read_attr_hardware_was_called 664s and self.always_executed_hook_was_called 664s ) 664s 664s else: 664s 664s class BaseTestDevice(Device): 664s @command(dtype_out=bool) 664s def check_sub_function_was_called(self): 664s return ( 664s self.read_attr_hardware_was_called 664s and self.always_executed_hook_was_called 664s ) 664s 664s class TestDevice(BaseTestDevice): 664s green_mode = server_green_mode 664s 664s read_attr_hardware_was_called = False 664s always_executed_hook_was_called = False 664s 664s sync_code = textwrap.dedent( 664s """ 664s def init_device(self): 664s Device.init_device(self) 664s self.set_state(DevState.ON) 664s 664s def read_attr_hardware(self, attr_list): 664s self.read_attr_hardware_was_called = True 664s return Device.read_attr_hardware(self, attr_list) 664s 664s def always_executed_hook(self): 664s self.always_executed_hook_was_called = True 664s 664s @attribute(max_alarm=0) 664s def test_attribute(self): 664s return 42 664s """ 664s ) 664s 664s if server_green_mode == GreenMode.Asyncio: 664s exec( 664s sync_code.replace("def", "async def").replace("Device", "await Device") 664s ) 664s else: 664s exec(sync_code) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:304: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _____________________ test_device_get_attr_config[Asyncio] _____________________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_device_get_attr_config(server_green_mode): 664s class TestDevice(Device): 664s # green mode matters to check deadlocks in async modes 664s green_mode = server_green_mode 664s 664s sync_code = textwrap.dedent( 664s """ 664s @attribute(dtype=bool) 664s def attr_config_ok(self): 664s # testing that call to get_attribute_config for all types of 664s # input arguments gives same result and doesn't raise an exception 664s ac1 = self.get_attribute_config(b"attr_config_ok") 664s ac2 = self.get_attribute_config("attr_config_ok") 664s ac3 = self.get_attribute_config(["attr_config_ok"]) 664s return repr(ac1) == repr(ac2) == repr(ac3) 664s """ 664s ) 664s 664s if server_green_mode == GreenMode.Asyncio: 664s exec(sync_code.replace("def", "async def")) 664s else: 664s exec(sync_code) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:332: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _____________________ test_device_set_attr_config[Asyncio] _____________________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_device_set_attr_config(server_green_mode): 664s class TestDevice(Device): 664s # green mode matters to check deadlocks in async modes 664s green_mode = server_green_mode 664s 664s sync_code = textwrap.dedent( 664s """ 664s @attribute(dtype=int) 664s def attr(self): 664s attr_config = self.get_attribute_config("attr") 664s attr_config[0].min_value = "-7" 664s attr_config[0].min_alarm = "-6" 664s 664s attr_config[0].max_alarm = "6" 664s attr_config[0].max_value = "7" 664s 664s self.set_attribute_config(attr_config) 664s assert repr(attr_config) == repr(self.get_attribute_config("attr")) 664s 664s with pytest.warns(PyTangoUserWarning, match="is not supported by Tango IDL"): 664s attr_config[0].lala = "7" 664s 664s attr_config = self.get_attribute_config_3("attr") 664s attr_config[0].min_value = "-5" 664s attr_config[0].att_alarm.min_alarm = "-4" 664s attr_config[0].att_alarm.min_warning = "-3" 664s 664s attr_config[0].att_alarm.max_warning = "3" 664s attr_config[0].att_alarm.max_alarm = "4" 664s attr_config[0].max_value = "5" 664s 664s self.set_attribute_config_3(attr_config) 664s assert repr(attr_config) == repr(self.get_attribute_config_3("attr")) 664s 664s with pytest.warns(PyTangoUserWarning, match="is not supported by Tango IDL"): 664s attr_config[0].lala = "7" 664s 664s attr = self.get_device_attr().get_attr_by_name("attr") 664s 664s val = -2 664s for f in ["min_alarm", "min_warning", "max_warning", "max_alarm"]: 664s getattr(attr, f"set_{f}")(val) 664s assert val == getattr(attr, f"get_{f}")() 664s val += 1 664s 664s return 1 664s """ 664s ) 664s 664s if server_green_mode == GreenMode.Asyncio: 664s exec(sync_code.replace("def", "async def")) 664s else: 664s exec(sync_code) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:390: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _____________________ test_exception_propagation[Asyncio] ______________________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_exception_propagation(server_green_mode): 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @attribute 664s async def attr(self): 664s 1 / 0 # pylint: disable=pointless-statement 664s 664s @command 664s async def cmd(self): 664s 1 / 0 # pylint: disable=pointless-statement 664s 664s else: 664s 664s class TestDevice(Device): 664s green_mode = server_green_mode 664s 664s @attribute 664s def attr(self): 664s 1 / 0 # pylint: disable=pointless-statement 664s 664s @command 664s def cmd(self): 664s 1 / 0 # pylint: disable=pointless-statement 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:873: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_asyncio_server_init_hook_change_state __________________ 664s def test_asyncio_server_init_hook_change_state(): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s async def server_init_hook(self): 664s await asyncio.sleep(0.01) 664s self.set_state(DevState.ON) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:959: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ________________ test_async_server_init_hook_called_after_init _________________ 664s def test_async_server_init_hook_called_after_init(): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s async def init_device(self): 664s await asyncio.sleep(0.01) 664s self.set_state(DevState.INIT) 664s 664s async def server_init_hook(self): 664s await asyncio.sleep(0.01) 664s self.set_state(DevState.ON) 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:987: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ___________________ test_asyncio_server_init_hook_exception ____________________ 664s def test_asyncio_server_init_hook_exception(): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s async def server_init_hook(self): 664s await asyncio.sleep(0.01) 664s raise RuntimeError("Force exception for test") 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:1010: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _____ test_deprecation_warning_for_sync_attr_com_methods_in_asyncio_device _____ 664s def test_deprecation_warning_for_sync_attr_com_methods_in_asyncio_device(): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s attr_value = 1 664s 664s # static attributes and commands 664s 664s @attribute(access=AttrWriteType.READ_WRITE) 664s async def attr_all_methods_async(self) -> int: 664s return self.attr_value 664s 664s @attr_all_methods_async.write 664s async def attr_all_methods_async(self, value): 664s self.attr_value = value 664s 664s @attr_all_methods_async.is_allowed 664s async def attr_all_methods_async(self, req_type): 664s return True 664s 664s @attribute(access=AttrWriteType.READ_WRITE) 664s def attr_sync_read_write(self) -> int: 664s return self.attr_value 664s 664s @attr_sync_read_write.write 664s def set_attr_sync_read_write(self, value): 664s self.attr_value = value 664s 664s @attribute 664s async def attr_sync_is_allowed(self) -> int: 664s return self.attr_value 664s 664s @attr_sync_is_allowed.is_allowed 664s def is_attr_sync_is_allowed(self, req_type): 664s return True 664s 664s @command(dtype_out=int) 664s async def cmd_all_methods_async(self, val_in: int) -> int: 664s return val_in 664s 664s async def is_cmd_all_methods_async_allowed(self): 664s return True 664s 664s @command(dtype_out=int) 664s def cmd_sync_func(self, val_in: int) -> int: 664s return val_in 664s 664s @command(dtype_out=int) 664s async def cmd_sync_is_allowed(self, val_in: int) -> int: 664s return val_in 664s 664s def is_cmd_sync_is_allowed_allowed(self): 664s return True 664s 664s # dynamic attributes and commands 664s 664s @command 664s async def add_dynamic_cmd_attr(self): 664s attr = attribute( 664s name="dyn_attr_all_methods_async", 664s access=AttrWriteType.READ_WRITE, 664s fget=self.dyn_attr_all_methods_async, 664s fset=self.dyn_set_attr_all_methods_async, 664s fisallowed=self.is_dyn_attr_all_methods_async_allowed, 664s ) 664s self.add_attribute(attr) 664s 664s attr = attribute( 664s name="dyn_attr_sync_read_write", 664s access=AttrWriteType.READ_WRITE, 664s fget=self.dyn_attr_sync_read_write, 664s fset=self.dyn_set_attr_sync_read_write, 664s ) 664s self.add_attribute(attr) 664s 664s attr = attribute( 664s name="dyn_attr_sync_is_allowed", 664s access=AttrWriteType.READ, 664s fget=self.dyn_attr_sync_is_allowed, 664s fisallowed=self.is_dyn_attr_sync_is_allowed, 664s ) 664s self.add_attribute(attr) 664s 664s cmd = command( 664s f=self.dyn_cmd_all_methods_async, 664s fisallowed=self.is_dyn_cmd_all_methods_async_allowed, 664s ) 664s self.add_command(cmd) 664s 664s cmd = command(f=self.dyn_cmd_sync_func) 664s self.add_command(cmd) 664s 664s cmd = command( 664s f=self.dyn_cmd_sync_is_allowed, 664s fisallowed=self.is_dyn_cmd_sync_is_allowed_allowed, 664s ) 664s self.add_command(cmd) 664s 664s async def dyn_attr_all_methods_async(self, attr) -> int: 664s return self.attr_value 664s 664s async def dyn_set_attr_all_methods_async(self, attr): 664s self.attr_value = attr.get_write_value() 664s 664s async def is_dyn_attr_all_methods_async_allowed(self, req_type): 664s return True 664s 664s def dyn_attr_sync_read_write(self, attr) -> int: 664s return self.attr_value 664s 664s def dyn_set_attr_sync_read_write(self, attr): 664s self.attr_value = attr.get_write_value() 664s 664s async def dyn_attr_sync_is_allowed(self, attr) -> int: 664s return self.attr_value 664s 664s def is_dyn_attr_sync_is_allowed(self, req_type): 664s return True 664s 664s async def dyn_cmd_all_methods_async(self, val_in: int) -> int: 664s return val_in 664s 664s async def is_dyn_cmd_all_methods_async_allowed(self): 664s return True 664s 664s def dyn_cmd_sync_func(self, val_in: int) -> int: 664s return val_in 664s 664s async def dyn_cmd_sync_is_allowed(self, val_in: int) -> int: 664s return val_in 664s 664s def is_dyn_cmd_sync_is_allowed_allowed(self): 664s return True 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:1286: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _ test_deprecation_warning_for_standard_methods_in_asyncio_device[init_device] _ 664s method = 'init_device' 664s 664s @pytest.mark.parametrize( 664s "method", 664s [ 664s "init_device", 664s "delete_device", 664s "dev_state", 664s "dev_status", 664s "read_attr_hardware", 664s "always_executed_hook", 664s ], 664s ) 664s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s @attribute 664s async def attr(self) -> int: 664s return 1 664s 664s async_code = textwrap.dedent( 664s """ 664s async def init_device(self): 664s pass 664s 664s async def delete_device(self): 664s pass 664s 664s async def dev_state(self): 664s return DevState.ON 664s 664s async def dev_status(self): 664s return "All good" 664s 664s async def read_attr_hardware(self, attr_list): 664s pass 664s 664s async def always_executed_hook(self): 664s pass 664s """ 664s ) 664s 664s exec(async_code.replace(f"async def {method}", f"def {method}")) 664s 664s with pytest.warns(DeprecationWarning, match=method): 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:1374: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s 664s During handling of the above exception, another exception occurred: 664s 664s method = 'init_device' 664s 664s @pytest.mark.parametrize( 664s "method", 664s [ 664s "init_device", 664s "delete_device", 664s "dev_state", 664s "dev_status", 664s "read_attr_hardware", 664s "always_executed_hook", 664s ], 664s ) 664s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s @attribute 664s async def attr(self) -> int: 664s return 1 664s 664s async_code = textwrap.dedent( 664s """ 664s async def init_device(self): 664s pass 664s 664s async def delete_device(self): 664s pass 664s 664s async def dev_state(self): 664s return DevState.ON 664s 664s async def dev_status(self): 664s return "All good" 664s 664s async def read_attr_hardware(self, attr_list): 664s pass 664s 664s async def always_executed_hook(self): 664s pass 664s """ 664s ) 664s 664s exec(async_code.replace(f"async def {method}", f"def {method}")) 664s 664s > with pytest.warns(DeprecationWarning, match=method): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s E Failed: DID NOT WARN. No warnings of type (,) were emitted. 664s E Emitted warnings: []. 664s 664s tests/test_server.py:1373: Failed 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _ test_deprecation_warning_for_standard_methods_in_asyncio_device[delete_device] _ 664s method = 'delete_device' 664s 664s @pytest.mark.parametrize( 664s "method", 664s [ 664s "init_device", 664s "delete_device", 664s "dev_state", 664s "dev_status", 664s "read_attr_hardware", 664s "always_executed_hook", 664s ], 664s ) 664s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s @attribute 664s async def attr(self) -> int: 664s return 1 664s 664s async_code = textwrap.dedent( 664s """ 664s async def init_device(self): 664s pass 664s 664s async def delete_device(self): 664s pass 664s 664s async def dev_state(self): 664s return DevState.ON 664s 664s async def dev_status(self): 664s return "All good" 664s 664s async def read_attr_hardware(self, attr_list): 664s pass 664s 664s async def always_executed_hook(self): 664s pass 664s """ 664s ) 664s 664s exec(async_code.replace(f"async def {method}", f"def {method}")) 664s 664s with pytest.warns(DeprecationWarning, match=method): 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:1374: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s 664s During handling of the above exception, another exception occurred: 664s 664s method = 'delete_device' 664s 664s @pytest.mark.parametrize( 664s "method", 664s [ 664s "init_device", 664s "delete_device", 664s "dev_state", 664s "dev_status", 664s "read_attr_hardware", 664s "always_executed_hook", 664s ], 664s ) 664s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s @attribute 664s async def attr(self) -> int: 664s return 1 664s 664s async_code = textwrap.dedent( 664s """ 664s async def init_device(self): 664s pass 664s 664s async def delete_device(self): 664s pass 664s 664s async def dev_state(self): 664s return DevState.ON 664s 664s async def dev_status(self): 664s return "All good" 664s 664s async def read_attr_hardware(self, attr_list): 664s pass 664s 664s async def always_executed_hook(self): 664s pass 664s """ 664s ) 664s 664s exec(async_code.replace(f"async def {method}", f"def {method}")) 664s 664s > with pytest.warns(DeprecationWarning, match=method): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s E Failed: DID NOT WARN. No warnings of type (,) were emitted. 664s E Emitted warnings: []. 664s 664s tests/test_server.py:1373: Failed 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __ test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_state] __ 664s method = 'dev_state' 664s 664s @pytest.mark.parametrize( 664s "method", 664s [ 664s "init_device", 664s "delete_device", 664s "dev_state", 664s "dev_status", 664s "read_attr_hardware", 664s "always_executed_hook", 664s ], 664s ) 664s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s @attribute 664s async def attr(self) -> int: 664s return 1 664s 664s async_code = textwrap.dedent( 664s """ 664s async def init_device(self): 664s pass 664s 664s async def delete_device(self): 664s pass 664s 664s async def dev_state(self): 664s return DevState.ON 664s 664s async def dev_status(self): 664s return "All good" 664s 664s async def read_attr_hardware(self, attr_list): 664s pass 664s 664s async def always_executed_hook(self): 664s pass 664s """ 664s ) 664s 664s exec(async_code.replace(f"async def {method}", f"def {method}")) 664s 664s with pytest.warns(DeprecationWarning, match=method): 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:1374: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s 664s During handling of the above exception, another exception occurred: 664s 664s method = 'dev_state' 664s 664s @pytest.mark.parametrize( 664s "method", 664s [ 664s "init_device", 664s "delete_device", 664s "dev_state", 664s "dev_status", 664s "read_attr_hardware", 664s "always_executed_hook", 664s ], 664s ) 664s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s @attribute 664s async def attr(self) -> int: 664s return 1 664s 664s async_code = textwrap.dedent( 664s """ 664s async def init_device(self): 664s pass 664s 664s async def delete_device(self): 664s pass 664s 664s async def dev_state(self): 664s return DevState.ON 664s 664s async def dev_status(self): 664s return "All good" 664s 664s async def read_attr_hardware(self, attr_list): 664s pass 664s 664s async def always_executed_hook(self): 664s pass 664s """ 664s ) 664s 664s exec(async_code.replace(f"async def {method}", f"def {method}")) 664s 664s > with pytest.warns(DeprecationWarning, match=method): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s E Failed: DID NOT WARN. No warnings of type (,) were emitted. 664s E Emitted warnings: []. 664s 664s tests/test_server.py:1373: Failed 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _ test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_status] __ 664s method = 'dev_status' 664s 664s @pytest.mark.parametrize( 664s "method", 664s [ 664s "init_device", 664s "delete_device", 664s "dev_state", 664s "dev_status", 664s "read_attr_hardware", 664s "always_executed_hook", 664s ], 664s ) 664s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s @attribute 664s async def attr(self) -> int: 664s return 1 664s 664s async_code = textwrap.dedent( 664s """ 664s async def init_device(self): 664s pass 664s 664s async def delete_device(self): 664s pass 664s 664s async def dev_state(self): 664s return DevState.ON 664s 664s async def dev_status(self): 664s return "All good" 664s 664s async def read_attr_hardware(self, attr_list): 664s pass 664s 664s async def always_executed_hook(self): 664s pass 664s """ 664s ) 664s 664s exec(async_code.replace(f"async def {method}", f"def {method}")) 664s 664s with pytest.warns(DeprecationWarning, match=method): 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:1374: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s 664s During handling of the above exception, another exception occurred: 664s 664s method = 'dev_status' 664s 664s @pytest.mark.parametrize( 664s "method", 664s [ 664s "init_device", 664s "delete_device", 664s "dev_state", 664s "dev_status", 664s "read_attr_hardware", 664s "always_executed_hook", 664s ], 664s ) 664s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s @attribute 664s async def attr(self) -> int: 664s return 1 664s 664s async_code = textwrap.dedent( 664s """ 664s async def init_device(self): 664s pass 664s 664s async def delete_device(self): 664s pass 664s 664s async def dev_state(self): 664s return DevState.ON 664s 664s async def dev_status(self): 664s return "All good" 664s 664s async def read_attr_hardware(self, attr_list): 664s pass 664s 664s async def always_executed_hook(self): 664s pass 664s """ 664s ) 664s 664s exec(async_code.replace(f"async def {method}", f"def {method}")) 664s 664s > with pytest.warns(DeprecationWarning, match=method): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s E Failed: DID NOT WARN. No warnings of type (,) were emitted. 664s E Emitted warnings: []. 664s 664s tests/test_server.py:1373: Failed 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _ test_deprecation_warning_for_standard_methods_in_asyncio_device[read_attr_hardware] _ 664s method = 'read_attr_hardware' 664s 664s @pytest.mark.parametrize( 664s "method", 664s [ 664s "init_device", 664s "delete_device", 664s "dev_state", 664s "dev_status", 664s "read_attr_hardware", 664s "always_executed_hook", 664s ], 664s ) 664s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s @attribute 664s async def attr(self) -> int: 664s return 1 664s 664s async_code = textwrap.dedent( 664s """ 664s async def init_device(self): 664s pass 664s 664s async def delete_device(self): 664s pass 664s 664s async def dev_state(self): 664s return DevState.ON 664s 664s async def dev_status(self): 664s return "All good" 664s 664s async def read_attr_hardware(self, attr_list): 664s pass 664s 664s async def always_executed_hook(self): 664s pass 664s """ 664s ) 664s 664s exec(async_code.replace(f"async def {method}", f"def {method}")) 664s 664s with pytest.warns(DeprecationWarning, match=method): 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:1374: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s 664s During handling of the above exception, another exception occurred: 664s 664s method = 'read_attr_hardware' 664s 664s @pytest.mark.parametrize( 664s "method", 664s [ 664s "init_device", 664s "delete_device", 664s "dev_state", 664s "dev_status", 664s "read_attr_hardware", 664s "always_executed_hook", 664s ], 664s ) 664s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s @attribute 664s async def attr(self) -> int: 664s return 1 664s 664s async_code = textwrap.dedent( 664s """ 664s async def init_device(self): 664s pass 664s 664s async def delete_device(self): 664s pass 664s 664s async def dev_state(self): 664s return DevState.ON 664s 664s async def dev_status(self): 664s return "All good" 664s 664s async def read_attr_hardware(self, attr_list): 664s pass 664s 664s async def always_executed_hook(self): 664s pass 664s """ 664s ) 664s 664s exec(async_code.replace(f"async def {method}", f"def {method}")) 664s 664s > with pytest.warns(DeprecationWarning, match=method): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s E Failed: DID NOT WARN. No warnings of type (,) were emitted. 664s E Emitted warnings: []. 664s 664s tests/test_server.py:1373: Failed 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _ test_deprecation_warning_for_standard_methods_in_asyncio_device[always_executed_hook] _ 664s method = 'always_executed_hook' 664s 664s @pytest.mark.parametrize( 664s "method", 664s [ 664s "init_device", 664s "delete_device", 664s "dev_state", 664s "dev_status", 664s "read_attr_hardware", 664s "always_executed_hook", 664s ], 664s ) 664s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s @attribute 664s async def attr(self) -> int: 664s return 1 664s 664s async_code = textwrap.dedent( 664s """ 664s async def init_device(self): 664s pass 664s 664s async def delete_device(self): 664s pass 664s 664s async def dev_state(self): 664s return DevState.ON 664s 664s async def dev_status(self): 664s return "All good" 664s 664s async def read_attr_hardware(self, attr_list): 664s pass 664s 664s async def always_executed_hook(self): 664s pass 664s """ 664s ) 664s 664s exec(async_code.replace(f"async def {method}", f"def {method}")) 664s 664s with pytest.warns(DeprecationWarning, match=method): 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_server.py:1374: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s 664s During handling of the above exception, another exception occurred: 664s 664s method = 'always_executed_hook' 664s 664s @pytest.mark.parametrize( 664s "method", 664s [ 664s "init_device", 664s "delete_device", 664s "dev_state", 664s "dev_status", 664s "read_attr_hardware", 664s "always_executed_hook", 664s ], 664s ) 664s def test_deprecation_warning_for_standard_methods_in_asyncio_device(method): 664s class TestDevice(Device): 664s green_mode = GreenMode.Asyncio 664s 664s @attribute 664s async def attr(self) -> int: 664s return 1 664s 664s async_code = textwrap.dedent( 664s """ 664s async def init_device(self): 664s pass 664s 664s async def delete_device(self): 664s pass 664s 664s async def dev_state(self): 664s return DevState.ON 664s 664s async def dev_status(self): 664s return "All good" 664s 664s async def read_attr_hardware(self, attr_list): 664s pass 664s 664s async def always_executed_hook(self): 664s pass 664s """ 664s ) 664s 664s exec(async_code.replace(f"async def {method}", f"def {method}")) 664s 664s > with pytest.warns(DeprecationWarning, match=method): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s E Failed: DID NOT WARN. No warnings of type (,) were emitted. 664s E Emitted warnings: []. 664s 664s tests/test_server.py:1373: Failed 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________________ test_single_device[Asyncio] __________________________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_single_device(server_green_mode): 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device1Asyncio): 664s pass 664s 664s else: 664s 664s class TestDevice(Device1): 664s green_mode = server_green_mode 664s 664s > with DeviceTestContext(TestDevice) as proxy: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:144: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ____________________ test_multi_with_single_device[Asyncio] ____________________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_multi_with_single_device(server_green_mode): 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice(Device1Asyncio): 664s pass 664s 664s else: 664s 664s class TestDevice(Device1): 664s green_mode = server_green_mode 664s 664s devices_info = ({"class": TestDevice, "devices": [{"name": "test/device1/1"}]},) 664s 664s > with MultiDeviceTestContext(devices_info) as context: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:235: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _____________________ test_multi_with_two_devices[Asyncio] _____________________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_multi_with_two_devices(server_green_mode): 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice1(Device1Asyncio): 664s pass 664s 664s class TestDevice2(Device2Asyncio): 664s pass 664s 664s else: 664s 664s class TestDevice1(Device1): 664s green_mode = server_green_mode 664s 664s class TestDevice2(Device2): 664s green_mode = server_green_mode 664s 664s devices_info = ( 664s {"class": TestDevice1, "devices": [{"name": "test/device1/1"}]}, 664s {"class": TestDevice2, "devices": [{"name": "test/device2/1"}]}, 664s ) 664s 664s > with MultiDeviceTestContext(devices_info) as context: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:275: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _ test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Asyncio-None] _ 664s first_type = 664s second_type = , exception_type = None 664s 664s @pytest.mark.parametrize( 664s "first_type, second_type, exception_type", 664s [ 664s (Device1GreenModeUnspecified, Device2GreenModeUnspecified, None), 664s (Device1GreenModeUnspecified, Device2Synchronous, None), 664s (Device1GreenModeUnspecified, Device2Gevent, ValueError), 664s (Device1GreenModeUnspecified, Device2Asyncio, ValueError), 664s (Device1Synchronous, Device2GreenModeUnspecified, None), 664s (Device1Synchronous, Device2Synchronous, None), 664s (Device1Synchronous, Device2Gevent, ValueError), 664s (Device1Synchronous, Device2Asyncio, ValueError), 664s (Device1Asyncio, Device2GreenModeUnspecified, ValueError), 664s (Device1Asyncio, Device2Synchronous, ValueError), 664s (Device1Asyncio, Device2Gevent, ValueError), 664s (Device1Asyncio, Device2Asyncio, None), 664s (Device1Gevent, Device2GreenModeUnspecified, ValueError), 664s (Device1Gevent, Device2Synchronous, ValueError), 664s (Device1Gevent, Device2Gevent, None), 664s (Device1Gevent, Device2Asyncio, ValueError), 664s ], 664s ) 664s def test_multi_with_mixed_device_green_modes(first_type, second_type, exception_type): 664s devices_info = ( 664s {"class": first_type, "devices": [{"name": "test/device1/1"}]}, 664s {"class": second_type, "devices": [{"name": "test/device2/1"}]}, 664s ) 664s 664s if exception_type is None: 664s > with MultiDeviceTestContext(devices_info): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:312: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _ test_green_modes_in_device_kwarg_and_global[Device1Synchronous-Asyncio-Asyncio-None-SynchronousExecutor] _ 664s device_type = 664s green_mode = tango._tango.GreenMode.Asyncio 664s global_mode = tango._tango.GreenMode.Asyncio, exception_type = None 664s executor_type = 664s 664s @pytest.mark.parametrize( 664s "device_type, green_mode, global_mode, exception_type, executor_type", 664s [ 664s # If a device specifies its green mode explicitly, then both 664s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 664s ( 664s Device1Synchronous, 664s GreenMode.Asyncio, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Synchronous, 664s GreenMode.Gevent, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Asyncio, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s AsyncioExecutor, 664s ), 664s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 664s ( 664s Device1Gevent, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 664s # If device doesn't specify its green mode, but green_mode kwarg is provided, 664s # then we use green_mode kwarg 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Asyncio, 664s None, 664s GeventExecutor, 664s ), 664s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 664s # (currently only works for synchronous mode - see unsupported modes below) 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Synchronous, 664s None, 664s SynchronousExecutor, 664s ), 664s # Deprecated modes - starting from PyTango 10 it is deprecated 664s # to modify sync servers to async "on the fly". 664s # All base methods should be defined with "async def" instead. 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Synchronous, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Gevent, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s # Unsupported modes - device servers with the following combinations 664s # fail to start up. The cause is unknown. This could be fixed in the future. 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Asyncio, 664s RuntimeError, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Gevent, 664s RuntimeError, 664s GeventExecutor, 664s ), 664s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 664s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 664s ], 664s ) 664s def test_green_modes_in_device_kwarg_and_global( 664s device_type, green_mode, global_mode, exception_type, executor_type 664s ): 664s if WINDOWS and exception_type is not None: 664s pytest.skip("Skip test that hangs on Windows") 664s 664s old_green_mode = tango.get_green_mode() 664s try: 664s tango.set_green_mode(global_mode) 664s 664s if exception_type is None: 664s > with DeviceTestContext(device_type, green_mode=green_mode): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:442: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:669: in connect 664s self.server.ping() 664s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 664s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stdout call ----------------------------- 664s Ready to accept request 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _ test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Synchronous-Synchronous-None-AsyncioExecutor] _ 664s device_type = 664s green_mode = tango._tango.GreenMode.Synchronous 664s global_mode = tango._tango.GreenMode.Synchronous, exception_type = None 664s executor_type = 664s 664s @pytest.mark.parametrize( 664s "device_type, green_mode, global_mode, exception_type, executor_type", 664s [ 664s # If a device specifies its green mode explicitly, then both 664s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 664s ( 664s Device1Synchronous, 664s GreenMode.Asyncio, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Synchronous, 664s GreenMode.Gevent, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Asyncio, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s AsyncioExecutor, 664s ), 664s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 664s ( 664s Device1Gevent, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 664s # If device doesn't specify its green mode, but green_mode kwarg is provided, 664s # then we use green_mode kwarg 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Asyncio, 664s None, 664s GeventExecutor, 664s ), 664s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 664s # (currently only works for synchronous mode - see unsupported modes below) 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Synchronous, 664s None, 664s SynchronousExecutor, 664s ), 664s # Deprecated modes - starting from PyTango 10 it is deprecated 664s # to modify sync servers to async "on the fly". 664s # All base methods should be defined with "async def" instead. 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Synchronous, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Gevent, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s # Unsupported modes - device servers with the following combinations 664s # fail to start up. The cause is unknown. This could be fixed in the future. 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Asyncio, 664s RuntimeError, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Gevent, 664s RuntimeError, 664s GeventExecutor, 664s ), 664s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 664s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 664s ], 664s ) 664s def test_green_modes_in_device_kwarg_and_global( 664s device_type, green_mode, global_mode, exception_type, executor_type 664s ): 664s if WINDOWS and exception_type is not None: 664s pytest.skip("Skip test that hangs on Windows") 664s 664s old_green_mode = tango.get_green_mode() 664s try: 664s tango.set_green_mode(global_mode) 664s 664s if exception_type is None: 664s > with DeviceTestContext(device_type, green_mode=green_mode): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:442: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _ test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Gevent-Gevent-None-AsyncioExecutor] _ 664s device_type = 664s green_mode = tango._tango.GreenMode.Gevent 664s global_mode = tango._tango.GreenMode.Gevent, exception_type = None 664s executor_type = 664s 664s @pytest.mark.parametrize( 664s "device_type, green_mode, global_mode, exception_type, executor_type", 664s [ 664s # If a device specifies its green mode explicitly, then both 664s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 664s ( 664s Device1Synchronous, 664s GreenMode.Asyncio, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Synchronous, 664s GreenMode.Gevent, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Asyncio, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s AsyncioExecutor, 664s ), 664s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 664s ( 664s Device1Gevent, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 664s # If device doesn't specify its green mode, but green_mode kwarg is provided, 664s # then we use green_mode kwarg 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Asyncio, 664s None, 664s GeventExecutor, 664s ), 664s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 664s # (currently only works for synchronous mode - see unsupported modes below) 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Synchronous, 664s None, 664s SynchronousExecutor, 664s ), 664s # Deprecated modes - starting from PyTango 10 it is deprecated 664s # to modify sync servers to async "on the fly". 664s # All base methods should be defined with "async def" instead. 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Synchronous, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Gevent, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s # Unsupported modes - device servers with the following combinations 664s # fail to start up. The cause is unknown. This could be fixed in the future. 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Asyncio, 664s RuntimeError, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Gevent, 664s RuntimeError, 664s GeventExecutor, 664s ), 664s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 664s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 664s ], 664s ) 664s def test_green_modes_in_device_kwarg_and_global( 664s device_type, green_mode, global_mode, exception_type, executor_type 664s ): 664s if WINDOWS and exception_type is not None: 664s pytest.skip("Skip test that hangs on Windows") 664s 664s old_green_mode = tango.get_green_mode() 664s try: 664s tango.set_green_mode(global_mode) 664s 664s if exception_type is None: 664s > with DeviceTestContext(device_type, green_mode=green_mode): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:442: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _ test_green_modes_in_device_kwarg_and_global[Device1Gevent-Asyncio-Asyncio-None-GeventExecutor] _ 664s device_type = 664s green_mode = tango._tango.GreenMode.Asyncio 664s global_mode = tango._tango.GreenMode.Asyncio, exception_type = None 664s executor_type = 664s 664s @pytest.mark.parametrize( 664s "device_type, green_mode, global_mode, exception_type, executor_type", 664s [ 664s # If a device specifies its green mode explicitly, then both 664s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 664s ( 664s Device1Synchronous, 664s GreenMode.Asyncio, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Synchronous, 664s GreenMode.Gevent, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Asyncio, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s AsyncioExecutor, 664s ), 664s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 664s ( 664s Device1Gevent, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 664s # If device doesn't specify its green mode, but green_mode kwarg is provided, 664s # then we use green_mode kwarg 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Asyncio, 664s None, 664s GeventExecutor, 664s ), 664s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 664s # (currently only works for synchronous mode - see unsupported modes below) 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Synchronous, 664s None, 664s SynchronousExecutor, 664s ), 664s # Deprecated modes - starting from PyTango 10 it is deprecated 664s # to modify sync servers to async "on the fly". 664s # All base methods should be defined with "async def" instead. 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Synchronous, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Gevent, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s # Unsupported modes - device servers with the following combinations 664s # fail to start up. The cause is unknown. This could be fixed in the future. 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Asyncio, 664s RuntimeError, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Gevent, 664s RuntimeError, 664s GeventExecutor, 664s ), 664s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 664s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 664s ], 664s ) 664s def test_green_modes_in_device_kwarg_and_global( 664s device_type, green_mode, global_mode, exception_type, executor_type 664s ): 664s if WINDOWS and exception_type is not None: 664s pytest.skip("Skip test that hangs on Windows") 664s 664s old_green_mode = tango.get_green_mode() 664s try: 664s tango.set_green_mode(global_mode) 664s 664s if exception_type is None: 664s > with DeviceTestContext(device_type, green_mode=green_mode): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:442: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:669: in connect 664s self.server.ping() 664s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 664s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stdout call ----------------------------- 664s Ready to accept request 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _ test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Synchronous-Asyncio-None-SynchronousExecutor] _ 664s device_type = 664s green_mode = tango._tango.GreenMode.Synchronous 664s global_mode = tango._tango.GreenMode.Asyncio, exception_type = None 664s executor_type = 664s 664s @pytest.mark.parametrize( 664s "device_type, green_mode, global_mode, exception_type, executor_type", 664s [ 664s # If a device specifies its green mode explicitly, then both 664s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 664s ( 664s Device1Synchronous, 664s GreenMode.Asyncio, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Synchronous, 664s GreenMode.Gevent, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Asyncio, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s AsyncioExecutor, 664s ), 664s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 664s ( 664s Device1Gevent, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 664s # If device doesn't specify its green mode, but green_mode kwarg is provided, 664s # then we use green_mode kwarg 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Asyncio, 664s None, 664s GeventExecutor, 664s ), 664s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 664s # (currently only works for synchronous mode - see unsupported modes below) 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Synchronous, 664s None, 664s SynchronousExecutor, 664s ), 664s # Deprecated modes - starting from PyTango 10 it is deprecated 664s # to modify sync servers to async "on the fly". 664s # All base methods should be defined with "async def" instead. 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Synchronous, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Gevent, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s # Unsupported modes - device servers with the following combinations 664s # fail to start up. The cause is unknown. This could be fixed in the future. 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Asyncio, 664s RuntimeError, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Gevent, 664s RuntimeError, 664s GeventExecutor, 664s ), 664s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 664s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 664s ], 664s ) 664s def test_green_modes_in_device_kwarg_and_global( 664s device_type, green_mode, global_mode, exception_type, executor_type 664s ): 664s if WINDOWS and exception_type is not None: 664s pytest.skip("Skip test that hangs on Windows") 664s 664s old_green_mode = tango.get_green_mode() 664s try: 664s tango.set_green_mode(global_mode) 664s 664s if exception_type is None: 664s > with DeviceTestContext(device_type, green_mode=green_mode): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:442: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:669: in connect 664s self.server.ping() 664s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 664s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stdout call ----------------------------- 664s Ready to accept request 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _ test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Gevent-Asyncio-None-GeventExecutor] _ 664s device_type = 664s green_mode = tango._tango.GreenMode.Gevent 664s global_mode = tango._tango.GreenMode.Asyncio, exception_type = None 664s executor_type = 664s 664s @pytest.mark.parametrize( 664s "device_type, green_mode, global_mode, exception_type, executor_type", 664s [ 664s # If a device specifies its green mode explicitly, then both 664s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 664s ( 664s Device1Synchronous, 664s GreenMode.Asyncio, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Synchronous, 664s GreenMode.Gevent, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Asyncio, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s AsyncioExecutor, 664s ), 664s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 664s ( 664s Device1Gevent, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 664s # If device doesn't specify its green mode, but green_mode kwarg is provided, 664s # then we use green_mode kwarg 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Asyncio, 664s None, 664s GeventExecutor, 664s ), 664s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 664s # (currently only works for synchronous mode - see unsupported modes below) 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Synchronous, 664s None, 664s SynchronousExecutor, 664s ), 664s # Deprecated modes - starting from PyTango 10 it is deprecated 664s # to modify sync servers to async "on the fly". 664s # All base methods should be defined with "async def" instead. 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Synchronous, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Gevent, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s # Unsupported modes - device servers with the following combinations 664s # fail to start up. The cause is unknown. This could be fixed in the future. 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Asyncio, 664s RuntimeError, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Gevent, 664s RuntimeError, 664s GeventExecutor, 664s ), 664s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 664s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 664s ], 664s ) 664s def test_green_modes_in_device_kwarg_and_global( 664s device_type, green_mode, global_mode, exception_type, executor_type 664s ): 664s if WINDOWS and exception_type is not None: 664s pytest.skip("Skip test that hangs on Windows") 664s 664s old_green_mode = tango.get_green_mode() 664s try: 664s tango.set_green_mode(global_mode) 664s 664s if exception_type is None: 664s > with DeviceTestContext(device_type, green_mode=green_mode): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:442: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:669: in connect 664s self.server.ping() 664s /usr/lib/python3/dist-packages/tango/green.py:226: in greener 664s return executor.run(fn, args, kwargs, wait=wait, timeout=timeout) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stdout call ----------------------------- 664s Ready to accept request 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _ test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Synchronous-DeprecationWarning-AsyncioExecutor] _ 664s device_type = 664s green_mode = tango._tango.GreenMode.Asyncio 664s global_mode = tango._tango.GreenMode.Synchronous 664s exception_type = 664s executor_type = 664s 664s @pytest.mark.parametrize( 664s "device_type, green_mode, global_mode, exception_type, executor_type", 664s [ 664s # If a device specifies its green mode explicitly, then both 664s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 664s ( 664s Device1Synchronous, 664s GreenMode.Asyncio, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Synchronous, 664s GreenMode.Gevent, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Asyncio, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s AsyncioExecutor, 664s ), 664s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 664s ( 664s Device1Gevent, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 664s # If device doesn't specify its green mode, but green_mode kwarg is provided, 664s # then we use green_mode kwarg 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Asyncio, 664s None, 664s GeventExecutor, 664s ), 664s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 664s # (currently only works for synchronous mode - see unsupported modes below) 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Synchronous, 664s None, 664s SynchronousExecutor, 664s ), 664s # Deprecated modes - starting from PyTango 10 it is deprecated 664s # to modify sync servers to async "on the fly". 664s # All base methods should be defined with "async def" instead. 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Synchronous, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Gevent, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s # Unsupported modes - device servers with the following combinations 664s # fail to start up. The cause is unknown. This could be fixed in the future. 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Asyncio, 664s RuntimeError, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Gevent, 664s RuntimeError, 664s GeventExecutor, 664s ), 664s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 664s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 664s ], 664s ) 664s def test_green_modes_in_device_kwarg_and_global( 664s device_type, green_mode, global_mode, exception_type, executor_type 664s ): 664s if WINDOWS and exception_type is not None: 664s pytest.skip("Skip test that hangs on Windows") 664s 664s old_green_mode = tango.get_green_mode() 664s try: 664s tango.set_green_mode(global_mode) 664s 664s if exception_type is None: 664s with DeviceTestContext(device_type, green_mode=green_mode): 664s pass 664s elif exception_type is DeprecationWarning: 664s with pytest.warns((DeprecationWarning, RuntimeWarning)): 664s > with DeviceTestContext(device_type, green_mode=green_mode): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:446: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s 664s During handling of the above exception, another exception occurred: 664s 664s device_type = 664s green_mode = tango._tango.GreenMode.Asyncio 664s global_mode = tango._tango.GreenMode.Synchronous 664s exception_type = 664s executor_type = 664s 664s @pytest.mark.parametrize( 664s "device_type, green_mode, global_mode, exception_type, executor_type", 664s [ 664s # If a device specifies its green mode explicitly, then both 664s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 664s ( 664s Device1Synchronous, 664s GreenMode.Asyncio, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Synchronous, 664s GreenMode.Gevent, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Asyncio, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s AsyncioExecutor, 664s ), 664s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 664s ( 664s Device1Gevent, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 664s # If device doesn't specify its green mode, but green_mode kwarg is provided, 664s # then we use green_mode kwarg 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Asyncio, 664s None, 664s GeventExecutor, 664s ), 664s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 664s # (currently only works for synchronous mode - see unsupported modes below) 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Synchronous, 664s None, 664s SynchronousExecutor, 664s ), 664s # Deprecated modes - starting from PyTango 10 it is deprecated 664s # to modify sync servers to async "on the fly". 664s # All base methods should be defined with "async def" instead. 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Synchronous, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Gevent, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s # Unsupported modes - device servers with the following combinations 664s # fail to start up. The cause is unknown. This could be fixed in the future. 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Asyncio, 664s RuntimeError, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Gevent, 664s RuntimeError, 664s GeventExecutor, 664s ), 664s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 664s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 664s ], 664s ) 664s def test_green_modes_in_device_kwarg_and_global( 664s device_type, green_mode, global_mode, exception_type, executor_type 664s ): 664s if WINDOWS and exception_type is not None: 664s pytest.skip("Skip test that hangs on Windows") 664s 664s old_green_mode = tango.get_green_mode() 664s try: 664s tango.set_green_mode(global_mode) 664s 664s if exception_type is None: 664s with DeviceTestContext(device_type, green_mode=green_mode): 664s pass 664s elif exception_type is DeprecationWarning: 664s > with pytest.warns((DeprecationWarning, RuntimeWarning)): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s E Failed: DID NOT WARN. No warnings of type (, ) were emitted. 664s E Emitted warnings: []. 664s 664s tests/test_test_context.py:445: Failed 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _ test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Gevent-DeprecationWarning-AsyncioExecutor] _ 664s device_type = 664s green_mode = tango._tango.GreenMode.Asyncio 664s global_mode = tango._tango.GreenMode.Gevent 664s exception_type = 664s executor_type = 664s 664s @pytest.mark.parametrize( 664s "device_type, green_mode, global_mode, exception_type, executor_type", 664s [ 664s # If a device specifies its green mode explicitly, then both 664s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 664s ( 664s Device1Synchronous, 664s GreenMode.Asyncio, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Synchronous, 664s GreenMode.Gevent, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Asyncio, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s AsyncioExecutor, 664s ), 664s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 664s ( 664s Device1Gevent, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 664s # If device doesn't specify its green mode, but green_mode kwarg is provided, 664s # then we use green_mode kwarg 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Asyncio, 664s None, 664s GeventExecutor, 664s ), 664s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 664s # (currently only works for synchronous mode - see unsupported modes below) 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Synchronous, 664s None, 664s SynchronousExecutor, 664s ), 664s # Deprecated modes - starting from PyTango 10 it is deprecated 664s # to modify sync servers to async "on the fly". 664s # All base methods should be defined with "async def" instead. 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Synchronous, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Gevent, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s # Unsupported modes - device servers with the following combinations 664s # fail to start up. The cause is unknown. This could be fixed in the future. 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Asyncio, 664s RuntimeError, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Gevent, 664s RuntimeError, 664s GeventExecutor, 664s ), 664s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 664s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 664s ], 664s ) 664s def test_green_modes_in_device_kwarg_and_global( 664s device_type, green_mode, global_mode, exception_type, executor_type 664s ): 664s if WINDOWS and exception_type is not None: 664s pytest.skip("Skip test that hangs on Windows") 664s 664s old_green_mode = tango.get_green_mode() 664s try: 664s tango.set_green_mode(global_mode) 664s 664s if exception_type is None: 664s with DeviceTestContext(device_type, green_mode=green_mode): 664s pass 664s elif exception_type is DeprecationWarning: 664s with pytest.warns((DeprecationWarning, RuntimeWarning)): 664s > with DeviceTestContext(device_type, green_mode=green_mode): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:446: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:876: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:862: in connect 664s super().connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s 664s During handling of the above exception, another exception occurred: 664s 664s device_type = 664s green_mode = tango._tango.GreenMode.Asyncio 664s global_mode = tango._tango.GreenMode.Gevent 664s exception_type = 664s executor_type = 664s 664s @pytest.mark.parametrize( 664s "device_type, green_mode, global_mode, exception_type, executor_type", 664s [ 664s # If a device specifies its green mode explicitly, then both 664s # green_mode kwarg and global green mode are ignored. The device must use its specified mode. 664s ( 664s Device1Synchronous, 664s GreenMode.Asyncio, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Synchronous, 664s GreenMode.Gevent, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1Asyncio, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s AsyncioExecutor, 664s ), 664s (Device1Asyncio, GreenMode.Gevent, GreenMode.Gevent, None, AsyncioExecutor), 664s ( 664s Device1Gevent, 664s GreenMode.Synchronous, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s (Device1Gevent, GreenMode.Asyncio, GreenMode.Asyncio, None, GeventExecutor), 664s # If device doesn't specify its green mode, but green_mode kwarg is provided, 664s # then we use green_mode kwarg 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Asyncio, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Synchronous, 664s GreenMode.Gevent, 664s None, 664s SynchronousExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Synchronous, 664s None, 664s GeventExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Gevent, 664s GreenMode.Asyncio, 664s None, 664s GeventExecutor, 664s ), 664s # Finally, if neither device green mode nor green_mode kwarg are specified, then use global mode instead. 664s # (currently only works for synchronous mode - see unsupported modes below) 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Synchronous, 664s None, 664s SynchronousExecutor, 664s ), 664s # Deprecated modes - starting from PyTango 10 it is deprecated 664s # to modify sync servers to async "on the fly". 664s # All base methods should be defined with "async def" instead. 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Synchronous, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s GreenMode.Asyncio, 664s GreenMode.Gevent, 664s DeprecationWarning, 664s AsyncioExecutor, 664s ), 664s # Unsupported modes - device servers with the following combinations 664s # fail to start up. The cause is unknown. This could be fixed in the future. 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Asyncio, 664s RuntimeError, 664s AsyncioExecutor, 664s ), 664s ( 664s Device1GreenModeUnspecified, 664s None, 664s GreenMode.Gevent, 664s RuntimeError, 664s GeventExecutor, 664s ), 664s (Device1Asyncio, None, GreenMode.Asyncio, RuntimeError, AsyncioExecutor), 664s (Device1Gevent, None, GreenMode.Gevent, RuntimeError, GeventExecutor), 664s ], 664s ) 664s def test_green_modes_in_device_kwarg_and_global( 664s device_type, green_mode, global_mode, exception_type, executor_type 664s ): 664s if WINDOWS and exception_type is not None: 664s pytest.skip("Skip test that hangs on Windows") 664s 664s old_green_mode = tango.get_green_mode() 664s try: 664s tango.set_green_mode(global_mode) 664s 664s if exception_type is None: 664s with DeviceTestContext(device_type, green_mode=green_mode): 664s pass 664s elif exception_type is DeprecationWarning: 664s > with pytest.warns((DeprecationWarning, RuntimeWarning)): 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s E Failed: DID NOT WARN. No warnings of type (, ) were emitted. 664s E Emitted warnings: []. 664s 664s tests/test_test_context.py:445: Failed 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_multi_with_async_devices_initialised ___________________ 664s def test_multi_with_async_devices_initialised(): 664s devices_info = ( 664s {"class": Device1Asyncio, "devices": [{"name": "test/device1/1"}]}, 664s {"class": Device2Asyncio, "devices": [{"name": "test/device2/1"}]}, 664s ) 664s 664s > with MultiDeviceTestContext(devices_info) as context: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:464: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _____________ test_multi_with_two_devices_with_properties[Asyncio] _____________ 664s server_green_mode = tango._tango.GreenMode.Asyncio 664s 664s def test_multi_with_two_devices_with_properties(server_green_mode): 664s if server_green_mode == GreenMode.Asyncio: 664s 664s class TestDevice1(Device): 664s green_mode = server_green_mode 664s 664s prop1 = device_property(dtype=str) 664s 664s @command(dtype_out=str) 664s async def get_prop1(self): 664s return self.prop1 664s 664s class TestDevice2(Device): 664s green_mode = server_green_mode 664s 664s prop2 = device_property(dtype=int) 664s 664s @command(dtype_out=int) 664s async def get_prop2(self): 664s return self.prop2 664s 664s else: 664s 664s class TestDevice1(Device): 664s green_mode = server_green_mode 664s 664s prop1 = device_property(dtype=str) 664s 664s @command(dtype_out=str) 664s def get_prop1(self): 664s return self.prop1 664s 664s class TestDevice2(Device): 664s green_mode = server_green_mode 664s 664s prop2 = device_property(dtype=int) 664s 664s @command(dtype_out=int) 664s def get_prop2(self): 664s return self.prop2 664s 664s devices_info = ( 664s { 664s "class": TestDevice1, 664s "devices": [{"name": "test/device1/1", "properties": {"prop1": "abcd"}}], 664s }, 664s { 664s "class": TestDevice2, 664s "devices": [{"name": "test/device2/2", "properties": {"prop2": 5555}}], 664s }, 664s ) 664s 664s > with MultiDeviceTestContext(devices_info) as context: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:617: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s __________________ test_test_context_async_device_proxy[True] __________________ 664s process = True 664s 664s @pytest.mark.asyncio 664s @pytest.mark.parametrize("process", [True, False]) 664s async def test_test_context_async_device_proxy(process): 664s config = ({"class": AsyncDevice, "devices": [{"name": "test/device/1"}]},) 664s 664s > with MultiDeviceTestContext(config, process=process) as context: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:825: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def connect(self): 664s try: 664s self._wait_until_port_is_known() 664s self._wait_until_startup_status_is_known() 664s except RuntimeError: 664s if self.thread.is_alive(): 664s raise RuntimeError( 664s "The server appears to be stuck at initialization. " 664s "Check stdout/stderr for more information." 664s ) 664s elif hasattr(self.thread, "exitcode"): 664s raise RuntimeError( 664s f"The server process stopped with exitcode {self.thread.exitcode}. " 664s f"Check stdout/stderr for more information." 664s ) 664s else: 664s raise RuntimeError( 664s "The server stopped without reporting. " 664s "Check stdout/stderr for more information." 664s ) 664s 664s if self._startup_exception: 664s > raise self._startup_exception 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s _________________ test_test_context_async_device_proxy[False] __________________ 664s process = False 664s 664s @pytest.mark.asyncio 664s @pytest.mark.parametrize("process", [True, False]) 664s async def test_test_context_async_device_proxy(process): 664s config = ({"class": AsyncDevice, "devices": [{"name": "test/device/1"}]},) 664s 664s > with MultiDeviceTestContext(config, process=process) as context: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:825: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s --------------------------- Captured stderr teardown --------------------------- 664s /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-hsscp4z2', '/mp-l8rkv4hh', '/mp-iwv4lk08', '/mp-t52flmur', '/mp-0z76gv82', '/mp-b7i6776e', '/mp-hkixcohg', '/mp-oxn35wra', '/mp-j7l5w7vd', '/mp-ygbugs9r', '/mp-01pz0efj'} 664s warnings.warn( 664s _______________ test_test_context_multi_async_device_proxy[True] _______________ 664s process = True 664s 664s @pytest.mark.asyncio 664s @pytest.mark.parametrize("process", [True, False]) 664s async def test_test_context_multi_async_device_proxy(process): 664s config = ( 664s { 664s "class": AsyncDevice, 664s "devices": [{"name": "test/device/main"}, {"name": "test/device/child"}], 664s }, 664s ) 664s 664s > with MultiDeviceTestContext(config, process=process) as context: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:855: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def connect(self): 664s try: 664s self._wait_until_port_is_known() 664s self._wait_until_startup_status_is_known() 664s except RuntimeError: 664s if self.thread.is_alive(): 664s raise RuntimeError( 664s "The server appears to be stuck at initialization. " 664s "Check stdout/stderr for more information." 664s ) 664s elif hasattr(self.thread, "exitcode"): 664s raise RuntimeError( 664s f"The server process stopped with exitcode {self.thread.exitcode}. " 664s f"Check stdout/stderr for more information." 664s ) 664s else: 664s raise RuntimeError( 664s "The server stopped without reporting. " 664s "Check stdout/stderr for more information." 664s ) 664s 664s if self._startup_exception: 664s > raise self._startup_exception 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s ______________ test_test_context_multi_async_device_proxy[False] _______________ 664s process = False 664s 664s @pytest.mark.asyncio 664s @pytest.mark.parametrize("process", [True, False]) 664s async def test_test_context_multi_async_device_proxy(process): 664s config = ( 664s { 664s "class": AsyncDevice, 664s "devices": [{"name": "test/device/main"}, {"name": "test/device/child"}], 664s }, 664s ) 664s 664s > with MultiDeviceTestContext(config, process=process) as context: 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s 664s tests/test_test_context.py:855: 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s /usr/lib/python3/dist-packages/tango/test_context.py:726: in __enter__ 664s self.start() 664s /usr/lib/python3/dist-packages/tango/test_context.py:640: in start 664s self.connect() 664s /usr/lib/python3/dist-packages/tango/test_context.py:665: in connect 664s raise self._startup_exception 664s /usr/lib/python3/dist-packages/tango/test_context.py:504: in target 664s runserver( 664s /usr/lib/python3/dist-packages/tango/server.py:1121: in run_server 664s return run((cls,), args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2217: in run 664s return server_run() 664s ^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/server.py:2061: in __server_run 664s worker.run(tango_loop, wait=True) 664s /usr/lib/python3/dist-packages/tango/green.py:118: in run 664s accessor = self.delegate(fn, *args, **kwargs) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3/dist-packages/tango/asyncio_executor.py:187: in delegate 664s coro = self.loop.run_in_executor(self.subexecutor, callback) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/asyncio/base_events.py:898: in run_in_executor 664s executor.submit(func, *args), loop=self) 664s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 664s /usr/lib/python3.14/concurrent/futures/thread.py:215: in submit 664s self._adjust_thread_count() 664s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 664s 664s self = 664s 664s def _adjust_thread_count(self): 664s # if idle threads are available, don't spin new threads 664s if self._idle_semaphore.acquire(timeout=0): 664s return 664s 664s # When the executor gets lost, the weakref callback will wake up 664s # the worker threads. 664s def weakref_cb(_, q=self._work_queue): 664s q.put(None) 664s 664s num_threads = len(self._threads) 664s if num_threads < self._max_workers: 664s thread_name = "%s_%d" % (self._thread_name_prefix or self, num_threads) 664s t = threading.Thread( 664s name=thread_name, 664s target=_thread_pool_executor_worker, 664s args=( 664s weakref.ref(self, weakref_cb), 664s self._work_queue, 664s > self._initializer, 664s ^^^^^^^^^^^^^^^^^ 664s self._initargs, 664s ), 664s ) 664s E AttributeError: 'PyTangoThreadPoolExecutor' object has no attribute '_initializer' 664s 664s /usr/lib/python3/dist-packages/tango/utils.py:2711: AttributeError 664s ----------------------------- Captured stderr call ----------------------------- 664s Can't create notifd event supplier. Notifd event not available 664s --------------------------- Captured stderr teardown --------------------------- 664s /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-9pb2_bpe', '/mp-1q789ip4', '/mp-rae2n6c0', '/mp-rxkvn9lb', '/mp-a_vwluu5', '/mp-5v7_l360', '/mp-05kmlj9x', '/mp-m4vms45t', '/mp-nniuq0f8', '/mp-u2jsn007', '/mp-nfu5u4qh'} 664s warnings.warn( 664s =========================== short test summary info ============================ 664s FAILED tests/test_async.py::test_green_mode_kwarg_for_proxy_methods - @pytest... 664s FAILED tests/test_attributes.py::test_read_write_attribute[int-Asyncio] - att... 664s FAILED tests/test_attributes.py::test_read_write_attribute[float-Asyncio] - a... 664s FAILED tests/test_attributes.py::test_read_write_attribute[str-Asyncio] - att... 664s FAILED tests/test_attributes.py::test_read_write_attribute[bool-Asyncio] - at... 664s FAILED tests/test_attributes.py::test_read_write_attribute[(int,)-Asyncio] - ... 664s FAILED tests/test_attributes.py::test_read_write_attribute[(float,)-Asyncio] 664s FAILED tests/test_attributes.py::test_read_write_attribute[(str,)-Asyncio] - ... 664s FAILED tests/test_attributes.py::test_read_write_attribute[(bool,)-Asyncio] 664s FAILED tests/test_attributes.py::test_read_write_attribute[((int,),)-Asyncio] 664s FAILED tests/test_attributes.py::test_read_write_attribute[((float,),)-Asyncio] 664s FAILED tests/test_attributes.py::test_read_write_attribute[((str,),)-Asyncio] 664s FAILED tests/test_attributes.py::test_read_write_attribute[((bool,),)-Asyncio] 664s FAILED tests/test_attributes.py::test_read_write_attribute_decorated_methods[Asyncio] 664s FAILED tests/test_attributes.py::test_read_write_dynamic_attribute[low_level_read-Asyncio] 664s FAILED tests/test_attributes.py::test_read_write_dynamic_attribute[high_level_read-Asyncio] 664s FAILED tests/test_attributes.py::test_async_add_remove_dynamic_attribute - de... 664s FAILED tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_default_names[Asyncio] 664s FAILED tests/test_attributes.py::test_read_write_dynamic_attribute_decorated_methods_user_names[Asyncio] 664s FAILED tests/test_attributes.py::test_read_write_dynamic_attribute_is_allowed_with_async[Asyncio] 664s FAILED tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Asyncio-True] 664s FAILED tests/test_attributes.py::test_dynamic_attribute_with_green_mode[Asyncio-False] 664s FAILED tests/test_attributes.py::test_attribute_decorators[Asyncio] - server_... 664s FAILED tests/test_attributes.py::test_polled_attribute[Asyncio] - server_gree... 664s FAILED tests/test_commands.py::test_identity_command[int-Asyncio] - command_t... 664s FAILED tests/test_commands.py::test_identity_command[float-Asyncio] - command... 664s FAILED tests/test_commands.py::test_identity_command[str-Asyncio] - command_t... 664s FAILED tests/test_commands.py::test_identity_command[bool-Asyncio] - command_... 664s FAILED tests/test_commands.py::test_identity_command[(int,)-Asyncio] - comman... 664s FAILED tests/test_commands.py::test_identity_command[(float,)-Asyncio] - comm... 664s FAILED tests/test_commands.py::test_identity_command[(str,)-Asyncio] - comman... 664s FAILED tests/test_commands.py::test_identity_command[DevVarLongStringArray-Asyncio] 664s FAILED tests/test_commands.py::test_identity_command[DevVarDoubleStringArray-Asyncio] 664s FAILED tests/test_commands.py::test_decorated_command[Asyncio] - server_green... 664s FAILED tests/test_commands.py::test_command_isallowed[Asyncio] - server_green... 664s FAILED tests/test_commands.py::test_dynamic_command[Asyncio-True] - device_co... 664s FAILED tests/test_commands.py::test_dynamic_command[Asyncio-False] - device_c... 664s FAILED tests/test_device_proxy.py::test_high_level_api_for_asyncio - tango_te... 664s FAILED tests/test_device_proxy.py::test_repr_uses_info[Asyncio] - green_mode_... 664s FAILED tests/test_device_proxy.py::test_repr_default_if_info_unavailable[Asyncio] 664s FAILED tests/test_device_proxy.py::test_multiple_repr_calls_only_call_info_once[Asyncio] 664s FAILED tests/test_device_proxy.py::test_no_memory_leak_for_repr[Asyncio] - gr... 664s FAILED tests/test_device_proxy.py::test_no_memory_leak_for_str[Asyncio] - gre... 664s FAILED tests/test_device_proxy.py::test_no_cyclic_ref_for_proxy[Asyncio] - gr... 664s FAILED tests/test_log.py::test_async_logging_decorators - def test_async_logg... 664s FAILED tests/test_log.py::test_logging[Asyncio] - server_green_mode = tango._... 664s FAILED tests/test_server.py::test_empty_device[Asyncio] - server_green_mode =... 664s FAILED tests/test_server.py::test_set_state_status[ON-Asyncio-False] - state ... 664s FAILED tests/test_server.py::test_set_state_status[ON-Asyncio-True] - state =... 664s FAILED tests/test_server.py::test_set_state_status[OFF-Asyncio-False] - state... 664s FAILED tests/test_server.py::test_set_state_status[OFF-Asyncio-True] - state ... 664s FAILED tests/test_server.py::test_set_state_status[CLOSE-Asyncio-False] - sta... 664s FAILED tests/test_server.py::test_set_state_status[CLOSE-Asyncio-True] - stat... 664s FAILED tests/test_server.py::test_set_state_status[OPEN-Asyncio-False] - stat... 664s FAILED tests/test_server.py::test_set_state_status[OPEN-Asyncio-True] - state... 664s FAILED tests/test_server.py::test_set_state_status[INSERT-Asyncio-False] - st... 664s FAILED tests/test_server.py::test_set_state_status[INSERT-Asyncio-True] - sta... 664s FAILED tests/test_server.py::test_set_state_status[EXTRACT-Asyncio-False] - s... 664s FAILED tests/test_server.py::test_set_state_status[EXTRACT-Asyncio-True] - st... 664s FAILED tests/test_server.py::test_set_state_status[MOVING-Asyncio-False] - st... 664s FAILED tests/test_server.py::test_set_state_status[MOVING-Asyncio-True] - sta... 664s FAILED tests/test_server.py::test_set_state_status[STANDBY-Asyncio-False] - s... 664s FAILED tests/test_server.py::test_set_state_status[STANDBY-Asyncio-True] - st... 664s FAILED tests/test_server.py::test_set_state_status[FAULT-Asyncio-False] - sta... 664s FAILED tests/test_server.py::test_set_state_status[FAULT-Asyncio-True] - stat... 664s FAILED tests/test_server.py::test_set_state_status[INIT-Asyncio-False] - stat... 664s FAILED tests/test_server.py::test_set_state_status[INIT-Asyncio-True] - state... 664s FAILED tests/test_server.py::test_set_state_status[RUNNING-Asyncio-False] - s... 664s FAILED tests/test_server.py::test_set_state_status[RUNNING-Asyncio-True] - st... 664s FAILED tests/test_server.py::test_set_state_status[ALARM-Asyncio-False] - sta... 664s FAILED tests/test_server.py::test_set_state_status[ALARM-Asyncio-True] - stat... 664s FAILED tests/test_server.py::test_set_state_status[DISABLE-Asyncio-False] - s... 664s FAILED tests/test_server.py::test_set_state_status[DISABLE-Asyncio-True] - st... 664s FAILED tests/test_server.py::test_set_state_status[UNKNOWN-Asyncio-False] - s... 664s FAILED tests/test_server.py::test_set_state_status[UNKNOWN-Asyncio-True] - st... 664s FAILED tests/test_server.py::test_user_dev_state_status[Asyncio] - server_gre... 664s FAILED tests/test_server.py::test_attr_quality_checked_with_state[Asyncio] - ... 664s FAILED tests/test_server.py::test_device_get_attr_config[Asyncio] - server_gr... 664s FAILED tests/test_server.py::test_device_set_attr_config[Asyncio] - server_gr... 664s FAILED tests/test_server.py::test_exception_propagation[Asyncio] - server_gre... 664s FAILED tests/test_server.py::test_asyncio_server_init_hook_change_state - def... 664s FAILED tests/test_server.py::test_async_server_init_hook_called_after_init - ... 664s FAILED tests/test_server.py::test_asyncio_server_init_hook_exception - def te... 664s FAILED tests/test_server.py::test_deprecation_warning_for_sync_attr_com_methods_in_asyncio_device 664s FAILED tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[init_device] 664s FAILED tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[delete_device] 664s FAILED tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_state] 664s FAILED tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[dev_status] 664s FAILED tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[read_attr_hardware] 664s FAILED tests/test_server.py::test_deprecation_warning_for_standard_methods_in_asyncio_device[always_executed_hook] 664s FAILED tests/test_test_context.py::test_single_device[Asyncio] - server_green... 664s FAILED tests/test_test_context.py::test_multi_with_single_device[Asyncio] - s... 664s FAILED tests/test_test_context.py::test_multi_with_two_devices[Asyncio] - ser... 664s FAILED tests/test_test_context.py::test_multi_with_mixed_device_green_modes[Device1Asyncio-Device2Asyncio-None] 664s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Synchronous-Asyncio-Asyncio-None-SynchronousExecutor] 664s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Synchronous-Synchronous-None-AsyncioExecutor] 664s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Asyncio-Gevent-Gevent-None-AsyncioExecutor] 664s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1Gevent-Asyncio-Asyncio-None-GeventExecutor] 664s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Synchronous-Asyncio-None-SynchronousExecutor] 664s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Gevent-Asyncio-None-GeventExecutor] 664s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Synchronous-DeprecationWarning-AsyncioExecutor] 664s FAILED tests/test_test_context.py::test_green_modes_in_device_kwarg_and_global[Device1GreenModeUnspecified-Asyncio-Gevent-DeprecationWarning-AsyncioExecutor] 664s FAILED tests/test_test_context.py::test_multi_with_async_devices_initialised 664s FAILED tests/test_test_context.py::test_multi_with_two_devices_with_properties[Asyncio] 664s FAILED tests/test_test_context.py::test_test_context_async_device_proxy[True] 664s FAILED tests/test_test_context.py::test_test_context_async_device_proxy[False] 664s FAILED tests/test_test_context.py::test_test_context_multi_async_device_proxy[True] 664s FAILED tests/test_test_context.py::test_test_context_multi_async_device_proxy[False] 664s ERROR tests/test_device_proxy.py::test_read_write_attribute_with_green_modes[Asyncio] 664s = 108 failed, 952 passed, 56 skipped, 53 xfailed, 1 error in 246.32s (0:04:06) = 667s bash: line 1: 13329 Segmentation fault (core dumped) PATH=/usr/lib/tango/:$PATH $py -m pytest tests -v --forked --ignore tests/test_event.py --reruns 5 668s autopkgtest [05:17:19]: test command1: -----------------------] 672s autopkgtest [05:17:23]: test command1: - - - - - - - - - - results - - - - - - - - - - 672s command1 FAIL non-zero exit status 139 676s autopkgtest [05:17:27]: test command2: preparing testbed 701s autopkgtest [05:17:52]: testbed dpkg architecture: armhf 703s autopkgtest [05:17:54]: testbed apt version: 3.1.13 707s autopkgtest [05:17:58]: @@@@@@@@@@@@@@@@@@@@ test bed setup 709s autopkgtest [05:18:00]: testbed release detected to be: resolute 716s autopkgtest [05:18:07]: updating testbed package index (apt update) 718s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [124 kB] 719s Get:2 http://ftpmaster.internal/ubuntu resolute InRelease [124 kB] 719s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 719s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 719s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [23.6 kB] 719s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [2820 B] 719s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [1181 kB] 719s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [95.1 kB] 719s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf Packages [113 kB] 719s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/universe armhf Packages [932 kB] 719s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse armhf Packages [7912 B] 719s Get:12 http://ftpmaster.internal/ubuntu resolute/multiverse Sources [310 kB] 719s Get:13 http://ftpmaster.internal/ubuntu resolute/main Sources [1399 kB] 719s Get:14 http://ftpmaster.internal/ubuntu resolute/universe Sources [21.4 MB] 721s Get:15 http://ftpmaster.internal/ubuntu resolute/main armhf Packages [1371 kB] 721s Get:16 http://ftpmaster.internal/ubuntu resolute/universe armhf Packages [15.0 MB] 722s Get:17 http://ftpmaster.internal/ubuntu resolute/multiverse armhf Packages [175 kB] 724s Fetched 42.2 MB in 6s (6976 kB/s) 726s Reading package lists... 732s autopkgtest [05:18:23]: upgrading testbed (apt dist-upgrade and autopurge) 733s Reading package lists... 734s Building dependency tree... 734s Reading state information... 734s Calculating upgrade... 735s The following packages were automatically installed and are no longer required: 735s libpython3.13-minimal libpython3.13-stdlib libsframe2 python3.13 735s python3.13-minimal 735s Use 'apt autoremove' to remove them. 735s The following NEW packages will be installed: 735s libpython3.14-minimal libpython3.14-stdlib libsframe3 python3.14 735s python3.14-minimal 735s The following packages will be upgraded: 735s binutils binutils-arm-linux-gnueabihf binutils-common dhcpcd-base 735s gcc-15-base libatomic1 libbinutils libctf-nobfd0 libctf0 libgcc-s1 735s libnss-systemd libpam-systemd libpython3-stdlib libstdc++6 libsystemd-shared 735s libsystemd0 libudev1 libzstd1 python3 python3-gdbm python3-minimal systemd 735s systemd-cryptsetup systemd-resolved systemd-sysv systemd-userdbd udev 735s vim-common vim-tiny xxd zstd 735s 31 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. 735s Need to get 20.1 MB of archives. 735s After this operation, 22.7 MB of additional disk space will be used. 735s Get:1 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.14-minimal armhf 3.14.2-1 [905 kB] 736s Get:2 http://ftpmaster.internal/ubuntu resolute/main armhf python3.14-minimal armhf 3.14.2-1 [2155 kB] 736s Get:3 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf python3-minimal armhf 3.14.2-1 [28.2 kB] 736s Get:4 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf python3 armhf 3.14.2-1 [22.9 kB] 736s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libzstd1 armhf 1.5.7+dfsg-3 [275 kB] 736s Get:6 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.14-stdlib armhf 3.14.2-1 [2270 kB] 736s Get:7 http://ftpmaster.internal/ubuntu resolute/main armhf python3.14 armhf 3.14.2-1 [816 kB] 736s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libpython3-stdlib armhf 3.14.2-1 [10.9 kB] 736s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/universe armhf systemd-userdbd armhf 259-1ubuntu3 [52.0 kB] 736s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libnss-systemd armhf 259-1ubuntu3 [277 kB] 736s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libsystemd0 armhf 259-1ubuntu3 [517 kB] 736s Get:12 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf systemd-sysv armhf 259-1ubuntu3 [9246 B] 736s Get:13 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf systemd-resolved armhf 259-1ubuntu3 [292 kB] 736s Get:14 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libpam-systemd armhf 259-1ubuntu3 [252 kB] 736s Get:15 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libsystemd-shared armhf 259-1ubuntu3 [2430 kB] 736s Get:16 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf systemd armhf 259-1ubuntu3 [3156 kB] 736s Get:17 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf systemd-cryptsetup armhf 259-1ubuntu3 [126 kB] 736s Get:18 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf udev armhf 259-1ubuntu3 [1492 kB] 736s Get:19 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libudev1 armhf 259-1ubuntu3 [204 kB] 736s Get:20 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf gcc-15-base armhf 15.2.0-12ubuntu1 [59.6 kB] 736s Get:21 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libstdc++6 armhf 15.2.0-12ubuntu1 [731 kB] 736s Get:22 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libatomic1 armhf 15.2.0-12ubuntu1 [7824 B] 736s Get:23 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libgcc-s1 armhf 15.2.0-12ubuntu1 [40.5 kB] 736s Get:24 http://ftpmaster.internal/ubuntu resolute/main armhf dhcpcd-base armhf 1:10.3.0-7 [194 kB] 736s Get:25 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf vim-tiny armhf 2:9.1.1882-1ubuntu2 [727 kB] 736s Get:26 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf vim-common all 2:9.1.1882-1ubuntu2 [402 kB] 736s Get:27 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf xxd armhf 2:9.1.1882-1ubuntu2 [70.2 kB] 736s Get:28 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf python3-gdbm armhf 3.14.2-1 [11.1 kB] 736s Get:29 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libctf0 armhf 2.45.50.20260119-1ubuntu1 [75.7 kB] 736s Get:30 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libctf-nobfd0 armhf 2.45.50.20260119-1ubuntu1 [78.3 kB] 737s Get:31 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf binutils-arm-linux-gnueabihf armhf 2.45.50.20260119-1ubuntu1 [1034 kB] 737s Get:32 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libbinutils armhf 2.45.50.20260119-1ubuntu1 [404 kB] 737s Get:33 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf binutils armhf 2.45.50.20260119-1ubuntu1 [3264 B] 737s Get:34 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf binutils-common armhf 2.45.50.20260119-1ubuntu1 [222 kB] 737s Get:35 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libsframe3 armhf 2.45.50.20260119-1ubuntu1 [16.4 kB] 737s Get:36 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf zstd armhf 1.5.7+dfsg-3 [728 kB] 737s Fetched 20.1 MB in 1s (15.1 MB/s) 737s Selecting previously unselected package libpython3.14-minimal:armhf. 738s (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 ... 66485 files and directories currently installed.) 738s Preparing to unpack .../libpython3.14-minimal_3.14.2-1_armhf.deb ... 738s Unpacking libpython3.14-minimal:armhf (3.14.2-1) ... 738s Selecting previously unselected package python3.14-minimal. 738s Preparing to unpack .../python3.14-minimal_3.14.2-1_armhf.deb ... 738s Unpacking python3.14-minimal (3.14.2-1) ... 738s Setting up libpython3.14-minimal:armhf (3.14.2-1) ... 738s Setting up python3.14-minimal (3.14.2-1) ... 739s (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 ... 66827 files and directories currently installed.) 739s Preparing to unpack .../python3-minimal_3.14.2-1_armhf.deb ... 739s Unpacking python3-minimal (3.14.2-1) over (3.13.9-3) ... 739s Setting up python3-minimal (3.14.2-1) ... 740s (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 ... 66827 files and directories currently installed.) 740s Preparing to unpack .../python3_3.14.2-1_armhf.deb ... 740s Unpacking python3 (3.14.2-1) over (3.13.9-3) ... 740s Preparing to unpack .../libzstd1_1.5.7+dfsg-3_armhf.deb ... 740s Unpacking libzstd1:armhf (1.5.7+dfsg-3) over (1.5.7+dfsg-2) ... 740s Setting up libzstd1:armhf (1.5.7+dfsg-3) ... 740s Selecting previously unselected package libpython3.14-stdlib:armhf. 740s (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 ... 66828 files and directories currently installed.) 740s Preparing to unpack .../0-libpython3.14-stdlib_3.14.2-1_armhf.deb ... 740s Unpacking libpython3.14-stdlib:armhf (3.14.2-1) ... 740s Selecting previously unselected package python3.14. 740s Preparing to unpack .../1-python3.14_3.14.2-1_armhf.deb ... 740s Unpacking python3.14 (3.14.2-1) ... 740s Preparing to unpack .../2-libpython3-stdlib_3.14.2-1_armhf.deb ... 740s Unpacking libpython3-stdlib:armhf (3.14.2-1) over (3.13.9-3) ... 740s Preparing to unpack .../3-systemd-userdbd_259-1ubuntu3_armhf.deb ... 740s Unpacking systemd-userdbd (259-1ubuntu3) over (259-1ubuntu2) ... 741s Preparing to unpack .../4-libnss-systemd_259-1ubuntu3_armhf.deb ... 741s Unpacking libnss-systemd:armhf (259-1ubuntu3) over (259-1ubuntu2) ... 741s Preparing to unpack .../5-libsystemd0_259-1ubuntu3_armhf.deb ... 741s Unpacking libsystemd0:armhf (259-1ubuntu3) over (259-1ubuntu2) ... 741s Setting up libsystemd0:armhf (259-1ubuntu3) ... 741s (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 ... 67259 files and directories currently installed.) 741s Preparing to unpack .../systemd-sysv_259-1ubuntu3_armhf.deb ... 741s Unpacking systemd-sysv (259-1ubuntu3) over (259-1ubuntu2) ... 741s Preparing to unpack .../systemd-resolved_259-1ubuntu3_armhf.deb ... 741s Unpacking systemd-resolved (259-1ubuntu3) over (259-1ubuntu2) ... 741s Preparing to unpack .../libpam-systemd_259-1ubuntu3_armhf.deb ... 741s Unpacking libpam-systemd:armhf (259-1ubuntu3) over (259-1ubuntu2) ... 741s Preparing to unpack .../libsystemd-shared_259-1ubuntu3_armhf.deb ... 741s Unpacking libsystemd-shared:armhf (259-1ubuntu3) over (259-1ubuntu2) ... 741s Setting up libsystemd-shared:armhf (259-1ubuntu3) ... 741s (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 ... 67259 files and directories currently installed.) 741s Preparing to unpack .../systemd_259-1ubuntu3_armhf.deb ... 741s Unpacking systemd (259-1ubuntu3) over (259-1ubuntu2) ... 742s Preparing to unpack .../systemd-cryptsetup_259-1ubuntu3_armhf.deb ... 742s Unpacking systemd-cryptsetup (259-1ubuntu3) over (259-1ubuntu2) ... 742s Preparing to unpack .../udev_259-1ubuntu3_armhf.deb ... 742s Unpacking udev (259-1ubuntu3) over (259-1ubuntu2) ... 742s Preparing to unpack .../libudev1_259-1ubuntu3_armhf.deb ... 742s Unpacking libudev1:armhf (259-1ubuntu3) over (259-1ubuntu2) ... 742s Setting up libudev1:armhf (259-1ubuntu3) ... 742s (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 ... 67259 files and directories currently installed.) 742s Preparing to unpack .../gcc-15-base_15.2.0-12ubuntu1_armhf.deb ... 742s Unpacking gcc-15-base:armhf (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 742s Setting up gcc-15-base:armhf (15.2.0-12ubuntu1) ... 742s (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 ... 67259 files and directories currently installed.) 742s Preparing to unpack .../libstdc++6_15.2.0-12ubuntu1_armhf.deb ... 742s Unpacking libstdc++6:armhf (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 742s Setting up libstdc++6:armhf (15.2.0-12ubuntu1) ... 742s (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 ... 67259 files and directories currently installed.) 742s Preparing to unpack .../libatomic1_15.2.0-12ubuntu1_armhf.deb ... 742s Unpacking libatomic1:armhf (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 742s Preparing to unpack .../libgcc-s1_15.2.0-12ubuntu1_armhf.deb ... 742s Unpacking libgcc-s1:armhf (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 742s Setting up libgcc-s1:armhf (15.2.0-12ubuntu1) ... 742s (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 ... 67259 files and directories currently installed.) 742s Preparing to unpack .../00-dhcpcd-base_1%3a10.3.0-7_armhf.deb ... 742s Unpacking dhcpcd-base (1:10.3.0-7) over (1:10.3.0-3) ... 742s Preparing to unpack .../01-vim-tiny_2%3a9.1.1882-1ubuntu2_armhf.deb ... 742s Unpacking vim-tiny (2:9.1.1882-1ubuntu2) over (2:9.1.1882-1ubuntu1) ... 742s Preparing to unpack .../02-vim-common_2%3a9.1.1882-1ubuntu2_all.deb ... 742s Unpacking vim-common (2:9.1.1882-1ubuntu2) over (2:9.1.1882-1ubuntu1) ... 743s Preparing to unpack .../03-xxd_2%3a9.1.1882-1ubuntu2_armhf.deb ... 743s Unpacking xxd (2:9.1.1882-1ubuntu2) over (2:9.1.1882-1ubuntu1) ... 743s Preparing to unpack .../04-python3-gdbm_3.14.2-1_armhf.deb ... 743s Unpacking python3-gdbm (3.14.2-1) over (3.13.9-3) ... 743s Preparing to unpack .../05-libctf0_2.45.50.20260119-1ubuntu1_armhf.deb ... 743s Unpacking libctf0:armhf (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 743s Preparing to unpack .../06-libctf-nobfd0_2.45.50.20260119-1ubuntu1_armhf.deb ... 743s Unpacking libctf-nobfd0:armhf (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 743s Preparing to unpack .../07-binutils-arm-linux-gnueabihf_2.45.50.20260119-1ubuntu1_armhf.deb ... 743s Unpacking binutils-arm-linux-gnueabihf (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 743s Preparing to unpack .../08-libbinutils_2.45.50.20260119-1ubuntu1_armhf.deb ... 743s Unpacking libbinutils:armhf (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 743s Preparing to unpack .../09-binutils_2.45.50.20260119-1ubuntu1_armhf.deb ... 743s Unpacking binutils (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 743s Preparing to unpack .../10-binutils-common_2.45.50.20260119-1ubuntu1_armhf.deb ... 743s Unpacking binutils-common:armhf (2.45.50.20260119-1ubuntu1) over (2.45.50.20251209-1ubuntu1) ... 743s Selecting previously unselected package libsframe3:armhf. 743s Preparing to unpack .../11-libsframe3_2.45.50.20260119-1ubuntu1_armhf.deb ... 743s Unpacking libsframe3:armhf (2.45.50.20260119-1ubuntu1) ... 743s Preparing to unpack .../12-zstd_1.5.7+dfsg-3_armhf.deb ... 743s Unpacking zstd (1.5.7+dfsg-3) over (1.5.7+dfsg-2) ... 743s Setting up libpython3.14-stdlib:armhf (3.14.2-1) ... 743s Setting up binutils-common:armhf (2.45.50.20260119-1ubuntu1) ... 743s Setting up libsframe3:armhf (2.45.50.20260119-1ubuntu1) ... 743s Setting up libctf-nobfd0:armhf (2.45.50.20260119-1ubuntu1) ... 743s Setting up libnss-systemd:armhf (259-1ubuntu3) ... 743s Setting up systemd (259-1ubuntu3) ... 743s /usr/lib/tmpfiles.d/legacy.conf:14: Duplicate line for path "/run/lock", ignoring. 743s /usr/lib/tmpfiles.d/legacy.conf:14: Duplicate line for path "/run/lock", ignoring. 744s Setting up xxd (2:9.1.1882-1ubuntu2) ... 744s Setting up vim-common (2:9.1.1882-1ubuntu2) ... 744s Setting up systemd-cryptsetup (259-1ubuntu3) ... 744s Setting up libatomic1:armhf (15.2.0-12ubuntu1) ... 744s Setting up udev (259-1ubuntu3) ... 745s Setting up dhcpcd-base (1:10.3.0-7) ... 745s Setting up python3.14 (3.14.2-1) ... 747s Setting up libbinutils:armhf (2.45.50.20260119-1ubuntu1) ... 747s Setting up zstd (1.5.7+dfsg-3) ... 747s Setting up libpython3-stdlib:armhf (3.14.2-1) ... 747s Setting up systemd-resolved (259-1ubuntu3) ... 748s Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 148. 748s Setting up libctf0:armhf (2.45.50.20260119-1ubuntu1) ... 748s Setting up systemd-userdbd (259-1ubuntu3) ... 748s Setting up systemd-sysv (259-1ubuntu3) ... 748s Setting up python3-gdbm (3.14.2-1) ... 748s Setting up python3 (3.14.2-1) ... 749s Setting up vim-tiny (2:9.1.1882-1ubuntu2) ... 749s Setting up libpam-systemd:armhf (259-1ubuntu3) ... 749s Setting up binutils-arm-linux-gnueabihf (2.45.50.20260119-1ubuntu1) ... 749s Setting up binutils (2.45.50.20260119-1ubuntu1) ... 749s Processing triggers for dbus (1.16.2-2ubuntu2) ... 749s Processing triggers for shared-mime-info (2.4-5build2) ... 750s Processing triggers for procps (2:4.0.4-9ubuntu1) ... 750s Processing triggers for initramfs-tools (0.150ubuntu7) ... 750s Processing triggers for libc-bin (2.42-2ubuntu4) ... 750s Processing triggers for man-db (2.13.1-1) ... 754s Reading package lists... 754s Building dependency tree... 754s Reading state information... 754s Solving dependencies... 755s The following packages will be REMOVED: 755s libpython3.13-minimal* libpython3.13-stdlib* libsframe2* python3.13* 755s python3.13-minimal* 756s 0 upgraded, 0 newly installed, 5 to remove and 0 not upgraded. 756s After this operation, 21.4 MB disk space will be freed. 756s (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 ... 67259 files and directories currently installed.) 756s Removing python3.13 (3.13.11-1) ... 756s Removing libpython3.13-stdlib:armhf (3.13.11-1) ... 756s Removing python3.13-minimal (3.13.11-1) ... 758s Removing libpython3.13-minimal:armhf (3.13.11-1) ... 758s Removing libsframe2:armhf (2.45.50.20251209-1ubuntu1) ... 758s Processing triggers for systemd (259-1ubuntu3) ... 758s Processing triggers for man-db (2.13.1-1) ... 758s Processing triggers for libc-bin (2.42-2ubuntu4) ... 758s (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 ... 66515 files and directories currently installed.) 758s Purging configuration files for libpython3.13-minimal:armhf (3.13.11-1) ... 758s Purging configuration files for python3.13-minimal (3.13.11-1) ... 760s autopkgtest [05:18:51]: rebooting testbed after setup commands that affected boot 826s Reading package lists... 827s Building dependency tree... 827s Reading state information... 827s Solving dependencies... 827s Some packages could not be installed. This may mean that you have 827s requested an impossible situation or if you are using the unstable 827s distribution that some required packages have not yet been created 827s or been moved out of Incoming. 827s The following information may help to resolve the situation: 827s 827s The following packages have unmet dependencies: 828s satisfy:command-line : Depends: default-mysql-server but it is not going to be installed 828s Depends: python3-all-dev but it is not going to be installed 828s Depends: python3-tango but it is not going to be installed 828s Depends: tango-db but it is not going to be installed 828s E: Unable to satisfy dependencies. Reached two conflicting assignments: 828s 1. default-mysql-server:armhf is selected for install because: 828s 1. satisfy:command-line:armhf=1 is selected for install 828s 2. satisfy:command-line:armhf Depends default-mysql-server 828s 2. default-mysql-server:armhf Depends mysql-server 828s but none of the choices are installable: 828s [no choices] 828s autopkgtest: WARNING: Test dependencies are unsatisfiable with using apt pinning. Retrying with using all packages from resolute-proposed 832s Reading package lists... 833s Building dependency tree... 833s Reading state information... 833s Solving dependencies... 833s Some packages could not be installed. This may mean that you have 833s requested an impossible situation or if you are using the unstable 833s distribution that some required packages have not yet been created 833s or been moved out of Incoming. 833s The following information may help to resolve the situation: 833s 833s The following packages have unmet dependencies: 834s satisfy:command-line : Depends: default-mysql-server but it is not going to be installed 834s Depends: python3-all-dev but it is not going to be installed 834s Depends: python3-tango but it is not going to be installed 834s Depends: tango-db but it is not going to be installed 834s E: Unable to satisfy dependencies. Reached two conflicting assignments: 834s 1. libre2-11:armhf=20250805-1build1 is not selected for install 834s 2. libre2-11:armhf=20250805-1build1 is selected for install because: 834s 1. satisfy:command-line:armhf=1 is selected for install 834s 2. satisfy:command-line:armhf Depends python3-tango 834s 3. python3-tango:armhf Depends libtango10 (>= 10.0.2+dfsg1) 834s 4. libtango10:armhf Depends tango-common 834s 5. tango-common:armhf Depends opentelemetry-cpp 834s 6. opentelemetry-cpp:armhf Depends libgrpc29t64 (>= 1.51.1) 834s 7. libgrpc29t64:armhf Depends libre2-11-absl20240722 834s command2 SKIP installation fails and skip-not-installable set 834s autopkgtest [05:20:05]: @@@@@@@@@@@@@@@@@@@@ summary 834s command1 FAIL non-zero exit status 139 834s command2 SKIP installation fails and skip-not-installable set