Build Logs
akka/alpakka • scheduled_3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY
Errors
28
Warnings
664
Total Lines
1153
1##################################
2Clonning https://github.com/akka/alpakka.git into /build/repo using revision v6.0.2
3##################################
4Note: switching to '00c6b6099c9557c5a67125ffd012557f93ccc329'.
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.2.2
22----
23Preparing build for 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY
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: project/Dependencies.scala
34Pattern: libraryDependencies :=
35Replacement: libraryDependencies ++=
36Starting compilation server
37Compiling project (Scala 3.7.3, JVM (17))
38Compiled project (Scala 3.7.3, JVM (17))
39Successfully applied pattern 'libraryDependencies := ' in project/Dependencies.scala
40
41Try apply source patch:
42Path: project/Dependencies.scala
43Pattern: val Scala3 = "3.2.2"
44Replacement: val Scala3 = "3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY"
45Successfully applied pattern 'val Scala3 = "3.2.2"' in project/Dependencies.scala
46----
47Starting build for 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY
48Execute tests: false
49sbt project found:
50Sbt version 1.9.1 is not supported, minimal supported version is 1.11.5
51Enforcing usage of sbt in version 1.11.5
52No prepare script found for project akka/alpakka
53##################################
54Scala version: 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY
55Targets: com.lightbend.akka%akka-stream-alpakka-amqp com.lightbend.akka%akka-stream-alpakka-avroparquet com.lightbend.akka%akka-stream-alpakka-cassandra com.lightbend.akka%akka-stream-alpakka-csv com.lightbend.akka%akka-stream-alpakka-s3
56Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"compile-only","migrationVersions":[],"sourcePatches":[{"path":"project/Dependencies.scala","pattern":"libraryDependencies := ","replaceWith":"libraryDependencies ++= "},{"path":"project/Dependencies.scala","pattern":"val Scala3 = \"3.2.2\"","replaceWith":"val Scala3 = \"<SCALA_VERSION>\""}]}
57##################################
58Using extra scalacOptions: ,REQUIRE:-source:3.8
59Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
60[sbt_options] declare -a sbt_options=()
61[process_args] java_version = '17'
62[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
63# Executing command line:
64java
65-Dfile.encoding=UTF8
66-Xms1g
67-Xss6M
68-Dcommunitybuild.scala=3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY
69-Dcommunitybuild.project.dependencies.add=
70-Xmx7G
71-Xms4G
72-Xss8M
73-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
74-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8
75-jar
76/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
77"setCrossScalaVersions 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY"
78"++3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY -v"
79"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
80"set every credentials := Nil"
81"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
82"removeScalacOptionsStartingWith -P:wartremover"
83
84moduleMappings
85"runBuild 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"compile-only","migrationVersions":[],"sourcePatches":[{"path":"project/Dependencies.scala","pattern":"libraryDependencies := ","replaceWith":"libraryDependencies ++= "},{"path":"project/Dependencies.scala","pattern":"val Scala3 = \"3.2.2\"","replaceWith":"val Scala3 = \"<SCALA_VERSION>\""}]}""" com.lightbend.akka%akka-stream-alpakka-amqp com.lightbend.akka%akka-stream-alpakka-avroparquet com.lightbend.akka%akka-stream-alpakka-cassandra com.lightbend.akka%akka-stream-alpakka-csv com.lightbend.akka%akka-stream-alpakka-s3"
86
87[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 17.0.8)
88[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
89[info] loading project definition from /build/repo/project
90[info] compiling 7 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
91[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
92[info] Compilation completed in 8.976s.
93[info] done compiling
94[info] loading settings for project alpakka from build.sbt...
95[info] resolving key references (68092 settings) ...
96[info]
97[info] ** Welcome to the sbt build definition for Alpakka! **
98[info]
99[info] Useful sbt tasks:
100[info]
101[info] docs/previewSite - builds Paradox and Scaladoc documentation,
102[info] starts a webserver and opens a new browser window
103[info]
104[info] test - runs all the tests for all of the connectors.
105[info] Make sure to run `docker-compose up` first.
106[info]
107[info] mqtt/testOnly *.MqttSourceSpec - runs a single test
108[info]
109[info] mimaReportBinaryIssues - checks whether this current API
110[info] is binary compatible with the released version
111[info]
112[warn] there's a key that's not used by any other settings/tasks:
113[warn]
114[warn] * avroparquet-tests / mimaPreviousArtifacts
115[warn] +- /build/repo/build.sbt:480
116[warn]
117[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
118[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
119Execute setCrossScalaVersions: 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY
120OpenCB::Changing crossVersion 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY -> 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY in cassandra/crossScalaVersions
121OpenCB::Changing crossVersion 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY -> 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY in avroparquet/crossScalaVersions
122OpenCB::Changing crossVersion 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY -> 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY in amqp/crossScalaVersions
123OpenCB::Changing crossVersion 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY -> 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY in s3/crossScalaVersions
124OpenCB::Limitting incorrect crossVersions List() -> List(2.13.10) in alpakka/crossScalaVersions
125OpenCB::Changing crossVersion 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY -> 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY in csv/crossScalaVersions
126OpenCB::Changing crossVersion 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY -> 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY in testkit/crossScalaVersions
127Build timeouts: 1, would retry
128Retrying build, retry 1/2, force Scala version:false, enable migration:
129[sbt_options] declare -a sbt_options=()
130[process_args] java_version = '17'
131[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
132# Executing command line:
133java
134-Dfile.encoding=UTF8
135-Xms1g
136-Xss6M
137-Dcommunitybuild.scala=3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY
138-Dcommunitybuild.project.dependencies.add=
139-Xmx7G
140-Xms4G
141-Xss8M
142-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
143-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8
144-jar
145/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
146"setCrossScalaVersions 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY"
147"++3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY -v"
148"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
149"set every credentials := Nil"
150"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
151"removeScalacOptionsStartingWith -P:wartremover"
152
153moduleMappings
154"runBuild 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"compile-only","migrationVersions":[],"sourcePatches":[{"path":"project/Dependencies.scala","pattern":"libraryDependencies := ","replaceWith":"libraryDependencies ++= "},{"path":"project/Dependencies.scala","pattern":"val Scala3 = \"3.2.2\"","replaceWith":"val Scala3 = \"<SCALA_VERSION>\""}]}""" com.lightbend.akka%akka-stream-alpakka-amqp com.lightbend.akka%akka-stream-alpakka-avroparquet com.lightbend.akka%akka-stream-alpakka-cassandra com.lightbend.akka%akka-stream-alpakka-csv com.lightbend.akka%akka-stream-alpakka-s3"
155
156[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 17.0.8)
157[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
158[info] loading project definition from /build/repo/project
159[info] loading settings for project alpakka from build.sbt...
160[info] resolving key references (68092 settings) ...
161[info]
162[info] ** Welcome to the sbt build definition for Alpakka! **
163[info]
164[info] Useful sbt tasks:
165[info]
166[info] docs/previewSite - builds Paradox and Scaladoc documentation,
167[info] starts a webserver and opens a new browser window
168[info]
169[info] test - runs all the tests for all of the connectors.
170[info] Make sure to run `docker-compose up` first.
171[info]
172[info] mqtt/testOnly *.MqttSourceSpec - runs a single test
173[info]
174[info] mimaReportBinaryIssues - checks whether this current API
175[info] is binary compatible with the released version
176[info]
177[warn] there's a key that's not used by any other settings/tasks:
178[warn]
179[warn] * avroparquet-tests / mimaPreviousArtifacts
180[warn] +- /build/repo/build.sbt:480
181[warn]
182[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
183[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
184Execute setCrossScalaVersions: 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY
185OpenCB::Changing crossVersion 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY -> 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY in cassandra/crossScalaVersions
186OpenCB::Changing crossVersion 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY -> 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY in avroparquet/crossScalaVersions
187OpenCB::Changing crossVersion 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY -> 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY in amqp/crossScalaVersions
188OpenCB::Changing crossVersion 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY -> 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY in s3/crossScalaVersions
189OpenCB::Changing crossVersion 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY -> 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY in csv/crossScalaVersions
190OpenCB::Limitting incorrect crossVersions List() -> List(2.13.10) in alpakka/crossScalaVersions
191OpenCB::Changing crossVersion 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY -> 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY in testkit/crossScalaVersions
192[info]
193[info] ** Welcome to the sbt build definition for Alpakka! **
194[info]
195[info] Useful sbt tasks:
196[info]
197[info] docs/previewSite - builds Paradox and Scaladoc documentation,
198[info] starts a webserver and opens a new browser window
199[info]
200[info] test - runs all the tests for all of the connectors.
201[info] Make sure to run `docker-compose up` first.
202[info]
203[info] mqtt/testOnly *.MqttSourceSpec - runs a single test
204[info]
205[info] mimaReportBinaryIssues - checks whether this current API
206[info] is binary compatible with the released version
207[info]
208[info] Setting Scala version to 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY on 6 projects.
209[info] Switching Scala version on:
210[info] s3 (2.13.10, 2.12.17, 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY)
211[info] amqp (2.13.10, 2.12.17, 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY)
212[info] csv (2.13.10, 2.12.17, 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY)
213[info] cassandra (2.13.10, 2.12.17, 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY)
214[info] avroparquet (2.13.10, 2.12.17, 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY)
215[info] testkit (2.13.10, 2.12.17, 3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY)
216[info] Excluding projects:
217[info] ftp (2.13.10, 2.12.17)
218[info] reference (2.13.10, 2.12.17)
219[info] spring-web (2.13.10, 2.12.17)
220[info] sns (2.13.10, 2.12.17)
221[info] google-cloud-pub-sub (2.13.10, 2.12.17)
222[info] jms (2.13.10, 2.12.17)
223[info] unix-domain-socket (2.13.10, 2.12.17)
224[info] slick (2.13.10, 2.12.17)
225[info] geode (2.13.10, 2.12.17)
226[info] azure-storage-queue (2.13.10, 2.12.17)
227[info] dynamodb (2.13.10, 2.12.17)
228[info] google-cloud-bigquery-storage (2.13.10, 2.12.17)
229[info] elasticsearch (2.13.10, 2.12.17)
230[info] docs (2.13.10, 2.12.17)
231[info] google-cloud-pub-sub-grpc (2.13.10, 2.12.17)
232[info] text (2.13.10, 2.12.17)
233[info] mqtt (2.13.10, 2.12.17)
234[info] google-cloud-bigquery (2.13.10, 2.12.17)
235[info] huawei-push-kit (2.13.10, 2.12.17)
236[info] mqtt-streaming (2.13.10, 2.12.17)
237[info] influxdb (2.13.10, 2.12.17)
238[info] csv-bench (2.13.10, 2.12.17)
239[info] aws-event-bridge (2.13.10, 2.12.17)
240[info] xml (2.13.10, 2.12.17)
241[info] sqs (2.13.10, 2.12.17)
242[info] json-streaming (2.13.10, 2.12.17)
243[info] google-fcm (2.13.10, 2.12.17)
244[info] doc-examples (2.13.10, 2.12.17)
245[info] pravega (2.13.10, 2.12.17)
246[info] udp (2.13.10, 2.12.17)
247[info] * alpakka (2.13.10)
248[info] mqtt-streaming-bench (2.13.10, 2.12.17)
249[info] simple-codecs (2.13.10, 2.12.17)
250[info] file (2.13.10, 2.12.17)
251[info] google-common (2.13.10, 2.12.17)
252[info] kinesis (2.13.10, 2.12.17)
253[info] mongodb (2.13.10, 2.12.17)
254[info] ironmq (2.13.10, 2.12.17)
255[info] sse (2.13.10, 2.12.17)
256[info] hbase (2.13.10, 2.12.17)
257[info] kudu (2.13.10, 2.12.17)
258[info] google-cloud-storage (2.13.10, 2.12.17)
259[info] avroparquet-tests (2.13.10, 2.12.17)
260[info] orientdb (2.13.10, 2.12.17)
261[info] couchbase (2.13.10, 2.12.17)
262[info] awslambda (2.13.10, 2.12.17)
263[info] solr (2.13.10, 2.12.17)
264[info] hdfs (2.13.10, 2.12.17)
265[info] Reapplying settings...
266[info]
267[info] ** Welcome to the sbt build definition for Alpakka! **
268[info]
269[info] Useful sbt tasks:
270[info]
271[info] docs/previewSite - builds Paradox and Scaladoc documentation,
272[info] starts a webserver and opens a new browser window
273[info]
274[info] test - runs all the tests for all of the connectors.
275[info] Make sure to run `docker-compose up` first.
276[info]
277[info] mqtt/testOnly *.MqttSourceSpec - runs a single test
278[info]
279[info] mimaReportBinaryIssues - checks whether this current API
280[info] is binary compatible with the released version
281[info]
282Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
283[info] Reapplying settings...
284[info]
285[info] ** Welcome to the sbt build definition for Alpakka! **
286[info]
287[info] Useful sbt tasks:
288[info]
289[info] docs/previewSite - builds Paradox and Scaladoc documentation,
290[info] starts a webserver and opens a new browser window
291[info]
292[info] test - runs all the tests for all of the connectors.
293[info] Make sure to run `docker-compose up` first.
294[info]
295[info] mqtt/testOnly *.MqttSourceSpec - runs a single test
296[info]
297[info] mimaReportBinaryIssues - checks whether this current API
298[info] is binary compatible with the released version
299[info]
300[info] Defining Global / credentials, amqp / credentials and 52 others.
301[info] The new values will be used by Global / pgpSelectPassphrase, Global / pgpSigningKey and 269 others.
302[info] Run `last` for details.
303[info] Reapplying settings...
304[info]
305[info] ** Welcome to the sbt build definition for Alpakka! **
306[info]
307[info] Useful sbt tasks:
308[info]
309[info] docs/previewSite - builds Paradox and Scaladoc documentation,
310[info] starts a webserver and opens a new browser window
311[info]
312[info] test - runs all the tests for all of the connectors.
313[info] Make sure to run `docker-compose up` first.
314[info]
315[info] mqtt/testOnly *.MqttSourceSpec - runs a single test
316[info]
317[info] mimaReportBinaryIssues - checks whether this current API
318[info] is binary compatible with the released version
319[info]
320Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
321[info] Reapplying settings...
322OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
323
324 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
325 Did you mean unix-domain-socket / allExcludeDependencies ?
326 , retry without global scopes
327[info] Reapplying settings...
328[info]
329[info] ** Welcome to the sbt build definition for Alpakka! **
330[info]
331[info] Useful sbt tasks:
332[info]
333[info] docs/previewSite - builds Paradox and Scaladoc documentation,
334[info] starts a webserver and opens a new browser window
335[info]
336[info] test - runs all the tests for all of the connectors.
337[info] Make sure to run `docker-compose up` first.
338[info]
339[info] mqtt/testOnly *.MqttSourceSpec - runs a single test
340[info]
341[info] mimaReportBinaryIssues - checks whether this current API
342[info] is binary compatible with the released version
343[info]
344Execute removeScalacOptionsStartingWith: -P:wartremover
345[info] Reapplying settings...
346[info]
347[info] ** Welcome to the sbt build definition for Alpakka! **
348[info]
349[info] Useful sbt tasks:
350[info]
351[info] docs/previewSite - builds Paradox and Scaladoc documentation,
352[info] starts a webserver and opens a new browser window
353[info]
354[info] test - runs all the tests for all of the connectors.
355[info] Make sure to run `docker-compose up` first.
356[info]
357[info] mqtt/testOnly *.MqttSourceSpec - runs a single test
358[info]
359[info] mimaReportBinaryIssues - checks whether this current API
360[info] is binary compatible with the released version
361[info]
362[success] Total time: 0 s, completed Dec 28, 2025, 6:31:17 PM
363Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"compile-only","migrationVersions":[],"sourcePatches":[{"path":"project/Dependencies.scala","pattern":"libraryDependencies := ","replaceWith":"libraryDependencies ++= "},{"path":"project/Dependencies.scala","pattern":"val Scala3 = \"3.2.2\"","replaceWith":"val Scala3 = \"<SCALA_VERSION>\""}]}
364Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),CompileOnly,List()))
365Starting build...
366Projects: Set(s3, amqp, csv, cassandra, avroparquet, testkit)
367Starting build for ProjectRef(file:/build/repo/,amqp) (akka-stream-alpakka-amqp)... [0/6]
368OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
369OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
370OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
371Compile scalacOptions: -encoding, UTF-8, -unchecked, -Xlint, -Ywarn-dead-code, --java-output-version:17, 8, -Wconf:cat=deprecation&msg=.*JavaConverters.*:s, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
372[info] compiling 24 Scala sources to /build/repo/amqp/target/scala-3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY/classes ...
373[warn] Option -Xlint is deprecated: Use -Wshadow to enable shadowing lints. Scheduled for removal.
374[warn] bad option '-Ywarn-dead-code' was ignored
375[warn] two warnings found
376[info] done compiling
377[info] compiling 5 Scala sources to /build/repo/testkit/target/scala-3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY/classes ...
378[warn] Option -Xlint is deprecated: Use -Wshadow to enable shadowing lints. Scheduled for removal.
379[warn] bad option '-Ywarn-dead-code' was ignored
380[warn] two warnings found
381[info] done compiling
382[info] compiling 8 Scala sources and 4 Java sources to /build/repo/amqp/target/scala-3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY/test-classes ...
383[warn] Option -Xlint is deprecated: Use -Wshadow to enable shadowing lints. Scheduled for removal.
384[warn] bad option '-Ywarn-dead-code' was ignored
385[warn] two warnings found
386[info] done compiling
387Starting build for ProjectRef(file:/build/repo/,cassandra) (akka-stream-alpakka-cassandra)... [1/6]
388Compile scalacOptions: -encoding, UTF-8, -unchecked, -Xlint, -Ywarn-dead-code, --java-output-version:17, 8, -Wconf:cat=deprecation&msg=.*JavaConverters.*:s, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
389[info] compiling 15 Scala sources to /build/repo/cassandra/target/scala-3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY/classes ...
390[warn] Option -Xlint is deprecated: Use -Wshadow to enable shadowing lints. Scheduled for removal.
391[warn] bad option '-Ywarn-dead-code' was ignored
392[warn] two warnings found
393[info] done compiling
394[info] compiling 7 Scala sources and 3 Java sources to /build/repo/cassandra/target/scala-3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY/test-classes ...
395[warn] Option -Xlint is deprecated: Use -Wshadow to enable shadowing lints. Scheduled for removal.
396[warn] bad option '-Ywarn-dead-code' was ignored
397[warn] two warnings found
398[info] done compiling
399Starting build for ProjectRef(file:/build/repo/,csv) (akka-stream-alpakka-csv)... [2/6]
400Compile scalacOptions: -encoding, UTF-8, -unchecked, -Xlint, -Ywarn-dead-code, --java-output-version:17, 8, -Wconf:cat=deprecation&msg=.*JavaConverters.*:s, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
401[info] compiling 11 Scala sources and 5 Java sources to /build/repo/csv/target/scala-3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY/classes ...
402[warn] Option -Xlint is deprecated: Use -Wshadow to enable shadowing lints. Scheduled for removal.
403[warn] bad option '-Ywarn-dead-code' was ignored
404[warn] two warnings found
405[info] done compiling
406[info] compiling 6 Scala sources and 3 Java sources to /build/repo/csv/target/scala-3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY/test-classes ...
407[warn] Option -Xlint is deprecated: Use -Wshadow to enable shadowing lints. Scheduled for removal.
408[warn] bad option '-Ywarn-dead-code' was ignored
409[warn] two warnings found
410[info] done compiling
411Starting build for ProjectRef(file:/build/repo/,testkit) (akka-stream-alpakka-testkit)... [3/6]
412Compile scalacOptions: -encoding, UTF-8, -unchecked, -Xlint, -Ywarn-dead-code, --java-output-version:17, 8, -Wconf:cat=deprecation&msg=.*JavaConverters.*:s, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
413Starting build for ProjectRef(file:/build/repo/,s3) (akka-stream-alpakka-s3)... [4/6]
414Compile scalacOptions: -encoding, UTF-8, -unchecked, -Xlint, -Ywarn-dead-code, --java-output-version:17, 8, -Wconf:cat=deprecation&msg=.*JavaConverters.*:s, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
415[info] compiling 26 Scala sources to /build/repo/s3/target/scala-3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY/classes ...
416[warn] Option -Xlint is deprecated: Use -Wshadow to enable shadowing lints. Scheduled for removal.
417[warn] bad option '-Ywarn-dead-code' was ignored
418[warn] -- Warning: /build/repo/s3/src/main/scala/akka/stream/alpakka/s3/javadsl/S3.scala:44:6
419[warn] 44 | def request(bucket: String, key: String, method: HttpMethod, s3Headers: S3Headers): Source[HttpResponse, NotUsed] =
420[warn] | ^
421[warn] | Infinite recursive call
422[warn] |
423[warn] 45 | request(bucket, key, method, s3Headers)
424[warn] three warnings found
425[info] done compiling
426[info] compiling 24 Scala sources and 1 Java source to /build/repo/s3/target/scala-3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY/test-classes ...
427[warn] Option -Xlint is deprecated: Use -Wshadow to enable shadowing lints. Scheduled for removal.
428[warn] bad option '-Ywarn-dead-code' was ignored
429[warn] two warnings found
430[warn] /build/repo/s3/src/test/java/docs/javadsl/S3Test.java:44:8: akka$testkit$TestKitBase$$queue() in akka.testkit.TestKit implements akka$testkit$TestKitBase$$queue() in akka.testkit.TestKitBase
431[warn] return type requires unchecked conversion from java.util.concurrent.LinkedBlockingDeque to java.util.concurrent.LinkedBlockingDeque<akka.testkit.TestActor.Message>
432[warn] public class S3Test extends S3WireMockBase {
433[warn] @Rule public final LogCapturingJunit4 logCapturing = new LogCapturingJunit4();
434[warn]
435[warn] private static ActorSystem system;
436[warn] private static WireMockServer wireMockServerForShutdown;
437[warn]
438[warn] private final S3Settings sampleSettings = S3Ext.get(system()).settings();
439[warn] private final String prefix = listPrefix();
440[warn] private final String delimiter = listDelimiter();
441[warn]
442[warn] @Before
443[warn] public void before() {
444[warn] wireMockServerForShutdown = _wireMockServer();
445[warn] system = system();
446[warn] }
447[warn]
448[warn] @AfterClass
449[warn] public static void afterAll() throws Exception {
450[warn] wireMockServerForShutdown.stop();
451[warn] Http.get(system)
452[warn] .shutdownAllConnectionPools()
453[warn] .thenRun(() -> TestKit.shutdownActorSystem(system));
454[warn] }
455[warn]
456[warn] @Test
457[warn] public void multipartUpload() throws Exception {
458[warn]
459[warn] mockUpload();
460[warn]
461[warn] // #upload
462[warn] final Source<ByteString, NotUsed> file = Source.single(ByteString.fromString(body()));
463[warn]
464[warn] final Sink<ByteString, CompletionStage<MultipartUploadResult>> sink =
465[warn] S3.multipartUpload(bucket(), bucketKey());
466[warn]
467[warn] final CompletionStage<MultipartUploadResult> resultCompletionStage = file.runWith(sink, system);
468[warn] // #upload
469[warn]
470[warn] MultipartUploadResult result =
471[warn] resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
472[warn]
473[warn] assertEquals(
474[warn] MultipartUploadResult.create(
475[warn] Uri.create(url()), bucket(), bucketKey(), etag(), Optional.empty()),
476[warn] result);
477[warn] }
478[warn]
479[warn] @Test
480[warn] public void multipartUploadSSE() throws Exception {
481[warn]
482[warn] mockUploadSSE();
483[warn]
484[warn] final Sink<ByteString, CompletionStage<MultipartUploadResult>> sink =
485[warn] S3.multipartUpload(
486[warn] bucket(),
487[warn] bucketKey(),
488[warn] ContentTypes.APPLICATION_OCTET_STREAM,
489[warn] S3Headers.create().withServerSideEncryption(sseCustomerKeys()));
490[warn]
491[warn] final CompletionStage<MultipartUploadResult> resultCompletionStage =
492[warn] Source.single(ByteString.fromString(body())).runWith(sink, system);
493[warn]
494[warn] MultipartUploadResult result =
495[warn] resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
496[warn]
497[warn] assertEquals(
498[warn] MultipartUploadResult.create(
499[warn] Uri.create(url()), bucket(), bucketKey(), etag(), Optional.empty()),
500[warn] result);
501[warn] }
502[warn]
503[warn] @Test
504[warn] public void download() throws Exception {
505[warn]
506[warn] mockDownload();
507[warn]
508[warn] // #download
509[warn] final Source<ByteString, CompletionStage<ObjectMetadata>> s3Source =
510[warn] S3.getObject(bucket(), bucketKey());
511[warn] final Pair<CompletionStage<ObjectMetadata>, CompletionStage<String>> dataAndMetadata =
512[warn] s3Source.map(ByteString::utf8String).toMat(Sink.head(), Keep.both()).run(system);
513[warn]
514[warn] final CompletionStage<ObjectMetadata> metadataCompletionStage = dataAndMetadata.first();
515[warn] final CompletionStage<String> dataCompletionStage = dataAndMetadata.second();
516[warn]
517[warn] // #download
518[warn]
519[warn] // #downloadToAkkaHttp
520[warn] metadataCompletionStage.thenApply(
521[warn] metadata ->
522[warn] HttpResponse.create()
523[warn] .withEntity(
524[warn] HttpEntities.create(
525[warn] metadata
526[warn] .getContentType()
527[warn] .map(ContentTypes::parse)
528[warn] .orElse(ContentTypes.APPLICATION_OCTET_STREAM),
529[warn] metadata.getContentLength(),
530[warn] s3Source)));
531[warn] // #downloadToAkkaHttp
532[warn]
533[warn] String result = dataCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
534[warn] ObjectMetadata metadata =
535[warn] metadataCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
536[warn]
537[warn] System.out.println("#####");
538[warn] System.out.println(metadata.getContentLength());
539[warn]
540[warn] assertEquals(body(), result);
541[warn] }
542[warn]
543[warn] @Test
544[warn] public void head() throws Exception {
545[warn]
546[warn] long contentLength = 8L;
547[warn] mockHead(contentLength);
548[warn]
549[warn] // #objectMetadata
550[warn] final Source<Optional<ObjectMetadata>, NotUsed> source =
551[warn] S3.getObjectMetadata(bucket(), bucketKey());
552[warn] // #objectMetadata
553[warn]
554[warn] Optional<ObjectMetadata> result =
555[warn] source.runWith(Sink.head(), system).toCompletableFuture().get(5, TimeUnit.SECONDS);
556[warn]
557[warn] final ObjectMetadata objectMetadata = result.get();
558[warn] Optional<String> s3eTag = objectMetadata.getETag();
559[warn] long actualContentLength = objectMetadata.getContentLength();
560[warn] Optional<String> versionId = objectMetadata.getVersionId();
561[warn]
562[warn] assertEquals(s3eTag, Optional.of(etag()));
563[warn] assertEquals(actualContentLength, contentLength);
564[warn] assertEquals(versionId, Optional.empty());
565[warn] }
566[warn]
567[warn] @Test
568[warn] public void headWithVersion() throws Exception {
569[warn] String versionId = "3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo";
570[warn] mockHeadWithVersion(versionId);
571[warn]
572[warn] final Source<Optional<ObjectMetadata>, NotUsed> source =
573[warn] S3.getObjectMetadata(bucket(), bucketKey(), Optional.of(versionId), null);
574[warn]
575[warn] Optional<ObjectMetadata> result =
576[warn] source.runWith(Sink.head(), system).toCompletableFuture().get(5, TimeUnit.SECONDS);
577[warn]
578[warn] final ObjectMetadata objectMetadata = result.get();
579[warn] Optional<String> s3eTag = objectMetadata.getETag();
580[warn] Optional<String> metadataVersionId = objectMetadata.getVersionId();
581[warn]
582[warn] assertEquals(s3eTag, Optional.of(etag()));
583[warn] assertEquals(metadataVersionId, Optional.of(versionId));
584[warn] }
585[warn]
586[warn] @Test
587[warn] public void headServerSideEncryption() throws Exception {
588[warn] mockHeadSSEC();
589[warn]
590[warn] final Source<Optional<ObjectMetadata>, NotUsed> source =
591[warn] S3.getObjectMetadata(bucket(), bucketKey(), sseCustomerKeys());
592[warn]
593[warn] Optional<ObjectMetadata> result =
594[warn] source.runWith(Sink.head(), system).toCompletableFuture().get(5, TimeUnit.SECONDS);
595[warn]
596[warn] Optional<String> etag = result.get().getETag();
597[warn]
598[warn] assertEquals(etag, Optional.of(etagSSE()));
599[warn] }
600[warn]
601[warn] @Test
602[warn] public void downloadServerSideEncryption() throws Exception {
603[warn] mockDownloadSSEC();
604[warn]
605[warn] final Source<ByteString, CompletionStage<ObjectMetadata>> s3Source =
606[warn] S3.getObject(bucket(), bucketKey(), sseCustomerKeys());
607[warn]
608[warn] final CompletionStage<String> resultCompletionStage =
609[warn] s3Source.map(ByteString::utf8String).runWith(Sink.head(), system);
610[warn]
611[warn] String result = resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
612[warn]
613[warn] assertEquals(bodySSE(), result);
614[warn] }
615[warn]
616[warn] @Test
617[warn] public void downloadServerSideEncryptionWithVersion() throws Exception {
618[warn] String versionId = "3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo";
619[warn] mockDownloadSSECWithVersion(versionId);
620[warn]
621[warn] final Source<ByteString, CompletionStage<ObjectMetadata>> s3Source =
622[warn] S3.getObject(bucket(), bucketKey(), null, Optional.of(versionId), sseCustomerKeys());
623[warn]
624[warn] final Pair<CompletionStage<ObjectMetadata>, CompletionStage<String>> p =
625[warn] s3Source.map(ByteString::utf8String).toMat(Sink.head(), Keep.both()).run(system);
626[warn]
627[warn] final CompletionStage<String> resultCompletionStage = p.second();
628[warn] final String result = resultCompletionStage.toCompletableFuture().get(2, TimeUnit.SECONDS);
629[warn] assertEquals(bodySSE(), result);
630[warn]
631[warn] final ObjectMetadata metadata = p.first().toCompletableFuture().get(2, TimeUnit.SECONDS);
632[warn] assertEquals(Optional.of(versionId), metadata.getVersionId());
633[warn] }
634[warn]
635[warn] @Test
636[warn] public void rangedDownload() throws Exception {
637[warn]
638[warn] mockRangedDownload();
639[warn]
640[warn] // #rangedDownload
641[warn] final Source<ByteString, CompletionStage<ObjectMetadata>> sourceAndMeta =
642[warn] S3.getObject(
643[warn] bucket(), bucketKey(), ByteRange.createSlice(bytesRangeStart(), bytesRangeEnd()));
644[warn] // #rangedDownload
645[warn]
646[warn] final CompletionStage<byte[]> resultCompletionStage =
647[warn] sourceAndMeta.map(ByteString::toArray).runWith(Sink.head(), system);
648[warn]
649[warn] byte[] result = resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
650[warn]
651[warn] assertTrue(Arrays.equals(rangeOfBody(), result));
652[warn] }
653[warn]
654[warn] @Test
655[warn] public void rangedDownloadServerSideEncryption() throws Exception {
656[warn]
657[warn] mockRangedDownloadSSE();
658[warn]
659[warn] final Source<ByteString, CompletionStage<ObjectMetadata>> sourceAndMeta =
660[warn] S3.getObject(
661[warn] bucket(),
662[warn] bucketKey(),
663[warn] ByteRange.createSlice(bytesRangeStart(), bytesRangeEnd()),
664[warn] sseCustomerKeys());
665[warn]
666[warn] final CompletionStage<byte[]> resultCompletionStage =
667[warn] sourceAndMeta.map(ByteString::toArray).runWith(Sink.head(), system);
668[warn]
669[warn] byte[] result = resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
670[warn]
671[warn] assertTrue(Arrays.equals(rangeOfBodySSE(), result));
672[warn] }
673[warn]
674[warn] @Test
675[warn] public void listBucket() throws Exception {
676[warn]
677[warn] mockListBucket();
678[warn]
679[warn] // #list-bucket
680[warn] final Source<ListBucketResultContents, NotUsed> keySource =
681[warn] S3.listBucket(bucket(), Optional.of(prefix));
682[warn] // #list-bucket
683[warn]
684[warn] final CompletionStage<ListBucketResultContents> resultCompletionStage =
685[warn] keySource.runWith(Sink.head(), system);
686[warn]
687[warn] ListBucketResultContents result =
688[warn] resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
689[warn]
690[warn] assertEquals(result.key(), listKey());
691[warn] }
692[warn]
693[warn] @Test
694[warn] public void listBucketVersion1() throws Exception {
695[warn] mockListBucketVersion1();
696[warn]
697[warn] // #list-bucket-attributes
698[warn] final S3Settings useVersion1Api =
699[warn] S3Ext.get(system()).settings().withListBucketApiVersion(ApiVersion.getListBucketVersion1());
700[warn]
701[warn] final Source<ListBucketResultContents, NotUsed> keySource =
702[warn] S3.listBucket(bucket(), Optional.of(prefix))
703[warn] .withAttributes(S3Attributes.settings(useVersion1Api));
704[warn] // #list-bucket-attributes
705[warn]
706[warn] final CompletionStage<ListBucketResultContents> resultCompletionStage =
707[warn] keySource.runWith(Sink.head(), system);
708[warn]
709[warn] ListBucketResultContents result =
710[warn] resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
711[warn]
712[warn] assertEquals(result.key(), listKey());
713[warn] }
714[warn]
715[warn] @Test
716[warn] public void listBucketWithDelimiter() throws Exception {
717[warn]
718[warn] mockListBucketAndCommonPrefixes();
719[warn]
720[warn] // #list-bucket-delimiter
721[warn] final Source<ListBucketResultContents, NotUsed> keySource =
722[warn] S3.listBucket(bucket(), delimiter, Optional.of(prefix));
723[warn] // #list-bucket-delimiter
724[warn]
725[warn] final CompletionStage<ListBucketResultContents> resultCompletionStage =
726[warn] keySource.runWith(Sink.head(), system);
727[warn]
728[warn] ListBucketResultContents result =
729[warn] resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
730[warn]
731[warn] assertEquals(result.key(), listKey());
732[warn] }
733[warn]
734[warn] @Test
735[warn] public void listBucketAndCommonPrefixes() throws Exception {
736[warn]
737[warn] mockListBucketAndCommonPrefixes();
738[warn]
739[warn] // #list-bucket-and-common-prefixes
740[warn] final Source<
741[warn] Pair<List<ListBucketResultContents>, List<ListBucketResultCommonPrefixes>>, NotUsed>
742[warn] keySource =
743[warn] S3.listBucketAndCommonPrefixes(
744[warn] bucket(), delimiter, Optional.of(prefix), S3Headers.empty());
745[warn] // #list-bucket-and-common-prefixes
746[warn]
747[warn] final CompletionStage<
748[warn] List<Pair<List<ListBucketResultContents>, List<ListBucketResultCommonPrefixes>>>>
749[warn] resultsCompletionStage = keySource.runWith(Sink.seq(), system);
750[warn]
751[warn] final List<Pair<List<ListBucketResultContents>, List<ListBucketResultCommonPrefixes>>> results =
752[warn] resultsCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
753[warn]
754[warn] final List<ListBucketResultContents> contents = results.get(0).first();
755[warn] final List<ListBucketResultCommonPrefixes> commonPrefixes = results.get(0).second();
756[warn]
757[warn] assertEquals(contents.get(0).key(), listKey());
758[warn] assertEquals(commonPrefixes.get(0).prefix(), listCommonPrefix());
759[warn] }
760[warn]
761[warn] @Test
762[warn] public void listBucketAndCommonPrefixesVersion1() throws Exception {
763[warn] mockListBucketAndCommonPrefixesVersion1();
764[warn]
765[warn] // #list-bucket-and-common-prefixes-attributes
766[warn] final S3Settings useVersion1Api =
767[warn] S3Ext.get(system()).settings().withListBucketApiVersion(ApiVersion.getListBucketVersion1());
768[warn]
769[warn] final Source<
770[warn] Pair<List<ListBucketResultContents>, List<ListBucketResultCommonPrefixes>>, NotUsed>
771[warn] keySource =
772[warn] S3.listBucketAndCommonPrefixes(
773[warn] bucket(), delimiter, Optional.of(prefix), S3Headers.empty())
774[warn] .withAttributes(S3Attributes.settings(useVersion1Api));
775[warn] // #list-bucket-and-common-prefixes-attributes
776[warn]
777[warn] final CompletionStage<
778[warn] List<Pair<List<ListBucketResultContents>, List<ListBucketResultCommonPrefixes>>>>
779[warn] resultsCompletionStage = keySource.runWith(Sink.seq(), system);
780[warn]
781[warn] final List<Pair<List<ListBucketResultContents>, List<ListBucketResultCommonPrefixes>>> results =
782[warn] resultsCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
783[warn]
784[warn] final List<ListBucketResultContents> contents = results.get(0).first();
785[warn] final List<ListBucketResultCommonPrefixes> commonPrefixes = results.get(0).second();
786[warn]
787[warn] assertEquals(contents.get(0).key(), listKey());
788[warn] assertEquals(commonPrefixes.get(0).prefix(), listCommonPrefix());
789[warn] }
790[warn]
791[warn] @Test
792[warn] public void copyUploadWithContentLengthLessThenChunkSize() throws Exception {
793[warn] mockCopy();
794[warn]
795[warn] String bucket = bucket();
796[warn] String sourceKey = bucketKey();
797[warn] String targetBucket = targetBucket();
798[warn] String targetKey = targetBucketKey();
799[warn] // #multipart-copy
800[warn] final CompletionStage<MultipartUploadResult> resultCompletionStage =
801[warn] S3.multipartCopy(bucket, sourceKey, targetBucket, targetKey).run(system);
802[warn] // #multipart-copy
803[warn]
804[warn] final MultipartUploadResult result =
805[warn] resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
806[warn]
807[warn] assertEquals(
808[warn] result,
809[warn] MultipartUploadResult.create(
810[warn] Uri.create(targetUrl()), targetBucket(), targetBucketKey(), etag(), Optional.empty()));
811[warn] }
812[warn]
813[warn] @Test
814[warn] public void copyUploadWithSourceVersion() throws Exception {
815[warn] mockCopyVersioned();
816[warn]
817[warn] String bucket = bucket();
818[warn] String sourceKey = bucketKey();
819[warn] String targetBucket = targetBucket();
820[warn] String targetKey = targetBucketKey();
821[warn]
822[warn] // #multipart-copy-with-source-version
823[warn] String sourceVersionId = "3/L4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo";
824[warn] final CompletionStage<MultipartUploadResult> resultCompletionStage =
825[warn] S3.multipartCopy(
826[warn] bucket,
827[warn] sourceKey,
828[warn] targetBucket,
829[warn] targetKey,
830[warn] Optional.of(sourceVersionId),
831[warn] S3Headers.create())
832[warn] .run(system);
833[warn] // #multipart-copy-with-source-version
834[warn]
835[warn] final MultipartUploadResult result =
836[warn] resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
837[warn]
838[warn] assertEquals(
839[warn] result,
840[warn] MultipartUploadResult.create(
841[warn] Uri.create(targetUrl()),
842[warn] targetBucket(),
843[warn] targetBucketKey(),
844[warn] etag(),
845[warn] Optional.of("43jfkodU8493jnFJD9fjj3HHNVfdsQUIFDNsidf038jfdsjGFDSIRp")));
846[warn] }
847[warn]
848[warn] @Test
849[warn] public void copyUploadWithContentLengthEqualToChunkSize() throws Exception {
850[warn] mockCopy(5242880);
851[warn]
852[warn] final CompletionStage<MultipartUploadResult> resultCompletionStage =
853[warn] S3.multipartCopy(bucket(), bucketKey(), targetBucket(), targetBucketKey()).run(system);
854[warn] final MultipartUploadResult result =
855[warn] resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
856[warn]
857[warn] assertEquals(
858[warn] result,
859[warn] MultipartUploadResult.create(
860[warn] Uri.create(targetUrl()), targetBucket(), targetBucketKey(), etag(), Optional.empty()));
861[warn] }
862[warn]
863[warn] @Test
864[warn] public void copyUploadWithContentLengthGreaterThenChunkSize() throws Exception {
865[warn] mockCopyMulti();
866[warn]
867[warn] final CompletionStage<MultipartUploadResult> resultCompletionStage =
868[warn] S3.multipartCopy(bucket(), bucketKey(), targetBucket(), targetBucketKey()).run(system);
869[warn] final MultipartUploadResult result =
870[warn] resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
871[warn]
872[warn] assertEquals(
873[warn] result,
874[warn] MultipartUploadResult.create(
875[warn] Uri.create(targetUrl()), targetBucket(), targetBucketKey(), etag(), Optional.empty()));
876[warn] }
877[warn]
878[warn] @Test
879[warn] public void copyUploadEmptyFile() throws Exception {
880[warn] mockCopy(0);
881[warn]
882[warn] final CompletionStage<MultipartUploadResult> resultCompletionStage =
883[warn] S3.multipartCopy(bucket(), bucketKey(), targetBucket(), targetBucketKey()).run(system);
884[warn] final MultipartUploadResult result =
885[warn] resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
886[warn]
887[warn] assertEquals(
888[warn] result,
889[warn] MultipartUploadResult.create(
890[warn] Uri.create(targetUrl()), targetBucket(), targetBucketKey(), etag(), Optional.empty()));
891[warn] }
892[warn]
893[warn] @Test
894[warn] public void copyUploadWithSSE() throws Exception {
895[warn] mockCopySSE();
896[warn]
897[warn] // #multipart-copy-sse
898[warn] final CustomerKeys keys =
899[warn] ServerSideEncryption.customerKeys(sseCustomerKey()).withMd5(sseCustomerMd5Key());
900[warn]
901[warn] final CompletionStage<MultipartUploadResult> resultCompletionStage =
902[warn] S3.multipartCopy(
903[warn] bucket(),
904[warn] bucketKey(),
905[warn] targetBucket(),
906[warn] targetBucketKey(),
907[warn] S3Headers.create().withServerSideEncryption(keys))
908[warn] .run(system);
909[warn] // #multipart-copy-sse
910[warn]
911[warn] final MultipartUploadResult result =
912[warn] resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
913[warn]
914[warn] assertEquals(
915[warn] result,
916[warn] MultipartUploadResult.create(
917[warn] Uri.create(targetUrl()), targetBucket(), targetBucketKey(), etag(), Optional.empty()));
918[warn] }
919[warn]
920[warn] @Test
921[warn] public void copyUploadWithCustomHeader() throws Exception {
922[warn] mockCopy();
923[warn]
924[warn] final CompletionStage<MultipartUploadResult> resultCompletionStage =
925[warn] S3.multipartCopy(
926[warn] bucket(),
927[warn] bucketKey(),
928[warn] targetBucket(),
929[warn] targetBucketKey(),
930[warn] S3Headers.create().withServerSideEncryption(ServerSideEncryption.aes256()))
931[warn] .run(system);
932[warn]
933[warn] final MultipartUploadResult result =
934[warn] resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);
935[warn]
936[warn] assertEquals(
937[warn] result,
938[warn] MultipartUploadResult.create(
939[warn] Uri.create(targetUrl()), targetBucket(), targetBucketKey(), etag(), Optional.empty()));
940[warn] }
941[warn]
942[warn] @Test
943[warn] public void makeBucket() throws Exception {
944[warn] mockMakingBucket();
945[warn]
946[warn] // #make-bucket
947[warn] final Attributes sampleAttributes = S3Attributes.settings(sampleSettings);
948[warn]
949[warn] final String bucketName = "samplebucket1";
950[warn]
951[warn] CompletionStage<Done> makeBucketRequest = S3.makeBucket(bucketName, system);
952[warn] CompletionStage<Done> makeBucketRequestWithAttributes =
953[warn] S3.makeBucket(bucketName, system, sampleAttributes);
954[warn] Source<Done, NotUsed> makeBucketSourceRequest = S3.makeBucketSource(bucketName);
955[warn] // #make-bucket
956[warn]
957[warn] assertEquals(makeBucketRequest.toCompletableFuture().get(5, TimeUnit.SECONDS), Done.done());
958[warn] assertEquals(
959[warn] makeBucketRequestWithAttributes.toCompletableFuture().get(5, TimeUnit.SECONDS),
960[warn] Done.done());
961[warn] assertEquals(
962[warn] makeBucketSourceRequest
963[warn] .runWith(Sink.ignore(), system)
964[warn] .toCompletableFuture()
965[warn] .get(5, TimeUnit.SECONDS),
966[warn] Done.done());
967[warn] }
968[warn]
969[warn] @Test
970[warn] public void deleteBucket() throws Exception {
971[warn] final String bucketName = "samplebucket1";
972[warn]
973[warn] mockDeletingBucket();
974[warn]
975[warn] // #delete-bucket
976[warn] final Attributes sampleAttributes = S3Attributes.settings(sampleSettings);
977[warn]
978[warn] CompletionStage<Done> deleteBucketRequest = S3.deleteBucket(bucketName, system);
979[warn] CompletionStage<Done> deleteBucketRequestWithAttribues =
980[warn] S3.deleteBucket(bucketName, system, sampleAttributes);
981[warn]
982[warn] Source<Done, NotUsed> deleteBucketSourceRequest = S3.deleteBucketSource(bucketName);
983[warn] // #delete-bucket
984[warn]
985[warn] assertEquals(deleteBucketRequest.toCompletableFuture().get(5, TimeUnit.SECONDS), Done.done());
986[warn]
987[warn] assertEquals(
988[warn] deleteBucketRequestWithAttribues.toCompletableFuture().get(5, TimeUnit.SECONDS),
989[warn] Done.done());
990[warn]
991[warn] assertEquals(
992[warn] deleteBucketSourceRequest
993[warn] .runWith(Sink.ignore(), system)
994[warn] .toCompletableFuture()
995[warn] .get(5, TimeUnit.SECONDS),
996[warn] Done.done());
997[warn] }
998[warn]
999[warn] @Test
1000[warn] public void checkIfBucketExistsForNonExisting() throws Exception {
1001[warn] mockCheckingBucketStateForNonExistingBucket();
1002[warn]
1003[warn] // #check-if-bucket-exists
1004[warn] final Attributes sampleAttributes = S3Attributes.settings(sampleSettings);
1005[warn]
1006[warn] final CompletionStage<BucketAccess> doesntExistRequest =
1007[warn] S3.checkIfBucketExists(bucket(), system);
1008[warn] final CompletionStage<BucketAccess> doesntExistRequestWithAttributes =
1009[warn] S3.checkIfBucketExists(bucket(), system, sampleAttributes);
1010[warn]
1011[warn] final Source<BucketAccess, NotUsed> doesntExistSourceRequest =
1012[warn] S3.checkIfBucketExistsSource(bucket());
1013[warn] // #check-if-bucket-exists
1014[warn]
1015[warn] assertEquals(
1016[warn] doesntExistRequest.toCompletableFuture().get(5, TimeUnit.SECONDS),
1017[warn] BucketAccess.notExists());
1018[warn]
1019[warn] assertEquals(
1020[warn] doesntExistRequestWithAttributes.toCompletableFuture().get(5, TimeUnit.SECONDS),
1021[warn] BucketAccess.notExists());
1022[warn]
1023[warn] assertEquals(
1024[warn] doesntExistSourceRequest
1025[warn] .runWith(Sink.head(), system)
1026[warn] .toCompletableFuture()
1027[warn] .get(5, TimeUnit.SECONDS),
1028[warn] BucketAccess.notExists());
1029[warn] }
1030[warn]
1031[warn] @Test
1032[warn] public void checkIfBucketExistsForExisting() throws Exception {
1033[warn] mockCheckingBucketStateForExistingBucket();
1034[warn]
1035[warn] final CompletionStage<BucketAccess> existRequest = S3.checkIfBucketExists(bucket(), system);
1036[warn]
1037[warn] final Source<BucketAccess, NotUsed> existSourceRequest = S3.checkIfBucketExistsSource(bucket());
1038[warn]
1039[warn] assertEquals(
1040[warn] existRequest.toCompletableFuture().get(5, TimeUnit.SECONDS), BucketAccess.accessGranted());
1041[warn]
1042[warn] assertEquals(
1043[warn] existSourceRequest
1044[warn] .runWith(Sink.head(), system)
1045[warn] .toCompletableFuture()
1046[warn] .get(5, TimeUnit.SECONDS),
1047[warn] BucketAccess.accessGranted());
1048[warn] }
1049[warn]
1050[warn] @Test
1051[warn] public void checkIfBucketExistsForBucketWithoutRights() throws Exception {
1052[warn] mockCheckingBucketStateForBucketWithoutRights();
1053[warn]
1054[warn] final CompletionStage<BucketAccess> noRightsRequest = S3.checkIfBucketExists(bucket(), system);
1055[warn]
1056[warn] final Source<BucketAccess, NotUsed> noRightsSourceRequest =
1057[warn] S3.checkIfBucketExistsSource(bucket());
1058[warn]
1059[warn] assertEquals(
1060[warn] noRightsRequest.toCompletableFuture().get(5, TimeUnit.SECONDS),
1061[warn] BucketAccess.accessDenied());
1062[warn]
1063[warn] assertEquals(
1064[warn] noRightsSourceRequest
1065[warn] .runWith(Sink.head(), system)
1066[warn] .toCompletableFuture()
1067[warn] .get(5, TimeUnit.SECONDS),
1068[warn] BucketAccess.accessDenied());
1069[warn] }
1070[warn] }
1071[warn] ^
1072[info] done compiling
1073Starting build for ProjectRef(file:/build/repo/,avroparquet) (akka-stream-alpakka-avroparquet)... [5/6]
1074Compile scalacOptions: -encoding, UTF-8, -unchecked, -Xlint, -Ywarn-dead-code, --java-output-version:17, 8, -Wconf:cat=deprecation&msg=.*JavaConverters.*:s, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
1075[info] compiling 8 Scala sources to /build/repo/avroparquet/target/scala-3.8.1-RC1-bin-20251228-e73ff2c-NIGHTLY/classes ...
1076[warn] Option -Xlint is deprecated: Use -Wshadow to enable shadowing lints. Scheduled for removal.
1077[warn] bad option '-Ywarn-dead-code' was ignored
1078[warn] two warnings found
1079[info] done compiling
1080
1081************************
1082Build summary:
1083[{
1084 "module": "akka-stream-alpakka-amqp",
1085 "compile": {"status": "ok", "tookMs": 10709, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1086 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1087 "test-compile": {"status": "ok", "tookMs": 7961, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1088 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1089 "publish": {"status": "skipped", "tookMs": 0},
1090 "metadata": {
1091 "crossScalaVersions": ["2.13.10", "2.12.17", "3.2.2"]
1092}
1093},{
1094 "module": "akka-stream-alpakka-cassandra",
1095 "compile": {"status": "ok", "tookMs": 1798, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1096 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1097 "test-compile": {"status": "ok", "tookMs": 3368, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1098 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1099 "publish": {"status": "skipped", "tookMs": 0},
1100 "metadata": {
1101 "crossScalaVersions": ["2.13.10", "2.12.17", "3.2.2"]
1102}
1103},{
1104 "module": "akka-stream-alpakka-csv",
1105 "compile": {"status": "ok", "tookMs": 1960, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1106 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1107 "test-compile": {"status": "ok", "tookMs": 3506, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1108 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1109 "publish": {"status": "skipped", "tookMs": 0},
1110 "metadata": {
1111 "crossScalaVersions": ["2.13.10", "2.12.17", "3.2.2"]
1112}
1113},{
1114 "module": "akka-stream-alpakka-testkit",
1115 "compile": {"status": "ok", "tookMs": 77, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1116 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1117 "test-compile": {"status": "ok", "tookMs": 125, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1118 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1119 "publish": {"status": "ok", "tookMs": 4},
1120 "metadata": {
1121 "crossScalaVersions": ["2.13.10", "2.12.17", "3.2.2"]
1122}
1123},{
1124 "module": "akka-stream-alpakka-s3",
1125 "compile": {"status": "ok", "tookMs": 5049, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
1126 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1127 "test-compile": {"status": "ok", "tookMs": 9690, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1128 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1129 "publish": {"status": "skipped", "tookMs": 0},
1130 "metadata": {
1131 "crossScalaVersions": ["2.13.10", "2.12.17", "3.2.2"]
1132}
1133},{
1134 "module": "akka-stream-alpakka-avroparquet",
1135 "compile": {"status": "ok", "tookMs": 445, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1136 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1137 "test-compile": {"status": "ok", "tookMs": 196, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1138 "test": {"status": "skipped", "tookMs": 0, "passed": 0, "failed": 0, "ignored": 0, "skipped": 0, "total": 0, "byFramework": []},
1139 "publish": {"status": "skipped", "tookMs": 0},
1140 "metadata": {
1141 "crossScalaVersions": ["2.13.10", "2.12.17", "3.2.2"]
1142}
1143}]
1144************************
1145[success] Total time: 136 s (0:02:16.0), completed Dec 28, 2025, 6:33:33 PM
1146[0JChecking patch project/plugins.sbt...
1147Checking patch project/build.properties...
1148Checking patch project/Dependencies.scala...
1149Checking patch build.sbt...
1150Applied patch project/plugins.sbt cleanly.
1151Applied patch project/build.properties cleanly.
1152Applied patch project/Dependencies.scala cleanly.
1153Applied patch build.sbt cleanly.