From 3778af4625dbe0702e0539d80f6fe75ea1401db6 Mon Sep 17 00:00:00 2001 From: osulzhenko Date: Thu, 27 Mar 2025 17:18:52 +0200 Subject: [PATCH 1/3] test with warmup --- .../kotlin/org/prebid/cache/functional/SecondaryCacheSpec.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/kotlin/org/prebid/cache/functional/SecondaryCacheSpec.kt b/src/test/kotlin/org/prebid/cache/functional/SecondaryCacheSpec.kt index a1aa745..d613f28 100644 --- a/src/test/kotlin/org/prebid/cache/functional/SecondaryCacheSpec.kt +++ b/src/test/kotlin/org/prebid/cache/functional/SecondaryCacheSpec.kt @@ -34,6 +34,8 @@ class SecondaryCacheSpec : ShouldSpec({ specPrebidCacheConfig = BaseSpec.prebidCacheConfig.getBaseAerospikeConfig(true) + BaseSpec.prebidCacheConfig.getSecondaryCacheConfig(webCacheContainerUri) prebidCacheApi = BaseSpec.getPrebidCacheApi(specPrebidCacheConfig) + val requestObject = RequestObject.getDefaultJsonRequestObject().apply { puts[0].key = getRandomUuid() } + prebidCacheApi.postCache(requestObject, "no") } afterSpec { From 42a6ef2bbca36dc468b91e5c999c72deda7f3f23 Mon Sep 17 00:00:00 2001 From: osulzhenko Date: Thu, 27 Mar 2025 17:36:10 +0200 Subject: [PATCH 2/3] test with waitUntil --- .../cache/functional/SecondaryCacheSpec.kt | 2 -- .../client/WebCacheContainerClient.kt | 18 ++++++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/test/kotlin/org/prebid/cache/functional/SecondaryCacheSpec.kt b/src/test/kotlin/org/prebid/cache/functional/SecondaryCacheSpec.kt index d613f28..a1aa745 100644 --- a/src/test/kotlin/org/prebid/cache/functional/SecondaryCacheSpec.kt +++ b/src/test/kotlin/org/prebid/cache/functional/SecondaryCacheSpec.kt @@ -34,8 +34,6 @@ class SecondaryCacheSpec : ShouldSpec({ specPrebidCacheConfig = BaseSpec.prebidCacheConfig.getBaseAerospikeConfig(true) + BaseSpec.prebidCacheConfig.getSecondaryCacheConfig(webCacheContainerUri) prebidCacheApi = BaseSpec.getPrebidCacheApi(specPrebidCacheConfig) - val requestObject = RequestObject.getDefaultJsonRequestObject().apply { puts[0].key = getRandomUuid() } - prebidCacheApi.postCache(requestObject, "no") } afterSpec { diff --git a/src/test/kotlin/org/prebid/cache/functional/testcontainers/client/WebCacheContainerClient.kt b/src/test/kotlin/org/prebid/cache/functional/testcontainers/client/WebCacheContainerClient.kt index e33e1a6..724a175 100644 --- a/src/test/kotlin/org/prebid/cache/functional/testcontainers/client/WebCacheContainerClient.kt +++ b/src/test/kotlin/org/prebid/cache/functional/testcontainers/client/WebCacheContainerClient.kt @@ -40,8 +40,11 @@ class WebCacheContainerClient(mockServerHost: String, mockServerPort: Int) { .withBody(body, mediaType) ) - fun getSecondaryCacheRecordedRequests(uuidKey: String): Array? = - mockServerClient.retrieveRecordedRequests(getSecondaryCacheRequest(uuidKey)) + fun getSecondaryCacheRecordedRequests(uuidKey: String): Array? { + val secondaryCacheRequest = getSecondaryCacheRequest(uuidKey) + waitUntil({ mockServerClient.retrieveRecordedRequests(secondaryCacheRequest)?.isNotEmpty() == true }) + return mockServerClient.retrieveRecordedRequests(secondaryCacheRequest) + } fun initSecondaryCacheResponse(): Array? = mockServerClient.`when`(getSecondaryCacheRequest()) @@ -59,4 +62,15 @@ class WebCacheContainerClient(mockServerHost: String, mockServerPort: Int) { request().withMethod(POST.name()) .withPath("/$WEB_CACHE_PATH") .withBody(jsonPath("\$.puts[?(@.key == '$uuidKey')]")) + + private fun waitUntil(closure: () -> Boolean, timeoutMs: Long = 5000, pollInterval: Long = 100) { + val startTime = System.currentTimeMillis() + while (System.currentTimeMillis() - startTime <= timeoutMs) { + if (closure()) { + return + } + Thread.sleep(pollInterval) + } + throw IllegalStateException("Condition was not fulfilled within $timeoutMs ms.") + } } From 6b4eec58962f7207cb4c1c70977704dbf45cf796 Mon Sep 17 00:00:00 2001 From: osulzhenko Date: Fri, 28 Mar 2025 18:36:12 +0200 Subject: [PATCH 3/3] simplify closure condition --- .../functional/testcontainers/client/WebCacheContainerClient.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/kotlin/org/prebid/cache/functional/testcontainers/client/WebCacheContainerClient.kt b/src/test/kotlin/org/prebid/cache/functional/testcontainers/client/WebCacheContainerClient.kt index 724a175..fba295e 100644 --- a/src/test/kotlin/org/prebid/cache/functional/testcontainers/client/WebCacheContainerClient.kt +++ b/src/test/kotlin/org/prebid/cache/functional/testcontainers/client/WebCacheContainerClient.kt @@ -42,7 +42,7 @@ class WebCacheContainerClient(mockServerHost: String, mockServerPort: Int) { fun getSecondaryCacheRecordedRequests(uuidKey: String): Array? { val secondaryCacheRequest = getSecondaryCacheRequest(uuidKey) - waitUntil({ mockServerClient.retrieveRecordedRequests(secondaryCacheRequest)?.isNotEmpty() == true }) + waitUntil({ mockServerClient.retrieveRecordedRequests(secondaryCacheRequest)!!.isNotEmpty() }) return mockServerClient.retrieveRecordedRequests(secondaryCacheRequest) }