3z l  k k      k k k k     k    . k  k      C C .   k k '  k   ! k" #$ %&' k()*+,-. k/01 k234568(Lorg/dataone/integration/ContextAwareTestCaseDataone;)VCodeLineNumberTableLocalVariableTablethisaLorg/dataone/integration/it/testImplementations/MNSystemMetadataChangedMethodTestImplementations;catc5Lorg/dataone/integration/ContextAwareTestCaseDataone;testSystemMetadataChanged)(Ljava/util/Iterator;Ljava/lang/String;)V nodeIteratorLjava/util/Iterator;versionLjava/lang/String;LocalVariableTypeTable9Ljava/util/Iterator; StackMapTable SignatureN(Ljava/util/Iterator;Ljava/lang/String;)VRuntimeVisibleAnnotations-Lorg/dataone/integration/webTest/WebTestName;value>systemMetadataChanged - tests that systemMetadataChanged works4Lorg/dataone/integration/webTest/WebTestDescription;kthis test poses as CNs from 3 different environments, all making a call to the MN. The MN is supposed to reply before scheduling it's own call to the CN. MNs should return 'true' if the object is on their node. The test checks that only one CN returns success ('true'), but allows for one CN to throw an InvalidRequest exception if the object is not on that node.8(Lorg/dataone/service/types/v1/Node;Ljava/lang/String;)Ve/Lorg/dataone/service/exceptions/InvalidRequest;.Lorg/dataone/service/exceptions/NotAuthorized;Ljava/lang/Exception; cNodeSession0Lorg/dataone/integration/adapters/MNCallAdapter;iI afterCreateLjava/util/Date;successinvReqnotAuthotherobjectIdentifierpid)Lorg/dataone/service/types/v1/Identifier;smd-Lorg/dataone/service/types/v2/SystemMetadata;.Lorg/dataone/service/exceptions/BaseException;node#Lorg/dataone/service/types/v1/Node; certLabels[Ljava/lang/String; cNodeSessions1[Lorg/dataone/integration/adapters/MNCallAdapter;mn currentUrl57 %testSystemMetadataChanged_EarlierDateGsystemMetadataChanged - tests with a date before the last modified datethis test tries calling systemMetadataChanged with a date that is earlier than the existing last-modified date on the system metadata, making sure no exception is thrown as a resultmodDate.testSystemMetadataChanged_authenticatedITKuser1systemMetadataChanged - tests with non-CN subjectxthis test tries calling systemMetadataChanged with a non-CN subject, making sure it results in a NotAuthorized exception dataPackage[Ljava/lang/Object;$testSystemMetadataChanged_withCreateOsystemMetadataChanged - tests systemMetadataChanged together with create methodthis test first calls create to produce a new object, then calls systemMetadataChanged with the new object's identifier, making sure no exception is throwncca'testSystemMetadataChanged_NotAuthPuplic9systemMetadataChanged - NotAuthorized without certificatevthis test systemMetadataChanged without a certificate, making sure a NotAuthorized or InvalidToken exception is thrown-testSystemMetadataChanged_NotAuthRightsHolderGsystemMetadataChanged - NotAuthorized with the rightsHolder certificaterthis test systemMetadataChanged with the rightsHolder certificate, making sure a NotAuthorized exception is thrown$testSystemMetadataChanged_InvalidPid/systemMetadataChanged - NotFound with bogus pidbthis test systemMetadataChanged with a bogus pid, making sure a InvalidRequest exception is thrown SourceFile5MNSystemMetadataChangedMethodTestImplementations.java mn8 9: ;<!org/dataone/service/types/v1/Node vjava/lang/String cnDevUNM1 cnDevUNM2 cnSandboxORC1 cnStageUNM1.org/dataone/integration/adapters/MNCallAdapter => m?testRightsHolder @Ajava/lang/StringBuilder mB&testSystemMetadataChanged() vs. node: CD EA FG TierTesting: HI :Public_READ JA tuK LMN OP QRjava/util/Date ST7 UV WX YZsuccess with cert : [ \]-org/dataone/service/exceptions/InvalidRequestInvalidRequest with cert : ,org/dataone/service/exceptions/NotAuthorizedNotAuthorized with cert : java/lang/ExceptionException with cert : ^Aunexpected exception: systemMetadataChanged should only throw InvalidRequestor NotAuthorized exceptions if the service is not failing. Got: _ `a Cb: cA debthe test should return at least one success, InvalidRequest, or InvalidRequest each round success= Cf , invReq= , notAuth=, other= gh success = InvalidRequest = NotAuthorized = other = Wthe test should only return success or InvalidRequest for one CN (environment) success=ssystemMetadataChanged() will likely fail because the object is probably new and not synced, and not known to the CN,org/dataone/service/exceptions/BaseExceptioni jA kA lA mB nA o{ pV mq  testPerson2testSystemMetadataChanged_authITKuser() vs. node:  mNodeTier3r st'org/dataone/service/types/v1/Identifierjava/io/InputStream+org/dataone/service/types/v1/SystemMetadata uv4Expect an ITK client to receive NotAuthorized, got: wAmNodeTier3TestDeletex yq8This call to create should not throw an exception, got: "org/dataone/service/util/Constantspublic4testSystemMetadataChanged_NotAuthPuplic() vs. node: bogusPid+org/dataone/service/exceptions/InvalidTokenThis call to systemMetadataChanged should throw a NotAuthorized or InvalidToken exception if called without a certificate. Got: :testSystemMetadataChanged_NotAuthRightsHolder() vs. node: |This call to systemMetadataChanged should throw a NotAuthorized exception if called with the rightsHolder certificate. Got: 1testSystemMetadataChanged_InvalidPid() vs. node: lThis call to systemMetadataChanged should throw a InvalidRequest exception if called with a bogus pid. Got: _org/dataone/integration/it/testImplementations/MNSystemMetadataChangedMethodTestImplementations.org/dataone/integration/it/ContextAwareAdapter+org/dataone/service/types/v2/SystemMetadatajava/util/IteratorhasNext()Znext()Ljava/lang/Object; getSessionA(Ljava/lang/String;)Lorg/dataone/client/rest/MultipartRestClient;e(Lorg/dataone/client/rest/MultipartRestClient;Lorg/dataone/service/types/v1/Node;Ljava/lang/String;)VgetNodeBaseServiceUrl()Ljava/lang/String;()Vappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;toStringprintTestHeader(Ljava/lang/String;)VcreateNodeAbbreviation&(Ljava/lang/String;)Ljava/lang/String;getTestObjectSeriesSuffix)org/dataone/client/v1/types/D1TypeBuilderbuildIdentifier=(Ljava/lang/String;)Lorg/dataone/service/types/v1/Identifier;3org/dataone/integration/ContextAwareTestCaseDataoneprocurePublicReadableTestObject(Lorg/dataone/integration/adapters/CommonCallAdapter;Lorg/dataone/service/types/v1/Identifier;)Lorg/dataone/service/types/v1/Identifier;getSystemMetadata~(Lorg/dataone/service/types/v1/Session;Lorg/dataone/service/types/v1/Identifier;)Lorg/dataone/service/types/v2/SystemMetadata;getTime()JgetDateUploaded()Ljava/util/Date;systemMetadataChangedc(Lorg/dataone/service/types/v1/Session;Lorg/dataone/service/types/v1/Identifier;JLjava/util/Date;)Zlog Lorg/apache/commons/logging/Log;org/apache/commons/logging/Loginfo(Ljava/lang/Object;)VgetLatestRequestUrljava/lang/ObjectgetClass()Ljava/lang/Class;-(Ljava/lang/Object;)Ljava/lang/StringBuilder; getMessage handleFail'(Ljava/lang/String;Ljava/lang/String;)V(I)Ljava/lang/StringBuilder; checkTrue((Ljava/lang/String;Ljava/lang/String;Z)Vjava/lang/Class getSimpleNamegetDetail_codegetDescriptionprintStackTracegetName cnSubmittergetDateSysMetadataModified(J)V(org/dataone/integration/ExampleUtilitiesgenerateTestSciDataPackage((Ljava/lang/String;Z)[Ljava/lang/Object;create(Lorg/dataone/service/types/v1/Session;Lorg/dataone/service/types/v1/Identifier;Ljava/io/InputStream;Lorg/dataone/service/types/v1/SystemMetadata;)Lorg/dataone/service/types/v1/Identifier; getBaseURLjava/lang/Threadsleep!klmno>*+p qrstuvwo}+*+,p2 34q rsxyz{| x}~ssvouYSYSY SY SN Y Y*-2 +, SY Y*-2 +, SY Y*-2 +, SY Y*-2 +, S: Y* +, ::*YY**:*:: Y  ! e"Y: 6 6 6 66)2:$ &W'Y(-2) :'Y+-2) y:'Y--2) S:'Y/-2)*0Y123456*0Y7 89 8: 8;8  ` `<ղ'Y= 8)'Y> 8)'Y? 8)'Y@8)*0YA 89 8: 8;8  `<*0B6o:*0Y2D4E4F62:G*Y2H456NQ*Nw,N.CE.p;89'::;M<`=k?|@ADEFGIJMOPQ R STV-WKXNfQYSZq[tfw\y]^f_`abebh8S>oZpvqru{| )?BEGLtqS!y!N.      A{1'  8G-ursuuz{\k |{~@eeOF  B|.wo}+*+,Ip q rsxyz{| x}~sso  Y**J +, N-:*YY*-*:*-:-K:-$Y LeN&Wn:*-0Y2D4E4F62:G*Y2H4560C0.pN0>MXgsqf X6{g's7-rsz{{~ {.wo}+*+,Op q rsxyz{| x}~sso Y*P +, N-:*YQRS:-2T2U2VW:Y:-$&Wx:s:*-0YX2D4E4F62:G*Y2H456.hk,.hpC.h.pR.6R[hkmprqf 62R[ r<-rsz{{~&kD@.wo}+*+,Yp q rsxyz{| x}~sso+ZN Y**J +, :N*Y-[S:2T2U2VW:"\Y:$&Ws:*0Y]2D4E4F61:G*-Y2H4565wzC5w.pR5=Z`iwz|qf =:Zi|=,rsz{{~"zA-wo}+*+,^p q rsxyz{| x}~sso+ZN Y*` +, :N*Ya-b$Y&W|:w:*0Yd2D4E4F65:*0Yd2D4563ILc3IL,3IQC3I.pJ  3 ILNQSgqHS=0rsz{{~&LDA1wo}+*+,ep" #$q rsxyz{| x}~sso+ZN Y* +, :N*Yf-b$Y&W|:w:*0Yg2D4E4F65:*0Yg2D4563IL,3IQC3I.pJ()*+3.I<L0N<Q3S4g64<89;9=qHS=0rsz{{~&LDA1wo}+*+,hpC DEq rsxyz{| x}~sso+ZN Y**J +, :N*Yi-b$Y&W|:w:*0Yj2D4E4F65:*0Yj2D4565KN*5KSC5K.pJIJKL5OK]NQP]STUUiWU]YZ\Z^qHU=0rsz{{~&NDA1