From 9b4a7085c2e68e4163bcbe4ff42a92d6a20da178 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Thu, 14 Aug 2025 10:57:28 +0930 Subject: [PATCH] pytest: save pre-movement dbs, and accounting dbs. We can use these to test migrations. Signed-off-by: Rusty Russell --- tests/data/l1-before-moves-in-db.sqlite3.xz | Bin 0 -> 8416 bytes tests/data/l1-bkpr-accounts.sqlite3.xz | Bin 0 -> 1340 bytes tests/data/l2-before-moves-in-db.sqlite3.xz | Bin 0 -> 7568 bytes tests/data/l2-bkpr-accounts.sqlite3.xz | Bin 0 -> 1120 bytes tests/test_bookkeeper.py | 73 ++++++++++++++++++++ 5 files changed, 73 insertions(+) create mode 100644 tests/data/l1-before-moves-in-db.sqlite3.xz create mode 100644 tests/data/l1-bkpr-accounts.sqlite3.xz create mode 100644 tests/data/l2-before-moves-in-db.sqlite3.xz create mode 100644 tests/data/l2-bkpr-accounts.sqlite3.xz diff --git a/tests/data/l1-before-moves-in-db.sqlite3.xz b/tests/data/l1-before-moves-in-db.sqlite3.xz new file mode 100644 index 0000000000000000000000000000000000000000..06e5ec87b35186ff2279e2e04abf865dc45a284e GIT binary patch literal 8416 zcmV<6ARpiTH+ooF000E$*0e?f03iV!0000G&sfalZ~q{mT>vSRMV(;C8Tck-h>j-y zF_rzthkyo`yX=3c34!}%2O^u+{WLmP5@;8~kcJ?(5njVkE^Ljnn1XSEfo-a4q70o% zTP0xc1kzi0=l|`v(v|kOPE*R_J#&t-P|QY#k#Q5tqXT0ivI#+3)S-!yfLh#|xKDIA zo!S;sh)|tXH^Jc#|H2D8e4!AS`Nt1a->AU-i#rg?Gxv1oU4Gsup+#B+o1}K0j1J~+ zXcmxk)}>Tjj&b+8ABx8sBBUYS8trJOah{asEL13dR^;GjfBn$@zYmXu98W<*vQ z(n}kmnNnN_^#|$@@b9*>+}oCIK~T9xUc_HRiTY&(DyrHe@{rOhL*_gv;S6w=2tu`r zQI&Mm^QiVkfExk1u*x=>A(V&~rYz)1PhP5LJ~%m$-f^fx%0}tKZUvi~fQMUT-*foT zumOrg8d4`?;MOiku|NQ5++36bY$Zq)l%O=mE7i8Dqn;`qSYGWL35rDD2LU2?n=C1y z`Vq$`2W@0#f0VQ@R+ya;8QLlhQFN3ebwe5m63#dc$J!Iw$2**aOZ+b6J;#vZ94R8P z>?$FjzsNyDYKM`_%bn!O{h;Ov;8!dur4~n=?Yq`^Uj*SRl&NI^pixbkT)*WIJ7*c6 zP_FBILDsYsthXj}Gx9co!$LVJTz4!Bm5qd5?Tbz?X&JL3U|{5|Z%JRsn!(Yu4A^J2 zGnq(3(xUaUxmHdai`S_0F;$cIQa<&-Ra+In1y#eTd6M z%c7aikp7fCOD&#V0qlAj6doiEhM{dczIDO;AiSkBAj zhd`;tWF=Xe;_c(2{tqd=nQFQoPfF(VZDHK9G*)-5TVV4UOtj%iDZt*&))~18teFW{ zH2ShOUNGnSL@DYpNs8OQV+EDZ=pEY0Ik&2(FZnAdkc07NAgx^`#>gW4J1@`=o0d+K zI%n%3H0Bfm$ov^p(qcwiu*u?j;va;G?)7&w9|NzaNdupO?mZJB0=*9b+pxifnaxyU z03NB$-{uY#v#g>W7VHgxL~^1JasUcgY2r-ru2uCgx&c-1c!14+8gZE%Ln~T8_*W4p z*8Y3NOZ8r-St}MO0`s*yqXEGAmu@Vo@8;dpMi#Tmv!0r_N;=st~k5!1?&UEWpO- zvArL%Z4ytHtrJZbKYQ)tk*>eOBYa}!p9_PYz0Cn3X&#>uNtL=!f6^P@437yulPt>h z!8zq4FlGcA0K5!U{08%=oJlA(iHIbMs{7D{(yuZ8FIqvwuUscqEeFT|jLfjIxgl&9 znxQ=LSzq_&6=2So_pYc1^xib;K;!+mv-upBW^M-TOuGM?M(aJ_t49kKB}|ByE-lDH z38ncG#Xi^7`$MB?0{c02x+nc9!qSai&poBJ(GinUZBrpF@0Ncr2a+Z7ghf2k zYF~mMgco)^_K+|>^uaCPb$6NEM?hY&mj3g4d&LY6yF>J{dJyyTyspjq3Hrn*o9zus zB_Rb%o(8=0s76NhTFYK@PbISjqP9~&{;KOM1~JH>_L(E(8KoYuEVuEn8M8V%81Nmn zA9@FPrmqGyym{bsD!Qc>IhWV0&1{v25suk47S+GBxu}FbF2H&fnYI^7ff`{R%kIBFl!Ypps4Jg$?Q$TlJWi%r-<*$Q^XEVBtBMZP zA6Fa3p@Q0oqT2`iEiYlJQeA_uG{XCzPqa%{en;XroHMKn9JTHTFdYz`S(r|kj2n1T z(F*On#;*Oowk$GbT^Aw&;z1lg)gm$Y`B#0_`0?v%xumA|Dk(Sixge!c!$Ijxl zJ{vE+VRyLbf-7gVQpVJQuYo=@gNS|g>WYfta=_i=9%FMQ_nQpmmZfwPMYsh1UO@4Z zrgId-!vAomcl1M&k{}W)v8f7>g8WRl7QdFh1N~ZwPR=~Pa!iXMf+1IqRrzv@O6zPE zef`PK`zW-NBZKfV-6ot(B>Orm&y`O93`?=jVfZ1h>yDYCS)KWk#8PG zHabzncdqtkchOWWN_}W7CbO5lex-0h$y#v;d zO#W>3C6n_Hokow9DfXCqEm(vBin#!z>mj(kxp0JI%4BBn+sd*9o~Xb4?}2KUz0P3) zhZ5lUsZ0*qU}0|MI5a-m0QYhJaA>4o1e0HpbZz&zG}CNI{-MyS*XQ``f9C9EKRG*t z!WAD7yMB~hoHG-U=$J5l*Vvmi1* z+w=C{debPmXuzx%&0}8!weSER67Y2`)C=priLMTv1`^%=8$2Bh?(%VSzx-RCbE?`3 zt`H34Xf8azvYlIVR;MSQnaykoR|;VpPKOudmw*+`95AoSOYDzdf@ zAAy+n00IGFECPkG(w?DxiU1YnjVViJ^H6fg7T8Kt#6_tdI61lNR6cZku`t-N`V5)L4pFGZ!l0V_S3U)6yQ+kzxty3-&V-VMAhhFO+n2km zuZ2Xt+!0kee~f?}5lmbkO$$JRcrr!aMCY?3&h0f385EsCueHi_x#VYvASoLIJt)mr zLp=fDxx_blKCwup;XEs!=^J0q+%jx(I10O#zp;@OIv0Njc9_m)FnjYx=BbfgO`mX@ zT0kyZ51*bjDI*ieb_e{3SNywqt)|G9J1X(S<&>g^k^a=$aNj|jUFALe=-mhHbrv$amS_IkILG>)->_2-|j<{82JauKf( z5$MY9QT5CSy~#@E>Hw?hM*!pIvjEHs09O7{>86=2gA*2x5Y`f%@jsf<3ZOy&w8SRc zNKjAd&n=C3#fuxr72B{;NRgf1BK1ce4Yiy6Vhma~5wb9veoo>S?y<5616}o}Xp9sb zNiz94Z$p^qXbELh58UoGz5y?pczP{a*p=1oP0(F1shkvJT;5OFl>!6^!)ls@OdVP< z#dF3@^0MWBfAc2-wNJ3R7k5=c0c6(}d2=O&hVe#DEOJ~9KRvnE`+!)PI!b-?IC@-U zAJ?j15h#xC4rHZ0fo}WWyCvdCMJd!3T zm53N1(8dFrtd|hQmHV2+-8g;kw?*v0-RbS@E`_faSZbhVvHYD0_pBNL)Zs_RaC#00 zFNB>RK7KPA$7acRtT?)8;Mj*R^gWUfdK49GQd-gWjQfTkQ|bz%WIQLXMCZP*kfE8e zIJ?+h`D13_c-_+F^ZXHn&mrTO`D<~@Q$5eM=AHeOoa4a$H`jjZ+02ujjX1svFkuaH z?86#=;88QJCm_jTvdtGw58O{pzmbY|MC^hACRz7=%R^BH_>D3l0GOVz*#9+cpXmFE ztadEcXbvkce#*&KbGrLbw*kM}x-Y5g2L^~pzre5INFSwf_SDYhw?LRLsH|ANh|%G? zJ6;(LbBwNlwDe#f+FoBYC(4l;{mAc6&ge978H$sRX62oRYH?0Mzw6Se7l}T~d7GeE zifxOVurx|-JXi}c_ofhT=V#uqs$tV7aoI5-Nmy5};+aCQXvNKr?Gy!~)BI9E#pzz7 zM_}gBixSIt?g5Qeq-+dH4GPLIU~_~jcTKl@HZW9;{?oQp^V`LsZerVdXk^`G91v2M zL81&b2c3&I>&aMhYttcur$&-LXKT%uFI)ARlaf^dxH%7l5T~bV*EFp*9+zc)ZYBf5 zR7TvAc${S(!}ZB+=$yC-q_0yxg^Cpq;SWJW^{!oeA$NiPr8YNV!+X zhc22NEL))Hg0_Y$%?)X2E1k533K)9p@WG2$IkLwb#F&^1Ej5^RgGBA4CEy|{rU|bz z+Qu)DB1^1`$?8YQqG~4mF1Puz`Rj?CI1g3$IFKevgVZfY|9F~t2ttVnO7l56Y}Y3| zQItPKavUf9c;oyDVdg^*q?FExyrMofCW00GCgXWF%-VMQw(8mQ?5~y>q^^lPB%6D= z`MYuc^LG+&e+HF^ktJPMq`29a&SXq?0W9lT#SbKlmPgdUYqcGA2`PrI(=hPc59-&7 z!+A8;Sl_!)Nt+3S+yS< zagFqcMq*nHJaOg;p~%!$7DNKyJZpvg1`^^(9tj& zcvQhEH5QqOvHEO%AIbzLr0(qfyTx?VQnen1p6{8D6^+F@g^X+7;Ws^(sIutuk0L<0 z`GoQ>uLL@LzA%H`}Or~6jDhAQ0sE)Ta{7a9hS2c6kB0-e0z>5x`M;tMkXKhejj55 zuc%@KJp=?}2!k8Y!0uu91A9jW9GKt*h1lEUSnM#N^llrwAQ?iqup zHISzC1E)+whjoh!mhxBiInKv1{MrH+RjUatRJk{VX%1&)lW=C@2Wd{iJNr?B*XKjC zfY@keEWYJb)KDNartf5a`9@s)!ieg+BVkyO@Tw|TEz!{$rXytQ7TIv}w|yR@w{36i z)KNK7KIKfLL}l|+eJ1;)*6-A6d;nA=|3jc20~SqVf;^8910(+4g4QMsh6Rz9Pd9Jc zr(ayPjBSsS1o01{EHs>1o*d`#&Es`RRU}mJ1rihg62N^1rv02(jH3H)W|Y@v#^mF3(xs>itYrN`Dc*6koDc8yWPx3N@UevB1+K@0n%k*_GyvTQZD?Y0K23{1e>z-wZohN$ z13d8MRwvQI&;?^~n+Bm1OI8G!oR_3{*+b6e_r>P0@zm-eDn>3V;x@qtsr3uIA~UCsgPhLD^^`M}wTMNN}k`q2bPjWnd*|DhLj zX<)yPoq+4`9TnxxK9`GvpeTwHbP$x4F_w<*QK20*_wEqj#?>|^XHx3wuH7uf#u&DqI##4C5q<}+c)LUmy$q0u@il=%p9 zw;Fn`{X=}wa79UYhkbbbSN$U%cHCL>9=UI0%TwNysYS-1uOc0834(AN+c6>dHyV#P zhp@N}yB$#qA0M90ySgr3?&S1@N}TJ?Hph1d^1DhXlM)k*(oam9?K7E1A^>l(8{9r5- z;5uW#5qm1+RwmjtSCh6L-fl-U3%LRB_-_oHbPo!`b9pQ8mI53CEs5oaynjF6U$299 z;r+MiXG)4g%elI88pG4r=0Dq*uhZMA?t0BvAlA#jeSXGkT0H5*9WkTBirsQjbza&- zp7qMvnX~TY9mrd*T|oWeR$f4%qik_JI@slJ0y;%YwfIro7>@ z>}ij3jWnT3vagN}S|HmSB;pPJ@3|FBKfKj!Ap>hae9JYwXSOxdqU0FJp59tbX*1FD z1290dcK!T69k1s7wR=}dP;r^AeG4~w0tRgk>TGQ)&~$a}?1yW7z&mnM(QbS!8`*g) zJQDE_|1Ib?d@{Rb983F_pUFGu@syN;(=J267bFCV;iM{t-cZvWAc?%V*1v zcttNhnfG4Z%cDT*$gK%~k2QRrTS_|9CTu6FYLu!_aPBp4X`~)YcXR zZPDJe{wvT^J(#O^(9gz}nWp63bgp=en;o=HpN!&rm$`r%STk*KWThX_hXxbJ*vgwJ zPkpy&hN?bFOGE2dw}076bMQozL7sDwby5AuG`q2d6}_^TN@F^6c=SPkc+Kki@Ez>> z>%Gu&`(dFbF6Dmv9fiv)ekfW_{d;0CW%#@+B+iHbD)Q7AOR#O@vr$CuxuZ^kJEal7 z$=VH(3JeI8G;&axpVwOMAjTDe$$Lsv*$Qm#GQpeV=K!jMOvz682ByVoEqo}gTfme< z3jvYwiRTQ?^*$W#V?o~Q_5oaK2JK++49#i6>Rmg-%@dp@OmF$cT1tAg57~yGwkNgA z0oO?GW4pRcGCvbupvC0BnD020#V?SerxXR9Z$90y1YA%ZPNRh|=U8cRRwt&XqIChh}X$lJ$)Hu#q`CG;u06qSKw1O#Q z^?FDnte4#5HN0idWcRUUD)(X#)gzD-Zc_gqu;h=_Xu2+wxod6CSfGrN%WWCuwu@!H z=hV_``PO8&-)rMYoD}}jqYr4X;&phM^5R1$QqD{njp(Yc*M|y-E;%{vR~7!wYc=o+ zN}y-U84rhBxr<$>#pLV*SRq5%BN@N>!Of4^{@`(ndP;Ob^r#H}a^oi<3vx}2#~>;d zJyOHkwWo!bk?lrcATVWa`gF!`J}~>s*>iSVTmn+ zJ)v-e*foP$GS$)&zz&GK#S7hJg}-f-4`nBP3GB%roc*r!Ohbi*Q3OF_OxqJHSUn)( zX7W7H2f2%+0fKrHp3oMoVz0qj`~EzGD|vTIGpPC>J5gF}tx4aZ_3xkqAEtvV3sqSq@z5 z|F)@BePgistqed!vfHE1dMA_wI3c&EU44)9A&k!zbH6`0WXr#H4~v{OIL8xs5hNy8 zL})sHKh~C_QA>9+e)y(&l?Qk9dv6$_62HRP?q)=p<{=P!oDEFA zr_+%RW;V6)MSYz9i_VN?Wjq6D7?f)KTE%%yrOWImV75hXq_ny=JsXkg;x}&1S%8aI z*RAkX5Uc6~QgKvE0=WdJGR0kwR*vS2bcFKPKp1C{WO5tjLx#y5inzo-_OSj=jmMD5GPb+mf= zkfmwynUi7NMj!R_AQX|Iv6nC;cI{@JZ;@rtrqypxuPCWk7Ch{vt7V1K$Kwv0cx8D}{@7LUd5eUy-&BFMOh&#lVb zGSSY5)b4+NNvJ~Wro{c`wDsCt-#~{i556O6&p!%p4{OwKnGl~RB+dt7&ldQ1<+=<< zl$)p&ovs|;x^FR3{IbjXY_m1o$^V`5W5}+5;g)xkPEi8dBcMABVfSafVTzn8Y3N0X`yq9Rqh0H3 z9jX9&RBfIFx|f(UTq|9xH}e)8&~yf(9p=C$^=gh@vqZtv&5D0Buv9!YR_PBC~x8WXUI{`bor zw~xYd74zCuEU?y01>df4w_upaFxrN-qgxd6lEr~W(V z9_#g5j&E|+^m>s0S3wy(DBbic!2T~{V%Z)*3MDL~_XyElK`K=>V%h9qO3_v2{xgQG z0M)j!XywADX~AUHYK0lCXt3v;@v)ajY>NIH2<;;22X}#%B}&Kr%KFjuE_< zp^aVAFBs25O(seOL9D9#oL&+gX3p z!SGS!;{K=6!TGp+wGZ~n@1?J?(ergk@qURj0=6g&xEU3QOPk7$TVDpmlg1r+AQLCX zZgo~{ofonAQETGEyOx?ucEG`^BAQb`;?1~?snn8S*N^^t!9_pB( z1>6NPlu;BDZZa^|5>l-?$53{UrTj&hL^fqk4nd$~H!48jm0o4EG`KFuro&9ji(UBR zRI@uZ1vtnM=SpzO5gDEo%r;nj;j^c^d4(lS=2^({My8P42F=x6k?u*7h%Vqi) zdt8b-ZI=RcNx9v|`6(N4JS9jbQzp`!>I0VVgY2#lpLPKgd?q~Ugce}>e?KacCA znF9&3(dL3-toADw2d5GSyV2MAYF@ZvgtBsJ%b1Uh{6)}{T6NGFp&J+8>@IC7yfEg( zK|h?lxuV9bjQkRvub0ZF!3uIHpqmWF^Z~ltkHZV?pO3IfiJ7SJ9zV<0wqFRJ+b3oP zr_rg!V5l}}7l4R7l6kI%TwWQ!pGw`}X04IF~GVPp<1Yw``8Bd~^ z?MqNnFb(1ajdY`vm5}_vUq3U-tTo%|?Q}e^|JAN(1Mxk!UegT%;cyl98-mQiE8sGk zYd=QNVFDK!OWoKT|7j9QiTFj3`j&Vsgcg>MrCKS&p{Axo4HorF{ybr^lA+>R zK~oPxVbdj-&|84G2L9s?XKswTupqHiZ`c-&=+V}Dq=`Cdb&v^!JSUJQm( zNj*BgPFF@BM1=09Z1>03I|0JkP`HbG|gd#pU4?N(bvc&$*t$WdV6rD zoXJ;l50sG2eHN#|KxQp?j$k%gN%V!c^~%X9#f!khnH#(mRs2l8 z_mUZ+=LoxtMCBZ)`;vSRMV(;C8Tck-h>j-y zF_rzthkyo`yX=3c34X1q2+--Ic#9qbYP~NN3`t{5!dbAf6H{4%f{8+R+TLH9`B8`% zxgqej68hW0zH^)&*VV`zu>&+5%A*V9(ockw&ZyKYxDe#uP(gQ4a5%}`wx4(4Ph7`h zZuEM6BcV>eA0XB#I6^W#G^nJmO5;9Xk{G3i(;6=w?KC0DKFZT#@5NI|e_E%>ou1u$ zL}8~>?z`!qfcX@)Rd@+>va^N$P{=-Qb?^l9+xDOGr*n>7Qj$eHO5kW^j06kD<<5n7 znfk(shi{j`jnzjQ;q@d5yjf%0qBP35-6#ImSG<`RtnR7<=ToB4wuydt=J8BMvp0E- zUZBTnf)i^RMiJg+jXqJFHeVm{-W<8N?gax<`m2gPxS77%vMD^2)UGrJ z6}9Unpvo>AY@}YLDh*I(DjUb?D{2V*GCseuBOfjR`WXx>`#3D3s~qrpt>xT7Jn zI;@HRCvH{9 z`iN4kez+xV&+;9R8CUW6&FmqLYgLP{{f6XIwORZ`6X=K~2tR=`8C&K+ou1VKAQWJP6vK7&Rk*xlcyXr-&Sv1lTbfc%+kJ*u7QF|txccqLyS{m2Z)Eo< z(cIeEb@;xRrAL7iTLF-L>>!<)dHOb-9ECQ}dn3)OPbPp%)X>Y=*->v5;VtY`u}#A0 zIgJR>V?jPX4n%EC|Fe%`E})(X)Re;`b0`=5GUIP+k`WM|OPYc)+wDV^kR>il(fm9% zyd=;98@D_~4*{zwRF{Q*49_&)N|*?pDLs;&7}{c?;P2^)iav$;;&Qe>omrEo#g*f6 zXc6gFW4&wL4R%%rA8l5BBGAn{9yxGopT;CVo6!Y=v-HRy9P`*kK zDmG<5h?;AHpcv0*tEf|mm!26#+#a$UkN&k!hD_)&N6i#nm z68FgUo}M~33V!smFhhhbp&ntd;p{y#JkE#oeO3>Lju31l0d^_$@#kI2#~yNYtvs8R zj}Q~Ta9(tbd?h3wOTI=HP97tH>6Q~IY`Sv`#!Jq~C?|kd@4w8c_}l+6kM^G&K8%L> zHm=m3-I;7WgJ2U-iM~|HXE2L}wdg+yv8K}s3&V_qDt0m6Onb~G>~>(5B6~({1nwQk zpMVaERZ=~V6KO{E67^cA!J*-aaU$ literal 0 HcmV?d00001 diff --git a/tests/data/l2-before-moves-in-db.sqlite3.xz b/tests/data/l2-before-moves-in-db.sqlite3.xz new file mode 100644 index 0000000000000000000000000000000000000000..557171563dfc81c5f7256a7aacbe769dcc7c7348 GIT binary patch literal 7568 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 literal 0 HcmV?d00001 diff --git a/tests/data/l2-bkpr-accounts.sqlite3.xz b/tests/data/l2-bkpr-accounts.sqlite3.xz new file mode 100644 index 0000000000000000000000000000000000000000..075ca53d2a6264df6f9131256d44922fd9ecacd5 GIT binary patch literal 1120 zcmV-m1fTo;H+ooF000E$*0e?f03iV!0000G&sfahkN*T8T>vSRMV(;C8Tck-h>j-y zF_rzthkyo`yX=3c34R1L^k4~u1eaBb7I@OnAXOA@Ux=Whq6rFo9ts{%w4Z6S2PIL} zDv}ibklpZ_(i~hbieyZD#8ZR}2jO@3&j`MT&BQ>w)m;l_UZy!b!FQI&<4r^QlEg44tu1 zwAz%<^dWycE%dwlh4d_kR!=52P{z7~p4a_{>*TyzdaaxSCg^4)dsyUoNw!(Cyn^ z;qxnc?j|=8akE04k;NDsJ9lWrfyJl$u?HZf?2!?>6r@AQP>H;{oSs33PJ4*UCcs1=+<<@QRz=jt{(x zOz3oWU15Xb3OBo3PBJo7nR=n~H#n>Bu6PQ*Qp*p-um;qaf*V?Am0bR?o2Lv-Va9MO zR@u7T5XYB5A4TL&RGd(?hs74_zat^}UEnh4}m1FWr0IL$kp2mGx|Uq5pE zmzoTx;9c_-#=UhCS}!w$Rxh7$;N?WOH_Y@#v*CZ)@Hu&skJg_lhuTm6wi`x4S6Qem zpBqovs(_nI@KI3LDr6xM;q@o>2~+4a59)|l3JK}>BEm9xhHncc39Gb$UY_mRpIKt6 z>>!#r$`umh+A;J7!AWWmHEk%=$9ekGyCle`?qU?T#W5q!<=lfbmkEUo#fWiKU_Tq} zl-DEgf#RmehZnIIKV6tcS5i)@B!5tEd_meF8^I&(RhzcsiR% ztxa|!M_ENOlo61t!tEphc*L8v46fcmEL0!S4cf{$OLYl$Y*hxNVg}6OeH6}Tx96AP zmme?8!4gnI6M7R~baN>4*aoIVkWOgL_X0?JFwvRot$u_U1@9ED0?$i$>eS zYO_am%g1m`VNIY_F6MwN^jZBnsq~oQmZ9VY5ajq7(6QDfL^OCeEMAYa&0*!2@S20_ zffyAC=op_|_Y?gZzAc0B+8|&9?FK1JHBK@<&)E&l$=aXWbf{hvdhVGxSNjfhX?8C# z!l6(KT;Jm4Q55oZzRpz0CjUioz6+=ztaZ_ID2VNQtB;_Ml2SX?U>v!1Mgu-EkBMg& m1polE@}mc&2^Sjx0lNr*paKAM^*@EN#Ao{g000001X)_0$P|_U literal 0 HcmV?d00001 diff --git a/tests/test_bookkeeper.py b/tests/test_bookkeeper.py index 82d0e2599..18243df19 100644 --- a/tests/test_bookkeeper.py +++ b/tests/test_bookkeeper.py @@ -985,3 +985,76 @@ def test_bookkeeper_bad_migration(node_factory): # l2 will *not* do this assert not l2.daemon.is_in_log("adding spliced column") + + +@unittest.skipIf(TEST_NETWORK != 'regtest', "Snapshots are bitcoin regtest.") +@unittest.skipIf(os.getenv('TEST_DB_PROVIDER', 'sqlite3') != 'sqlite3', "uses snapshots") +def test_migration(node_factory, bitcoind): + generate = False + + if generate: + l1, l2 = node_factory.line_graph(2) + + l1.pay(l2, 12345678, label="Rusty's payment") + + wait_for(lambda: only_one(l1.rpc.listpeerchannels()['channels'])['htlcs'] == []) + wait_for(lambda: only_one(l2.rpc.listpeerchannels()['channels'])['htlcs'] == []) + + chan = only_one(l1.rpc.listpeerchannels()['channels']) + # Label change output and funding output + l1.rpc.bkpr_editdescriptionbyoutpoint(f"{chan['funding_txid']}:{chan['funding_outnum']}", + "Rusty's channel") + l1.rpc.bkpr_editdescriptionbyoutpoint(f"{chan['funding_txid']}:{chan['funding_outnum'] ^ 1}", + "Rusty's change") + else: + bitcoind.generate_block(1) + l1 = node_factory.get_node(dbfile="l1-before-moves-in-db.sqlite3.xz", + bkpr_dbfile="l1-bkpr-accounts.sqlite3.xz", + options={'database-upgrade': True}) + l2 = node_factory.get_node(dbfile="l2-before-moves-in-db.sqlite3.xz", + bkpr_dbfile="l2-bkpr-accounts.sqlite3.xz", + options={'database-upgrade': True}) + + chan = only_one(l1.rpc.listpeerchannels()['channels']) + + payment = only_one(l1.rpc.listsendpays()['payments']) + events = l1.rpc.bkpr_listaccountevents()['events'] + + pay_event = only_one([e for e in events if e.get('description') == "Rusty's payment"]) + del pay_event['timestamp'] + assert pay_event == {'account': chan['channel_id'], + 'credit_msat': 0, + 'currency': 'bcrt', + 'debit_msat': 12345678, + 'description': "Rusty's payment", + 'is_rebalance': False, + 'part_id': 0, + 'payment_id': payment['payment_hash'], + 'tag': 'invoice', + 'type': 'channel'} + open_event = only_one([e for e in events if e.get('description') == "Rusty's channel"]) + del open_event['timestamp'] + assert open_event == {'account': chan['channel_id'], + 'blockheight': 103, + 'credit_msat': 1000000000, + 'currency': 'bcrt', + 'debit_msat': 0, + 'description': "Rusty's channel", + 'outpoint': f"{chan['funding_txid']}:{chan['funding_outnum']}", + 'tag': 'channel_open', + 'type': 'chain'} + + change_event = only_one([e for e in events if e.get('description') == "Rusty's change"]) + del change_event['timestamp'] + assert change_event == {'account': 'wallet', + 'blockheight': 103, + 'credit_msat': 995073000, + 'currency': 'bcrt', + 'debit_msat': 0, + 'description': "Rusty's change", + 'outpoint': f"{chan['funding_txid']}:{chan['funding_outnum'] ^ 1}", + 'tag': 'deposit', + 'type': 'chain'} + + # When generating, we want to stop so you can grab databases. + assert generate is False