3<                              ' + + +   2  2 2  +   &   '      O  O  O    +    !"# +$% +&'( )*+,- ./0 o1 2 3456789:; <=>?@A B CDEFGHI JKL +M NO +PQR STUVWX +Y Z[ {\]^_`a {bcdefghijklmnopqrst uvwxy z { | }~   {  $ & .@  cn0Lorg/dataone/integration/adapters/CNCallAdapter;mnsLjava/util/List; Signature5Ljava/util/List;v1mnsv2mnsv1v2mns LOG_AGG_WAITJ ConstantValue()VCodeLineNumberTableLocalVariableTablethis\Lorg/dataone/integration/it/testImplementations/LogAggregationFunctionalTestImplementations;getTestDescription()Ljava/lang/String;setup(Ljava/util/Iterator;)Vn#Lorg/dataone/service/types/v1/Node;i$Ljava/util/Iterator;eLjava/lang/Exception;service&Lorg/dataone/service/types/v1/Service;cap serviceListe1v1mn0Lorg/dataone/integration/adapters/MNCallAdapter;v2mnv1capabilitiesv2capabilitiesmNodecnItercnListmnListLocalVariableTypeTable8Ljava/util/List;9Ljava/util/Iterator; StackMapTableCC<(Ljava/util/Iterator;)VgetMNCallAdapterD(Ljava/lang/String;)Lorg/dataone/integration/adapters/MNCallAdapter;certificateFilenameLjava/lang/String;testMnGetLogRecords_AccesslogEntry'Lorg/dataone/service/types/v2/LogEntry;publicPidFoundZtestPersonPidFoundtestRightsHolderPidFounderr errorString mnCnCallermnPublicCallermnTestPersonCallermnTestRightsHolderCallerpublicAccessRule)Lorg/dataone/service/types/v1/AccessRule;testPersonAccessRuletestRightsHolderAccessRule publicPid)Lorg/dataone/service/types/v1/Identifier; testPersonPidtestRightsHolderPidisLjava/io/InputStream;errorsLjava/util/ArrayList; publicLog"Lorg/dataone/service/types/v2/Log; testPersonLogtestRightsHolderLogcnLogPublicPidcnLogTestPersonPidcnLogTestRightsHolderPid)Ljava/util/ArrayList; #%0RuntimeVisibleAnnotations-Lorg/dataone/integration/webTest/WebTestName;value!getLogRecords() user-based access4Lorg/dataone/integration/webTest/WebTestDescription;Tests that an authenticated user may only view their own records or public records, and that a CN caller may view all records. Note: allowing access to more than the CN is optional for an MN, so authentication failures for non-CN subjects are ignored.testMnQuery_Access&Ljava/io/UnsupportedEncodingException;sysmetaPublicObj-Lorg/dataone/service/types/v2/SystemMetadata;sysmetaTestPersonObjsysmetaTestRightsHolderObjpublicPidEncodedtestPersonPidEncodedtestRightsHolderPidEncodedpublicQueryPublicObjpublicQueryPersonObjpublicQueryRightsHolderObjpublicObjContents LogContents InnerClassesALorg/dataone/integration/ContextAwareTestCaseDataone$LogContents;personObjContentsrightsHolderObjContentstestPersonQueryPublicObjtestPersonQueryPersonObjtestPersonQueryRightsHolderObjtestRightsHolderQueryPublicObjtestRightsHolderQueryPersonObj$testRightsHolderQueryRightsHolderObjcnQueryPublicObjcnQueryPersonObjcnQueryRightsHolderObjUquery() user-based access~Tests that an authenticated user may only view their own records or public records, and that a CN caller may view all records.testCnGetLogRecords_AggregatingmnIdpidiImn logRecordsnumMNs skippedMNsmnCallAdapterspids*Ljava/util/ArrayList;GLjava/util/ArrayList;'getLogRecords() create on MN read on CNwTests the getLogRecords() call. After creating objects on MNs and waiting, verifies that logs are aggregated on the CN.testQuery_Params queryContents pidEncodedtitle titleEncodedauthor authorEncodedqueryResult_idqueryResult_titlequeryResult_authorqueryResult_pidTitleAuthorquery() parametersTests the query() call with different parameters - verifies that a handful of parameters work for filtering down on the created object.testCnGetLogRecords_Access publicObjPidtestPersonObjPidtestRightsHolderObjPid Ljava/lang/InterruptedException;publicLogRecordstestPersonLogRecordstestRightsHolderLogRecordsmnIds.getLogRecords() create on MN test access on CNTests the getLogRecords() call. Assumes that aggregation works, sothe testCnGetLogRecords_Aggregating test should be working. After creating objects on MNs and waiting, verifies that logs returned are based on the identity of the caller. SourceFile0LogAggregationFunctionalTestImplementations.java sRuns create/read/etc methods agains MNs in the environment and verifies that the corresponding logs end up on a CN.java/util/ArrayList       0Test requires at least one CN, but got zero CNs.   java/lang/StringBuilder Using CN  !org/dataone/service/types/v1/Node  for tests  .org/dataone/integration/adapters/CNCallAdapter = v2          java/lang/Exceptionjava/lang/AssertionError#Unable to fetch node list from CN:  .org/dataone/integration/adapters/MNCallAdapterv1    $org/dataone/service/types/v1/ServiceMNCore     )Unable to assess v1 capabilities for MN:  :    )Unable to assess v2 capabilities for MN: MNs available: MN: yTest requires that the environment has at least one MN to work with that supports logging for CN log aggregation. Found: only v1 MN available for use! () Glibclient used by tests calls the /v1/log and /v2/log endpoint with theIidFilter parameter. The v1 MN may still be using the pidFilter parameter! =Not enough (responsive) MNs to test with in this environment.  :;public testPersontestRightsHolder'org/dataone/service/types/v1/AccessRule       !testMnGetLogRecords_Access_public  %testMnGetLogRecords_Access_testPerson+testMnGetLogRecords_Access_testRightsHolder   LtestMnGetLogRecords_Access: Unable to get or create a test object with pid:  ,  java/lang/InterruptedException ,org/dataone/service/exceptions/NotAuthorized 1 Unable to fetch Log records for public subject. UExpected a NotAuthorized (only CN or MN admin should have access) but got exception: 5 Unable to fetch Log records for testPerson subject. ; Unable to fetch Log records for testRightsHolder subject. - Unable to fetch Log records for CN subject. Got exception:  %org/dataone/service/types/v2/LogEntry IPublic subject should have access to public-accessible object we created.QPublic subject should NOT have access to testPerson-accessible object we created.WPublic subject should NOT have access to testRightsHolder-accessible object we created.MtestPerson subject should have access to public-accessible object we created.QtestPerson subject should have access to testPerson-accessible object we created.[testPerson subject should NOT have access to testRightsHolder-accessible object we created.StestRightsHolder subject should have access to public-accessible object we created.[testRightsHolder subject should NOT have access to testPerson-accessible object we created.]testRightsHolder subject should have access to testRightsHolder-accessible object we created. CN subject ( ?) should have access to public-accessible object we created on . pid: C) should have access to testPerson-accessible object we created on I) should have access to testRightsHolder-accessible object we created on java/lang/String $testMnGetLogRecords_Access ran into  errors: testMnQuery_Access_public_testMnQuery_Access_testPerson_$testMnQuery_Access_testRightsHolder_ !procured test object:  on "#$DtestMnQuery_Access: Unable to get or create a test object with pid: %&failed to fetch sysmetaUTF-8' ()$java/io/UnsupportedEncodingException=testMnQuery_Access() unable to encode identifiers using UTF-8solr q=identifier: *+ ,-/, Unable to run solr query for public subject. .fQuery run by public subject should retrieve a positive result count for public-created object. For MN . pid: fQuery run by public subject should retrieve a zero result count for testPerson-created object. For MN lQuery run by public subject should retrieve a zero result count for testRightsHolder-created object. For MN /ZQuery run by public subject should retrieve result docs for public-created object. For MN bQuery run by public subject should NOT retrieve result docs for testPerson-created object. For MN hQuery run by public subject should NOT retrieve result docs for testRightsHolder-created object. For MN 3, Unable to run solr query for testPerson subject. jQuery run by testPerson subject should retrieve a positive result count for public-created object. For MN nQuery run by testPerson subject should retrieve a positive result count for testPerson-created object. For MN pQuery run by testPerson subject should retrieve a zero result count for testRightsHolder-created object. For MN ^Query run by testPerson subject should retrieve result docs for public-created object. For MN bQuery run by testPerson subject should retrieve result docs for testPerson-created object. For MN lQuery run by testPerson subject should NOT retrieve result docs for testRightsHolder-created object. For MN 9, Unable to run solr query for testRightsHolder subject. pQuery run by testRightsHolder subject should retrieve a positive result count for public-created object. For MN xQuery run by testRightsHolder subject should NOT retrieve a positive result count for testPerson-created object. For MN zQuery run by testRightsHolder subject should retrieve a positive result count for testRightsHolder-created object. For MN dQuery run by testRightsHolder subject should retrieve result docs for public-created object. For MN lQuery run by testRightsHolder subject should NOT retrieve result docs for testPerson-created object. For MN nQuery run by testRightsHolder subject should retrieve result docs for testRightsHolder-created object. For MN 6Unable to run solr query for testRightsHolder subject. 01Query run by CN subject (G) should retrieve a positive result count for public-created object on ;) should retrieve result docs for public-created object on testMnQuery_Access ran into 2 3: 4) testCnGetLogRecords_Aggregating__obj22org/dataone/integration/adapters/CommonCallAdapter5 67QtestCnGetLogRecords_Aggregating: Unable to get or create a test object with pid:  on MN  (mn #) 8GtestCnGetLogRecords_Aggregating: Should be able to get record for pid:  on originating mn 9call adapter: ?testCnGetLogRecords_Aggregating: Unable to get record for pid: MtestCnGetLogRecords_Aggregating: waiting for log aggregation: (4.0 minutes)> testCnGetLogRecords_Aggregating: unable to fetch log records for pid  Got exception: :>testCnGetLogRecords_Aggregating: getLogRecords() call for pid ? should have a total number of results greater than zero on CN (waited ; minutes for log aggregation)1 should contain more than zero log entries on CN )testCnGetLogRecords_Aggregating ran into BtestQuery_Params: Unable to get or create a test object with pid: `"PISCO: Physical Oceanography: moored temperature data: Terrace Point, California, USA (TPT001)""Margaret McManus".testQuery_Params() unable to encode parametersIquery made by as CN should return some results when filtering on pid for 3 Unable to run solr query with params: identifier. q=title:Kquery made by as CN should return some results when filtering on title for . Unable to run solr query with params: title.  q=author:Lquery made by as CN should return some results when filtering on author for / Unable to run solr query with params: author.  &q=title: &q=author:cquery made by as CN should return some results when filtering on identifier, title, and author for B Unable to run solr query with params: identifier, title, author. testQuery_Params ran into #"testCnGetLogRecords_Access_public_&testCnGetLogRecords_Access_testPerson_,testCnGetLogRecords_Access_testRightsHolder_HtestCnGetLogRecords_Access: Unable to get or create a test object on MN HtestCnGetLogRecords_Access: waiting for log aggregation: (4.0 minutes)!log aggregation wait interrupted!!getLogRecords run by CN subject (J) should retrieve a positive number of results for public-created object (N) should retrieve a positive number of results for testPerson-created object (T) should retrieve a positive number of results for testRightsHolder-created object ($testCnGetLogRecords_Access ran into Zorg/dataone/integration/it/testImplementations/LogAggregationFunctionalTestImplementations3org/dataone/integration/ContextAwareTestCaseDataonejava/util/Iteratorjava/util/List'org/dataone/service/types/v1/Identifierjava/io/InputStreamjava/lang/Throwable org/dataone/service/types/v2/Log?org/dataone/integration/ContextAwareTestCaseDataone$LogContents+org/dataone/service/types/v2/SystemMetadata,org/apache/commons/collections/IteratorUtilstoList&(Ljava/util/Iterator;)Ljava/util/List;size()Iorg/junit/Assert assertTrue(Ljava/lang/String;Z)Vlog Lorg/apache/commons/logging/Log;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;get(I)Ljava/lang/Object; getBaseURLtoStringorg/apache/commons/logging/Loginfo(Ljava/lang/Object;)V cnSubmitter getSessionA(Ljava/lang/String;)Lorg/dataone/client/rest/MultipartRestClient;e(Lorg/dataone/client/rest/MultipartRestClient;Lorg/dataone/service/types/v1/Node;Ljava/lang/String;)V listNodes)()Lorg/dataone/service/types/v2/NodeList;%org/dataone/service/types/v2/NodeList getNodeList()Ljava/util/List;iterator()Ljava/util/Iterator;hasNext()Znext()Ljava/lang/Object;getType)()Lorg/dataone/service/types/v1/NodeType;%org/dataone/service/types/v1/NodeTypeMN'Lorg/dataone/service/types/v1/NodeType;add(Ljava/lang/Object;)ZgetNodeBaseServiceUrl*(Ljava/lang/String;Ljava/lang/Throwable;)Vping()Ljava/util/Date;getCapabilities%()Lorg/dataone/service/types/v1/Node; getServices)()Lorg/dataone/service/types/v1/Services;%org/dataone/service/types/v1/ServicesgetServiceListgetNameequals getVersion getAvailable()Ljava/lang/Boolean;java/lang/Boolean booleanValuejava/lang/ObjectgetClass()Ljava/lang/Class;java/lang/Class getSimpleName getMessage(I)Ljava/lang/StringBuilder;warn)org/dataone/client/v1/types/D1TypeBuilder buildSubject:(Ljava/lang/String;)Lorg/dataone/service/types/v1/Subject; addSubject)(Lorg/dataone/service/types/v1/Subject;)V'org/dataone/service/types/v1/PermissionCHANGE_PERMISSION)Lorg/dataone/service/types/v1/Permission; addPermission,(Lorg/dataone/service/types/v1/Permission;)V getSubjectbuildIdentifier=(Ljava/lang/String;)Lorg/dataone/service/types/v1/Identifier;procureTestObject(Lorg/dataone/integration/adapters/CommonCallAdapter;Lorg/dataone/service/types/v1/AccessRule;Lorg/dataone/service/types/v1/Identifier;)Lorg/dataone/service/types/v1/Identifier;f(Lorg/dataone/service/types/v1/Session;Lorg/dataone/service/types/v1/Identifier;)Ljava/io/InputStream;org/apache/commons/io/IOUtils closeQuietly(Ljava/io/InputStream;)VgetValuejava/lang/Threadsleep(J)V getLogRecords(Lorg/dataone/service/types/v1/Session;Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;)Lorg/dataone/service/types/v2/Log;getLatestRequestUrl*(Ljava/lang/Object;Ljava/lang/Throwable;)VgetLogEntryList getIdentifier+()Lorg/dataone/service/types/v1/Identifier;$org/dataone/service/types/v1/Subject(Lorg/dataone/integration/adapters/CommonCallAdapter;Lorg/dataone/service/types/v1/AccessRule;Lorg/dataone/service/types/v1/Identifier;Ljava/lang/String;Ljava/lang/String;Lorg/dataone/service/types/v1/ReplicationPolicy;)Lorg/dataone/service/types/v1/Identifier; getNodeId.()Lorg/dataone/service/types/v1/NodeReference;*org/dataone/service/types/v1/NodeReferencegetSystemMetadata~(Lorg/dataone/service/types/v1/Session;Lorg/dataone/service/types/v1/Identifier;)Lorg/dataone/service/types/v2/SystemMetadata;java/net/URLEncoderencode8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;querya(Lorg/dataone/service/types/v1/Session;Ljava/lang/String;Ljava/lang/String;)Ljava/io/InputStream;getNumQueryContentsX(Ljava/io/InputStream;)Lorg/dataone/integration/ContextAwareTestCaseDataone$LogContents; existingLogs docsReturned handleFail'(Ljava/lang/String;Ljava/lang/String;)V(I)Vcontains replaceAlljava/lang/IntegervalueOf(I)Ljava/lang/Integer;error-(Ljava/lang/Object;)Ljava/lang/StringBuilder;getTotal(D)Ljava/lang/StringBuilder;!      /*  -+ *Y*Y*Y*Y+ M ,  Y,*Y,YN* :!&":#$ -%W֧(:'YY(*)*- :!":+Y,-:+Y-::: .W/:  01:  :  !> "2: 3 45", 65 78  :A: Y9:; <=; >.W/:  01:  :  !> "2: 3 45" 65 78  : A: Y?:; <=; ># * %W* %W@*%W*%W  * %W* %W Y@* A* :!1": YB˻YC* A*  &E&PS&:1 23!4,617D9p:<>?@?CABEF,G?IBJEMKNRO\P{QTUW[XY^_`a!bFeJfMhPlSiUjnopqrstuvxz{:|\~-#{, eE RX! \N" <# !,  E X! N" U<# ,$%?&%B'E( ):$8*1\+,-4\N". N". */1\+,0@12341234d32)B5$2a 1233267766632AB5=632AB5=$12332-27k8123389:;* +Y+*-* +Y+*-* W YD*EFGH+Y+*,-'YIJ" '3NZ<=0'&_>*KL*LKM*MKN*NK:OYP:LQRSTOYP:MWMURSTOYP:NWNURSTVW:XW: YW: : *+Z:+[:  \M: 'YY]^_ <=; > *:  \ *+ Z: + [:  \M: 'YY] ^_ <=; > *: \*+ Z: + [:  \M: 'YY] ^_ <=; > *: \`b: Y: : ,^d: G:B: Y,fgh<=;>i:- ^d:G:B: Y-fjh<=;>i: ^d:H:C: Yfkh<=;>i:::+^d:B:'YY+flm<=;>*+ ^d:B:'YY+flm<=;>*+ ^d:B:'YY+flm<=;>* 666 n :!B"o:pq6p q6p q6  rsW  tsW  usW666n :!B"o:pq6p q6p q6  vsW  wsW  xsW666n :!B"o:pq6p q6p q6  ysW  zsW  {sW6@n8n :!""o:pq6B Y|U}~+:^sW6@n8n :!""o:p q6B Y|U}+: ^sW6@n8n :!""o:p q6B Y|U}+: ^sW k: :!-":Y:ϻ'YY AJ& & UWU_s{&_s{ce&7HKe7HP&e& &HY\&&'19BHRZcis{ U_jsx{}47HKMPR  HY\^   +.;>KNQV^c k!p"x%}&'(*+,-./01234567:; < =?2@?ABBOCRD_EbFeGjHrIwJKLOPQRSRUVYZ%[G\T]W\Z__`cdefgfij'm/n3oPpnqs(7> > }> =R=> =^==0?@IABCB|DB0?@IABCB|DB20?@I AB CB|DB?@)G?@1)?@)PE=:43dF=G%H%I%zJ%'qKLBVMLc5NLOPQP RP ST UV WX 7aYXZX[X\X]X ABCBDB- U^ 0A 17777___```a5b [5b [5b Hc17777___```adefD5>17777___```adeefD5>17777___```adeeefD5?17777___```adeeeeee5>S5>S5>17777___```adeeeeee2%g 17777___```adeeeeee2%g 17777___```adeeeeee2%g 2%C2%C2%C423(hijskljsmn$ +*KL*LKM*MKN*NK:OYP:LQRSTOYP:MWMURSTOYP:NWNURSTW:W: W: *+L: Y^+C: 'YY^_ <=; > *MW*+ MU}: Y ^+C: 'YY ^_ <=; > *NW*+ NU}: Y ^+C: 'YY ^_ <=; > *: : : +: + : + : : i:::^: ^: ^::'Y*Y:::::::,Y::,Y::,Y::@:'YY,fm<=;>J1Y,:^sW1Y,: ^sW1Y,: ^sW1Y,:^sW1Y,: ^sW1Y,: ^sW:::-Y::-Y::-Y::@:'YY-fm<=;>J1Y-:^sW1Y-: ^sW1Y-: ^sW1Y-:^sW1Y-: ^sW1Y-: ^sW:::Y::Y::Y::A:'YYfm<=;>J2Y:^sW2Y: ^sW2Y: ^sW2Y:^sW2Y: ^sW2Y: ^sW::: +Y::+Y::+Y:  ::!*+fBYU}+:^sWBYU}+:^sWk:!:""!-"":#Y!#:!ϻ'YYA!J &]`&&7RU&l(+&!$& &  &^z{|}'19BHRZcis{/]`b.147@IRUWcfilx!(+-hp @Hv~!$&ai 9Ao w   "^f !#$( ):+B,q.y/345789:; < ? = "> ,B 4C sQ {R [ \ ] ^ _ *a-> b> > W  #o-;&;"< " ! E=# 4" dF=! + #G% H% I% J%' KLB MLc NL OP QP RP 1pq 4rq 7sq ft=iu=lv=UV~wT{xTxyTuz~r~o~|TyTvTTT}TT}TzT - U^0X) 17777___```5?M5?M5?&17777___```5 /17777___```444 17777___```444daaa5<555555w17777___```444daaaaaa5<555555z17777___```444daaaaaaaaa5=666666w!17777___```444daaaaaaaaaaaa5 FF423(hijsljs o* <YMYN* :!]":**-+Y-sW-+Y,-sWOYP:LQRSTY:6-+:Y¶W:^sW*-ZWp: ,ĶsW YŶ^ƶ-+:ǶAȶ_ <=; > 4`b:6 ,Ķʙ:-+:W:^d: Y˶^̶-+:  n n  v: YͶ Yζ-Ͷ'YY϶^̶-+:* йѸb:Y:6>,Ķʙ):*:W: 'YY*Զնֶ׶ <=; > * ؚIYٶڶ*)۶ܶ߶sWnn IYٶ*)۶ܶ߶sWk::!-": Y :ϻ'YYAJ &c #&c&?i jkl<mXnqpqstuwz{|} {z #%AaER 'En<K&dk =Pn%MX %qP R #XA'E= 4 dF=o e]VTVKLVUV-*]T^U^0 &1dd216'_d[ 1dd_d4`5lHcw 1dd_d`7e8 1dd_d`7e81dd_d`5rRc d 1dd_dde5S EE423(hijsljsP*KLOYPM,LQR,STWN*+,-ZWB:'YY-^_<=;>*:::::-^:::: 'Y *Y: : +Y:  :   Y+fsW \P:  Y+fm <=; >sW \ :  \ : +Y:  :   Y+fsW \P:  Y+fm <=; >sW \ :  \ : +Y:  :   Y+fsW \P:  Y+fm <=; >sW \ : \: +Y:  : Y+fsW \P: Y+fm<=;>sW \ : \ k: :!-":Y:ϻ'YY AJ&.1& &N FNNPN[&[CK&CK&B:BBDB.K &.13pswz~      FKNX[x!"#'$C)H*K%M&)*):<?@AFGBC:F?GBFLNTOXPuQRU3= o $~  9 $~ 9 $~ M9 $~9uE=_4XdF=G%KL&PsJ=wF=zC=~?=<=UV T [bT T "T - U^ 0117_`5>0 17_`44444 SdaG5Bb JaG5Bb JaG5Bb ^aG5Bb 423(hijsljs* <YMYNY:* :!<":-+Y,-sW,sWOYP:LQRSTOYP:MWMURSTOYP:NWNURST6: : : ,: Y W: Y W: Y W: *- ZW*- ZW*- ZW8: ĶsW Y-+: * Ѹb: iY:6   Ķʙ: : : , : Y W:Y W:Y W:*^: *^: *^: E:'YY*Զն׶<=;>* nC n 6YU}^ȶsW nC n 6YU}^ȶsW nC n 6YU}^ȶsW /k: :  !- ": Y  : ϻ'YYA Jnq&cN&F] ^_`%aFb\cpdsf|ghijklmnoprstuxyz{8}J~\nqs~r5Nbv,_t.F*0C= s3 P P P  @X X X = P5rPNYP E= 4 dF=   VV%V|KLMLfNLHUV-* ^%HU^001ddd2B_ 1ddd___ 1ddd___```54Rc d1ddd___deee4```5AGGG 1ddd___d423(hijsljs} {|