@@ -2,43 +2,62 @@ package suite
22
33import clientAdmin1
44import com.algolia.search.client.ClientSearch
5- import com.algolia.search.configuration.CallType
65import com.algolia.search.configuration.ConfigurationSearch
7- import com.algolia.search.configuration.RetryableHost
8- import com.algolia.search.model.Time
6+ import com.algolia.search.model.IndexName
7+ import com.algolia.search.model.response.ResponseSearch
8+ import com.algolia.search.serialize.Json
9+ import io.ktor.client.engine.mock.MockEngine
10+ import io.ktor.client.engine.mock.respond
911import io.ktor.client.features.logging.LogLevel
12+ import io.ktor.http.ContentType
13+ import io.ktor.http.headersOf
14+ import kotlinx.coroutines.delay
15+ import kotlinx.coroutines.io.ByteReadChannel
1016import runBlocking
17+ import shouldBeFalse
18+ import shouldBeTrue
19+ import shouldEqual
1120import kotlin.test.Test
1221
1322
1423internal class TestSuiteDNS {
1524
25+ private val readTimeout = 500L
26+ private val shouldTimeout = 600L
27+ private val shouldNotTimeout = 400L
28+ private var requestCount = 0
29+ private val mockEngine = MockEngine {
30+ val delay = if (requestCount == 0 ) shouldTimeout else shouldNotTimeout
31+
32+ requestCount++
33+ delay(delay)
34+ content
35+ }
36+
37+ private val content = respond(
38+ headers = headersOf(
39+ " Content-Type" ,
40+ listOf (ContentType .Application .Json .toString())
41+ ),
42+ content = ByteReadChannel (Json .stringify(ResponseSearch .serializer(), ResponseSearch ()))
43+ )
44+ private val client = ClientSearch (
45+ ConfigurationSearch (
46+ clientAdmin1.applicationID,
47+ clientAdmin1.apiKey,
48+ readTimeout = readTimeout,
49+ engine = mockEngine,
50+ logLevel = LogLevel .INFO
51+ )
52+ )
53+
1654 @Test
1755 fun test () {
1856 runBlocking {
19- val applicationID = clientAdmin1.applicationID
20-
21- val client = ClientSearch (
22- ConfigurationSearch (
23- applicationID,
24- clientAdmin1.apiKey,
25- hosts = listOf (
26- RetryableHost (" algolia.biz" , CallType .Read ),
27- RetryableHost (" $applicationID -1.algolianet.com" ),
28- RetryableHost (" $applicationID -2.algolianet.com" ),
29- RetryableHost (" $applicationID -3.algolianet.com" )
30- ),
31- logLevel = LogLevel .INFO
32- )
33- )
34- val timer = Time .getCurrentTimeMillis()
35-
36- client.apply {
37- repeat(10 ) {
38- listIndices()
39- }
40- }
41- println (" Time elapsed in milliseconds: ${(Time .getCurrentTimeMillis() - timer)} " )
57+ val index = client.initIndex(IndexName (" test" ))
58+
59+ index.search()
60+ client.transport.hosts.first().retryCount shouldEqual 1
4261 }
4362 }
4463}
0 commit comments