@@ -21,14 +21,19 @@ import assertk.assertions.containsExactlyInAnyOrder
2121import assertk.assertions.isEmpty
2222import assertk.assertions.isEqualTo
2323import assertk.assertions.isFalse
24+ import assertk.assertions.isInstanceOf
2425import assertk.assertions.isTrue
26+ import assertk.assertions.none
2527import java.io.IOException
2628import java.io.InterruptedIOException
2729import java.net.UnknownHostException
2830import java.util.concurrent.CountDownLatch
2931import java.util.concurrent.TimeUnit
3032import java.util.concurrent.atomic.AtomicBoolean
3133import kotlin.test.assertFailsWith
34+ import okhttp3.CallEvent.DispatcherQueueEnd
35+ import okhttp3.CallEvent.DispatcherQueueStart
36+ import okhttp3.HttpUrl.Companion.toHttpUrl
3237import org.junit.jupiter.api.BeforeEach
3338import org.junit.jupiter.api.Tag
3439import org.junit.jupiter.api.Test
@@ -78,6 +83,9 @@ class DispatcherTest {
7883 fun enqueuedJobsRunImmediately () {
7984 client.newCall(newRequest(" http://a/1" )).enqueue(callback)
8085 executor.assertJobs(" http://a/1" )
86+
87+ assertThat(listener.eventSequence).none { it.isInstanceOf<DispatcherQueueStart >() }
88+ assertThat(listener.eventSequence).none { it.isInstanceOf<DispatcherQueueEnd >() }
8189 }
8290
8391 @Test
@@ -88,6 +96,10 @@ class DispatcherTest {
8896 client.newCall(newRequest(" http://b/1" )).enqueue(callback)
8997 client.newCall(newRequest(" http://b/2" )).enqueue(callback)
9098 executor.assertJobs(" http://a/1" , " http://a/2" , " http://b/1" )
99+
100+ val dispatcherQueueStart = listener.removeUpToEvent<DispatcherQueueStart >()
101+ assertThat(dispatcherQueueStart.call.request().url).isEqualTo(" http://b/2" .toHttpUrl())
102+ assertThat(listener.eventSequence).none { it.isInstanceOf<DispatcherQueueEnd >() }
91103 }
92104
93105 @Test
@@ -97,6 +109,10 @@ class DispatcherTest {
97109 client.newCall(newRequest(" http://a/2" )).enqueue(callback)
98110 client.newCall(newRequest(" http://a/3" )).enqueue(callback)
99111 executor.assertJobs(" http://a/1" , " http://a/2" )
112+
113+ val dispatcherQueueStart = listener.removeUpToEvent<DispatcherQueueStart >()
114+ assertThat(dispatcherQueueStart.call.request().url).isEqualTo(" http://a/3" .toHttpUrl())
115+ assertThat(listener.eventSequence).none { it.isInstanceOf<DispatcherQueueEnd >() }
100116 }
101117
102118 @Test
@@ -116,8 +132,23 @@ class DispatcherTest {
116132 client.newCall(newRequest(" http://c/1" )).enqueue(callback)
117133 client.newCall(newRequest(" http://a/2" )).enqueue(callback)
118134 client.newCall(newRequest(" http://b/2" )).enqueue(callback)
135+
136+ val dispatcherQueueStartC1 = listener.removeUpToEvent<DispatcherQueueStart >()
137+ assertThat(dispatcherQueueStartC1.call.request().url).isEqualTo(" http://c/1" .toHttpUrl())
138+ val dispatcherQueueStartA2 = listener.removeUpToEvent<DispatcherQueueStart >()
139+ assertThat(dispatcherQueueStartA2.call.request().url).isEqualTo(" http://a/2" .toHttpUrl())
140+ val dispatcherQueueStartB2 = listener.removeUpToEvent<DispatcherQueueStart >()
141+ assertThat(dispatcherQueueStartB2.call.request().url).isEqualTo(" http://b/2" .toHttpUrl())
142+ assertThat(listener.eventSequence).none { it.isInstanceOf<DispatcherQueueEnd >() }
143+
119144 dispatcher.maxRequests = 4
120145 executor.assertJobs(" http://a/1" , " http://b/1" , " http://c/1" , " http://a/2" )
146+
147+ val dispatcherQueueEndC1 = listener.removeUpToEvent<DispatcherQueueEnd >()
148+ assertThat(dispatcherQueueEndC1.call.request().url).isEqualTo(" http://c/1" .toHttpUrl())
149+ val dispatcherQueueEndA2 = listener.removeUpToEvent<DispatcherQueueEnd >()
150+ assertThat(dispatcherQueueEndA2.call.request().url).isEqualTo(" http://a/2" .toHttpUrl())
151+ assertThat(listener.eventSequence).none { it.isInstanceOf<DispatcherQueueEnd >() }
121152 }
122153
123154 @Test
@@ -128,8 +159,23 @@ class DispatcherTest {
128159 client.newCall(newRequest(" http://a/3" )).enqueue(callback)
129160 client.newCall(newRequest(" http://a/4" )).enqueue(callback)
130161 client.newCall(newRequest(" http://a/5" )).enqueue(callback)
162+
163+ val dispatcherQueueStartA3 = listener.removeUpToEvent<DispatcherQueueStart >()
164+ assertThat(dispatcherQueueStartA3.call.request().url).isEqualTo(" http://a/3" .toHttpUrl())
165+ val dispatcherQueueStartA4 = listener.removeUpToEvent<DispatcherQueueStart >()
166+ assertThat(dispatcherQueueStartA4.call.request().url).isEqualTo(" http://a/4" .toHttpUrl())
167+ val dispatcherQueueStartA5 = listener.removeUpToEvent<DispatcherQueueStart >()
168+ assertThat(dispatcherQueueStartA5.call.request().url).isEqualTo(" http://a/5" .toHttpUrl())
169+ assertThat(listener.eventSequence).none { it.isInstanceOf<DispatcherQueueEnd >() }
170+
131171 dispatcher.maxRequestsPerHost = 4
132172 executor.assertJobs(" http://a/1" , " http://a/2" , " http://a/3" , " http://a/4" )
173+
174+ val dispatcherQueueEndA3 = listener.removeUpToEvent<DispatcherQueueEnd >()
175+ assertThat(dispatcherQueueEndA3.call.request().url).isEqualTo(" http://a/3" .toHttpUrl())
176+ val dispatcherQueueEndA4 = listener.removeUpToEvent<DispatcherQueueEnd >()
177+ assertThat(dispatcherQueueEndA4.call.request().url).isEqualTo(" http://a/4" .toHttpUrl())
178+ assertThat(listener.eventSequence).none { it.isInstanceOf<DispatcherQueueEnd >() }
133179 }
134180
135181 @Test
0 commit comments