From 3b8347e1500ca0c002b11f068d7f7c9cbdc39762 Mon Sep 17 00:00:00 2001 From: Shams Asari Date: Mon, 14 Jan 2019 14:32:14 +0000 Subject: [PATCH] Fixed AttachmentLoadingTests (#4565) There were two issues: * The original "sealing violation: can't seal package net.corda.nodeapi" issue was due to the isolated CorDapp containing some code in the net.corda.nodeapi namespace. This has been moved to the isolated namespace. * The test was not correctly creating the second transaction with the dummy command --- ...ttachmentsClassLoaderSerializationTests.kt | 2 +- .../contracts}/DummyContractBackdoor.kt | 2 +- core/src/test/resources/isolated.jar | Bin 11414 -> 11260 bytes isolated/build.gradle | 3 ++ .../contracts/AnotherDummyContract.kt | 1 - .../contracts}/DummyContractBackdoor.kt | 2 +- .../node/services/AttachmentLoadingTests.kt | 46 ++++++++++++------ .../integration-test/resources/isolated.jar | Bin 11414 -> 11260 bytes node/src/test/resources/isolated.jar | Bin 11414 -> 11260 bytes serialization/src/test/resources/isolated.jar | Bin 11414 -> 11260 bytes 10 files changed, 38 insertions(+), 18 deletions(-) rename core/src/test/kotlin/net/corda/{nodeapi => isolated/contracts}/DummyContractBackdoor.kt (94%) rename isolated/src/main/kotlin/net/corda/{nodeapi => isolated/contracts}/DummyContractBackdoor.kt (91%) diff --git a/core/src/test/kotlin/net/corda/core/transactions/AttachmentsClassLoaderSerializationTests.kt b/core/src/test/kotlin/net/corda/core/transactions/AttachmentsClassLoaderSerializationTests.kt index 9bab097e2b..a6150099ed 100644 --- a/core/src/test/kotlin/net/corda/core/transactions/AttachmentsClassLoaderSerializationTests.kt +++ b/core/src/test/kotlin/net/corda/core/transactions/AttachmentsClassLoaderSerializationTests.kt @@ -9,7 +9,7 @@ import net.corda.core.serialization.internal.AttachmentsClassLoaderBuilder import net.corda.core.serialization.serialize import net.corda.core.utilities.ByteSequence import net.corda.core.utilities.OpaqueBytes -import net.corda.nodeapi.DummyContractBackdoor +import net.corda.isolated.contracts.DummyContractBackdoor import net.corda.testing.core.DUMMY_NOTARY_NAME import net.corda.testing.core.SerializationEnvironmentRule import net.corda.testing.core.TestIdentity diff --git a/core/src/test/kotlin/net/corda/nodeapi/DummyContractBackdoor.kt b/core/src/test/kotlin/net/corda/isolated/contracts/DummyContractBackdoor.kt similarity index 94% rename from core/src/test/kotlin/net/corda/nodeapi/DummyContractBackdoor.kt rename to core/src/test/kotlin/net/corda/isolated/contracts/DummyContractBackdoor.kt index 7bd73fc16b..98e23bc427 100644 --- a/core/src/test/kotlin/net/corda/nodeapi/DummyContractBackdoor.kt +++ b/core/src/test/kotlin/net/corda/isolated/contracts/DummyContractBackdoor.kt @@ -1,4 +1,4 @@ -package net.corda.nodeapi +package net.corda.isolated.contracts import net.corda.core.contracts.ContractState import net.corda.core.contracts.PartyAndReference diff --git a/core/src/test/resources/isolated.jar b/core/src/test/resources/isolated.jar index 47372978ccb17ea1e628acea7291792787e09bcc..8026639a7e3258741543fe9ca9016344662edcf0 100644 GIT binary patch delta 6730 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 delta 6829 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 diff --git a/isolated/build.gradle b/isolated/build.gradle index 575edbd599..45bd72e4af 100644 --- a/isolated/build.gradle +++ b/isolated/build.gradle @@ -11,6 +11,9 @@ dependencies { cordapp { targetPlatformVersion corda_platform_version.toInteger() minimumPlatformVersion 1 + sealing { + enabled false // This needs to be disabled for AttachmentsClassLoaderSerializationTests to work + } contract { name "Isolated Test CorDapp" versionId 1 diff --git a/isolated/src/main/kotlin/net/corda/isolated/contracts/AnotherDummyContract.kt b/isolated/src/main/kotlin/net/corda/isolated/contracts/AnotherDummyContract.kt index 3d3e3b09f7..994e6c49d7 100644 --- a/isolated/src/main/kotlin/net/corda/isolated/contracts/AnotherDummyContract.kt +++ b/isolated/src/main/kotlin/net/corda/isolated/contracts/AnotherDummyContract.kt @@ -5,7 +5,6 @@ import net.corda.core.identity.AbstractParty import net.corda.core.identity.Party import net.corda.core.transactions.LedgerTransaction import net.corda.core.transactions.TransactionBuilder -import net.corda.nodeapi.DummyContractBackdoor @Suppress("UNUSED") class AnotherDummyContract : Contract, DummyContractBackdoor { diff --git a/isolated/src/main/kotlin/net/corda/nodeapi/DummyContractBackdoor.kt b/isolated/src/main/kotlin/net/corda/isolated/contracts/DummyContractBackdoor.kt similarity index 91% rename from isolated/src/main/kotlin/net/corda/nodeapi/DummyContractBackdoor.kt rename to isolated/src/main/kotlin/net/corda/isolated/contracts/DummyContractBackdoor.kt index 2b6e9c2eac..4598e78859 100644 --- a/isolated/src/main/kotlin/net/corda/nodeapi/DummyContractBackdoor.kt +++ b/isolated/src/main/kotlin/net/corda/isolated/contracts/DummyContractBackdoor.kt @@ -1,4 +1,4 @@ -package net.corda.nodeapi +package net.corda.isolated.contracts import net.corda.core.contracts.ContractState import net.corda.core.contracts.PartyAndReference diff --git a/node/src/integration-test/kotlin/net/corda/node/services/AttachmentLoadingTests.kt b/node/src/integration-test/kotlin/net/corda/node/services/AttachmentLoadingTests.kt index 6b5deb01dd..c4f5525eec 100644 --- a/node/src/integration-test/kotlin/net/corda/node/services/AttachmentLoadingTests.kt +++ b/node/src/integration-test/kotlin/net/corda/node/services/AttachmentLoadingTests.kt @@ -1,32 +1,34 @@ package net.corda.node.services import co.paralleluniverse.fibers.Suspendable -import net.corda.core.contracts.ContractState -import net.corda.core.contracts.StateRef +import net.corda.core.contracts.* import net.corda.core.flows.* +import net.corda.core.identity.AbstractParty import net.corda.core.identity.CordaX500Name import net.corda.core.identity.Party import net.corda.core.internal.* import net.corda.core.internal.concurrent.transpose import net.corda.core.messaging.startFlow -import net.corda.core.serialization.MissingAttachmentsException +import net.corda.core.serialization.internal.UntrustedAttachmentsException +import net.corda.core.transactions.LedgerTransaction import net.corda.core.transactions.TransactionBuilder import net.corda.core.utilities.getOrThrow import net.corda.core.utilities.unwrap import net.corda.testing.common.internal.checkNotOnClasspath -import net.corda.testing.core.* +import net.corda.testing.core.ALICE_NAME +import net.corda.testing.core.BOB_NAME +import net.corda.testing.core.DUMMY_NOTARY_NAME +import net.corda.testing.core.singleIdentity import net.corda.testing.driver.DriverDSL import net.corda.testing.driver.DriverParameters import net.corda.testing.driver.driver import net.corda.testing.node.NotarySpec import net.corda.testing.node.internal.cordappsForPackages import org.assertj.core.api.Assertions.assertThatThrownBy -import org.junit.Ignore import org.junit.Test import java.net.URL import java.net.URLClassLoader -@Ignore("Temporarily ignored as it fails with: java.lang.SecurityException: sealing violation: can't seal package net.corda.nodeapi: already loaded") class AttachmentLoadingTests { private companion object { val isolatedJar: URL = AttachmentLoadingTests::class.java.getResource("/isolated.jar") @@ -59,11 +61,10 @@ class AttachmentLoadingTests { val stateRef = alice.rpc.startFlowDynamic(issuanceFlowClass, 1234).returnValue.getOrThrow() - // The exception that we actually want is MissingAttachmentsException, but this is thrown in a responder flow on Bob. To work - // around that it's re-thrown as a FlowException so that it can be propagated to Alice where we pick it here. - assertThatThrownBy { - alice.rpc.startFlow(::ConsumeAndBroadcastFlow, stateRef, bob.nodeInfo.singleIdentity()).returnValue.getOrThrow() - }.hasMessage("Attempting to load Contract Attachments downloaded from the network") + assertThatThrownBy { alice.rpc.startFlow(::ConsumeAndBroadcastFlow, stateRef, bob.nodeInfo.singleIdentity()).returnValue.getOrThrow() } + // ConsumeAndBroadcastResponderFlow re-throws any non-FlowExceptions with just their class name in the message so that + // we can verify here Bob threw the correct exception + .hasMessage(UntrustedAttachmentsException::class.java.name) } } @@ -100,7 +101,10 @@ class AttachmentLoadingTests { val notary = serviceHub.networkMapCache.notaryIdentities[0] val stateAndRef = serviceHub.toStateAndRef(stateRef) val stx = serviceHub.signInitialTransaction( - TransactionBuilder(notary).addInputState(stateAndRef).addCommand(dummyCommand(ourIdentity.owningKey)) + TransactionBuilder(notary) + .addInputState(stateAndRef) + .addOutputState(ConsumeContract.State()) + .addCommand(Command(ConsumeContract.Cmd, ourIdentity.owningKey)) ) stx.verify(serviceHub, checkSufficientSignatures = false) val session = initiateFlow(otherSide) @@ -116,10 +120,24 @@ class AttachmentLoadingTests { override fun call() { try { subFlow(ReceiveFinalityFlow(otherSide)) - } catch (e: MissingAttachmentsException) { - throw FlowException(e.message) + } catch (e: FlowException) { + throw e + } catch (e: Exception) { + throw FlowException(e.javaClass.name) } otherSide.send("OK") } } + + class ConsumeContract : Contract { + override fun verify(tx: LedgerTransaction) { + // Accept everything + } + + class State : ContractState { + override val participants: List get() = emptyList() + } + + object Cmd : TypeOnlyCommandData() + } } diff --git a/node/src/integration-test/resources/isolated.jar b/node/src/integration-test/resources/isolated.jar index 47372978ccb17ea1e628acea7291792787e09bcc..8026639a7e3258741543fe9ca9016344662edcf0 100644 GIT binary patch delta 6730 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 delta 6829 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 diff --git a/node/src/test/resources/isolated.jar b/node/src/test/resources/isolated.jar index 47372978ccb17ea1e628acea7291792787e09bcc..8026639a7e3258741543fe9ca9016344662edcf0 100644 GIT binary patch delta 6730 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 delta 6829 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 diff --git a/serialization/src/test/resources/isolated.jar b/serialization/src/test/resources/isolated.jar index 47372978ccb17ea1e628acea7291792787e09bcc..8026639a7e3258741543fe9ca9016344662edcf0 100644 GIT binary patch delta 6730 zcmZvBWmH_twsq4$XuOdS++BkNcP9jQhu{$0wSzSt0*wR@?k_*bSdc*Y z$a&wm=bkrS?LW1vX4P1G*IcV=%}O=6*TYd)Mn)k7fIuL?jUBUUA`T-&*&|<)FydPG zmP+4>TZ@P`v_^XjNF%ErC>3bMJIBY7KRMMbA1(Swa$=F>6GwZRv&iDwTN807sE~42Upq9QSmsg_b)Sg3@ zj}hL@Ztvr+!Ov0$)W|_N@iD{2q)%IC2n3?>_TMFGMy*$*g`Wt}42?_ow~8GQE^>Jp zx|JE$0gZduQX5+p$BUABH2`?fh|%X5*K*NFtF+a(O|vsph#Mhcl$vuf10tybRF$$N zXep-XLP}dl4m_lGM|yEt@$;egYJI6VpV9W=S}k&ELelw`2>>F4Lfj@?Cg2-T`3BM5 z$6|47%RD!{f)6TT0COsKS0gw9?>0sp zFs6$=-agSf8{xrHeyAn4*p5kMc-xRZ@q;I}?PJ-8Q!^=j+z&lumJjiHolHu^o2OHU z4G%`ob}QuW7h!2H$!W&Cu*}TuNmX#g&msva_^L8v+xQ@kbELUv{v!;v>by#N{dD+z zEz@MFo}UEf%UV!lcXW^R9V9<8I99XPKBhdXz;QR%>B85isW{1ROP9OV6o@K~XNICE z$2eAOAE=f{M-q=j+&ms66GE=aG|c#as}_Oi=P-OcPHwvgBQFrdyGF#eNh1X;?JRo~YNRPmjlMfwOG5H;%ej^YB`4Ufgg3)Tn9j?V>Ne}~S5V-) zX9t9Y4A3>?K6=T+xVQcf3Ls^e`j*c zhVMo_j|hYmy<5FcGMY|TXlC&|VV>*!ApP5yLe!*@-T#Y$pM2fTsJ%aGvgUI9l5yb# z7LS4HHq!udG=+0FX~^fcz0~<-9$M(<_s)8yW>F;_zhBt&sOQcT3vw6AhVzC?O_AQM zwjQq@Qit%eMxY|7zXOG-nS+&F;Pz9+gyH*I+BaZ`vUSqzw$Y`jtP)T&?J|oPd@gby zXZRL}=kmi}ZC|F}-%VHcKtJWx*FnS1Xrptn(<;)MLQD?MOg><24aRE7+3j%@f;B^D zLoWFJl}$Bq-->;6sjS38!oAu#1JjS>rQRyThu|a3iSprIxmH1Uo%a&e-R#R+aO&At z#K(RR7OY6W0<{EWm8@?A=5%Is9fu=j&7t8MGfiew_30$7FV4MM%)TzT4#Y?2+P zw>42wD$ww>CY>vh;*MEkJ{X@l2-QCNcTcFV?hyOXl3ys{K8o$d*`UyJ2qIcAQV+^X zfbU_^UbK&EX3z=zo2^~PVu4R=y+-*z*xGP~nvbL%HK+Ugu^?TTHijTU;%d*J`+y^* zrEzV7ajk*bJbn0`wLK$h71?M>4(Kt_|H1-#vzinck9#FRxi~cR3EjeTYuFTTzCdXo-%0p18OEKPEtDAivn5Eoi#4;L zH5!N#0%3gf)udP8wD7ttYLVuh!oeYJuGKa0 zmAkJON$;9y)u%}@cz!}Ads8yQyWb=B0o%Sj7DOH~^2zbmJRe(A3uGw>CG}$)HBL(o z756Y1Z$7D9)cIFn7R(FC?^)1R>0}jLSvX{=&Os!N#>T~ZS&C-T>%K|<5ZjE2!8_}H z5q8FDG;zSMzJB*%(}Nq>*RHCL|-@*aC%z_%QCKgVZs-zCf^w8-W2S6@sx z8=LQ7;9zH({?0krl*;h}{^6=s@&Z69o3(;fm$sr zAx$*gV_E;;RTT7 zGeoK(t|=*O?Rx!s?AQ88aDxOS=n-j?=7g89iLZGFP0XTV(kCKOEOZ&Ahda+?x>G1g z%KDpM?y#13!S?{F2;ENAFz(&EZT-dSNviMia4rf6Og@z6O5ff(hlidYzHBf`ZA}x+ zCo@f6_Hj!IA@P%l#9P1-d86g^%7f*E?((1{=0f%0_1kZxN#Tsd!u_~Mw8Vp-TjrX( z3Lccn#&0bKV%12Rx%lHP&fch}$zO)!^|_r2N;TIrkK%pr2WxC%y_3{-Ny`(Z+~Y9a zB$|kaC=gA^e*N-_(wdPey2rP1z-O_+6RIX&;`>41z$5xqCoE7z$X*WXN~N>VCSM~U z&O1+C*sjr3+{K&K<><;MTW_pC)~0N|OqZC)wm-?_g||rjF;)YF-B$lrZ{cUxWJ>Bo zj@95ophAli9`lr!H5&#N=BuK;?#bg}^I`oO$b-e^V9@iBcRG$F$tHNvq~9@f`|4zS zL(Le^U#0O?5klu97mJRS<-IlcrygZDI#maY-^iQqcMDi`_7A{WY}AxSd-4M#*R@A0 z4~XkLw9e>;16jv&V$;-y$^^?fEpiMWNoC+|c-I>}Cd0a--<~`w#KmO7vr-8|uST%9zGz)o6=x+5M@)iC70utuRUto)VWh)eRwNTKve%`I%OS@5`0KWu&&w9B(_>0aRU?;dC^e_aN{fOX$Vp?`y8VfP%3Yy+SMC+xi_{ z-}OuKSj+-x1*4WP>|gG~5m9oz9rLAgx=aw6lddf4GC|_7&OSZg^=}Ov?N4hYuoCw!0Rc+`+^c891-vBXiUiS5?tPrLR1vbAF zJl&WmaRo;vsZaH~G8!=x_LipVI{3{HK^;BVAY(V70_;-azCBLK5j(0LK1;3xz=sq1 zEvi)Q+`@G$#nf!WwK{C0xQ|WsS`ag9Vy1#ey7gpPl2VkMmx0+qPV5-&E)4M}{6a-BN#HnKv=6gZ=4(!=9$GuIN=lu1=J&V4(a z7iVQk>VJh?uVA**+1fZ+w@XFyBI1h~qi)3Z!_IBkRN-{h&Bg_qlH5X4O!4$ORc#aV6i0W8 zG2ix~ljl4?mBU(L6;?w9f&`+XDoI%v8!#3a6;aYK00|%w5jZ*92J4BS3K(l4jN+oD+L1qjd2+oP=em& z+uQcc1a17NDJM;rrF(8~NqM2++6Fw+S4f9zl1|ziuO3yu>+rM9HWowl$JCNV&Gg1c zbf)9)C?tz&=P0r09$Rg1NE8RWjVHkU|(vLenQ;~n$ zq{+OuXK#vYLb8ZCNw^M)NY3&gbzW+5ex0q|-Hh!sy`5t_xt0fh8=Q+qoX1k2iDP+b zy=$Ddr{+mcI``W|IJ=mjh~!ACQ7m=seL!O|ka9V1COEhA(}ev%DAxtIIJzJD^2|3$ zrYU?bs%<$Bi9AOqTyswk{dM(&&g=^Kmp6^yVT+n2^=y4i{wC8a2#6 z`Pc`~=})v79QX+xHN|%~#CiBJreK%WO`jvx%4FiVs*REVhOgjFxQ4Sr^Tpm3@YxUD z8{dIm=9%E+3{NNoXfhBD5W}jr*4zJ-wU`&2>V4?8!Hc!F(ls=C=oR-m+3QQTkiw-f zr|8e@<#^Y+TX6Q4%uRFd_S!46j4cdCX)>+Gk@U6ZCIbuc;{>XW3|8Nag)j}n74O3h-23)B3T>{%gzfszV7K*K&Pa^VqWlADfexD)Z zy5VL-(ouf!Z`tOxeYnbxtW+C)K>ibN8~EFgjZp!BevH54tp|}j#6XX1==ty0_(^sn z)K<7QZeQZkrMifh;&=&+nhA)w&OxpK$4Z($dnHu9#oUJW6S9+vsD5o*uF2`5GT(v+3c1PX%qw}bW~ekqG+#J?jgjSov14?C zH@mvZ_|m&@JZPBla@&8XIU7U^92mZf(a7?l=rzPsw94ey_OnNF(#a_9uotmmiLnH} zsBdmaGK4vIPhl$;dB##6R$E*I^n2T~77v+FuuW&Lv;DGihkUEOBwo&IqI=&WIcV}K zx$DQ+J952$C{9tSXSlu|NInf_uw9*apTMyDg3pEyMgdD>#*nk=Gy{#js;hEx#NtC zf??x8YIKZ6YM~5l`MXMnwpwxe>(BaN(t?a;1Bjz}-_9D4>j-?aK_vdf>0 zF#7Z}z?-*OPnGyLjId8ffVd2ax! zQ!kL9@43Ovf4M#X#kmb@Bi7yXHRtj383y-ZFIKq)?_w|8?C!GASLIu@nm`#Yoh_L$ zQG2445#VWO{m)t2%iyMO@pq02$6FLml~h3*z6CdJUGa48KDkM0S%viCvoE18pezw- z)z(U*A_%A&Jr14|(S&d?pHA$AFQA4Fm7iylI&WqIk!v)?i`xBBc7VM#5N*0ogi-Y$ z?s(%&&nK7O?IL`oZr_&QlJ#<|&cBQh0iJ%DPX+M+xsNi|8lw;jNq2Y0&y9xOemzrD zC^9FNQ`PKM7<6cfv=51{$0)RYRM(%cL{A2XL6daI0IcCqml+&6%sES6ifD)LQ>uu4${CkvlMo27bq>7Ku!&Lf>#&>0 zfVhj$-Rr}n_;D}D%$FBcL2XA(PKIs%L&_wkV|($`WNcdxj-52?LHLGXYRE7881 z=Ew<&+Q@g6|IT_W_ijA<*luL5JJzShP)uYujybu|fao#WkybF9av##Ofi2ZHDzo+D$2 zHWBOB6FR;zBj3OBV_6fvG0ls&`7}0MXp&^A=k&shw?qUw{v2~X*2#Fj*6ONsUeL|v zq1?p5GnMeAt9qcNdoHEZdbOaO-^!1^J|3dXIwdW=*Y4GDMp~aiabre98gUC*zZ`s1 zw(+Tn4p;I*io>2?DSMHWuMEiX3&bF3c zviDFfumpM}i#_)tu@8TZ0m!Z3-xdhKoWKr9$zBeEeX zID!DzO`=o7jM?cSDOx6K1X6@z4Nh=n7VqvFAS-j!=l-uy zxOhmvy5`jTvxq*cHj(7Kr?k}8aOTBK?vBfkZZOq@Mt?hEo|ZJl%62?QuWlxB5WnnY-l{Q1YN9e)pZWW;vXony|Y-^~~}eRYcA=W-oxQwGnZN$l_F zHtzbrdT459^jTFlUfW1}xA9=fYT7dQQ86<>52N5ke{IAYvNY(t^PRTUx9?Y45qVym z;;KYyT*O4z@v!*ar}v}m`M#_Jv}zx+S0Oi*z@-IzHgB$fr$9qIoQw!4|3zcXMojro zG`^Dzt-iue;`*jB3qj)^_`=$No6-*4aZep2C&d(*mH{Q~YH7DVHr8F=pAz36CjeG=32**QL8Qhji zTPB>kzb;IzQh%qmA8m29eK;{`w)#5KP2lV+CW&V3e#0mDUx!PV(Ss$ZktroPJ;lQ{ z;LM>s#m&i#{HE6<#lp#;)0uLsU7k=p&B|DV>DQK+SRUzSiPphH^Uz;nqSS#3^NyY? zS9H6iE!=_5`NB3A*zD$srf$ceH#__%q! z*Zvke7JtUDYd+iKcN38Tu+n#8`J{(#VCce2oqzHKq7?&G3kH;K>&cWwI>%Wmx%%P$b^H`3d3QR z1m1&SiEPhd*37&>MfAU`AJGY5rA%P*KN8KvlYEwn3;-wq(ErPXoc{s3vQoi5vw&dO z7(_5h7FOUf=HKK0rEC*xdMWyt?= zTL3`dUm$6s{|};sl@j4TSpp{e=Z6CTg8u^B!alMQ!9Jp6Jh?n0telAy#=(XIWTt+a nf(q6_f&S;qVP0&cz~DbkvV^Elkpcj~dwPC89fp4}{CWF-&hn*! delta 6829 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