container-test-run-herdr-eternal-server
checks.aarch64-linux.nixos
· build #16
· raw
1tribuchet: building on eliza2Machine state will be reset. To keep it, pass --keep-machine-state3start all VLans4(finished: start all VLans, in 0.01 seconds)5Initializing machine ID from random generator.6Test will time out and terminate in 3600 seconds7run the VM test script8machine: waiting for unit herdr-eternal-server.service9machine: systemd-nspawn running (pid 49)10machine: Waiting for journal at /build/vm-state-machine/var/log/journal...11nixos-nspawn(machine): TAP vde-tap1 not found; container will be isolated from VDE12nixos-nspawn(machine): A common reason for this is that /dev/net is not available in the Nix sandbox. Try adding /dev/net to extra-sandbox-paths.13Note: in a future version of systemd-nspawn the default set of permitted socket address families will be restricted to AF_INET, AF_INET6 and AF_UNIX. Use --restrict-address-families= to configure the set of permitted socket address families, or set RestrictAddressFamilies= in a .nspawn file.14░ Spawning container machine on /build/vm-state-machine.15machine # No journal files were found.16machine # No journal boot entry found for the specified boot (+0).17machine # [2379472.413076] machine systemd-journald[57]: Journal started18machine # [2379472.413223] machine systemd-journald[57]: Runtime Journal (/run/log/journal/5434ffa39f874578ab65249cfd25936a) is 8M, max 4G, 3.9G free.19machine # [2379472.427559] machine systemd[1]: Finished Apply Kernel Variables.20machine # [2379472.445998] machine systemd[1]: Finished Create Static Device Nodes in /dev gracefully.21machine # [2379472.465241] machine systemd[1]: Starting Flush Journal to Persistent Storage...22machine # [2379472.466852] machine systemd[1]: Starting Create Static Device Nodes in /dev...23machine # [2379472.514412] machine systemd-journald[57]: Time spent on flushing to /var/log/journal/5434ffa39f874578ab65249cfd25936a is 3.105ms for 6 entries.24machine # [2379472.514412] machine systemd-journald[57]: System Journal (/var/log/journal/5434ffa39f874578ab65249cfd25936a) is 512B, max 4G, 3.9G free.25machine # [2379472.522033] machine systemd[1]: Finished Flush Journal to Persistent Storage.26machine # [2379472.522710] machine systemd[1]: Finished Create Static Device Nodes in /dev.27machine # [2379472.525371] machine systemd[1]: Reached target Preparation for Local File Systems.28machine # [2379472.525503] machine systemd[1]: Rule-based Manager for Device Events and Files skipped, unmet condition check ConditionPathIsReadWrite=/sys29machine # [2379472.666401] machine systemd[1]: Finished Firewall.30machine # [2379473.474949] machine systemd[1]: Mounting /run/wrappers...31machine # [2379473.505399] machine systemd[1]: Mounted /run/wrappers.32machine # [2379473.507731] machine systemd[1]: Reached target Local File Systems.33machine # [2379473.509127] machine systemd[1]: Listening on Boot Loader Control Service Socket.34machine # [2379473.511166] machine systemd[1]: Starting Create SUID/SGID Wrappers...35machine # [2379473.511205] machine systemd[1]: Update Boot Loader Random Seed skipped, unmet condition check ConditionVirtualization=!container36machine # [2379473.513071] machine systemd[1]: Starting Save Transient machine-id to Disk...37machine # [2379473.516237] machine systemd[1]: Starting Create System Files and Directories...38machine # [2379473.537027] machine systemd-tmpfiles[165]: Cannot set file attributes for '/var/empty', value=0x00000010, mask=0x00000010, ignoring: Operation not permitted39machine # [2379473.537409] machine systemd-tmpfiles[165]: fchmod() of /var/log/journal failed: Operation not permitted40machine # [2379473.537783] machine suid-sgid-wrappers-start[172]: chmod: changing permissions of '/run/wrappers/wrappers.UbehLqMnl0/chsh': Operation not permitted41machine # [2379473.537662] machine systemd-tmpfiles[165]: fchmod() of /var/log/journal/5434ffa39f874578ab65249cfd25936a failed: Operation not permitted42machine # [2379473.537930] machine systemd-tmpfiles[165]: fchmod() of /run/log/journal failed: Operation not permitted43machine # [2379473.542445] machine systemd[1]: suid-sgid-wrappers.service: Main process exited, code=exited, status=1/FAILURE44machine # [2379473.542578] machine systemd[1]: suid-sgid-wrappers.service: Failed with result 'exit-code'.45machine # [2379473.543111] machine systemd[1]: Failed to start Create SUID/SGID Wrappers.46machine # [2379473.543718] machine systemd[1]: Finished Create System Files and Directories.47machine # [2379473.567467] machine systemd[1]: Starting Rebuild Journal Catalog...48machine # [2379473.569357] machine systemd[1]: Starting Record System Boot/Shutdown in UTMP...49machine # [2379473.585449] machine systemd[1]: Finished Record System Boot/Shutdown in UTMP.50machine # [2379473.593981] machine systemd[1]: Finished Rebuild Journal Catalog.51machine # [2379473.595739] machine systemd[1]: Starting Update is Completed...52machine # [2379473.610145] machine systemd[1]: Finished Update is Completed.53machine # [2379473.610306] machine systemd[1]: Reached target System Initialization.54machine # [2379473.610439] machine systemd[1]: Discard unused filesystem blocks once a week skipped, unmet condition check ConditionVirtualization=!container55machine # [2379473.610487] machine systemd[1]: Started Daily Cleanup of Temporary Directories.56machine # [2379473.610511] machine systemd[1]: Reached target Timer Units.57machine # [2379473.610654] machine systemd[1]: Listening on D-Bus System Message Bus Socket.58machine # [2379473.610747] machine systemd[1]: Listening on herdr-eternal-server.socket.59machine # [2379473.610959] machine systemd[1]: Listening on Nix Daemon Socket.60machine # [2379473.612332] machine systemd[1]: Listening on OpenSSH Server Socket (systemd-ssh-generator, AF_UNIX Export).61machine # [2379473.613482] machine systemd[1]: Listening on OpenSSH Server Socket (systemd-ssh-generator, AF_UNIX Local).62machine # [2379473.614095] machine systemd[1]: Listening on SSH Socket.63machine # [2379473.614205] machine systemd[1]: Listening on Virtual Machine and Container Registration Service Socket.64machine # [2379473.614225] machine systemd[1]: Reached target Socket Units.65machine # [2379473.614267] machine systemd[1]: Reached target Basic System.66machine # [2379473.615881] machine systemd[1]: Starting Import lastlog data into lastlog2 database...67machine # [2379473.618165] machine systemd[1]: Starting Name Service Cache Daemon (nsncd)...68machine # [2379473.620883] machine systemd[1]: Starting resolvconf update...69machine # [2379473.622655] machine systemd[1]: Starting SSH Host Keys Generation...70machine # [2379473.641063] machine systemd[1]: Finished Import lastlog data into lastlog2 database.71machine # [2379473.695400] machine systemd[1]: etc-machine\x2did.mount: Deactivated successfully.72machine # [2379473.697269] machine systemd[1]: Finished Save Transient machine-id to Disk.73machine # [2379473.719577] machine systemd[1]: nscd.service: Deactivated successfully.74machine # [2379473.719891] machine systemd[1]: Stopped Name Service Cache Daemon (nsncd).75machine # [2379473.723358] machine systemd[1]: Starting Name Service Cache Daemon (nsncd)...76machine # [2379473.733265] machine systemd[1]: Finished resolvconf update.77machine # [2379473.733417] machine systemd[1]: Reached target Preparation for Network.78machine # [2379473.734852] machine systemd[1]: Starting Address configuration of eth1...79machine # [2379473.736962] machine systemd[1]: Starting Extra networking commands....80machine # [2379473.761927] machine network-addresses-eth1-start[249]: adding address 192.168.1.1/24... done81machine # [2379473.765736] machine network-addresses-eth1-start[249]: adding address 2001:db8:1::1/64... done82machine # [2379473.772973] machine systemd[1]: Finished Address configuration of eth1.83machine # [2379473.840087] machine systemd[1]: Finished Extra networking commands..84machine # [2379473.840285] machine systemd[1]: Reached target Network.85machine # [2379473.841821] machine systemd[1]: Starting Roaming-friendly transport for herdr --remote...86machine # [2379473.844198] machine systemd[1]: Starting Nginx Web Server...87machine # [2379473.917923] machine herdr-eternal-server[307]: 2026-10-24T13:20:27.079288Z INFO herdr_eternal_server: listening addr=127.0.0.1:743388machine # [2379473.922327] machine herdr-eternal-server[307]: 2026-10-24T13:20:27.083330Z INFO herdr_eternal_server: listening (quic) addr=[::]:744389machine # [2379473.922051] machine systemd[1]: Started Roaming-friendly transport for herdr --remote.90machine # [2379473.972594] machine nsncd[243]: Oct 24 13:20:27.134 INFO started, config: Config { ignored_request_types: {}, worker_count: 8, handoff_timeout: 10s }, path: "/var/run/nscd/socket"91machine # [2379473.972662] machine systemd[1]: Started Name Service Cache Daemon (nsncd).92machine # [2379473.972726] machine systemd[1]: Reached target Host and Network Name Lookups.93machine # [2379473.972803] machine systemd[1]: Reached target User and Group Name Lookups.94machine # [2379474.020681] machine systemd[1]: Starting User Login Management...95machine # [2379474.022477] machine systemd[1]: Starting Permit User Sessions...96machine # [2379474.035747] machine systemd[1]: Finished Permit User Sessions.97machine # [2379474.037523] machine systemd[1]: Started Console Getty.98machine # [2379474.037570] machine systemd[1]: Getty on tty1 skipped, unmet condition check ConditionPathExists=/dev/tty099machine # [2379474.037593] machine systemd[1]: Reached target Login Prompts.100machine # [2379474.228687] machine sshd-keygen-start[198]: Generating public/private rsa key pair.101machine # [2379474.228687] machine sshd-keygen-start[198]: Your identification has been saved in /etc/ssh/ssh_host_rsa_key102machine # [2379474.228687] machine sshd-keygen-start[198]: Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub103machine # [2379474.228687] machine sshd-keygen-start[198]: The key fingerprint is:104machine # [2379474.228687] machine sshd-keygen-start[198]: SHA256:tVORuV187raYHMfUF800E6/pWMMDJVyRW1yuEaZ6h3Q root@machine105machine # [2379474.228687] machine sshd-keygen-start[198]: The key's randomart image is:106machine # [2379474.228687] machine sshd-keygen-start[198]: +---[RSA 4096]----+107machine # [2379474.228687] machine sshd-keygen-start[198]: | .o+*@*|108machine # [2379474.228687] machine sshd-keygen-start[198]: | +*.+%|109machine # [2379474.228687] machine sshd-keygen-start[198]: | . =oE=*|110machine # [2379474.228687] machine sshd-keygen-start[198]: | . =.=o*+|111machine # [2379474.228687] machine sshd-keygen-start[198]: | S + o %..|112machine # [2379474.228687] machine sshd-keygen-start[198]: | o * =o|113machine # [2379474.228687] machine sshd-keygen-start[198]: | o *..|114machine # [2379474.228687] machine sshd-keygen-start[198]: | + . |115machine # [2379474.228687] machine sshd-keygen-start[198]: | |116machine # [2379474.228687] machine sshd-keygen-start[198]: +----[SHA256]-----+117machine # [2379474.255279] machine sshd-keygen-start[530]: Generating public/private ed25519 key pair.118machine # [2379474.255279] machine sshd-keygen-start[530]: Your identification has been saved in /etc/ssh/ssh_host_ed25519_key119machine # [2379474.255279] machine sshd-keygen-start[530]: Your public key has been saved in /etc/ssh/ssh_host_ed25519_key.pub120machine # [2379474.255279] machine sshd-keygen-start[530]: The key fingerprint is:121machine # [2379474.255279] machine sshd-keygen-start[530]: SHA256:b7hP1XYsaiKNydMWdvmhyTld8smn9vn/QTrUM6HVVWI root@machine122machine # [2379474.255279] machine sshd-keygen-start[530]: The key's randomart image is:123machine # [2379474.255279] machine sshd-keygen-start[530]: +--[ED25519 256]--+124machine # [2379474.255279] machine sshd-keygen-start[530]: | E +|125machine # [2379474.255279] machine sshd-keygen-start[530]: | . .o|126machine # [2379474.255279] machine sshd-keygen-start[530]: | o.|127machine # [2379474.255279] machine sshd-keygen-start[530]: | o+..|128machine # [2379474.255279] machine sshd-keygen-start[530]: | S o +o*=+|129machine # [2379474.255279] machine sshd-keygen-start[530]: | . O =.O+B+|130machine # [2379474.255279] machine sshd-keygen-start[530]: | B O Ooo+o|131machine # [2379474.255279] machine sshd-keygen-start[530]: | B o .o.+|132machine # [2379474.255279] machine sshd-keygen-start[530]: | ... ..oO|133machine # [2379474.255279] machine sshd-keygen-start[530]: +----[SHA256]-----+134machine # [2379474.258361] machine systemd[1]: sshd-keygen.service: Deactivated successfully.135machine # [2379474.258693] machine systemd[1]: Finished SSH Host Keys Generation.136machine # [2379474.994571] machine systemd-logind[515]: New seat seat0.137machine # [2379474.996376] machine systemd[1]: Starting D-Bus System Message Bus...138machine # [2379474.996533] machine systemd[1]: Started User Login Management.139machine # [2379474.997738] machine systemd[1]: Starting linger-users.service...140machine # [2379475.052583] machine systemd[1]: linger-users.service: Deactivated successfully.141machine # [2379475.053238] machine systemd[1]: Finished linger-users.service.142machine # [2379475.074897] machine nginx-pre-start[534]: nginx: the configuration file /nix/store/kshvwd57a4zf73pas91ixilc84qi7z5r-nginx.conf syntax is ok143machine # [2379475.076060] machine nginx-pre-start[534]: nginx: configuration file /nix/store/kshvwd57a4zf73pas91ixilc84qi7z5r-nginx.conf test is successful144machine # [2379475.089371] machine systemd[1]: Started Nginx Web Server.145machine # [2379475.089626] machine systemd[1]: Reached target Multi-User System.146machine # [2379475.530745] machine dbus-broker-launch[532]: Looking up NSS user entry for 'systemd-timesync'...147machine # [2379475.531615] machine dbus-broker-launch[532]: NSS returned no entry for 'systemd-timesync'148machine # [2379475.531615] machine dbus-broker-launch[532]: Invalid user-name in /nix/store/qc9xgblhnf7lfr9s1isd46w0wzzhcxm9-system-path/share/dbus-1/system.d/org.freedesktop.timesync1.conf +16: user="systemd-timesync"149machine # [2379475.532562] machine systemd[1]: Started D-Bus System Message Bus.150machine # [2379475.542692] machine dbus-broker-launch[532]: Ready151machine # [2379475.543393] machine systemd[1]: Startup finished in 3.632s.152machine: (finished: waiting for unit herdr-eternal-server.service, in 4.67 seconds)153machine: waiting for unit nginx.service154machine: (finished: waiting for unit nginx.service, in 0.02 seconds)155machine: waiting for TCP port 80 on localhost156Connection to localhost (::1) 80 port [tcp/http] succeeded!157machine: (finished: waiting for TCP port 80 on localhost, in 1.03 seconds)158machine: must succeed: mkdir -p /root/.config/herdr-eternal159machine: (finished: must succeed: mkdir -p /root/.config/herdr-eternal, in 0.02 seconds)160machine: must succeed: printf '[targets.testbox]161url = "ws://localhost/herdr-eternal"162token = "test-token"163forward_agent = true164[targets.testbox-quic]165url = "ws://127.0.0.1:1"166quic_addr = "127.0.0.1:7443"167quic_ca = "/nix/store/2n77gbcla9sqczilbbav9z63c7h81kkp-herdr-eternal-test-cert/cert.pem"168token = "test-token"169' > /root/.config/herdr-eternal/config.toml170machine: (finished: must succeed: printf '[targets.testbox]171url = "ws://localhost/herdr-eternal"172token = "test-token"173forward_agent = true174[targets.testbox-quic]175url = "ws://127.0.0.1:1"176quic_addr = "127.0.0.1:7443"177quic_ca = "/nix/store/2n77gbcla9sqczilbbav9z63c7h81kkp-herdr-eternal-test-cert/cert.pem"178token = "test-token"179' > /root/.config/herdr-eternal/config.toml, in 0.01 seconds)180machine: must succeed: herdr-eternal-ssh -T testbox 'id -un; echo $SHELL; echo $USER; echo $LOGNAME; echo $HOME; curl --version > /dev/null && echo curl-ok; echo systemd=$RUNTIME_DIRECTORY$LISTEN_FDS$INVOCATION_ID' < /dev/null181machine: (finished: must succeed: herdr-eternal-ssh -T testbox 'id -un; echo $SHELL; echo $USER; echo $LOGNAME; echo $HOME; curl --version > /dev/null && echo curl-ok; echo systemd=$RUNTIME_DIRECTORY$LISTEN_FDS$INVOCATION_ID' < /dev/null, in 0.10 seconds)182machine: must fail: herdr-eternal-ssh -T testbox 'exit 3' < /dev/null183machine: (finished: must fail: herdr-eternal-ssh -T testbox 'exit 3' < /dev/null, in 0.05 seconds)184machine: must succeed: herdr-eternal-ssh -T testbox-quic 'echo over-quic' < /dev/null185machine: (finished: must succeed: herdr-eternal-ssh -T testbox-quic 'echo over-quic' < /dev/null, in 0.06 seconds)186machine: must succeed: cat > /root/restart-client.sh <<'EOF'187/nix/store/hp32mcs7ji5lpjk0hr96nn178q1bmc2q-herdr-eternal-0.1.0/bin/herdr-eternal-ssh -T testbox 'echo before; sleep 5; echo after; exit 5' </dev/null > /root/restart-out188echo rc=$? >> /root/restart-out189EOF190machine: (finished: must succeed: cat > /root/restart-client.sh <<'EOF'191/nix/store/hp32mcs7ji5lpjk0hr96nn178q1bmc2q-herdr-eternal-0.1.0/bin/herdr-eternal-ssh -T testbox 'echo before; sleep 5; echo after; exit 5' </dev/null > /root/restart-out192echo rc=$? >> /root/restart-out193EOF, in 0.01 seconds)194machine: must succeed: systemd-run --unit=restart-client --setenv=HOME=/root sh /root/restart-client.sh195Running as unit: restart-client.service; invocation ID: 2db7e71ab4a74cae9ff097f3d34a8f36196machine: (finished: must succeed: systemd-run --unit=restart-client --setenv=HOME=/root sh /root/restart-client.sh, in 0.02 seconds)197machine: waiting for success: grep -q before /root/restart-out198grep: /root/restart-out: No such file or directory199machine # [2379477.325069] machine systemd[1]: Started [systemd-run] /run/current-system/sw/bin/sh /root/restart-client.sh.200machine: (finished: waiting for success: grep -q before /root/restart-out, in 1.03 seconds)201machine: must succeed: systemctl show -p MainPID --value herdr-eternal-server202machine: (finished: must succeed: systemctl show -p MainPID --value herdr-eternal-server, in 0.02 seconds)203machine: must succeed: systemctl restart herdr-eternal-server204machine: (finished: must succeed: systemctl restart herdr-eternal-server, in 0.14 seconds)205machine: must succeed: systemctl show -p MainPID --value herdr-eternal-server206machine: (finished: must succeed: systemctl show -p MainPID --value herdr-eternal-server, in 0.01 seconds)207machine: waiting for success: grep -q rc= /root/restart-out208machine # [2379478.386147] machine systemd[1]: Stopping Roaming-friendly transport for herdr --remote...209machine # [2379478.387003] machine herdr-eternal-server[307]: 2026-10-24T13:20:31.548113Z INFO herdr_eternal_server: handed sessions over to the fd store fds=3210machine # [2379478.398063] machine systemd[1]: herdr-eternal-server.service: Deactivated successfully.211machine # [2379478.398227] machine systemd[1]: herdr-eternal-server.service: Unit process 1342 (sh) remains running after unit stopped.212machine # [2379478.398284] machine systemd[1]: herdr-eternal-server.service: Unit process 1343 (zsh) remains running after unit stopped.213machine # [2379478.398338] machine systemd[1]: herdr-eternal-server.service: Unit process 1344 (sleep) remains running after unit stopped.214machine # [2379478.399035] machine systemd[1]: Stopped Roaming-friendly transport for herdr --remote.215machine # [2379478.420404] machine systemd[1]: herdr-eternal-server.service: Found left-over process 1342 (sh) in control group while starting unit. Ignoring.216machine # [2379478.420415] machine systemd[1]: herdr-eternal-server.service: This usually indicates unclean termination of a previous run, or service implementation deficiencies.217machine # [2379478.420474] machine systemd[1]: herdr-eternal-server.service: Found left-over process 1343 (zsh) in control group while starting unit. Ignoring.218machine # [2379478.420479] machine systemd[1]: herdr-eternal-server.service: This usually indicates unclean termination of a previous run, or service implementation deficiencies.219machine # [2379478.420524] machine systemd[1]: herdr-eternal-server.service: Found left-over process 1344 (sleep) in control group while starting unit. Ignoring.220machine # [2379478.420527] machine systemd[1]: herdr-eternal-server.service: This usually indicates unclean termination of a previous run, or service implementation deficiencies.221machine # [2379478.422495] machine systemd[1]: Starting Roaming-friendly transport for herdr --remote...222machine # [2379478.509288] machine herdr-eternal-server[1349]: 2026-10-24T13:20:31.670821Z INFO herdr_eternal_server: listening addr=127.0.0.1:7433223machine # [2379478.509825] machine herdr-eternal-server[1349]: 2026-10-24T13:20:31.671295Z INFO herdr_eternal_server: listening (quic) addr=[::]:7443224machine # [2379478.509921] machine herdr-eternal-server[1349]: 2026-10-24T13:20:31.671482Z INFO herdr_eternal_server: restored handed-over session token=307-1792848030580766612-3225machine # [2379478.510145] machine systemd[1]: Started Roaming-friendly transport for herdr --remote.226machine: (finished: waiting for success: grep -q rc= /root/restart-out, in 4.05 seconds)227machine: must succeed: cat /root/restart-out228machine: (finished: must succeed: cat /root/restart-out, in 0.01 seconds)229machine: must succeed: journalctl -u herdr-eternal-server | grep -q 'restored handed-over session'230machine: (finished: must succeed: journalctl -u herdr-eternal-server | grep -q 'restored handed-over session', in 0.02 seconds)231machine: must succeed: ssh-keygen -t ed25519 -N "" -f /root/agent-key232machine: (finished: must succeed: ssh-keygen -t ed25519 -N "" -f /root/agent-key, in 0.02 seconds)233machine: must succeed: install -d -m 700 -o alice -g users /home/alice/.ssh234machine: (finished: must succeed: install -d -m 700 -o alice -g users /home/alice/.ssh, in 0.02 seconds)235machine: must succeed: install -m 600 -o alice -g users /root/agent-key.pub /home/alice/.ssh/authorized_keys236machine: (finished: must succeed: install -m 600 -o alice -g users /root/agent-key.pub /home/alice/.ssh/authorized_keys, in 0.06 seconds)237machine: must succeed: rm /root/agent-key.pub238machine: (finished: must succeed: rm /root/agent-key.pub, in 0.01 seconds)239machine: must succeed: ssh-agent sh -c 'ssh-add /root/agent-key && rm /root/agent-key && herdr-eternal-ssh -T testbox "ssh -o StrictHostKeyChecking=accept-new -o BatchMode=yes alice@localhost id -un"' < /dev/null240Identity added: /root/agent-key (root@machine)241machine # [2379482.460848] machine systemd[1]: restart-client.service: Deactivated successfully.242Warning: Permanently added 'localhost' (ED25519) to the list of known hosts.243machine: (finished: must succeed: ssh-agent sh -c 'ssh-add /root/agent-key && rm /root/agent-key && herdr-eternal-ssh -T testbox "ssh -o StrictHostKeyChecking=accept-new -o BatchMode=yes alice@localhost id -un"' < /dev/null, in 0.30 seconds)244(finished: run the VM test script, in 11.68 seconds)245test script finished in 11.76s246cleanup247kill NspawnMachine (pid 49)248Container machine terminated by signal KILL.249(finished: cleanup, in 0.31 seconds)250additionally exposed symbols:251 machine,252 vlan1,253 start_all, test_script, machines, machines_qemu, machines_nspawn, vlans, driver, log, os, create_machine, subtest, run_tests, join_all, retry, serial_stdout_off, serial_stdout_on, polling_condition, BaseMachine, QemuMachine, NspawnMachine, t, debug, dump_machine_ssh