From 7d0e7a590cd9bf66076c6d6724d4a62ea1faf71b Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Thu, 17 Jul 2025 08:40:09 -0700 Subject: [PATCH] RDP client: wait for server before pinging This has always incorrectly been a race, it looks like, but for some reason we were winning it before but we're losing it now. The client seems to be pinging while the server's still typing stuff into grub. So let's have the server set a mutex, and the client wait for it. Signed-off-by: Adam Williamson --- .../remote_server_running-20250717.json | 15 +++++++++++++++ .../remote_server_running-20250717.png | Bin 0 -> 6110 bytes tests/_boot_to_anaconda.pm | 16 ++++++++++++---- tests/_rdp_client_connect_pre.pm | 4 ++++ 4 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 needles/anaconda/universal/remote_server_running-20250717.json create mode 100644 needles/anaconda/universal/remote_server_running-20250717.png diff --git a/needles/anaconda/universal/remote_server_running-20250717.json b/needles/anaconda/universal/remote_server_running-20250717.json new file mode 100644 index 00000000..3bcb206f --- /dev/null +++ b/needles/anaconda/universal/remote_server_running-20250717.json @@ -0,0 +1,15 @@ +{ + "area": [ + { + "xpos": 121, + "ypos": 146, + "width": 239, + "height": 14, + "type": "match" + } + ], + "properties": [], + "tags": [ + "anaconda_remote_server_running" + ] +} \ No newline at end of file diff --git a/needles/anaconda/universal/remote_server_running-20250717.png b/needles/anaconda/universal/remote_server_running-20250717.png new file mode 100644 index 0000000000000000000000000000000000000000..767c5eb50be45e1aa979161ff3218985e68e7d93 GIT binary patch literal 6110 zcmeHL_g7O*w>~F@01*KZkRA)7bdaJ5Bq)X|prZ653Q|Rp-f|FMiim(pks1~0O?oFP z5~SDA1*Lb88X)2Fe)p$u-GAY(S!

