From: Frantisek Sumsal Date: Wed, 18 Oct 2023 12:11:33 +0000 (+0200) Subject: test: use Type=exec for the test unit X-Git-Tag: v255-rc1~210 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7e9c7d6f5b997774921e417c051e928460205b5c;p=thirdparty%2Fsystemd.git test: use Type=exec for the test unit Make sure everything we need is set up before continuing further with the test. This should, hopefully, help with a race where we check a dynamic user before it's created by NFTSet= stuff. Before: $ journalctl -o short-monotonic --grep '(test-nft|NFT|testsuite-75)' --no-hostname ... [ 3657.929223] testsuite-75.sh[48]: + systemd-run -u test-nft.service -p DynamicUser=yes -p 'NFTSet=cgroup:inet:sd_test:c user:inet:sd_test:u group:inet:sd_test:g' sleep 10000 ... [ 3657.977372] systemd[1]: test-nft.service: Changed dead -> running [ 3657.977388] systemd[1]: test-nft.service: Job 376 test-nft.service/start finished, result=done [ 3657.977407] testsuite-75.sh[853]: Running as unit: test-nft.service; invocation ID: 8776af2ec7864a60a058cb5d403d1ca6 [ 3657.982437] testsuite-75.sh[856]: elements = { "system.slice/test-nft.service" } [ 3657.984570] testsuite-75.sh[48]: + grep -qF test-nft.service /tmp/tmp.uqXKfyzcpJ [ 3657.985400] testsuite-75.sh[859]: ++ getent passwd test-nft [ 3657.986434] systemd[1]: varlink-12: New incoming message: {"method":"io.systemd.UserDatabase.GetUserRecord","parameters":{"userName":"test-nft","service":"io.systemd.DynamicUser"}} [ 3657.986503] systemd[1]: varlink-12: Sending message: {"error":"io.systemd.UserDatabase.NoRecordFound","parameters":{}} [ 3657.986643] systemd[1]: testsuite-75.service: Child 48 belongs to testsuite-75.service. [ 3657.986660] systemd[1]: testsuite-75.service: Main process exited, code=exited, status=2/INVALIDARGUMENT [ 3657.986681] systemd[1]: testsuite-75.service: Failed with result 'exit-code'. ... [ 3657.989885] systemd[1]: test-nft.service: User lookup succeeded: uid=64568 gid=64568 [ 3657.989936] systemd[1]: Added NFT set: family inet, table sd_test, set u, ID 64568 [ 3657.989965] systemd[1]: Added NFT set: family inet, table sd_test, set g, ID 64568 After: $ journalctl -o short-monotonic --grep '(test-nft|NFT|testsuite-75)' --no-hostname [ 1523.874408] testsuite-75.sh[49]: + systemd-run -u test-nft.service --service-type=exec -p DynamicUser=yes -p 'NFTSet=cgroup:inet:sd_test:c user:inet:sd_test:u group:inet:sd_test:g' sleep 10000 ... [ 1523.924091] systemd[1]: Starting test-nft.service... [ 1523.928891] systemd[1]: test-nft.service: User lookup succeeded: uid=64568 gid=64568 [ 1523.929102] systemd[1]: Added NFT set: family inet, table sd_test, set u, ID 64568 [ 1523.929220] systemd[1]: Added NFT set: family inet, table sd_test, set g, ID 64568 ... [ 1523.933263] systemd[1]: Started test-nft.service. [ 1523.933626] testsuite-75.sh[849]: Running as unit: test-nft.service; invocation ID: d1a5c3eacbc647a7a5fcbd46c7b2f863 [ 1523.940810] testsuite-75.sh[852]: elements = { "system.slice/test-nft.service" } [ 1523.942880] testsuite-75.sh[49]: + grep -qF test-nft.service /tmp/tmp.gWka2x3mQq [ 1523.944031] testsuite-75.sh[855]: ++ getent passwd test-nft [ 1523.945496] systemd[1]: varlink-18: New incoming message: {"method":"io.systemd.UserDatabase.GetUserRecord","parameters":{"userName":"test-nft","service":"io.systemd.DynamicUser"}} [ 1523.951593] systemd[1]: varlink-18: Sending message: {"parameters":{"record":{"userName":"test-nft","uid":64568,"gid":64568,"realName":"Dynamic User",... --- diff --git a/test/units/testsuite-75.sh b/test/units/testsuite-75.sh index 56186de98e5..7e73d2e952f 100755 --- a/test/units/testsuite-75.sh +++ b/test/units/testsuite-75.sh @@ -598,7 +598,8 @@ if command -v nft >/dev/null; then nft add set inet sd_test g '{ typeof meta skgid; }' # service - systemd-run -u test-nft.service -p DynamicUser=yes -p 'NFTSet=cgroup:inet:sd_test:c user:inet:sd_test:u group:inet:sd_test:g' sleep 10000 + systemd-run --unit test-nft.service --service-type=exec -p DynamicUser=yes \ + -p 'NFTSet=cgroup:inet:sd_test:c user:inet:sd_test:u group:inet:sd_test:g' sleep 10000 run nft list set inet sd_test c grep -qF "test-nft.service" "$RUN_OUT" uid=$(getent passwd test-nft | cut -d':' -f3)