Skip to content

Commit 38ea13f

Browse files
committed
Migrate CreateQueueRaceConditionTest and FifoDeduplicationTests to new test structure
1 parent 7c5641e commit 38ea13f

File tree

11 files changed

+306
-313
lines changed

11 files changed

+306
-313
lines changed

rest/rest-sqs-testing-amazon-java-sdk/src/test/scala/org/elasticmq/rest/sqs/CreateQueueRaceConditionTest.scala

Lines changed: 0 additions & 59 deletions
This file was deleted.

rest/rest-sqs-testing-amazon-java-sdk/src/test/scala/org/elasticmq/rest/sqs/FifoDeduplicationTests.scala

Lines changed: 0 additions & 231 deletions
This file was deleted.

rest/rest-sqs-testing-amazon-java-sdk/src/test/scala/org/elasticmq/rest/sqs/aws/AmazonJavaSdkNewTestBase.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ trait AmazonJavaSdkNewTestBase
3939
val queue = testClient.createQueue("testQueue1").toOption.get
4040
val sendResult =
4141
testClient.sendMessage(queue, content, messageAttributes = messageAttributes, awsTraceHeader = awsTraceHeader)
42-
sendResult shouldBe Right(())
42+
sendResult.isRight shouldBe true
4343
val message = receiveSingleMessageObject(queue, requestedAttributes, requestedSystemAttributes).orNull
4444

4545
// then

rest/rest-sqs-testing-amazon-java-sdk/src/test/scala/org/elasticmq/rest/sqs/aws/AmazonJavaSdkNewTestSuite.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ abstract class AmazonJavaSdkNewTestSuite
1010
with FifoQueueTests
1111
with DeadLetterQueueTests
1212
with MessageMoveTaskTests
13+
with CreateQueueRaceConditionTests
14+
with FifoDeduplicationTests
1315

1416
class AmazonJavaSdkV1TestSuite extends AmazonJavaSdkNewTestSuite with SqsClientServerCommunication
1517
class AmazonJavaSdkV2TestSuite extends AmazonJavaSdkNewTestSuite with SqsClientServerWithSdkV2Communication
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package org.elasticmq.rest.sqs.aws
2+
3+
import org.elasticmq.rest.sqs.client._
4+
5+
import java.util.concurrent.Executors
6+
import scala.concurrent.duration.Duration
7+
import scala.concurrent.{Await, ExecutionContext, ExecutionContextExecutor, Future}
8+
9+
trait CreateQueueRaceConditionTests extends AmazonJavaSdkNewTestBase {
10+
11+
test("should create one queue and return its address for every request with the same name and metadata") {
12+
implicit val ec: ExecutionContextExecutor = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(100))
13+
14+
val tasks = (0 until 100).map(_ => Future { testClient.createQueue("abc") })
15+
val results = Await.result(Future.sequence(tasks), Duration.Inf)
16+
17+
results should be(Vector.fill(100)(Right("http://localhost:9321/123456789012/abc")))
18+
}
19+
20+
test("should create one queue and return an error for every request with the same name and different metadata") {
21+
implicit val ec: ExecutionContextExecutor = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(100))
22+
23+
val tasks = (0 until 100).map { index =>
24+
Future {
25+
testClient.createQueue(
26+
"abc",
27+
Map(VisibilityTimeoutAttributeName -> (10 + index).toString)
28+
)
29+
}
30+
}
31+
val results = Await.result(Future.sequence(tasks), Duration.Inf)
32+
33+
val grouped = results.groupBy(_.isLeft)
34+
val rights = grouped.getOrElse(false, Nil)
35+
val lefts = grouped.getOrElse(true, Nil)
36+
rights.length should be(1)
37+
lefts.length should be(99)
38+
}
39+
}

0 commit comments

Comments
 (0)