Build Logs

nationalarchives/dr2-preservica-client • 3.8.0-RC6:2026-01-08

Errors

45

Warnings

2

Total Lines

565

1##################################
2Clonning https://github.com/nationalarchives/dr2-preservica-client.git into /build/repo using revision v0.0.154
3##################################
4Note: switching to '81598aeebf42345d415a013f9a0f06ac6de87c69'.
5
6You are in 'detached HEAD' state. You can look around, make experimental
7changes and commit them, and you can discard any commits you make in this
8state without impacting any branches by switching back to a branch.
9
10If you want to create a new branch to retain commits you create, you may
11do so (now or later) by using -c with the switch command. Example:
12
13 git switch -c <new-branch-name>
14
15Or undo this operation with:
16
17 git switch -
18
19Turn off this advice by setting config variable advice.detachedHead to false
20
21Would override fixed Scala version: 3.7.3
22----
23Preparing build for 3.8.0-RC6
24Scala binary version found: 3.8
25Implicitly using source version 3.8
26Scala binary version found: 3.8
27Implicitly using source version 3.8
28Would try to apply common scalacOption (best-effort, sbt/mill only):
29Append: ,REQUIRE:-source:3.8
30Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
31
32Try apply source patch:
33Path: build.sbt
34Pattern: val scala3Version = "3.7.3"
35Replacement: val scala3Version = "3.8.0-RC6"
36Starting compilation server
37Compiling project (Scala 3.7.3, JVM (17))
38Compiled project (Scala 3.7.3, JVM (17))
39Successfully applied pattern 'val scala3Version = "3.7.3"' in build.sbt
40----
41Starting build for 3.8.0-RC6
42Execute tests: true
43sbt project found:
44No prepare script found for project nationalarchives/dr2-preservica-client
45##################################
46Scala version: 3.8.0-RC6
47Targets: uk.gov.nationalarchives%preservica-client-fs2 uk.gov.nationalarchives%preservica-client-root
48Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3Version = \"3.7.3\"","replaceWith":"val scala3Version = \"<SCALA_VERSION>\""}]}
49##################################
50Using extra scalacOptions: ,REQUIRE:-source:3.8
51Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
52[sbt_options] declare -a sbt_options=()
53[process_args] java_version = '17'
54[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
55# Executing command line:
56java
57-Dfile.encoding=UTF-8
58-Dcommunitybuild.scala=3.8.0-RC6
59-Dcommunitybuild.project.dependencies.add=
60-Xmx7G
61-Xms4G
62-Xss8M
63-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
64-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8
65-jar
66/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
67"setCrossScalaVersions 3.8.0-RC6"
68"++3.8.0-RC6 -v"
69"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
70"set every credentials := Nil"
71"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
72"removeScalacOptionsStartingWith -P:wartremover"
73
74moduleMappings
75"runBuild 3.8.0-RC6 """{"projects":{"exclude":[],"overrides":{}},"java":{},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3Version = \"3.7.3\"","replaceWith":"val scala3Version = \"<SCALA_VERSION>\""}]}""" uk.gov.nationalarchives%preservica-client-fs2 uk.gov.nationalarchives%preservica-client-root"
76
77[info] [launcher] getting org.scala-sbt sbt 1.11.6 (this may take some time)...
78[info] welcome to sbt 1.11.6 (Eclipse Adoptium Java 17.0.8)
79[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
80[info] loading project definition from /build/repo/project
81[info] compiling 3 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
82[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
83[info] Compilation completed in 8.655s.
84[info] done compiling
85[info] loading settings for project root from build.sbt, version.sbt...
86[info] set current project to preservica-client-root (in build file:/build/repo/)
87Execute setCrossScalaVersions: 3.8.0-RC6
88OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in fs2/crossScalaVersions
89OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in docs/crossScalaVersions
90OpenCB::Changing crossVersion 3.8.0-RC6 -> 3.8.0-RC6 in root/crossScalaVersions
91[info] set current project to preservica-client-root (in build file:/build/repo/)
92[info] Setting Scala version to 3.8.0-RC6 on 3 projects.
93[info] Switching Scala version on:
94[info] * root (3.8.0-RC6)
95[info] fs2 (3.8.0-RC6)
96[info] docs (3.8.0-RC6)
97[info] Excluding projects:
98[info] Reapplying settings...
99[info] set current project to preservica-client-root (in build file:/build/repo/)
100Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
101[info] Reapplying settings...
102[info] set current project to preservica-client-root (in build file:/build/repo/)
103[info] Defining Global / credentials, credentials and 1 others.
104[info] The new values will be used by Compile / scalafmtOnly, Global / pgpSelectPassphrase and 23 others.
105[info] Run `last` for details.
106[info] Reapplying settings...
107[info] set current project to preservica-client-root (in build file:/build/repo/)
108Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
109[info] Reapplying settings...
110OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
111
112 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
113 Did you mean allExcludeDependencies ?
114 , retry without global scopes
115[info] Reapplying settings...
116[info] set current project to preservica-client-root (in build file:/build/repo/)
117Execute removeScalacOptionsStartingWith: -P:wartremover
118[info] Reapplying settings...
119[info] set current project to preservica-client-root (in build file:/build/repo/)
120[success] Total time: 0 s, completed Jan 8, 2026, 2:04:38 AM
121Build config: {"projects":{"exclude":[],"overrides":{}},"java":{},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[{"path":"build.sbt","pattern":"val scala3Version = \"3.7.3\"","replaceWith":"val scala3Version = \"<SCALA_VERSION>\""}]}
122Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
123Starting build...
124Projects: Set(fs2, root)
125Starting build for ProjectRef(file:/build/repo/,fs2) (preservica-client-fs2)... [0/2]
126OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
127OpenCB::Filter out '-Werror', matches setting pattern '^-?-Werror'
128OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
129Compile scalacOptions: -Wunused:imports, -Xmax-inlines, 50, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
130[info] compiling 12 Scala sources to /build/repo/target/scala-3.8.0-RC6/classes ...
131[info] done compiling
132[info] compiling 1 Scala source to /build/repo/fs2/target/scala-3.8.0-RC6/classes ...
133[info] done compiling
134[info] compiling 10 Scala sources to /build/repo/target/scala-3.8.0-RC6/test-classes ...
135[info] done compiling
136[info] compiling 8 Scala sources to /build/repo/fs2/target/scala-3.8.0-RC6/test-classes ...
137[info] done compiling
138SLF4J: No SLF4J providers were found.
139SLF4J: Defaulting to no-operation (NOP) logger implementation
140SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
141[info] Fs2UserClientTest:
142[info] resetPassword
143[info] - should return an exception if API returns an error
144[info] resetPassword
145[info] - should pass the correct credentials to the API
146[info] resetPassword
147[info] - should return an error if the old and new password are equal
148[info] resetPassword
149[info] - should return an error if the old and new password are equal, but have different letter casing
150[info] resetPassword
151[info] - should return an error if the old and new password are equal, even if they have leading/trailing spaces
152[info] resetPassword
153[info] - should return an error if the current password is empty
154[info] resetPassword
155[info] - should return an error if the new password is empty
156[info] resetPassword
157[info] - should return an error if the new password has fewer than 15 characters
158[info] testNewPassword
159[info] - should call secrets manager for the pending secret
160[info] testNewPassword
161[info] - should call the Preservica auth url with the pending password
162[info] testNewPassword
163[info] - should return an error if secrets manager returns an error
164[info] testNewPassword
165[info] - should return an error if Preservica returns an error
166[info] Fs2EntityClientTest:
167[info] addEntity
168[info] - should make a correct request with a predefined reference to add an entity
169[info] addEntity
170[info] - should make a correct request without a predefined reference to add an entity
171[info] addEntity
172[info] - should make a correct request with the object details inside a XIP node if entity path to add is an 'information object'
173[info] addEntity
174[info] - should return an error if a content-object entity path was passed in
175[info] addEntity
176[info] - should return an error if a non-structural object was passed in without a parent
177[info] addEntity
178[info] - should return a message confirmation if the object got added
179[info] addEntity
180[info] - should return an exception if the API call does
181[info] updateEntity
182[info] - should make a correct request to update the title and description
183[info] updateEntity
184[info] - should make a correct request to update the title
185[info] updateEntity
186[info] - should return an error if a non-structural object was passed in without a parent
187[info] updateEntity
188[info] - should return a message confirmation if the object got updated
189[info] updateEntity
190[info] - should return an exception if the API call does
191[info] getBitstreamInfo
192[info] - should call the correct API endpoints and return the bitstream info
193[info] getBitstreamInfo
194[info] - should return an error if no generations are available
195[info] getBitstreamInfo
196[info] - should return an error if the server is unavailable
197[info] streamBitstreamContent
198[info] - should stream content to the provided function *** FAILED ***
199[info] sttp.client3.SttpClientException$ReadException: Exception when sending request: GET http://localhost:9002/api/entity/v7.7/content-objects/a9e1cae8-ea06-4157-8dd4-82d0525b031c/generations/1/bitstreams/1/content
200[info] at sttp.client3.SttpClientExceptionExtensions.defaultExceptionToSttpClientException(SttpClientExceptionExtensions.scala:25)
201[info] at sttp.client3.SttpClientExceptionExtensions.defaultExceptionToSttpClientException$(SttpClientExceptionExtensions.scala:9)
202[info] at sttp.client3.SttpClientException$.defaultExceptionToSttpClientException(SttpClientException.scala:24)
203[info] at sttp.client3.HttpClientAsyncBackend.adjustExceptions$$anonfun$1(HttpClientAsyncBackend.scala:202)
204[info] at sttp.client3.SttpClientException$$anon$1.applyOrElse(SttpClientException.scala:35)
205[info] at sttp.client3.SttpClientException$$anon$1.applyOrElse(SttpClientException.scala:34)
206[info] at cats.ApplicativeError.recoverWith$$anonfun$1(ApplicativeError.scala:172)
207[info] at delay @ sttp.client3.impl.cats.CatsMonadError.eval(CatsMonadError.scala:19)
208[info] at delay @ sttp.client3.impl.cats.CatsMonadAsyncError.async$$anonfun$1(CatsMonadAsyncError.scala:10)
209[info] at map @ sttp.client3.impl.cats.CatsMonadAsyncError.async$$anonfun$1(CatsMonadAsyncError.scala:10)
210[info] ...
211[info] Cause: java.io.IOException: Can't get stream 1: java.io.IOException: /127.0.0.1:49164: GOAWAY received
212[info] at java.net.http/jdk.internal.net.http.Exchange.lambda$checkForUpgradeAsync$13(Exchange.java:539)
213[info] at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1187)
214[info] at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2309)
215[info] at java.net.http/jdk.internal.net.http.Exchange.lambda$checkForUpgradeAsync$14(Exchange.java:526)
216[info] at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
217[info] at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
218[info] at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
219[info] at java.net.http/jdk.internal.net.http.ResponseSubscribers.lambda$getBodyAsync$2(ResponseSubscribers.java:1157)
220[info] at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
221[info] at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
222[info] ...
223[info] Cause: java.io.IOException: /127.0.0.1:49164: GOAWAY received
224[info] at java.net.http/jdk.internal.net.http.Http2Connection.handleGoAway(Http2Connection.java:1008)
225[info] at java.net.http/jdk.internal.net.http.Http2Connection.handleConnectionFrame(Http2Connection.java:873)
226[info] at java.net.http/jdk.internal.net.http.Http2Connection.processFrame(Http2Connection.java:748)
227[info] at java.net.http/jdk.internal.net.http.frame.FramesDecoder.decode(FramesDecoder.java:155)
228[info] at java.net.http/jdk.internal.net.http.Http2Connection$FramesController.processReceivedData(Http2Connection.java:232)
229[info] at java.net.http/jdk.internal.net.http.Http2Connection.asyncReceive(Http2Connection.java:674)
230[info] at java.net.http/jdk.internal.net.http.Http2Connection$Http2TubeSubscriber.processQueue(Http2Connection.java:1310)
231[info] at java.net.http/jdk.internal.net.http.common.SequentialScheduler$LockingRestartableTask.run(SequentialScheduler.java:205)
232[info] at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:149)
233[info] at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:230)
234[info] ...
235[info] streamBitstreamContent
236Warning: Unable to serialize throwable of type sttp.client3.SttpClientException$ReadException for TestFailed(Ordinal(0, 114),Exception when sending request: GET http://localhost:9002/api/entity/v7.7/content-objects/a9e1cae8-ea06-4157-8dd4-82d0525b031c/generations/1/bitstreams/1/content,Fs2EntityClientTest,uk.gov.nationalarchives.dp.client.fs2.Fs2EntityClientTest,Some(uk.gov.nationalarchives.dp.client.fs2.Fs2EntityClientTest),streamBitstreamContent should stream content to the provided function,should stream content to the provided function,Vector(),Vector(),Some(sttp.client3.SttpClientException$ReadException: Exception when sending request: GET http://localhost:9002/api/entity/v7.7/content-objects/a9e1cae8-ea06-4157-8dd4-82d0525b031c/generations/1/bitstreams/1/content),Some(33),Some(IndentedText(- should stream content to the provided function,should stream content to the provided function,1)),Some(SeeStackDepthException),Some(uk.gov.nationalarchives.dp.client.fs2.Fs2EntityClientTest),None,pool-1-thread-1-ScalaTest-running-Fs2EntityClientTest,1767834335449), setting it as NotSerializableWrapperException.
237Warning: Unable to read from client, please check on client for further details of the problem.
238[info] - should return an error if the server is unavailable
239[info] metadataForEntity
240[info] - should return the correct metadata for a CO
241[info] metadataForEntity
242[info] - should return the correct metadata for an IO
243[info] metadataForEntity
244[info] - should return 'standard' metadata if the Entity type in the request is not an IO nor CO
245[info] metadataForEntity
246[info] - should return an empty list when the object has no fragments
247[info] metadataForEntity
248[info] - should return an error if even one metadata response element is empty
249[info] metadataForEntity
250[info] - should return an error if the server is unavailable
251[info] metadataForEntity
252[info] - should return an error if the entity path is empty
253[info] entitiesUpdatedSince
254[info] - should return an entity if one was updated since the datetime specified
255[info] entitiesUpdatedSince
256[info] - should return hasNext false if there is no Next element in the response
257[info] entitiesUpdatedSince
258[info] - should return an entity, with hasNext set to true, if the entity is before the end date specified
259[info] entitiesUpdatedSince
260[info] - should return an empty list if none have been updated
261[info] entitiesUpdatedSince
262[info] - should return an error if the request is malformed
263[info] entityEventActions
264[info] - should return all paginated values in reverse chronological order (most recent EventAction first)
265[info] entityEventActions
266[info] - should return an error if the request is malformed
267[info] entityEventActions
268[info] - should return an error if the entity path is empty
269[info] entitiesByIdentifiers
270[info] - should return a complete entity if it has the identifier specified *** FAILED ***
271[info] sttp.client3.SttpClientException$ReadException: Exception when sending request: GET http://localhost:9002/api/entity/v7.7/entities/by-identifier?type=testIdentifier1&value=testValue1
272[info] at sttp.client3.SttpClientExceptionExtensions.defaultExceptionToSttpClientException(SttpClientExceptionExtensions.scala:25)
273[info] at sttp.client3.SttpClientExceptionExtensions.defaultExceptionToSttpClientException$(SttpClientExceptionExtensions.scala:9)
274[info] at sttp.client3.SttpClientException$.defaultExceptionToSttpClientException(SttpClientException.scala:24)
275[info] at sttp.client3.HttpClientAsyncBackend.adjustExceptions$$anonfun$1(HttpClientAsyncBackend.scala:202)
276[info] at sttp.client3.SttpClientException$$anon$1.applyOrElse(SttpClientException.scala:35)
277[info] at sttp.client3.SttpClientException$$anon$1.applyOrElse(SttpClientException.scala:34)
278[info] at cats.ApplicativeError.recoverWith$$anonfun$1(ApplicativeError.scala:172)
279[info] at delay @ sttp.client3.impl.cats.CatsMonadError.eval(CatsMonadError.scala:19)
280[info] at delay @ sttp.client3.impl.cats.CatsMonadAsyncError.async$$anonfun$1(CatsMonadAsyncError.scala:10)
281[info] at map @ sttp.client3.impl.cats.CatsMonadAsyncError.async$$anonfun$1(CatsMonadAsyncError.scala:10)
282[info] ...
283[info] Cause: java.io.IOException: /127.0.0.1:40246: GOAWAY received
284[info] at java.net.http/jdk.internal.net.http.Http2Connection.handleGoAway(Http2Connection.java:1008)
285[info] at java.net.http/jdk.internal.net.http.Http2Connection.handleConnectionFrame(Http2Connection.java:873)
286[info] at java.net.http/jdk.internal.net.http.Http2Connection.processFrame(Http2Connection.java:748)
287[info] at java.net.http/jdk.internal.net.http.frame.FramesDecoder.decode(FramesDecoder.java:155)
288[info] at java.net.http/jdk.internal.net.http.Http2Connection$FramesController.processReceivedData(Http2Connection.java:232)
289[info] at java.net.http/jdk.internal.net.http.Http2Connection.asyncReceive(Http2Connection.java:674)
290[info] at java.net.http/jdk.internal.net.http.Http2Connection$Http2TubeSubscriber.processQueue(Http2Connection.java:1310)
291[info] at java.net.http/jdk.internal.net.http.common.SequentialScheduler$LockingRestartableTask.run(SequentialScheduler.java:205)
292[info] at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:149)
293[info] at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:230)
294[info] ...
295Warning: Unable to serialize throwable of type sttp.client3.SttpClientException$ReadException for TestFailed(Ordinal(0, 182),Exception when sending request: GET http://localhost:9002/api/entity/v7.7/entities/by-identifier?type=testIdentifier1&value=testValue1,Fs2EntityClientTest,uk.gov.nationalarchives.dp.client.fs2.Fs2EntityClientTest,Some(uk.gov.nationalarchives.dp.client.fs2.Fs2EntityClientTest),entitiesByIdentifiers should return a complete entity if it has the identifier specified,should return a complete entity if it has the identifier specified,Vector(),Vector(),Some(sttp.client3.SttpClientException$ReadException: Exception when sending request: GET http://localhost:9002/api/entity/v7.7/entities/by-identifier?type=testIdentifier1&value=testValue1),Some(1045),Some(IndentedText(- should return a complete entity if it has the identifier specified,should return a complete entity if it has the identifier specified,1)),Some(SeeStackDepthException),Some(uk.gov.nationalarchives.dp.client.fs2.Fs2EntityClientTest),None,pool-1-thread-1-ScalaTest-running-Fs2EntityClientTest,1767834346150), setting it as NotSerializableWrapperException.
296Warning: Unable to read from client, please check on client for further details of the problem.
297[info] entitiesByIdentifiers
298[info] - should return two entities if they both have the same identifier
299[info] entitiesByIdentifiers
300[info] - should return an empty list if no entities have the identifiers specified
301[info] entitiesByIdentifiers
302[info] - should return an error if the request is malformed
303[info] addIdentifierForEntity
304[info] - should make a correct request to add an identifier to an Entity
305[info] addIdentifierForEntity
306[info] - should return an exception if the API call does
307[info] addIdentifierForEntity
308[info] - should return a message confirmation if the Identifier was added
309[info] getEntity
310[info] - should return the requested entity
311[info] getEntity
312[info] - should return an error if the returned entity has a different entity type
313[info] getEntity
314[info] - should return an error if the entity is not found
315[info] getEntity
316[info] - should return the entity if the first call fails but the second succeeds
317[info] updateEntityIdentifiers
318[info] - should not send a request if no identifiers are passed
319[info] updateEntityIdentifiers
320[info] - should send a request to Preservica for each identifier
321[info] updateEntityIdentifiers
322[info] - should return an error if the entity path is missing
323[info] updateEntityIdentifiers
324[info] - should return an error if the update request returns an error
325[info] getEntityIdentifiers
326[info] - should return an empty list if there are no identifiers
327[info] getEntityIdentifiers
328[info] - should return the identifiers for an entity
329[info] getEntityIdentifiers
330[info] - should return an error if the entity path is missing
331[info] getEntityIdentifiers
332[info] - should return an error if the get request returns an error
333[info] getUrlsToIoRepresentations
334[info] - should return an empty list if there are no representations
335[info] getUrlsToIoRepresentations
336[info] - should return the url of a Preservation representation
337[info] getUrlsToIoRepresentations
338[info] - should return a url for each representation if 'representationType' filter passed in, was 'None'
339[info] getUrlsToIoRepresentations
340[info] - should return an error if the get request returns an error
341[info] getContentObjectsFromRepresentation
342[info] - should return an empty list if there are no representations
343[info] getContentObjectsFromRepresentation
344[info] - should return the Content Objects of a Preservation Representation
345[info] getContentObjectsFromRepresentation
346[info] - should return an error if the get request returns an error
347[info] getPreservicaNamespaceVersion
348[info] - should extract and return the version, as a float, from a namespace
349[info] streamAllEntityRefs
350[info] - should recursively collect and return the correct entityRefs
351[info] streamAllEntityRefs
352[info] - should return an error if the get request returns an error
353[info] Fs2WorkflowClientTest:
354[info] startWorkflow
355[info] - should return an exception if a request has both workflowContextName and workflowContextId set to None
356[info] startWorkflow
357[info] - should make a correct full request to start a workflow
358[info] startWorkflow
359[info] - should make a request without the '<WorkflowContextName>' node but with these nodes: <WorkflowContextId>, <Parameter>, <CorrelationId> if the corresponding property was not passed in
360[info] startWorkflow
361[info] - should make a request without the '<WorkflowContextId>' node but with these nodes: <WorkflowContextName>, <Parameter>, <CorrelationId> if the corresponding property was not passed in
362[info] startWorkflow
363[info] - should make a request without the '<Parameter>' node but with these nodes: <WorkflowContextName>, <WorkflowContextId>, <CorrelationId> if the corresponding property was not passed in
364[info] startWorkflow
365[info] - should make a request without the '<CorrelationId>' node but with these nodes: <WorkflowContextName>, <WorkflowContextId>, <Parameter> if the corresponding property was not passed in
366[info] startWorkflow
367[info] - should return the 'Id' of the Workflow if the request was successful
368[info] startWorkflow
369[info] - should return an exception if the API call does
370[info] Fs2ContentClientTest:
371[info] search
372[info] - should search using the parameters passed to the method
373[info] search
374[info] - should call the API multiple times if there are multiple pages
375[info] search
376[info] - should return an error if the API returns an error
377[info] Fs2ValidateXmlAgainstXsdTest:
378[info] xmlStringIsValid
379[info] - should return 'true' if the XIP xml string that was passed in was valid
380[info] xmlStringIsValid
381[info] - should throw a 'SAXParseException' if the XIP xml string that was passed in, did not have a namespace
382[info] xmlStringIsValid
383[info] - should throw a 'SAXParseException' if the XIP xml string that was passed in, has an unexpected namespace
384[info] xmlStringIsValid
385[info] - should throw a 'SAXParseException' if the XIP xml string that was passed in, contains an unexpected element
386[info] xmlStringIsValid
387[info] - should throw a 'SAXParseException' if the XIP xml string that was passed in, is missing an expected element
388[info] xmlStringIsValid
389[info] - should return 'true' if the OPEX xml string that was passed in was valid
390[info] xmlStringIsValid
391[Fatal Error] :1:20: The prefix "opex" for element "opex:OPEXMetadata" is not bound.
392[info] - should throw a 'SAXParseException' if the OPEX xml string that was passed in, did not have a namespace
393[info] xmlStringIsValid
394[Fatal Error] :1:65: The prefix "opex" for element "opex:OPEXMetadata" is not bound.
395[info] - should throw a 'SAXParseException' if the OPEX xml string that was passed in, has an unexpected namespace
396[info] xmlStringIsValid
397[Fatal Error] :7:11: The element type "InformationObject" must be terminated by the matching end-tag "</InformationObject>".
398[info] - should throw a 'SAXParseException' if the OPEX xml string that was passed in, contains an unexpected element
399[info] xmlStringIsValid
400[info] - should throw a 'SAXParseException' if the XIP xml string that was passed in, is missing a matching tag
401[info] xmlStringIsValid
402[Fatal Error] :1:1: Premature end of file.
403[info] - should throw a 'SAXParseException' if the XIP xml string that was passed in was empty
404[info] xmlStringIsValid
405[Fatal Error] :7:11: The element type "InformationObject" must be terminated by the matching end-tag "</InformationObject>".
406[info] - should throw a 'SAXParseException' if the OPEX xml string that was passed in, is missing a matching tag
407[info] xmlStringIsValid
408[Fatal Error] :1:1: Premature end of file.
409[info] - should throw a 'SAXParseException' if the OPEX xml string that was passed in was empty
410[info] Fs2EntityTest:
411[info] fromType
412[info] - should return an object with path Some(information-objects) for entity type IO
413[info] fromType
414[info] - should return an object with path Some(content-objects) for entity type CO
415[info] fromType
416[info] - should return an object with path Some(structural-objects) for entity type SO
417[info] fromType
418[info] - should return an object with path None for entity type UnexpectedEntityType
419[info] Fs2DataProcessorTest:
420[info] childNodeFromEntity
421[info] - should return the node requested even if it is lowercase
422[info] childNodeFromEntity
423[info] - should return an error if child node does not exist
424[info] fragmentUrls
425[info] - should return fragments
426[info] fragmentUrls
427[info] - should return an empty list when there are no fragments
428[info] fragments
429[info] - should return multiple fragments
430[info] fragments
431[info] - should return an error if there is no content
432[info] generationUrlFromEntity
433[info] - should return a generation url
434[info] generationUrlFromEntity
435[info] - should raise an error if the generation url is not found
436[info] allGenerationUrls
437[info] - should return a sequence of generation urls
438[info] allGenerationUrls
439[info] - should return an error if there are no generation urls
440[info] generationType
441[info] - should return the 'Original' generation type if the generation's 'original' attribute is 'true'
442[info] generationType
443[info] - should return an error if the generation has no attributes
444[info] generationType
445[info] - should return an error if the generation's 'original' attribute is not present
446[info] generationType
447[info] - should return an error if the generation's 'original' attribute is neither 'true' nor 'false'
448[info] allBitstreamUrls
449[info] - should return the correct urls
450[info] allBitstreamInfo
451[info] - should return the correct bitstream information
452[info] getNextPage
453[info] - should return the next page
454[info] getNextPage
455[info] - should return empty if there is no next page
456[info] getEntities
457[info] - should return the correct entity objects
458[info] getEventActions
459[info] - should return the correct event actions using the date value from the 'Event'
460[info] getEntity
461[info] - should return the full entity if all fields are provided
462[info] getEntity
463[info] - should return deleted false if the deleted tag is missing
464[info] getEntity
465[info] - should return a missing security tag if it isn't set to open, unknown or closed
466[info] getEntity
467[info] - should return a missing parent, title and description if they aren't set
468[info] getEntity
469[info] - should return an error if the entity type in the response doesn't match
470[info] getEntityXml
471[info] - should return the full entity if all fields are provided
472[info] getEntityXml
473[info] - should return an error if the entity type in the response doesn't match
474[info] getEntityXml
475[info] - should return an error if the entity type in the response doesn't exist
476[info] childNodeFromWorkflowInstance
477[info] - should return the node requested
478[info] childNodeFromWorkflowInstance
479[info] - should return an error if child node does not exist
480[info] getIdentifiers
481[info] - should return an empty list if there are no identifiers
482[info] getIdentifiers
483[info] - should return the identifiers
484[info] getUrlsToIoRepresentations
485[info] - should return an empty list if there are no representations
486[info] getUrlsToIoRepresentations
487[info] - should return the url of a Preservation representation
488[info] getUrlsToIoRepresentations
489[info] - should return all urls of representations if 'representationType' filter passed in, was 'None'
490[info] getContentObjectsFromRepresentation
491[info] - should return an empty list if there are no content objects
492[info] getContentObjectsFromRepresentation
493[info] - should return a list of Content Objects belonging to the representation
494[info] getPreservicaNamespaceVersion
495[info] - should extract version number from namespace
496[info] getEntityLinksXml
497[info] - should extract the links from the 'LinksResponse'
498[info] getEntityLinksXml
499[info] - should return an empty list if there missing attributes in the links
500[info] getEntityLinksXml
501[info] - should return an empty list if there are no links
502[info] getEventActionElements
503[info] - should extract the EventActions from the 'EventActionsResponse'
504[info] getRepresentationElement
505[info] - should extract the Representation from the 'RepresentationResponse'
506[info] getGenerationElement
507[info] - should extract the Generation from the 'GenerationsResponse'
508[info] Fs2ProcessMonitorClientTest:
509[info] getMonitors
510[info] - should return an exception if the name does not start with 'opex'
511[info] getMonitors
512[info] - should make an empty body request
513[info] getMonitors
514[info] - should make an request for multiple statuses and categories if multiple are provided
515[info] getMonitors
516[info] - should return the monitor if the request was successful
517[info] getMonitors
518[info] - should return an exception if the API call does
519[info] getMessages
520[info] - should make an empty body request
521[info] getMessages
522[info] - should make an request for multiple mappedMonitorId and statuses if multiple are provided
523[info] getMessages
524[info] - should return only one page of messages if the request was successful and the first page's responsedid not include a url to the next page
525[info] getMessages
526[info] - should return 2 pages of messages if the request was successful and the first page's responseincludes a url to the next page *** FAILED ***
527[info] 6 did not equal 4 (ProcessMonitorClientTest.scala:402)
528[info] getMessages
529[info] - should return an exception if the API call does
530Starting build for ProjectRef(file:/build/repo/,root) (preservica-client-root)... [1/2]
531Compile scalacOptions: -Wunused:imports, -Xmax-inlines, 50, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
532[info] PreservicaClientExceptionTest:
533[info] creating an exception with http details
534[info] - should create the correct message
535[info] creating an exception with a message only
536[info] - should create the correct message
537
538************************
539Build summary:
540[{
541 "module": "preservica-client-fs2",
542 "compile": {"status": "ok", "tookMs": 18849, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
543 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
544 "test-compile": {"status": "ok", "tookMs": 13057, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
545 "test": {"status": "failed", "tookMs": 41096, "passed": 152, "failed": 3, "ignored": 0, "skipped": 0, "total": 155, "byFramework": [{"framework": "unknown", "stats": {"passed": 152, "failed": 3, "ignored": 0, "skipped": 0, "total": 155}}]},
546 "publish": {"status": "skipped", "tookMs": 0},
547 "metadata": {
548 "crossScalaVersions": ["3.7.3"]
549}
550},{
551 "module": "preservica-client-root",
552 "compile": {"status": "ok", "tookMs": 58, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
553 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
554 "test-compile": {"status": "ok", "tookMs": 121, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
555 "test": {"status": "ok", "tookMs": 971, "passed": 2, "failed": 0, "ignored": 0, "skipped": 0, "total": 2, "byFramework": [{"framework": "unknown", "stats": {"passed": 2, "failed": 0, "ignored": 0, "skipped": 0, "total": 2}}]},
556 "publish": {"status": "skipped", "tookMs": 0},
557 "metadata": {
558 "crossScalaVersions": ["3.7.3"]
559}
560}]
561************************
562[error] Scala3CommunityBuild$ProjectBuildFailureException: 1 module(s) finished with failures: preservica-client-fs2
563[error] (Global / runBuild) Scala3CommunityBuild$ProjectBuildFailureException: 1 module(s) finished with failures: preservica-client-fs2
564[error] Total time: 86 s (0:01:26.0), completed Jan 8, 2026, 2:06:04 AM
565[0JBuild failed, not retrying.