From 87e8eecf84df72882521b15454f6da9961b9efeb Mon Sep 17 00:00:00 2001 From: jandrlik Date: Wed, 31 Jul 2024 20:19:41 +0200 Subject: [PATCH 1/7] add howto contribution iteration 1 --- docs/pages/aqa-howto.markdown | 1 + docs/pages/howto/first-contrib.markdown | 42 +++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 docs/pages/howto/first-contrib.markdown diff --git a/docs/pages/aqa-howto.markdown b/docs/pages/aqa-howto.markdown index ff8d5ca3c2..0565a48a5a 100644 --- a/docs/pages/aqa-howto.markdown +++ b/docs/pages/aqa-howto.markdown @@ -1,3 +1,4 @@ ## How-to Guides - [Guidance for Creating OpenJDK Test Defects](Guidance-for-Creating-OpenJDK-Test-Defects.md) +- [First test suite contribution quick guide](howto/first-contrib.markdown) diff --git a/docs/pages/howto/first-contrib.markdown b/docs/pages/howto/first-contrib.markdown new file mode 100644 index 0000000000..74f138cdb2 --- /dev/null +++ b/docs/pages/howto/first-contrib.markdown @@ -0,0 +1,42 @@ +--- +# Feel free to add content and custom Front Matter to this file. +# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults + +layout: default +--- + +# How-To Contribute your first test suite to the aqa-tests repository + +This is a quick guide of adding a testsuite to adoptium aqa-vit. The author of this quick guide has so far only made a contribution into functional tests and some of the other test groups might feature different prerequisites. + +## Requirements: + +An actual java/temurin compatible testsuite that you want to contribute. + +## Actual steps: + +1. First you need to decide what kind of testsuite you are adding. Create an [issue](https://github.com/adoptium/aqa-tests/issues) about contribution to aqa-tests.. here you can discuss with responsible engineers on where to situate your testsuite. Make sure to explain briefly what is the purpose of your testsuite and what specific part of java implementation it tests. Also describe special requirements that your test needs to work (containers, sudo access, graphical display etc..). + +2. ***Fork the aqa-tests*** repository to your own personal fork. We will be executing the testsuite from this fork later. + +3. Once you determine in what testgroup your testsuite is gonna end up in, there are now at least two files you need to prepare. + + 1. First one is the ***build.xml*** file that sets up the environment for your test. It also clones the repository of your testsuite to the testing folder. A good approach is to look for build.xml files within other testsuite folders and get inspired there. A good simple example of such build.xml is within functional/testHeadlessComponents. + + 2. The second file we need to discuss is the ***playlist.xml***. This one manages the execution of the testsuite itself as well as what platforms it will be scheduled for. Like with the build.xml files it is advisable to consult other playlists in already existing testsuites. + + The one thing that is not immediately obvious but is ***mandatory*** after every execution is the ***usage of $(TEST_STATUS)*** statement after test execution in the ***playlist.xml*** . This is where the decision on how the test is colored is made. + +5. Once you think you have both the build.xml and playlist.xml you can ***test your integration*** with [Grinder JOB](https://ci.adoptium.net/view/Test_grinder/job/Grinder/). +Click the ***"Build with Parameters" button*** in the left panel (if there is no such option, make sure you are logged in, and have appropriate permissions set for your account). +Here you can configure your run. Main two parameters that are of interest to us are ADOPTOPENJDK_REPO, where you can put URL of your forked aqa-tests repository and ADOPTOPENJDK_BRANCH that specified the branch your integration is on. +The documentation in the grinder configurator is pretty descriptive, so lets just mention a few other key paremeters you might find useful and their usage. + +| Parameter | Purpose | +| --- | --- | +| BUILD_LIST | is the relative path to the folder containing your build.xml and playlist.xml files | +| TARGET | refers to the name you specified in "testCaseName" section in your playlist.xml file | +| KEEP_WORKSPACE | after testrun the workspace is saved for a while for the developer to check it | +| ARCHIVE_TEST_RESULTS | after testrun the test results are by default discarded for passing tests, check for keeping them | + +It is advised to check KEEP_WORKSPACE and ARCHIVE_TEST_RESULTS checkboxes for debuggin purposes. Adoptium infrastructure by default does not keep workspaces at all and results in case the tests were successful. In some cases runs can report as successful when it is not even executed, therefore nothing had a chance of failing there. It is a good practice to not only check that the test finishes "green" but also that the tests that were supposed to run actually did. From 5b13b837eea31ec6c530cb69c987b4ea34ab455a Mon Sep 17 00:00:00 2001 From: jandrlik Date: Wed, 31 Jul 2024 20:40:09 +0200 Subject: [PATCH 2/7] adding image --- docs/diagrams/BuildWithParameters.png | Bin 0 -> 33072 bytes docs/pages/howto/first-contrib.markdown | 9 +++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 docs/diagrams/BuildWithParameters.png diff --git a/docs/diagrams/BuildWithParameters.png b/docs/diagrams/BuildWithParameters.png new file mode 100644 index 0000000000000000000000000000000000000000..d1f4cd38bdf9cda1887afdff137403baa2bb5fb1 GIT binary patch literal 33072 zcmeFYby!th*Dj8tgn$@?G>DXRhlJAI(j6N%u<1^f5)e?jkrt5dZcw_BM!GlM8_wi; zp102Te%J5!o$H+cUcI>3tToqMbB;OYnB%_hv4a%lC9ob4K0rc3!jh5{RYpR(BL{vC z(NMsZOcsR}@T=WjRl`x)(1qOA-Ub4-G9`C(vo$3*b%jEZkX)x=ifNjnHWE7!(!}rJYMn*$xYOA!oVqo$zq>$sCh?>;$O88nbA(->Mp2^NV+h81RSw1m zvU`}Ot9n3$2AG^5R76BkN<`#u^8vF+^7aLtiD!Ta|d5{CPwgpXMW6yYFvl zh5eQ3%Qp?|H}E;2lFB;7_a{F1l7+lQ#W&L>(YgO-54nA^MQTV)`buBf{P9wYozUE@ z$4mpVpL={RL;^>Vvq!SS*oeCBC5qnTW;FMqQ1qbq3mvxjcWY<0f#F3ik5g8>b_a%X zmSs`SL>FmCutHpYT_GdGyzr-i8cNC^2ZFk=YRUI0Cro4KdGLwxTp>Rsb5?^y+Ktje zSGXWzB2+2V59#y7&xJcp{SWcXDs)WyJPzyqq(WYTyJl5h= zmd!L5TK!FCehkhe zB@xZL8-nU#t!rtLIK+#F@!?j9*Ed|YcC*9F0t@!2&pd~zMC@M($x)=D&JC<5mNqvt z4wkK+jL&p!Ab-v-e8Sz_LcyZ;b=xW2#iio(1Rf9Z5y~XAuhoQwhyuTJg#!Q5kdx&z zwt+Djn%EebGP%NRf#V?|@e8@y8X8-gI+7cinnA4vp2O>!o|8jO1fHvN%CX4VikO;1 zCEe{!RovxOjomGcc}<=R2|nO=11Ek0y?m z0?#$%6v;(w>`lozm^heN7{y$n&TP*GACU9gn?U%KMaBQ>0{kWL+}zR8mXDd)#l?lm zg`LU9-i(=*mzS5Bg^ihwjS;k9ba1nFG<0ROcA&iN;?F)rO&yHwp|*}t8*B30J`Ig* zoE!z7KL_{8|296Dt(@H7ySH}u%L>3A%&vyE%&bf-%rF@9KR@B%DCP`0`D;M`_6Y}7 zuuYkjO&x5U?2S#uoK3AADgU_(6XU->Z|h`l^~ZEfjG0ZXOktp@19&Uzzr0dHN>1_b zPu!Zo3<|UT<0)Y5e`)Cmh5W-<|1!4QJAX{)p9caS|9ijx()w?6|D!QzB`3!xYGdql zJ3J{-f#Dh4Qq~TRhStWWw_SnGnV_H_ZY~H1#MGFBk%Ntcjgf=Lh?UXM*ocLZhlQPkm4nxa zgPYsvpSn=6hXSuOwEE{!-F9UHx-v55G&N*5WoKlAa2Ydlu$V#^dAWg$81g_kc{y2l zx!BnZ|LDrZm`~is9%cxZ6ACjlGiA25Hv8kot-<-;C`t)DXJcad#}!2@Lq`aBK;XG7 z)Y{4QA2(E?FjEyr!&_^za2w? zKmYpkPb=sjTZx?fk4?d6X#D3C91NXJP5u}s=7W@qH!HD&?p$I8RVYhq-`$Yo+^#Li{H#bV0&=dAwTyMqnH(Z$f-^o<#?Bd`^4 z&p&KMPW#6~(f#XKT+B^xR{|K$%67Z+!UGvuUU-V(yG0xcl-d-PoWlgU#w3O~Q>N5Yck z5B|3g^+%sDEZ@YaLFxsoiLeMKI{W8P-tFZpZDaHI=d_QBb=sG-S3f@+WQKq{F#+`Kr?1aMOaA4UCCfM(L2)W z6`hSf9!b7NTQrr5$vnO-{QWxX8usvUQiHu%Hc zU#B(-A@|{%IiVqP%{A_1x!D*LdSRPxH&y(Yq^XCR13SoOti$Fk!|zu2Ka6z|3Qyd7 zQcA5T)BpyK81556qtN>?SYFO%e0G^Twj*H|kZ-NrlF3?e|kr;K?koZ`%|U?IA=7h`G&dp=ng|gQ{76 z%%)tF4DrM2a;e%bi+5Ul6U*X*Z=au_5=3zU6MkuU;pfUK!tV8x#pVWyQ0JF57QIXHXFnW^@X@`oW_;3uDFZdWQvuAhXuNz3QqfJ68+Ig6yrl z&FttN`x8YLEpkVnM?*OxM~8Nn^O=g$iSnVAW^M^+2T9u{X_51m2}55_6g}HiCk(tnda1QL@ZAFLoS95gl%bE zuv6H-d2h9{?XXaWii_AesC;;c^5uhYu=tyNC7$zXCZmxg$fS*J6>$@bLfLMuVr4m7 zkBYNFw3E1Uu?%smg$6dw(~K-p?KH+z+V9JXup?SX z&kwnL4aLNvohBB;QG%iGjO5=AS>Tit4rbHAc26`D)9$H08V+2JB2BjcZLfYxP0oF3!k|R-Gq?-mdYUJz3j2 zh5qIQUEKiBMM3<Rj)08eI9&QV!`FJ0FW}YN-y~?ffdBZ7W;#@CzS^WcB!E3h$ zEaNP{_7<5CS~vv+A^2(Vt9evcj!fQ|ofz_i2f+tC{EV`^xQ<_NNK@5*E={~I)5ad6 zVtTC7Gkh_;8dY+5cs$x&p7nJhGS=2gRpw@;+mhT*Kh$X4Ecfk@W-6oU1iJoq-sHNB zD^y=${^~0|!EC5Zdl|wUu{HyOOmY6i`SrfPta$xA&BWTuR-t;H%2;EBAkWMc_s=8t z&JOBl-*dDtseipK8!D1fOHKQ>!Cg&c84DZo5eNRET#F-?kr{uDFJRO!?ln;Dt??y5 zHgD5l+g!p^=egGFkb^S?M!UHXndNy$SfU%9=}Mtr(v&=p+qUO8)BJ&IR$o#pO->#| z^OWfw0`F(zOw&etl*gGQ1kn8NhU!I4d#El`5i6f~jhCmHQoPKkCa0faLKMPemixn& z;xXynJ-HqQ{3dXuB4!MpN{P?5NV%J7j&s61*^a0lMIyNNPW8<1&(b~JQ>+lJG~ccD zEa>*vmn)cpOhhJC7VI7cg~ZD{7@P+2t3xlbb_3=M&(C%e1`3yCj#E#qb&MKS3qtaa z`W|g`VPov~3bP~pd94{{-`k(+QMUyT^Lx+qYo@y~TI+ z9t)z3AR+ZE0IA0Pe zwXD(4y)PI>D(&VlLss{uny`@JbX~A)o4~Q?&SCEs#{nU^OT#JWa-^mPP5H#iysL`^ zYl6Ia=(K&CNCu`b*X5H5JpSqMPT+VbZeG3L2V(GQoA%{h7!| zPOqAN$URBl=k!LruA`@?lK0K4Gv*5aj$W>XILP4&8cT$x) zYrc+wW9?1n!yBr=i8W!T@11b@>J1GO7RpYXH6LU#EB!jFsC2hIdQ>Kz?{KH9RTZ6rO zD$|Uk5Kq&ESF~Zm8$Gus7u9$3dNYZbR7_mg{?=`{185$mVIN7RWyc@4-Zi0j*{u5MEnzLmpU)a~noAUR$)6~NhFH%%f;E$Kb z8-rTh>Vi-Q9&-&!=+~-}&flj!W?fGiQ!O{L{h{QQ^BDyzxzDPa%!k=&!2?3o-{lZj z>LBeYA9)8(`0Mg=zTIzrkhv+*%#xs-!H>2!ZBl4fF|~Tdhe)SJ zGLng3WdLdTky_E+piKUUGNIS=)ph7mPI)mD3?o%Go6<={O}eJV4@vc4rpym0f~}=g zXjXOwo^X@0RCk59RIrc4@b}5ayDSQMZ9MVy;Y`BBV&{SDc6QZk;YGe zncO}LG0!G3Pjcj%Ss)c6M0`Ers9N_TPRW`fS`fJ6>}Bl5l#Z``6k3lLnk<9pdJ``e z^t2+BU63hd0XgSr%W(hfrKB*L(y}nSfG>quX5A0lgsx~o_s}n7ScU`sO>tZ{Poj6M zFnv`re#@GO2GEn3j&;Vzm=ZWlh6sO5CrE%Q$gtQa{1n}UPES}JS=*19X=N?=Qs+Rj0DrfPx!5# zvA#PS^MK3r&R`U6Sgr)Sq_jAZJu<1_U92c`r9jZTSgw4)M24dcTU18i2k797B}UCY zhCcJ{DYRI1Eu}^+G2sC{s%z`JbnkM-ptX&Y$*c}S&An{LUfNfuD;ML~!f0Q}4m=67 zK)5?Y^-f*WvrHZE!s5SLbHtiwKCtRP1r(?Zs z+)Ri%En{tdp4KTppb&i@2$_m7x|q(`#pahE3<^>3-0AYRacV2@dg@CQcK>XLs@WzS zll6%(|9l!9KqOBoC+`WPQQUrhlJH+Yl%fL+cFJ+OD-dOOdz(s*!te7SjxZYffBEp= z_5mJy!QuZ%SXkv>K4A0*lF1wGFJ@^r?rv`OZ;ZSdutK0sG<vpwhuT|{92+XN zjvH^1`LLj4c>+tFato_{iKSSnrxDo&Fx)~N-kxZBGmR>1Tt+R944ZjwG_+qYbK`t# zopypkWPVinu2xLclfpyFzH3(nOGjHBg%|1Y%H%3%EAYeB^}RyBeqFdbjmN~)N5Hah z9P56waSt^$O`DrJ?`@g!{-S>ppHo~ky%%(*`tj=OYAII8vn3j@4DpPX{{9%3IfAhG zc!H7azUJ8mlI-m4kG*dTw9wxzbq$pG+@R0Q5USL>?mw?7tg@b69m-g~o7j|L>_tqn z)pT^JpoAlM?fUX5jrR}BBDamyBF!>BPD`~|*xB^~XoLMTy?Wthj&6koBW&8ab7&~udX}Hp{iyoQag)cX9uE)4?}~|wr%&w1 z40ti{nX)z6xf8gYR>}q-5m8Z@K0B@cAxCf_G@2ZUUlKO<+;})nv|4KV(3eT^yW>AtH)_uOB$Vk#|bqD2gCfs1ZufW+^Hg% zeJLJUDsOdd?a23dqIpktA~7X+7Cx?%Z<>h2@V74*eF-(Jc8fSj*QZS`HO@PHHubDg zouS%a$1EIl`U9}MtLt1ke&!NTN`z&rbzuu7wTBBarGeG7wKW&k(BRpcurc}Z z`7x5HxL$_kg!=i}QZCP{{7aXX52=`|O?FGvGqd_Fz!rvWb7J{&{bOdm7B_g&2$$_& zc1A|l!}+mhl_RDnyu;Qa?@o5=SZwBmrz&?o`HHBBhhM+DJXJ|Fx97{|hFye&kqDTN z{_uC1b4z{YVw4&JJJSisF0o_Hdz&vV`Qxp0G+UN#-T2u#qQ6jAJ6EwKAy*{_+4kHX zjor+O)MJn1zMcHs^B(URvK+- zB7yO*T<##DqoZRI^Y~TG5w-_C4UFSEHWoZLd3l3y!FdP#_4e;DV%}z#d9OB?`M$OF zA!8I&nGn3b^Gi5Vt<#pYrzgKJ3L@OFEx>kj)JHb?0)2lU{rti*|CRYeGNxbs1!UeD z?UQ9|x9ux!ZX%m*<~nMfh>+q~mn`#CbK6^d>(DW0`aR&e`pv06*YCTd=}YWal;x9n zL`#f1N_9J%Zb*&Bzw`0 zXs!xIsCeX3Ij>h(W~M}DW@fR|7Bv@4OTui6{*V2*Yj{(JC*rv3yG~6MrNoJ` zg;vDINRua1LeadF_GnbOhSs)ag1z#jIiy_!hnQzqq8IE8vxOG6nF zss$EigS+Fk74*3DYF~9~>@f)rAOTzzg}SelN=>A;ck=f)a>x$5$hk0E{SiA7w|Z&CV4j&7Badaj_1Hi-%(Lf zskEAuAIX;6+glF?&Xd4t85|ke<}mr9*!|e%3hrZLXkj5eS!%j>a$+)&;uU@>@qm@J zs@m-k4+6B`-STMw667BJ#2f*ChqCN8o?TE|2U9v&*W5m+4|_-2D&-)~Qr-PHUF7?4YZXlWJ1 zU5bFx@kI;6tDyZTXWx3n>mgKyjwmMu$= zk9o+TU1?PbvvArPr{Lp55mQ3L4sRZ>l&+nyEHmxlLfV}PTB(Dt+O78TN=MPQ)Htj` zCkjK~EaXH_ULB}t{BjB-6AJYACtzZdzh6mQpw@G|rQ~_=Q#BZ00bx{IQ*n2pY=D~G z=Nh~IAee^J;upL7(JRM|VY-2yppPGWOOC!IMyP77bVpP1@@h5->A7X~JoW0N(R4Q4 zZPKc+DE3B(`&RbStB(qIp3dL=Sm{wuu_qGj9%ChW{J7;k@=d8}&k0A?o4Pe4BEi_S z8tYk<&G7<}*j&!{6n_+tZw11Gf?6hA?$3L1r!qHP5d*GDwpR|EK9Z7>FL-(5XX{SabDA7zVw#%; z+B-W9VY(^7xb({xA?SNuWY;rwE~(R1@V%ATvZFS}TIZei{UsW3C?f;E`TEsBt>{|r z#vORD%WgY3hD2Rm@2w5!_d4_H);X_&h<0^-N%n%qvc~rJb8y|22|EUO7MpSB1c>*@ zqy4GX)jUWKNiM=2)|eE(Yp`03e-9Ej&YUMxQ&S@r^n9V-vv;!lb3o|Qe)|`?va<58 zMlZ8Qu3Zn0ri7iVvdd3mh#tK{9nEZoo2a0tG-co|t*xy!J~x7a4-s7@#xw^7ez7C0 zvqk!3F^t-2^K1M2`xiTO@6V&C`hNVd94(whqNJpJsa}}|9ihHDUqb<_i1Jmpj;sDa z+KivSzPPls73?HgIhnhUNJ#oV+!wOjow@(%69)%uDo(Skv3JZq1fRKow$24)FeF*h z(djNWHUU^fdCWmzcld!gwtP6y)DAL=$+9MJ%JU(4UTk#9CUE$V<@*@a0$K5X+JR8CT@+VJz_RF=cCvL+pB=0FCpJfa{pP&&o! zQiv@PPMYDoqZOBsz-HEex4yxnQStpbKU`=sKzSHP>{B`|CeaBgDmH1hDxC_S(`NJX z&!=>{wNX~Y`>kIo}`tK?A-!o|?77l4W>tRa2N8pYBH97z1 zEB`LT{wwGHZ^V;7hVtL!^0!0z2Ob!R*&nF~Rd4>8nI;jD73LLmw82)26zzu+8Sjlc zKCy5y1q21Lc6MsU(r^YxoPHazP^tD23d(#@UJTH@X@p1$d-r>W)?f!JiLecXZkLmuki_c}T{#7?3frT?JSt~?q^7LSi4d3B9q zu+(|X!!tTC=Fy+T8&c(BbH*cpQX}&4*h3UJ-@5CjJ+eJP9B+Sai71I&ovkGr=u|r%q_4f7IIXW6_|6&F2 zkx;?`0f>c-O*ms{*}YM#054SB_sbWZFx8K-a%o;$l+T~952j%_ZSg@aCelRk!Nxj( zxk*V$VUqBD()ZpM%NQEWmb3g`(BrT^XxQ7^OUjMi|q5vNKh2wiq&ytCUeo><^3#v7Ri| zmy-NAA>?ca)ic;hV$`nuDizsDEad$`(Cfm`Smg_;fIExp9+B!d#rG&!N#+xUjCC&X zG@00bVD_%=?ug=ITVW9(uvm70s5e>XLT23Mefx4?OLkiWAGHE4UtbX~kbi#4$S@Au ziin74{rDIjk(4Cc4j~zUPBbEksRd3>H zvg&}pYd_9r906+J1!%l}!@$ssVWkNU@3^>Uh^65ynWe>H;&&h&*)YO=2e!+4j&`{@ zdKtt^X01Q@>`=jHwI9JG@(7vV^|SkQ_!BBwBs456P7QCZ-Q69HI%iz)h{4hNX|?U| zyZP!xUnmuCeHRO?-^#3ugi^km96%z%0LcK939=;jQ?*wP;E=!5Je<{24RQ{>hWd}e z!FLS?QW{>ocv0-ICWLZWQBeSb6BQcfOkcg*JV>@J6S!a>8X5%Di}bQ2u$jTOUyscfAlEAd&i}n0EIz;lLKU0tpb0O_P8h_dGGJ z#Megy@pl_IW)f{4uI~M&OcEkX$~he?*gC6@G_L{jt>_n}N~?_zjL`9Xb!EVZ2b#waW6vzQDmzRJeyR6_CSsbgP16|SFgB4OaroA>TnEgfwb_^vH3?mi**#KR6}N)jYtpppl*5!4_DNo9B4 zL;LWd-vmt=2|K)Sd*0`Bi?0NWY4?%vERssLtl8DsPx}{W6!sm}U-4NiMgy--rpbC! z;UYKJUc>&Y&VV{HhC*9@d;wL~&=vsTgF@)ZXM;q8yAue^YrXM@0NlPgX?&D!?gs&!j4x_9IR^)^&rJn~ z`9hpw!n=2{_O7m_)$!qlbCA9-EHA&yF%zn7?3;aNpMM0Bd4I?-b|5BBV1-S|T1;4* z6kk!vc!GQ#nbVSMp`c3Kc1gVan*HpoHw&u5ou^iy&=m&M4v$pg3gLRmwA{NgS!NDN_ zn@reXK@H#zQN=+5$UsVw4?L7;D2i6;LxDDTsW;*!fR?{|n7xjQ!buU2xvfRZoVLWB zfkdOM`~;-+7Zb6}`hDHeP5YPdCi{csHw=u71e}{9NLs_+m4$M1XlO;yE!35Dbb%H6R=*;mICQ?j1C6EAc4F?%Xsm=Ty4noTG4CCTTrr4EBnAOY8c_KnW06y-U_Qd?Ozxe!F5z-sy zA3ng3aEPW?UmVIXxj5dE^Ypw6HZH(N5pxX<&$z8|xVUgvCiFhy=Yn7eg}yOZzyl;* zFW9SqGfBR#sIZ(cTSpqczY4Bwj2E!Kf3KaAw>I?|f?f~A#R;dX zPMha%6aXqlN3ZEl^|AhG>#VE>NDRA6XNHoJ5&*-^*7|j8^t?fyY3pLsRtFEGe6joz zjHc9ihYV!|a9X}+oB5Lfjo%Yfs`k3%!e`RCyRbcZ2skI~p&?ccjX0I;Pq+XDMrNpe zH2YD_g2(2t$^pnMBQrBgTRcTAdHIJ7`i-$Dd}#EovY#-&}^Ow0(FH>FKyfOQxT@^#@CM+qX zVzN3@g8|<1)wE~T&rfFsbi!^qjt^*dd9JWql(^B+*?Dljrf&zL*4z9kHoHY0bXkhb z%v-GowMOFezbm8r|BnQ3C8GUafn%|ckr4|+l+_;ii%S$QACU4ZrcTi5^7*J$ilQG6 z%;+G>ir+1Ew6u#lXFf_t3xMb(5q{d=x7{I}slF2wWTDvE{@R>Yr>U?p+t@G-Mc2Ee z7>S<#o0=SAqV=wHw6brFBa~K??eH^`(%s%(Oyr67d#$a?LMlejU(kqTNfYEe6-N8< zyL(4U$^xB@PYbJc-JHi3iAh%(`LI1G{qPL~gR%%y*=IEzPT73b_W@XG;#kEMZ;?yh z=8tX=a;vQwT4Kn{8yF*-_T;^>fHA&#>E{QbPK%Gq3@|czktBd|bB*C~(tLi%+>gqv zf-*CkW~u&+_4y?f22&AH`=E-Jn_~9ugM{d7TNVb*yRTeU3(Czb9&~ozR~Kk>Wyo)R_#m)GNkv%b!aG2 ze%5!3G4QRq3f-X}l2{)js8n+Lio(94VlVs_k(5-NCWFuVetyK`s)*Hcd0JMKA|ala zmN<8^Q|!|;HS>rtPd-xcg#%IMN>9$UhH73Wie)_8CU#IsNo{g(ukx#kVe6dMsJOWO znyV=Vf2tiW*=bhVWZ(4W{57adY*ACnxnG54KFkM;@byZ!VoCZ%Q6YyZRP&5JH7XOu z(6gQ}6CHiiA>Ql!>61}1kjE}8ig9}G?EDVp{_5u7lyK%+A+ptp<#h3l7VUv@RbMnc zFDle}-CGf?1oDZd>)Bv&dCENJht~A1XXTY@KA*pTA0?xk4X=*Z+^md=X!=n#h>3wL zB;O66<-UIC9+k z_}^-qN29N{Mp-e(N=?TmvS3=vd>kSoxKwOUbadGpd0>Qqww+qiDM=@mtwC4T-C*Q? z>#4*cTp^BCF+TM5{Y6n|sC%!>$6#5J!{$3;Qe<%g?#*$m7C(o_PbO6xQoG23uIiPeCN##@1&IS zW&Nf`!t?^|e3F#P$|otzUgmj-?%ZpHx`5(Az9Ye-;!rx3#^$~Ps->6NH8k$I zz&kQ1uvw*cVqh_%I*Vlz5_Hc0CEG?_v)X+Q4H4udtz;pvJ-FyL_Gv(_8=PRqz zCMGz=bQiXkc6Z-LM^gc2`wJy+6{;sI=R$8^nhx(bE!@p9l~=wxI$up?D)@F6(@!er zn~GwTM;@RnDSVQYQquQ1lJuHu6|RK$y!L@sJMWC5z&~srm6VqowEEc*3)JGjs(T6Y zPM|3K_Vf40{}o8Y@5(biexjj0t&$}TyG`8G_4}v+iKPx#$MIJy;421cfbcvk(0Yx2 z6)WB57%^5%Pd{fYER!TsDA!bC3r{$#_2*JtaL z8pTM|av#J)*&5A$K6%D=&(m}CDP?;43q`%WK}Tmb4>Sxdusnbe?>txu0bKqwm(yL4 z+c6feG~8Uj0>>RVx{N`_%bBl+=)5`?S}oiW&S;sgqroEN!Mg~9j&w#pB$?VEJ6#`2 z6uRE?**w>4^i0TC_nj;@- zZpG$b_^f#wu!t5e;bTwCHRAlbWgaI~R_3nB;sfMRcn`(eu>B)NZvtm*ww!jE&rQ>P zMH2ST_V#-i7!F!h)?(qLMYbEm(K<~&t$rmOHgn~JK*Z4#*qCopXdI|=+)$2U(oFz3 zbZ1} z2noe+u0_6Smfh*^hwYu-(2s1)xtTG*>m#S`IPXk3S;4kS4O*Tf8~`1VX4n=(8{8U2 zH$ouf&4y%Czb_OtnJ!LvAt@CdAv zp?7y~buS7grky`ixQpZDJLcox87nKDj^7>wGH5U>gk~)N)j>DC9?B(q*|8eVeX`UV z4%nvnSl;o*uM$+ibM%xPLCtbblCX)DT*_I`_4!Sa`T>d6E>KUSS0C2&C7f49|XR&3($ z0u;GXuBRt(ww5{zv{R%_MFyh8V3hauu<3b6`1J$A(9VShdiCp1We&!x12-`rKOUA_ zC%fMn^z-uoSV|b=*TKojjBSD8{bRLVot^uLQ=u<_6`QWKzJ(#cgGycZPlNk1@c)46(iN!GM0|a*? z1sKDP!4}^H&ipd3Iw7H(`p*U0E(=?i`7I}aWfW*>x!DJ98pnU`@Q_UKZu4ZB#2p@c z6YR&2*XY!~KLfd^!QR5}-Xz{=hqbW%P9nrJ9#C2h?=-8K10^YtmF{_s3JW@XCStRe z4>r(WgLDd13f$ah%TM=?`*`~Di&{5EHV3KqKLkKTMK|La2DC1kUA2}vLl-ZOWptXn zgD~*r7j|X=$*f1kc5tCG;4xj99G92~G&~I;l*s@HygmW1kj-&&u?bYmUjax0$!e}1 zkb22Kvt-l(oEjM@GE)fWFYwJVbIDV$%F(LG1Jx6>OnUXQ00PF0O#d2fpPEWp?VGk= zY=?4L>x2Tu8VL}B&672(&d!yeh`1jBNjXU%(f#olfC46iU+>)N;`H<~FV()k1_Z!2 zl^nd|tqJ3+GuC_elUdiz5BJukD=gmTg36H$iEwf%F~jC}jZyUKF_o~{^~n)m<1YD4 zp(Y@OkX%qxNk@H!j)*(%&b%jiiDr=6*H!!R~B-kd0sh-XuCo7%0F&)|ZMmh|cA1r*&JMQXi`9bOHQ01-b!Vyuib zrGqZg(D3&s0`?Su#TGZG7WeluugpwMe@4+g1wtSt;Pj357Vao;Hi4*}tJEf_K9UfJ z)76$i|H^qA0C{r!0eFYU?<6KwiJ0^S<@Ogl zfwMteVemO*2Hgw#FJC5D*@hpHr5dml^?DC_Bb+$By?qXVhy`}WJ8(F}X0xL>cVJTD z-x|{KNDguGDJ-mIa6!4I=}`t+Noia?~rV*BVTqHjV-o49R+9G_W}n61or=dipkz6q@R z<0jeJxoFnA(v?B_I>sv>czavgI#|9f7PF+J?2e)n0R>1G&JFA9aWo0Bp>ks5g#zK} zv^6g&JUmWKE{=+dD+<0B1)T2gbj0d=%lwR>TAyp67Z=x@CqIG)5O09U9t_A>Q$j(J zfKST{R*h7LlwF{!vLAi!2Z%D#tRk|W#vJO3P586xv#4`+A=6CEL-s71qeA^~qv^`;%y0EUwFTft(XqqtEkvvH*{#VFtK{@Aoa{{d1xgS) zrescJ%hBJq-WbLODgzQwTgO3aL!v()eGB1xPGjiR!vNL3zphmJrc25@C^(p!b)OW_ zBawj35xUu4g+SD;2mwhl(?}v?Wu;R|0;w6Qu%y8eGaSy$ZSSH16-ek01$z*e zr(`$HxLq?dpTOqWkSVum;QTC?cx`mNIWHwIzY53*P`bu9y^9#26so5 zbRPx2V3w6*e`xI!gSeOeNcgG2s_Zd}#eH5$ZUzQoaH?RE^52!{y10je!eZE3eOG%9 zV8oJ=T&XPS3Ufd%X;*F=ATFX+zZqaPtLx{g({Bu>y#kC@>v*Mo<=bt$rMab0?l}lx z_JDp1*q{fXEJto68|JzcS_K{dE;ZiaZfvaQRY7EDXUFr38|AA;iIJ;YLpLa#vvcUF zjpBk1qk^#$(&Vgu*R5lkuTtrW=_6n@qHPNZZJn&a0>Lv|DPtRc|DfrnK`fcCVjUb; zBz&&6@Hv6*7{i-6$zppl;68#N*IpA*UuqGFU25N{o zZIVE~eB?+doS%P`-J8!jD)CX{C}1zgLO;F}x>03rP9Q)Z_)tWc-O#pDR(nTVYhb$X z7b!nWJ^i=cxz|uQTEc|K#6(dM>1ko%Chj~8HkRKkqtUpW7SF}w>pMoT3h!MMji(UN zo6}BSb*bK1O|yK7{!lIdACNgStZqV-P^$={LqVa7%#G5x-&rY8z$f~Zz z$9+RFRs4KGX}_WTJ2{8>AT}t-{qQvg#xYNUs#F7VK4?#u5he#JOOJUN^>jWcFSBx_ za`3Zb3`<9k`t(HIF*c@sD-FYEXIII0=bc4Y!4HP!mjEOT3bAt!%J}m0BRac;5-my# z3NEN(HqRqViWS3a_?$4qdD+=Hae88XN-RXvKl(!;zum6+iTUFW&nl80T499D1h(}h z)@;pslD73t5$3)1?F?0Ent?#hJ+xPH=$vxYqh5WGj*`TZKo`6H{ub<*r|eEM1qHM7 zF=yFo;1yccaF$Bb!Z0O$JI1qw`1|J0BvfuBb6@bG(|-*shN-~$p5yx0xzz=+t#u%# z+ncXaNy2AUZgyvsrm00l4#)AJhIiD|HVaS~7{}zPb>CKs2F+B2u4YMF7)5ABaB!;+ z045YiSh!4a!@Y4N%%NAVsEP?^q*6r+4ul|oY*3uwN=opP`q95DL;kahB1#T?dGy~E zG~ep(>`dS9-v=^E^Lr7H(yQUg;3G>R0A``*zRK+FJu&2%U| zi-&K#>*vq+pdC6!2s!OKW=o6NZHQay3hx*m7C!m-XmJJWAL2*SeT>Gwa?x9`u9P8| zuEqK4>S|ot7L@sy--V4Naaul1OZ!bM)F{;RvN}*gJ&bH#!Q7k&9OGXEp8L7-im;O# z5QX4h0w7bx8$-&-$f!}gppD0T0<>T9I%h^@cO4Jd=|E60svB3(WVgPdhq>}A6Nizsc!D! zk&(!NpgeFA5DzE)DM1#>dNtVDafmolF9m4B3sHG29lEI33l>py(g+}t3W z#1q{Xh>YQc3I?^XF_|1n#LaH-THkl#3UQMT3ZOs@rG%9g@!XsMt=^1ABd#!i2q1_; z0PA6zGN)3J2WyPsxD$-eEDx0I2ac3;fM5ry{*!0b{(xz?s|f0_baWDMgOX>eY?$3o zJd+c-Z8k)R4M4re(asju>$U)S4y*MS^I)Cd9_w&_r!9J;4LVKpIs=ooKUzmeEHP?3 z4_3nFx<17)Xg&c4@%VSmSSaq*uaZbiVxA~ardU!@AXB7=e3UhiB5l71{YYN7gYxU+Y&oJ^ zu?EzjK7MSMf<>f;436G@0Q`W$-Cb%Lg7$!~4e;rAszKdaQ3KZ_vo&gB!TLm8`k1|W zpDxT8kVb=Z_UReW13~@U)5{Y?52*EK)9n)Us^34H{_ax`%A`T{L!2p%uG-v?V9~tg#pxV?970V(@jQ0KtE&(oa0IpZq858y z3TdhiHSjvFf4oMegpKhxB(3i3AYKAcO+&Zw_!K_BHkd{UV!>!21XL{cC)Y`Kh3za8 zQS0&CAJ5(ZAm?{mAdCBvE6^HDUv1Me?J~g|FYmMkV*fl8;X z@VFn{mO*|M33LXCruz@K>F`5ex|L?-5-V3P;a;Wul&?Ug z)NnVxs=~=_s@#r>i%acB=OVI*TJ|g|f=Xrqe)Ec&x0>(NT5atBOG(dda8jlFkZkKjH!t<<@xQ&a27awz$wI%1b!FAGjQ%7?YTxm$+F#<^@77vwZZN9sIg~T9*6wmb9chj z;so_$=m)q=y5kYxA!u%d;cB32p@NPdRymMZA7WTDcaJ7~zX{F+G8;4#y?*C;IJAre zOi)6N$L&>Vbsi8}+suoz<-c}#2)Jj1K?3OB5qJYEw(;`qfH+NB&np*hpzSh%-}C1A zzPwp}`|saAuqU{|&=Lcz9sKlMyyYog*OaI#7ElDQP7DZW<>E8U1~?E^5Wtu>hF^bm z5HiGz&NpN4?5)Ye@!@=VSRc=2!_(2D31nOXuTvdRIIv*Htm0r(t*BGrMa-30O<~~S z;UU4~9|(vrIAiFvf0ejbHDYGh71(}NLrj>R-**31mSBi`|K^y!k8jUj1Fr3-nmavG z;k=ikL|+Y>LpYtE4N_`=b~PNE(hp26j5Z9fOTI!HA>(HESg8dr0lm6Xt}6D`sR=GX z6$>+7POr+|YH-{7gYa?n^z4UWy^k0Ig@Ex1l>f`NIcfjWHSAu5k>;ZRr?iRxJMHE_ zMV$Zk;{Tx0Y-Gjk0&PQ{MzP$H_no=QR7HF-7eY*{{zecnG!z<~8#1B+ix-nHkm(Cp z!DEor!7C$p^D$d-vE!yID3O>sIZZal4~vLEf`>hCQrPS5z3J?1e`6N<9K@Ti`a7jy z72UlX4)4}Cq+!Cr4eBk%Fe7Yoz6TZ-=U85>#_mchq^}k6Uze_dF6!w)k6G#Kf5@1+ z(`7(Pz{mFs8IBA&p*lzLPwrJhQJg@U3!IsT{0-z_(19;a>qB5%sMrr~yp)nkm5Ss6 zb5j^tOcq|^gM_CG^mEN2_mdXaGv$-|)VglK^$-jK>;%Kp#M6C`tk*+ZLBj~U!B={f zoR@Dm(D9nv@6!4y_pkX=ED{GU8N4utWIfI4A4Ggb|#$rdg_4T zN)?3N>2$%VS{3gkp~ZM#1g4I~?gVvc5361k8>1|K7Q7%3Q~U}GK*}FuDAH`em>wF| z!w!p?nz$mHd1E+H7U345uBXxkBT%e#vw`9E9zjMmFx4eL;CB_t)|pa-(@;8!b{bB&@`FNY9nW3!f7@;S`hllMGz~#x`&5{eFX|t z7Ma{3^GIl^=-iHTI<#x2<;^C_a<2|?$bLP2|K1Jp69(Z4st8<-GW9NZoeS?CxNB3y zKG*zZqAo6%vbuep+5bH#uKo<0Lf~}_vq98@Y!Upsx5n=-EDZ<476;Y>QTf2)fdhb? zO~ydY=@L_!)l@z7Gv7c76BR{xT7)xJY6h)>H<+XVb>#sa0`xD=2P=1x_+6|2e3w+> z2Ie2gl*vjwX#k^i>S%|M2|G?e@v@2P4Y`^rgME})43G}Vt)hSu)`+4Yq^{0^hJ zgn}!42Y`#Qz1b~_$Xjc?u7!aQNKGnB_V?2=Y7Gkq8NVy2Qc=7=O1oXIBj8ccE@e0nf6NA39o|*OSi+tZ;IVR*D#9Ph=_5ydMUd|DJ(_gxjkZ`lV5q9=(bfEvmI}@ zl@McSYilbhB}K!_8+du{Maj;7cy8wJdo?RaC`S~;L_$G~zo*vPkKcD87M^YO(5IT%QHtF(9l^W9@>Y7+^x-3@;TOlsZH`d7#8KaZ~e`r?0NMEJKe?4L&Ae;#I6 zeA>Eiv}s2uvq$teRxO6RaVr7+GVW+LJ9(}h}z;v4+ij^&wO+F!WF zi+srBW!v_f+kMjLe<;(bdx?vNch^;PAJrZ|qj>PGX@amImlN?Z{wh|UU|M(`7`lI_#3bgL zEEkY8+m~FY@t&i_I352o;2AI8SHoVdJTuv9lt~i!7=$+yRjWXmc+`8rO@Es<@=2)H zb0%WvEb@%2<4U=NX$8I)YWO`49JZx(l1A-4irkAoSuXq!vN$x6o)a#Sn^@-%p-y}T&J#KgQb$gYAmA2qVxk8LSf>?_J3Kt)401?BLsFYfewYq*C@%pS$j_O(9_ z8FHU#(REn>1@Dmq$jwER2e}EKpLv&B)S9gJ_gsDPxQ>_*`(VPrW^IhGSQX5T(UkCX z@pxN<1gnV>{Z6EMYuP@xyB*)hgj!>~XjQ+UB4?N9w02g;rX4EL;Mtr1s~Evpt0fF( zHX8>A(B#W)OjTh+7rE4RzG7|RjEAQLO;EPFq8KoSD}8BCL8E;weRL^rMMRlc**my~ zmGvz6BfH8~Ut0BmUG+e*GTrP8dw~efOlC6!`dsB9Mrw9lVkzCS!?-F&54{5N%OGoyt7g83Xv~!#`-r9Q0K(pGnZcmI+#Ds4O zf9dE3?(;Ho{B@U^MNqXreEvLiaB!k|8Rr34CvB2@ z=juS<&Y>kNXWzEACyDZxYq{GeM-$r`wO1B@8szmXEINSY44t5%rZ#xDwHUH3Klfczn|1{Jga(d{x05H>5}!7V zc4n`X^RiNtlf9#L)+As!4+`PyT25m8yIDRnKbXym1eSxHX*X-Ty@eY~-3e`TO-V&g z+da*f@w`rnP^jle3zIaePefIJXf*&lu}JXbYM1=nq(@c;f5GB#vc0$HZz{El++)R= zCS(axyrR7WEy;dc=9D{lc2BX!wdRNRctssyAzSn=y{b$_k45Is$oTBpq4*}{==hp& z+Nlyj#S#({HZQv#ZvhEHj#PcV#pbv%+VvhK5LPQGm^J=(aZ1cCEnx_~Y+XM&hp0Zm znF^10@9vm8P!Fz2VUgf>f~Q(KALiP$7@ktDK^7Jkjb8_>JPxjj^DV~!i|tcUSZf>> zmy|qHt1>h+-0R{@dGR8?u}ue?lj=PgcY;6rLnhDkB+>X)3$V>{JV(OW*2!S zIoSIUBFPUQKEklNl(-lk9{tY7Mm)W!(u+tdyRjjSCMZY}34jo=-MPa`*4JujYPz3) zbY*v2B}Z92*Q26RotIZLLp}+Hb}e3JCxYsGQt51I6Am*yHaCsF|1 zsH3xbprWQDiwZ|EV{KQk*1FWXJoE3zXZ7F+%~e^NvdlgiDso+L{T36mcdnK9z0& zWh^tZVt<*X1(J@3!=3Hg+AyF{^_YlXN=whTN9HbC(f-!?ESH&2fhb!;?Y#gzJ5(| zdU^^jtah&N9K={MF)S#dG^7b~5{8EOaC(`Rian-I4+{(XARZwLZ^3l5XO4F-_SnEW zf5F9?lyF0mHY*!Le&X%Vl7_(rVNH_Yk;0OO0gkxj40`zFJp7xD{0=o)lV$n`JSBl^ zLsO6x(spuE@}@b28w~a>-3f6_oQ$XW(%7WKCJU{1V%c`*FHX@o-kuP$7SDB`SQKCz zLD6sioFtyW6KXai5C)>8uT=?zj8}g2D&~JTHiUCkZ){Be{v1kL%Z}sk>*ERzWEpr5 zpMZeb{p2As@;G2uOppg5qNT;x-K`R`$S;Ms3-}nfEQZ}d7x5+PISM%S4f;|SP1(k> zlsVo`kw{5N(LaA(($bOp1dm3Bijwj!&_PiQ+I0xNK27{N%tSb{aU9`lanAI7g^U}} z$~AY4#g9yku^70aM)yB|(kUmJ%|z@LNxjTO@NI%iVMHKFgK>0sj4?(_hR$$R_rRZw zjOQkc;|8fMCBz41vnlQE zH{1VAvGB!sL1W5I5g{SvxT|7P8u}!3DnDym>wRP1qh`z2I=$ZFl7d*NJ?&WN-1ynH zZ)WOP3+1yINm}3L2q0i`aw23Ph%Cu_BR=sgTw8^d6TDe^SN7EmMc4Dt1=I*(Foqj@T&soTq|$G=9zj zq7Y1z$gx+o{O=95|7>&-FaC3O&A(5x`L8YYKi~Opd+XUZp7+%~dDYQ&tqsn;W2n;M zhs8?$jbZ&Z^dt07SLnr0roH0gLW=>^seDb-kHJi8bPB&J!(C382Kk|!zt_SvtM+=?;Pxq;xMFD9)Ktkiza zJb}xozR1?rO2%DMEx&x89z_-_jw#b^4adgekrRl0qCvr9rRKb6{l-Y?y~Rj@&2ygE z^^qU1GUdo%{AB7XteYMSPd`h~QfP~TETnvX*(`;6NW#$S4)l+R{UQP-31RU|4aJbP zA|IA3Jz>A#nHaJ9ySAv_+4amOf6Z?^n+5&_H9vpCL5Y2Lf}n&-&ZB{t&+;-d&&*5R zD$8}Nj@(?2u%ZI0I}TQhzj5tant{!7Pmyl+&n+@mV|65M(55CU)3>#EHr8j~Gmcpu z)fJRm>Pcx#5^TuUzJ0n^wXYQ-)g);t4`qNp5(Co$vo+9W+-4zczxB{`x|$!pP4?$1 z>c@{?Rocq(*rQcv#)D~uv^-m@lBTA{(s?;y3`)uIR6(Fb+WD6C`Y;)8Ua?MrM8U}Q z)9WzsF}*T&qu_PilaDMISZ&u5aNhZFZ@I0dB?-)3U!spkr=myfR^J9d>uvbK!h*Lq<> zH!A6>O5z%tC`}XHuJTdWbIh_@?Z6jTfCeV&B=@47n)M$L=+&Kog5V>f8LtB}O*Zd! z#If%~BWT@c{;|S&_nuNl=j?c?DP+AkJo#P7Xgc*vC1@F1eG2tuz`fp`JMw%a^w=pl z7d_i)(CAFyMezpL7?bCPa(5#CTP-UyGmWhxOiaw|*QGeMSFXr#3Z(zwH14FMkwFvA zeGca6FA&cV9v9c)bIb0!zl_Uyhbe-#XLc~#_X|`1fP010n0Tnn>5eGBzkdcOk8Cf` z*zv#F@N*=w_T9oCRn2%Kr1@4$t1$mnj9;7$h$F+)pxp;2d*he*Z!$j^q6r98^#Z4; zMjG1NF)S>=cAXDMZ9`}0;EA=x`WLl1QBlsFaSKrpreOn5Sz8|dl}24t)4)PA9Fh-; z-A_dT&5$==+dSWz=FOi-d5j8)|Cuh}mS)YAA=j z#GF6~#IyHV3?GA6AIZ?j%(OR|o5G{yCICKzd1KxwqPn#F{0$YBFxN)V$Yu)rE;+lN zF@fU8ZB6C%DNFlzr^x(zJFAMYW z5wRaf{$e$i@g<+ScDmm{x0t-9D=sXTwW+P|fhI2jdfOQOYA_w$v*e#Y!zNgsUpxoBGY7Ql4fXX`HS51GY_IR_yKHS8-Z1S; zy$^U9*pD83)+ty{`y4g9@ZI=eCA|7{2@M!2;hCBOK%-&+T0ox7EvT8Fu&y<^JS#xQ z6?~tc{~QFKoLf(yJh=~>#q+`jla%wvBJ8`RE=@hHt6|NEN{6T6Q&pUHvvqRu@lu|D za`N^tF)*B0(>(!R>w@U1pN^YE3yX`5H}MAWd6HFDdLnAUBrlil$zRo zb%p8#3}pvo4t=ep_^s0e;?|Rs`Nis^@vwU>{e=c@kErDLPnV^g&o_^`pgTnZ+tf=} zS5y%6`u_ZBfS8-+Da)My2+SmHRnj@3Je>k}0(aCf_#sGyA8yme>@O4;-%w_5Hl zUMMGjqjhm09LQNNk*@)y%L*6a11zq_)-~M7oSbS%A|g61Gqrf9r(S+)|9Psr@ly78 z7tEbO!8{gNC*f3qyEE6GhYE|^Q|GMok=PM51h*^F(opK_8H+*FZhOokJ)!pI4W;Yv z_Xh_u!NK-$7rYks1h1U$Q+QQ(o@}Q}6ZMvFKScsE9}m^{{hJ2VR0TS?V;OeKNMPC* z0uZIGr-xQhFsZZinU+?(bo_P8U&(03tHl)bBk4$i*zVT1+$)LM3Jtkj{#;a^wqnuyLq7eyVo{j<>OB~LAp&);)5!w6}j|x6}#p zYU<`?_@SWwZ&e}OfPLnr&6bvyPou`EJQYqy3R+$jXPg^YY!@9ZZs{Zx)V!|ux;`hs zqpgt@64Gq`U?J}N8%R^nNiu7rhFni>1UD7 z7osr^>l{p;?r4;hX(2s}3k$$*2!cxiG8Q;$d$eP}lK3nZn)cD2oR;eC&Mj8&h?L(m zy1veQovZ3V`PdL21$ENR+E6trqw^AB%se>20>i)b?=>yeQ<#fs*bZ1weN#H8cN*v| zbdj`w*{1?TW@v1@J7#iC&E?D#&5-c4)Uw@m!1Z{_3^df?YC0}paioV#y<}Bh$T3Sf z?-t|b;$pH}Qa0|6mxBDHhQQjO(o%LR2^=`C4#Jlyu4{i7MKUIya?9RIOeDl2j}NWa z6Lxi_e{D%Qtg8B$hIU>rg{7$z3F%HL;&%k3iABWA7>*Kjlk+sC+x=ZB#><*RgQ~5V z{kGT8qE)8nd#^(4`mF*3{~?0{BN35DfjDI8)-%cX)Le$vq;B3U@yNmyNr$J8Pe>T$ zJXv{d3&#fddOym>4Zo_bA%f0;&1!jNrFC_{q^+})<>;~Qe>bJ#ssIC+gBbKktwX4I zcmm+o0iYMDo|(4?;QI?#R~lC1PD%i;Dk|bOCMz>1H(w3c0J<_(w0Ij~*DWdn3?)<~ z1z;0BW8(lRqXwYZdsppo9T?X!8SOJABgBCR8X<0lt@cF8IJwU-ZD17!VwUNa(+)-n zF3$`6u`zBg?(D*!Opu0ive;K)Lxo_f;Jk#N``0oK=Iz^VR?{*}sOhlFcXv4}!JV|r z7o}1Y*4x;0D*&r7LoNYTxj+Y7LPElPD97K|7scgNY%uRf^KaW*=G+r~B{i5evTF+8 zl^|{6V_@Lz$OlgqyGlt8Nrnu*PSHL4>AX=29t2DQfzWK7-{brpI_`zHd7Z9a3JVKY zw&UQCiwxyBNb$kZDFzfV_^_9Xdk788&D$j?x)x{a8=6UH&X2c6hjO}4PEJ_g{9!}V zakB*VTOjmVY@mFSIX`;;cA{)PWxdFJ$QJqm$VZFt_7;L(MIrlbNJj_#3`9@Cbo>|Q zYIpZ>CcV0M5T)^Ii-XZZ7vKlz4HAE7yFp3^74&)hxoTd)A}K;C3P8p@SnAPz5kYhH zLQLB;>#{5Em;pk-=2rUf{&z#N_s$L)bhk3UU2A|;`cUg7jf%a7TetJq7Y)r+qSmv) zbfOH?#%7n=bxT;7Us6gcLnRj}I5^mJFbkpBdBpUSh>Z70D03iEqvpiP<>p&hx%`%}Vq43eN151HBL0 zf}fhy^w&$3Q7hKaS5{;kI!NR<%BWy!o)E;)BmI+fF@1b}(Xcj<>tJ=FVNbQf zsF1B*_~;*0n`A?P4pi%}tnk|`&P441h4=H5xha(X>b@@%(@y29z&XIa3gIX;r~@fG z5C?MqoDj)3dVNdi19Nd~mId(1^Z&z3JIAZxb+G4A5(MA@ZcG9~kIErS|u~1(-V)@tsacE~<2V9vk&M zPVk*35Xit1^I5C&I$pe7ANGVst{SgxFzYV^?aK>Zw^(?(UfWNaBdbC_d}zIA#E%ZE zii*w@2|DDKfq_68*$efu4LeA+?D)udlp-E_R$@7En8;lU348;k7VxgvSWdTf<{yLQ+`Vds2s1K>AA~>gsA=stH*_mzbblEK;KK@bLqmMA@$4(R896;EqhI@!GhCNcqpJNs?4Po=c4 zBh^snHa6ZD7vE;AourWO8ULJ5d!1}hI{^u35c&kUT271pM6Uab(H7D-H_B(Oh;(O~ z!De=McQ@K>>K6elS)kO~+9Nw4T#DB9(Di*dl_=;Bu_-95!Tl0i<>oLq&sglT?}V$e zJXS3Dn4jM_$!l6zeUy3H!-)jwB1uB@E{Ty+3lo^*W|CHJZ9!N?x7RQ7>>L(}TAu%o@)-?_)LXrI{GNf05Q^+JkbAg25?ae}5k_ z60x#kMz*8E0|7;cBw@^eyZ!t3J$LW1gu~_+w6)#^!V+QRg8}Pe(JmGmZ-%~Hdwcu3 z#zwzCB9_?`Y;V<*K-q!v5c*8JXbJ;EsWB7jooMF(s<<-dXUd~4_N}{6&AtsbW52&m}ZAjN{-xygc z9T}LFd{xaY9w72y@KWuqI(`U}6=E)?ZxB@j;a&8rut!bLjy(KN_lb)2>c2?fbiu3n z<&imEJ0-Wb8`zUmA9Xh%TehjMFT6)U)4j*l#)cEPY#^HN!aQ;OJlEEU_7N4MA}E#5 z8Issm$sjLiw9Jwp1lMmTDgxUU096fg`wiUw+>wvfmq*Vav?b)cw(9l+GO~u=l(f-811g7gLR};4>FP`V z{T%8Ud)bcoH2Zh&^p-la5l&uc1p{!s@GLCW-Nf&R1T5nMk$xY}u|Hh)9>mZR%z~g_ zCiY<1Alp|??FCGCK`m4KZF_)5-T{Ro6)kNbNS^dYe*DHF86@(i6g?~UIG00os34sH zsN?>!!qj9=e?}+;$PN!j1B%7fGpMyVz~I|>ip zhdB#wqtgV;Gq8c9K!gSIyh^}U@o42T5q^sToy}t*r-f+UPsu}sDMN(e-@eI!l^t+7 zLzCs7Ue}D@Gcux_Q9gXGMR<`zh#C;A9#lt&BESS~0}eS~XTGLaNe^S~gTE)cO7KMh zJvION^8gR;bdL$W%NDn<3L)1N5uqU|2#BTz&^0V9D1?~#KwcN=mqFW?o~+lUazQN# zxs{8HP#vJnfCgAv^NE&{oRWay1aFCi%jM-bAk}0?;G3Y>aIaM}H<^j~~jdh0?W)1ZvGk@ZWt2p8jm@i8uidRJ$wp zRn8>%r3hgN_HSuPQcsWZz?EOuqx8?{Q&4|!Ljd3(fFuD%rrSrs`43YDx$}loae4Xt z&R+wp2PgEQr02|fb-BvfbB*Jry2K+fEQ^BBZS^J#v%-klTV%v4{^>!pML}pYTu-y? z!W&BR{26F1^iFn!Z=xO{8jTfu9uju*x_E9@$jv-98!y40@hAs{z2GNA^d>kmlmPw& zo)6CNFT%cO(nWktS6{5TU3Z%Vv?}g24d<^*dE6Cy@uI)jM3;mutEJ3xrURi?bK~#g zt+{d~z$O`_dYF9f5x53B=HbI+UQf^GCui#_wyK~sc9h@$1WBO#m&b8vI5_%qjfF^{ z_lN`OT7PCw2ME;_x<3Gawtwvw31cOP&X9vce*1Sx>$Z_vbPz97;3sFqOH{QL qjro5MDEg0Lwf`}7*EqA~RWg1#bWh*;BmCY&BuO#37e7SweEt_m6o^~^ literal 0 HcmV?d00001 diff --git a/docs/pages/howto/first-contrib.markdown b/docs/pages/howto/first-contrib.markdown index 74f138cdb2..aa2b70062a 100644 --- a/docs/pages/howto/first-contrib.markdown +++ b/docs/pages/howto/first-contrib.markdown @@ -27,7 +27,8 @@ An actual java/temurin compatible testsuite that you want to contribute. The one thing that is not immediately obvious but is ***mandatory*** after every execution is the ***usage of $(TEST_STATUS)*** statement after test execution in the ***playlist.xml*** . This is where the decision on how the test is colored is made. -5. Once you think you have both the build.xml and playlist.xml you can ***test your integration*** with [Grinder JOB](https://ci.adoptium.net/view/Test_grinder/job/Grinder/). +4. Once you think you have both the build.xml and playlist.xml you can ***test your integration*** with [Grinder JOB](https://ci.adoptium.net/view/Test_grinder/job/Grinder/). + ![BuildWithParameters](../../diagrams/BuildWithParameters.png) Click the ***"Build with Parameters" button*** in the left panel (if there is no such option, make sure you are logged in, and have appropriate permissions set for your account). Here you can configure your run. Main two parameters that are of interest to us are ADOPTOPENJDK_REPO, where you can put URL of your forked aqa-tests repository and ADOPTOPENJDK_BRANCH that specified the branch your integration is on. The documentation in the grinder configurator is pretty descriptive, so lets just mention a few other key paremeters you might find useful and their usage. @@ -39,4 +40,8 @@ The documentation in the grinder configurator is pretty descriptive, so lets jus | KEEP_WORKSPACE | after testrun the workspace is saved for a while for the developer to check it | | ARCHIVE_TEST_RESULTS | after testrun the test results are by default discarded for passing tests, check for keeping them | -It is advised to check KEEP_WORKSPACE and ARCHIVE_TEST_RESULTS checkboxes for debuggin purposes. Adoptium infrastructure by default does not keep workspaces at all and results in case the tests were successful. In some cases runs can report as successful when it is not even executed, therefore nothing had a chance of failing there. It is a good practice to not only check that the test finishes "green" but also that the tests that were supposed to run actually did. +It is advised to check KEEP_WORKSPACE and ARCHIVE_TEST_RESULTS checkboxes for debuggin purposes. Adoptium infrastructure by default does not keep workspaces at all and results in case the tests were successful. In some cases runs can report as successful when it is not even executed, therefore nothing had a chance of failing there. It is a good practice to not only check that the test finishes "green" but also that the tests that were supposed to run actually did. + +5. Final step is creating a ***pull request*** for your hard work into main branch.. don't forget to ***link the original issue*** and a ***passing grinder run*** as well. + + ***Happy Hacking! :-)*** From 2b8372448e8beb95f23f8b366504e9517aa6fc29 Mon Sep 17 00:00:00 2001 From: andrlos <80903703+andrlos@users.noreply.github.com> Date: Wed, 31 Jul 2024 20:45:27 +0200 Subject: [PATCH 3/7] Update first-contrib.markdown alignment of step 4 still not perfect --- docs/pages/howto/first-contrib.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/pages/howto/first-contrib.markdown b/docs/pages/howto/first-contrib.markdown index aa2b70062a..7fe40e72bc 100644 --- a/docs/pages/howto/first-contrib.markdown +++ b/docs/pages/howto/first-contrib.markdown @@ -29,6 +29,7 @@ An actual java/temurin compatible testsuite that you want to contribute. 4. Once you think you have both the build.xml and playlist.xml you can ***test your integration*** with [Grinder JOB](https://ci.adoptium.net/view/Test_grinder/job/Grinder/). ![BuildWithParameters](../../diagrams/BuildWithParameters.png) + Click the ***"Build with Parameters" button*** in the left panel (if there is no such option, make sure you are logged in, and have appropriate permissions set for your account). Here you can configure your run. Main two parameters that are of interest to us are ADOPTOPENJDK_REPO, where you can put URL of your forked aqa-tests repository and ADOPTOPENJDK_BRANCH that specified the branch your integration is on. The documentation in the grinder configurator is pretty descriptive, so lets just mention a few other key paremeters you might find useful and their usage. From a3de71411e5d2366c3be3205f0095ddc35180de9 Mon Sep 17 00:00:00 2001 From: andrlos <80903703+andrlos@users.noreply.github.com> Date: Fri, 2 Aug 2024 08:36:54 +0200 Subject: [PATCH 4/7] Apply suggestions from code review Co-authored-by: Shelley Lambert --- docs/pages/aqa-howto.markdown | 2 +- docs/pages/howto/first-contrib.markdown | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/pages/aqa-howto.markdown b/docs/pages/aqa-howto.markdown index 0565a48a5a..7241a13445 100644 --- a/docs/pages/aqa-howto.markdown +++ b/docs/pages/aqa-howto.markdown @@ -1,4 +1,4 @@ ## How-to Guides - [Guidance for Creating OpenJDK Test Defects](Guidance-for-Creating-OpenJDK-Test-Defects.md) -- [First test suite contribution quick guide](howto/first-contrib.markdown) +- [First Test Suite Contribution Quick Guide](howto/first-contrib.markdown) diff --git a/docs/pages/howto/first-contrib.markdown b/docs/pages/howto/first-contrib.markdown index 7fe40e72bc..4212d9a51a 100644 --- a/docs/pages/howto/first-contrib.markdown +++ b/docs/pages/howto/first-contrib.markdown @@ -7,32 +7,32 @@ layout: default # How-To Contribute your first test suite to the aqa-tests repository -This is a quick guide of adding a testsuite to adoptium aqa-vit. The author of this quick guide has so far only made a contribution into functional tests and some of the other test groups might feature different prerequisites. +This is a quick guide of adding a testsuite to Adoptium AQAvit. This is guidance for contributions into the functional test group. Some of the other test groups might feature different prerequisites. ## Requirements: -An actual java/temurin compatible testsuite that you want to contribute. +An actual OpenJDK compatible testsuite that you want to contribute. ## Actual steps: -1. First you need to decide what kind of testsuite you are adding. Create an [issue](https://github.com/adoptium/aqa-tests/issues) about contribution to aqa-tests.. here you can discuss with responsible engineers on where to situate your testsuite. Make sure to explain briefly what is the purpose of your testsuite and what specific part of java implementation it tests. Also describe special requirements that your test needs to work (containers, sudo access, graphical display etc..). +1. First you need to decide what kind of testsuite you are adding. Create an [issue](https://github.com/adoptium/aqa-tests/issues) about contribution to aqa-tests. Here you can discuss with AQAvit committers about where to situate your test suite. Make sure to explain briefly what is the purpose of your test suite and what specific part of an OpenJDK implementation it tests. Also describe special requirements that your test needs to work (containers, sudo access, graphical display, etc..). 2. ***Fork the aqa-tests*** repository to your own personal fork. We will be executing the testsuite from this fork later. -3. Once you determine in what testgroup your testsuite is gonna end up in, there are now at least two files you need to prepare. +3. Once you determine in what test group your testsuite is going to be added to, there are at least two files you need to prepare. - 1. First one is the ***build.xml*** file that sets up the environment for your test. It also clones the repository of your testsuite to the testing folder. A good approach is to look for build.xml files within other testsuite folders and get inspired there. A good simple example of such build.xml is within functional/testHeadlessComponents. + 1. First one is the ***build.xml*** file that sets up the environment for your test, clones the repository of your test material if from a separate repository, and builds the test material. A good approach is to look for build.xml files within other testsuite folders and get inspired there, a simple example is [functional/testHeadlessComponents/build.xml](https://github.com/adoptium/aqa-tests/blob/master/functional/testHeadlessComponents/build.xml). - 2. The second file we need to discuss is the ***playlist.xml***. This one manages the execution of the testsuite itself as well as what platforms it will be scheduled for. Like with the build.xml files it is advisable to consult other playlists in already existing testsuites. + 2. The second file is the ***playlist.xml***. This one defines the execution of the testsuite itself as well as what platforms it will be scheduled for. Like with the build.xml files it is advisable to consult other playlists in already existing testsuites. Another useful resource is the [playlist.xsd](https://github.com/adoptium/TKG/blob/master/resources/playlist.xsd) file which can help guide what elements are required in a playlist.xm file. - The one thing that is not immediately obvious but is ***mandatory*** after every execution is the ***usage of $(TEST_STATUS)*** statement after test execution in the ***playlist.xml*** . This is where the decision on how the test is colored is made. + There is a `` element inside each `` target definition in the playlist.xml file to indicate what commands are to be run to execute the testsuite. One thing that is not immediately obvious but is ***mandatory*** is that the command needs to be followed by a ***$(TEST_STATUS)*** statement for the correct reporting of the test result and associated test status and result color to be made. 4. Once you think you have both the build.xml and playlist.xml you can ***test your integration*** with [Grinder JOB](https://ci.adoptium.net/view/Test_grinder/job/Grinder/). ![BuildWithParameters](../../diagrams/BuildWithParameters.png) Click the ***"Build with Parameters" button*** in the left panel (if there is no such option, make sure you are logged in, and have appropriate permissions set for your account). Here you can configure your run. Main two parameters that are of interest to us are ADOPTOPENJDK_REPO, where you can put URL of your forked aqa-tests repository and ADOPTOPENJDK_BRANCH that specified the branch your integration is on. -The documentation in the grinder configurator is pretty descriptive, so lets just mention a few other key paremeters you might find useful and their usage. +The documentation in the Grinder configurator is pretty descriptive, so let's just mention a few other key paremeters you might find useful and their usage. | Parameter | Purpose | | --- | --- | From 3e600613427a5aa68b9ea49caee0f4c8d03eae2b Mon Sep 17 00:00:00 2001 From: andrlos <80903703+andrlos@users.noreply.github.com> Date: Fri, 2 Aug 2024 08:41:41 +0200 Subject: [PATCH 5/7] Update first-contrib.markdown additional review-based changes that were not commited in a batch commit --- docs/pages/howto/first-contrib.markdown | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/pages/howto/first-contrib.markdown b/docs/pages/howto/first-contrib.markdown index 4212d9a51a..0844e983e6 100644 --- a/docs/pages/howto/first-contrib.markdown +++ b/docs/pages/howto/first-contrib.markdown @@ -27,8 +27,7 @@ An actual OpenJDK compatible testsuite that you want to contribute. There is a `` element inside each `` target definition in the playlist.xml file to indicate what commands are to be run to execute the testsuite. One thing that is not immediately obvious but is ***mandatory*** is that the command needs to be followed by a ***$(TEST_STATUS)*** statement for the correct reporting of the test result and associated test status and result color to be made. -4. Once you think you have both the build.xml and playlist.xml you can ***test your integration*** with [Grinder JOB](https://ci.adoptium.net/view/Test_grinder/job/Grinder/). - ![BuildWithParameters](../../diagrams/BuildWithParameters.png) +4. Once you think you have both the build.xml and playlist.xml you can ***test your integration*** locally or with [Grinder Job](https://ci.adoptium.net/view/Test_grinder/job/Grinder/) on Jenkins if you have been given access. Click the ***"Build with Parameters" button*** in the left panel (if there is no such option, make sure you are logged in, and have appropriate permissions set for your account). Here you can configure your run. Main two parameters that are of interest to us are ADOPTOPENJDK_REPO, where you can put URL of your forked aqa-tests repository and ADOPTOPENJDK_BRANCH that specified the branch your integration is on. @@ -43,6 +42,8 @@ The documentation in the Grinder configurator is pretty descriptive, so let's ju It is advised to check KEEP_WORKSPACE and ARCHIVE_TEST_RESULTS checkboxes for debuggin purposes. Adoptium infrastructure by default does not keep workspaces at all and results in case the tests were successful. In some cases runs can report as successful when it is not even executed, therefore nothing had a chance of failing there. It is a good practice to not only check that the test finishes "green" but also that the tests that were supposed to run actually did. +For a more detailed description of all of the parameters in the Grinder, please refer to the ["How to Run a Grinder Build on Jenkins" wiki](https://github.com/adoptium/aqa-tests/wiki/How-to-Run-a-Grinder-Build-on-Jenkins). + 5. Final step is creating a ***pull request*** for your hard work into main branch.. don't forget to ***link the original issue*** and a ***passing grinder run*** as well. ***Happy Hacking! :-)*** From 791d0090507a3b5a68bb525c8a706ca13ef3afdc Mon Sep 17 00:00:00 2001 From: andrlos <80903703+andrlos@users.noreply.github.com> Date: Fri, 2 Aug 2024 11:27:05 +0200 Subject: [PATCH 6/7] Update first-contrib.markdown step 4 indentation fixed --- docs/pages/howto/first-contrib.markdown | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/docs/pages/howto/first-contrib.markdown b/docs/pages/howto/first-contrib.markdown index 0844e983e6..073e727a25 100644 --- a/docs/pages/howto/first-contrib.markdown +++ b/docs/pages/howto/first-contrib.markdown @@ -27,22 +27,21 @@ An actual OpenJDK compatible testsuite that you want to contribute. There is a `` element inside each `` target definition in the playlist.xml file to indicate what commands are to be run to execute the testsuite. One thing that is not immediately obvious but is ***mandatory*** is that the command needs to be followed by a ***$(TEST_STATUS)*** statement for the correct reporting of the test result and associated test status and result color to be made. -4. Once you think you have both the build.xml and playlist.xml you can ***test your integration*** locally or with [Grinder Job](https://ci.adoptium.net/view/Test_grinder/job/Grinder/) on Jenkins if you have been given access. - +4. Once you think you have both the build.xml and playlist.xml you can ***test your integration*** locally or with [Grinder Job](https://ci.adoptium.net/view/Test_grinder/job/Grinder/) on Jenkins if you have been given access. Click the ***"Build with Parameters" button*** in the left panel (if there is no such option, make sure you are logged in, and have appropriate permissions set for your account). Here you can configure your run. Main two parameters that are of interest to us are ADOPTOPENJDK_REPO, where you can put URL of your forked aqa-tests repository and ADOPTOPENJDK_BRANCH that specified the branch your integration is on. The documentation in the Grinder configurator is pretty descriptive, so let's just mention a few other key paremeters you might find useful and their usage. -| Parameter | Purpose | -| --- | --- | -| BUILD_LIST | is the relative path to the folder containing your build.xml and playlist.xml files | -| TARGET | refers to the name you specified in "testCaseName" section in your playlist.xml file | -| KEEP_WORKSPACE | after testrun the workspace is saved for a while for the developer to check it | -| ARCHIVE_TEST_RESULTS | after testrun the test results are by default discarded for passing tests, check for keeping them | + | Parameter | Purpose | + | --- | --- | + | BUILD_LIST | is the relative path to the folder containing your build.xml and playlist.xml files | + | TARGET | refers to the name you specified in "testCaseName" section in your playlist.xml file | + | KEEP_WORKSPACE | after testrun the workspace is saved for a while for the developer to check it | + | ARCHIVE_TEST_RESULTS | after testrun the test results are by default discarded for passing tests, check for keeping them | -It is advised to check KEEP_WORKSPACE and ARCHIVE_TEST_RESULTS checkboxes for debuggin purposes. Adoptium infrastructure by default does not keep workspaces at all and results in case the tests were successful. In some cases runs can report as successful when it is not even executed, therefore nothing had a chance of failing there. It is a good practice to not only check that the test finishes "green" but also that the tests that were supposed to run actually did. + It is advised to check KEEP_WORKSPACE and ARCHIVE_TEST_RESULTS checkboxes for debuggin purposes. Adoptium infrastructure by default does not keep workspaces at all and results in case the tests were successful. In some cases runs can report as successful when it is not even executed, therefore nothing had a chance of failing there. It is a good practice to not only check that the test finishes "green" but also that the tests that were supposed to run actually did. -For a more detailed description of all of the parameters in the Grinder, please refer to the ["How to Run a Grinder Build on Jenkins" wiki](https://github.com/adoptium/aqa-tests/wiki/How-to-Run-a-Grinder-Build-on-Jenkins). + For a more detailed description of all of the parameters in the Grinder, please refer to the ["How to Run a Grinder Build on Jenkins" wiki](https://github.com/adoptium/aqa-tests/wiki/How-to-Run-a-Grinder-Build-on-Jenkins). 5. Final step is creating a ***pull request*** for your hard work into main branch.. don't forget to ***link the original issue*** and a ***passing grinder run*** as well. From 4a3cff1c4fa154dbb5792b5d878030323472aa4b Mon Sep 17 00:00:00 2001 From: andrlos <80903703+andrlos@users.noreply.github.com> Date: Mon, 5 Aug 2024 09:04:37 +0200 Subject: [PATCH 7/7] Update docs/pages/howto/first-contrib.markdown Co-authored-by: Shelley Lambert --- docs/pages/howto/first-contrib.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pages/howto/first-contrib.markdown b/docs/pages/howto/first-contrib.markdown index 073e727a25..a060297e99 100644 --- a/docs/pages/howto/first-contrib.markdown +++ b/docs/pages/howto/first-contrib.markdown @@ -43,6 +43,6 @@ The documentation in the Grinder configurator is pretty descriptive, so let's ju For a more detailed description of all of the parameters in the Grinder, please refer to the ["How to Run a Grinder Build on Jenkins" wiki](https://github.com/adoptium/aqa-tests/wiki/How-to-Run-a-Grinder-Build-on-Jenkins). -5. Final step is creating a ***pull request*** for your hard work into main branch.. don't forget to ***link the original issue*** and a ***passing grinder run*** as well. +5. Final step is creating a ***pull request*** for your hard work into main branch. Don't forget to ***link the original issue*** and a ***passing grinder run*** as well. ***Happy Hacking! :-)***