Skip to content

Commit a5816d3

Browse files
committed
Enhance TestSuiteDNS
1 parent e404e16 commit a5816d3

File tree

2 files changed

+46
-27
lines changed

2 files changed

+46
-27
lines changed

src/commonMain/kotlin/com/algolia/search/client/ClientSearch.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import kotlinx.coroutines.*
3535
* Client to perform operations on indices.
3636
*/
3737
public class ClientSearch private constructor(
38-
private val transport: Transport
38+
internal val transport: Transport
3939
) :
4040
EndpointMultipleIndex by EndpointMultipleIndexImpl(transport),
4141
EndpointAPIKey by EndpointAPIKeyImpl(transport),

src/commonTest/kotlin/suite/TestSuiteDNS.kt

Lines changed: 45 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,62 @@ package suite
22

33
import clientAdmin1
44
import com.algolia.search.client.ClientSearch
5-
import com.algolia.search.configuration.CallType
65
import 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
911
import 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
1016
import runBlocking
17+
import shouldBeFalse
18+
import shouldBeTrue
19+
import shouldEqual
1120
import kotlin.test.Test
1221

1322

1423
internal 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

Comments
 (0)