@@ -35,12 +35,8 @@ import kotlin.time.ExperimentalTime
3535@OptIn(ExperimentalTime ::class , ExperimentalCoroutinesApi ::class )
3636@TestInstance(TestInstance .Lifecycle .PER_CLASS )
3737class S3BucketOpsIntegrationTest {
38- companion object {
39- const val DEFAULT_REGION = " us-east-2"
40- }
41-
4238 private val client = S3Client {
43- region = DEFAULT_REGION
39+ region = S3TestUtils . DEFAULT_REGION
4440 }
4541
4642 private lateinit var testBucket: String
@@ -216,58 +212,56 @@ class S3BucketOpsIntegrationTest {
216212
217213 @Test
218214 fun testSelectObjectEventStream (): Unit = runBlocking {
219- S3Client .fromEnvironment().use { s3 ->
220- // upload our content to select from
221- val objKey = " developers.csv"
222-
223- val content = """
224- Name,PhoneNumber,City,Occupation
225- Sam,(949) 555-6701,Irvine,Solutions Architect
226- Vinod,(949) 555-6702,Los Angeles,Solutions Architect
227- Jeff,(949) 555-6703,Seattle,AWS Evangelist
228- Jane,(949) 555-6704,Chicago,Developer
229- Sean,(949) 555-6705,Indianapolis,Developer
230- Mary,(949) 555-6706,Detroit,Developer
231- Kate,(949) 555-6707,Boston,Solutions Architect
232- """ .trimIndent()
215+ // upload our content to select from
216+ val objKey = " developers.csv"
217+
218+ val content = """
219+ Name,PhoneNumber,City,Occupation
220+ Sam,(949) 555-6701,Irvine,Solutions Architect
221+ Vinod,(949) 555-6702,Los Angeles,Solutions Architect
222+ Jeff,(949) 555-6703,Seattle,AWS Evangelist
223+ Jane,(949) 555-6704,Chicago,Developer
224+ Sean,(949) 555-6705,Indianapolis,Developer
225+ Mary,(949) 555-6706,Detroit,Developer
226+ Kate,(949) 555-6707,Boston,Solutions Architect
227+ """ .trimIndent()
233228
234- s3 .putObject {
235- bucket = testBucket
236- key = objKey
237- body = ByteStream .fromString(content)
238- }
229+ client .putObject {
230+ bucket = testBucket
231+ key = objKey
232+ body = ByteStream .fromString(content)
233+ }
239234
240- // select content as an event stream
241- val req = SelectObjectContentRequest {
242- bucket = testBucket
243- key = objKey
244- expressionType = ExpressionType .Sql
245- expression = """ SELECT * FROM s3object s where s."Name" = 'Jane'"""
246- inputSerialization {
247- csv {
248- fileHeaderInfo = FileHeaderInfo .Use
249- }
250- compressionType = CompressionType .None
251- }
252- outputSerialization {
253- csv { }
235+ // select content as an event stream
236+ val req = SelectObjectContentRequest {
237+ bucket = testBucket
238+ key = objKey
239+ expressionType = ExpressionType .Sql
240+ expression = """ SELECT * FROM s3object s where s."Name" = 'Jane'"""
241+ inputSerialization {
242+ csv {
243+ fileHeaderInfo = FileHeaderInfo .Use
254244 }
245+ compressionType = CompressionType .None
255246 }
256-
257- val events = s3.selectObjectContent(req) { resp ->
258- // collect flow to list
259- resp.payload!! .toList()
247+ outputSerialization {
248+ csv { }
260249 }
250+ }
261251
262- assertEquals(3 , events.size)
252+ val events = client.selectObjectContent(req) { resp ->
253+ // collect flow to list
254+ resp.payload!! .toList()
255+ }
263256
264- val records = assertIs<SelectObjectContentEventStream .Records >(events[0 ])
265- assertIs<SelectObjectContentEventStream .Stats >(events[1 ])
266- assertIs<SelectObjectContentEventStream .End >(events[2 ])
257+ assertEquals(3 , events.size)
267258
268- val expectedRecord = " Jane,(949) 555-6704,Chicago,Developer\n "
269- assertEquals(expectedRecord, records.value.payload?.decodeToString())
270- }
259+ val records = assertIs<SelectObjectContentEventStream .Records >(events[0 ])
260+ assertIs<SelectObjectContentEventStream .Stats >(events[1 ])
261+ assertIs<SelectObjectContentEventStream .End >(events[2 ])
262+
263+ val expectedRecord = " Jane,(949) 555-6704,Chicago,Developer\n "
264+ assertEquals(expectedRecord, records.value.payload?.decodeToString())
271265 }
272266}
273267
@@ -280,7 +274,7 @@ private fun File.chunk(partSize: Int): Sequence<LongRange> =
280274internal suspend fun s3WithAllEngines (block : suspend (S3Client ) -> Unit ) {
281275 withAllEngines { engine ->
282276 S3Client {
283- region = S3BucketOpsIntegrationTest .DEFAULT_REGION
277+ region = S3TestUtils .DEFAULT_REGION
284278 httpClientEngine = engine
285279 }.use {
286280 try {
0 commit comments