v-g@=)AoL5ha2c=urTv70|3CHrKx@!01!ta z9Du=(fZRt*J%VEfx`sE75CC%iEjc-+AND>10C%L8x|*T)@N$aI=6@O zE0;f&K(Nx6{1e`RsDWH*U)J@(x8}*-oUo2f*pN1;!bxoPHAwGU@FaUWXYU_A-wgIG z3)DH8Yb+iD6eNcz?$t9TQM8vVv>)(|OqxBGybfe!tv)@2>(fu-fHmrHOss7dTmzU@ z6qi%|UeA}Eu3GE8s*}ywwU)YkFQ$i0$FxpD!~r zo(vJgJOpoFv@j6%z5tnX-vF|irA&a^p#5!BG#VER$T4C(0GHw3&hRq17q>YFLs`h~ z_ilHN)Vymlj7vp{;wE)=u)Q1;nf@bdHyEYsFp|6B1Pb+8<>N#J04Ruyyc^`WDYqxe zdS#1gu3||b`uw_GmSp>dg+|Y*?;=|37aCh4ikP+pxwhFxHES-&`zI{T>cG2NnhC|G zsPCPMW@tR%xz2?I-k*742})68;F>)SylahL}O2vJ^f`Z9~9Csnv5o?L2_u#<@Q6 z;S5%q?_E%RPUTT&IF9Cq#ti|BnD)a`T`-FaGhQ{r9oJhf`sD=F1lz1bsa&XA;Nv2o5NCu$~ht`$uqHtHOLrpMLUoxA3ak zCy#3eLf0&VS#ERUX zvlQ~-)^^xwi{ZlH=1-*I(V7v20#?kuj1|n#V2$*uz zfpkF+uUvtvJ!IM#s|~F2VYj84%TUSosqL@6%qA(qcB@Y0oMHOAt9ScH*;{dsc_}jm zTbG-xNBFTlWO=ha2VLByvj8%R>xs~FW4dF1_A+);G;?5zeeYtL@$%<0kjt|JO`$-f zp$w>jvt#dC4G!cR5J3gajj{e$bFJ}!`XN;dntIhR?t6vDSP9Ktt_u6MSftn&s_nlYIL-ZkAlLfZ?2XJ1i zGyBEtOfm@?n6izbZSjFE3b)}*g@0}}2_Yl~UD zN?0M)cUHmiU#5SSI`|1rpJPPpWn|Pn{k8rf#RkR0@Hv*$C-3pdD^Ku+TtZ>_KNaZ| z_A~Kqqr{Yco0MC<9k!>YI_rl05)~)X0Tbzu{ftEpb^2ZHy;aA8Wqr+&_Q50cNVBEx z{pY?r=Mw_bkaHobpKqYMoLW`?N{38hzGFfIMDhbXUPVuH$VH?$_kBU$oFy)vUXB~y zKIq8b<2DDm-r&Al5Tfr(rv!=!r1T{=;Er*XtO`E>!sG4FK_hn)z1!WG^VESTq>^UQ zEUi99*`JJ%_A}bsWJM570ZV@YT-EW3iR+_LM|V>XBK4YC$HE3R57$o}iUYRbs1*^m z+YEMa(T#xugt6zZulP&w!Q3fYLc8>CLl2wm$T*%kVN6Q@pU8cNw))iz@-LoG3%--5 zqY{sxl5zYO*fjCqTTHADJEg zSb3BaN_XIUvv?46$zt044Em4T0mz%-SH9(HS6C)UhP}%Q`hk|-Mj0opR8a`*knYte zMmBxed?h>r-Ry#oQnBAZJqe8~*Ipoys1!o^zDp@PHQze*#jhn@3q>;)F0YB}1$C{F z;TI*zLKy6{{~~sT#-;Ee9G~xH^=*E7xVRFCNSM1Cp;9Efb*bnFTjTUD{IAuz@?wJ< z?N&!=%U729WG(5bWVrK(b;~%v6yXre(MY7nsFTh=bH5)P}}LJ-u?Y-eajw zw4^aCWAs^A+uP^|n)c?XDdQk+$u6`1AKaBn{XWWto_EhE2e8}Y^h(`kiKafyuc zuVkHArh#n=3Z!DBW*gzBB=IamW8O<2Yk3I=_qCB-xHAJdcJ1x*K=7g#nNz*}f?Deu zc))OUV7p{w^zdiKwco1H_yp_361OL4FAn%wT>D=GV7h?)r(iVsnDO}_iXP)#Or3UNw_n(x} zA*-KU(wo9~i+Bm^ZzXI6{X%OxL$GV?5Jieq*n}G7IG1^+4;Sshywn0H5V+;Qw|PO^TPoMRkLKbuARd9VWOZ z&fzAXyfgH0@wpU5D4L8u#_`DKjwow-xmrIuiqW6u9mMvx(Ij&9gG0a#t&&2|nSb`+ z8L+Guah`q&5wiMuUNLk?*^=bQcImZlSn9?}-ZyFoHZ;(u7NR2kMVs!Yb?e-V)nBun zM7{*NXC=$>Hgdh0YXfU>YtG<#fEBh@jqs*=2ZaNlmR^XlO-MAM)%8F2x!*Qwe)aJW z>ze+U-H->VW||cOj8d@x@T7_kt!Uz*$kjU|j2e{gPaF4X)h2JT&}){k&fs$+>+XJ^ zN~Yl=N_C5CdlhRae&&g>Gm^Mx+7NcekNr>L0oZuuEUrVasN3a%shCMzivMD$M@a2+ z(PKl&cT}Z5h%=4Z-!u)v5or(_>9-I^WzNH!(u^vSwYWjL5jZ-Xt}_O$)EdU zzvjOpvC@NWfH{l56p3pt8HmZClsuhQfY0~nhAvaIR?(2yZC3?ggieWp>EP83f%#ST&A4=IU3a=xETX1Vs$E-@UZB5ZW=rQYD+@;3gE z?sH|n_HVIAX9PE~yWD4UY2wJ(L}K(6EX}1uT1Z!5`p-QnC`s{aW^eKIO{c|S<&B62 zm^o0^W6wr>uO3*EaWfZ5JcF~x!=ioPQ_kQLI4~yeHgS=Nu`q0$-Da~J5oe~jR+l@pL>1SAPdNAiSc7m^zstfKJ8 zjq%W29j#vc1~LKgdw;{=EZn9nZ$0aIMxslRNlv)!yi^`{(ZEDN)ZwFug~-4hO20`I zOVRD{bIlGXLTq*G1LQ}D9decS;72@iL^1rgA_)6ofW}>yBXE&y;Nna*5>Dm-Q(Q|4 zON$`4Bq^g`?`g~FB@=)b&E_WU#|1?I^{+NK*;<@~`Mp_;NXdY*7_MF>ER`GQRpAeY ziGm?Y7%W46#dy4fTth5gkO`-HRqZaSXaGcWVob|KjNEiR03SPC`4@8~4eLiv4z3MS zCHTm98P%3Ygi*BBJwxras!Ol5BSeuuMK2>rS@ui&@lwMxX$L=a{OcPM283~kGqeMr zeW$-g!B2+1FOA!!{P;krC#>LCZTkpUs`gG!=7AQnEP3br^g8zL4h+gA>nWcm)uKKe zE6prBiueHkvxGcLfTy8Q<}m-jD8iEWhpG}L>Q99S*%B@Q*Dm+RwkaCh@@lqEhTN0> z5n{HJ7tZE>s+4!tQDEw8N7Z4`Ht(GAgYsMSVvEUOSGNpMfWJ+w616AkYpbbLJYEp= z0CuuajSJ@nzAL!PfxE=grG&r;^DwTbrPr{&< zA^t4%`alS=7A|WJDCNPABZx7;^^Blc#^`*%+)fv{hH1EgQ<}tGZOe*nUiA(R`JDx( zwbR{qGlH7Pyf1XL;&xz#Uxk^XWzp^4EP8&7_pbU9319bzcO$(idz%5}fefIYz&S|;Rz_meRG)V9%{u^9Odc4Bg6U8|PrXd-Y(?fd{# zA2f{XLiv zzU507kG*qnPN&DqB(UVFxhQ#j`JvgB8Jd0MthaYHjZRxxT&@@ib-$FpQ{(F8S&Y5y zP<>@3{TzBtBKE)|7dAR=hSPIP>Tr!8%&v^z3NplKJA*Kx1v@EaDGGV zN|t?3iEW+_q}|aL+DxRzAq|#$zoy%jXKkt1HEpnb*i>(z#iYUrEe^i|{dQ+!iSN#9)t*xOi@GcfE literal 0 HcmV?d00001 diff --git a/tests/_boot_to_anaconda.pm b/tests/_boot_to_anaconda.pm index 9cc6cc3a..cf94ada8 100644 --- a/tests/_boot_to_anaconda.pm +++ b/tests/_boot_to_anaconda.pm @@ -115,10 +115,18 @@ sub run { if (get_var("KICKSTART") || get_var("RDP_SERVER")) { # wait for the bootloader *here* - in a test that inherits from # anacondatest - so that if something goes wrong during install, - # we get anaconda logs. sleep a bit first so we don't get a - # match for the installer bootloader if it hangs around for a - # while after do_bootloader finishes (in PXE case it does) - sleep 60; + # we get anaconda logs. + if (get_var("RDP_SERVER")) { + # wait till the server is running and set a mutex + assert_screen("anaconda_remote_server_running", 180); + mutex_create("remote_server_running"); + } + else { + # sleep a bit first so we don't get a + # match for the installer bootloader if it hangs around for a + # while after do_bootloader finishes (in PXE case it does) + sleep 60; + } assert_screen "bootloader", 1800; } else { diff --git a/tests/_rdp_client_connect_pre.pm b/tests/_rdp_client_connect_pre.pm index 6c7ed75f..e167d5e3 100644 --- a/tests/_rdp_client_connect_pre.pm +++ b/tests/_rdp_client_connect_pre.pm @@ -1,5 +1,6 @@ use base "installedtest"; use strict; +use lockapi; use tapnet; use testapi; use utils; @@ -9,6 +10,9 @@ sub run { boot_to_login_screen(timeout => 300); $self->root_console(tty => 3); setup_tap_static('172.16.2.115', 'rdp002.test.openqa.fedoraproject.org'); + # wait for server to be up + mutex_lock("remote_server_running"); + mutex_unlock("remote_server_running"); # test test: check if we can see the server assert_script_run "ping -c 2 172.16.2.114"; # We try to connect through Connections which should