Skip to content

Commit d1bbcf7

Browse files
committed
Reverted using virtual time to using real time
in order to introduce virtual time in tasks
1 parent 4c26794 commit d1bbcf7

8 files changed

+64
-47
lines changed

test/contributors/MockGithubService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ object MockGithubService : GitHubService {
1616
}
1717

1818
override suspend fun getOrgRepos(org: String): Response<List<Repo>> {
19-
delay(getReposDelay)
19+
delay(reposDelay)
2020
return Response.success(repos)
2121
}
2222

test/contributors/testData.kt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ data class TestRepo(val name: String, val delay: Long, val users: List<User>)
66

77
data class TestResults(val timeFromStart: Long, val users: List<User>)
88

9+
const val reposDelay = 1000L
10+
911
val testRepos = listOf(
1012
TestRepo(
1113
"repo-1", 1000, listOf(
@@ -27,14 +29,13 @@ val testRepos = listOf(
2729
)
2830
)
2931

30-
const val getReposDelay = 1000L
3132

3233
val repos = testRepos.mapIndexed { index, testRepo -> Repo(index.toLong(), testRepo.name) }
3334

3435
val reposMap = testRepos.associate { it.name to it }
3536

3637
val expectedResults = TestResults(
37-
4000,
38+
4000, // 1000 + (1000 + 1200 + 800)
3839
listOf(
3940
User("user-2", 100),
4041
User("user-3", 60),
@@ -43,29 +44,29 @@ val expectedResults = TestResults(
4344
)
4445

4546
val expectedConcurrentResults = TestResults(
46-
2200,
47+
2200, // 1000 + max(1000, 1200, 800)
4748
expectedResults.users
4849
)
4950

5051
val progressResults = listOf(
5152
TestResults(
52-
2000,
53+
2000, // 1000 + 1000
5354
listOf(User(login = "user-2", contributions = 20), User(login = "user-1", contributions = 10))
5455
),
5556
TestResults(
56-
3200,
57+
3200, // 2000 + 1200
5758
listOf(User(login = "user-2", contributions = 50), User(login = "user-1", contributions = 50))
5859
),
5960
expectedResults
6061
)
6162

6263
val concurrentProgressResults = listOf(
6364
TestResults(
64-
1800,
65+
1800, // 1000 + 800
6566
listOf(User(login = "user-3", contributions = 60), User(login = "user-2", contributions = 50))
6667
),
6768
TestResults(
68-
2000,
69+
2000, // 1000 + max(800, 1000)
6970
listOf(User(login = "user-2", contributions = 70), User(login = "user-3", contributions = 60),
7071
User(login = "user-1", contributions = 10))
7172
),

test/tasks/Request1BlockingKtTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class Request1BlockingKtTest {
1010
@Test
1111
fun testAggregation() {
1212
val users = loadContributorsBlocking(MockGithubService, testRequestData)
13-
Assert.assertEquals("List of contributors should be sorted" +
13+
Assert.assertEquals("List of contributors should be sorted " +
1414
"by the number of contributions in a descending order",
1515
expectedResults.users, users)
1616
}

test/tasks/Request3CallbacksKtTest.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package tasks
22

3-
import contributors.*
3+
import contributors.MockGithubService
4+
import contributors.expectedResults
5+
import contributors.testRequestData
46
import org.junit.Assert
57
import org.junit.Test
68

test/tasks/Request4SuspendKtTest.kt

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,31 @@
11
package tasks
22

33
import contributors.MockGithubService
4-
import contributors.expectedConcurrentResults
54
import contributors.expectedResults
65
import contributors.testRequestData
7-
import kotlinx.coroutines.ExperimentalCoroutinesApi
8-
import kotlinx.coroutines.test.runBlockingTest
6+
import kotlinx.coroutines.runBlocking
97
import org.junit.Assert
108
import org.junit.Test
119

12-
@UseExperimental(ExperimentalCoroutinesApi::class)
1310
class Request4SuspendKtTest {
1411
@Test
15-
fun testSuspend() = runBlockingTest {
16-
val startTime = currentTime
12+
fun testSuspend() = runBlocking {
13+
val startTime = System.currentTimeMillis()
1714
val result = loadContributorsSuspend(MockGithubService, testRequestData)
1815
Assert.assertEquals("Wrong result for 'loadContributorsSuspend'", expectedResults.users, result)
19-
val virtualTime = currentTime - startTime
16+
val totalTime = System.currentTimeMillis() - startTime
17+
/*
18+
// TODO: uncomment this assertion
2019
Assert.assertEquals(
2120
"The calls run consequently, so the total virtual time should be 4000 ms: " +
22-
"1000 for repos request plus (1000 + 1200 + 800) = 3000 for contributors sequential requests)",
23-
expectedResults.timeFromStart, virtualTime
21+
"1000 for repos request plus (1000 + 1200 + 800) = 3000 for sequential contributors requests)",
22+
expectedResults.timeFromStart, totalTime
23+
)
24+
*/
25+
Assert.assertTrue(
26+
"The calls run consequently, so the total time should be around 4000 ms: " +
27+
"1000 for repos request plus (1000 + 1200 + 800) = 3000 for sequential contributors requests)",
28+
totalTime in expectedResults.timeFromStart..(expectedResults.timeFromStart + 500)
2429
)
2530
}
2631
}

test/tasks/Request5ConcurrentKtTest.kt

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,30 @@ package tasks
22

33
import contributors.MockGithubService
44
import contributors.expectedConcurrentResults
5-
import contributors.expectedResults
65
import contributors.testRequestData
7-
import kotlinx.coroutines.ExperimentalCoroutinesApi
8-
import kotlinx.coroutines.test.runBlockingTest
6+
import kotlinx.coroutines.runBlocking
97
import org.junit.Assert
108
import org.junit.Test
119

12-
@UseExperimental(ExperimentalCoroutinesApi::class)
1310
class Request5ConcurrentKtTest {
1411
@Test
15-
fun testConcurrent() = runBlockingTest {
16-
val startTime = currentTime
12+
fun testConcurrent() = runBlocking {
13+
val startTime = System.currentTimeMillis()
1714
val result = loadContributorsConcurrent(MockGithubService, testRequestData)
1815
Assert.assertEquals("Wrong result for 'loadContributorsConcurrent'", expectedConcurrentResults.users, result)
19-
val virtualTime = currentTime - startTime
16+
val totalTime = System.currentTimeMillis() - startTime
17+
/*
18+
// TODO: uncomment this assertion
2019
Assert.assertEquals(
2120
"The calls run concurrently, so the total virtual time should be 2200 ms: " +
22-
"1000 for repos request plus max(1000, 1200, 800) = 1200 for contributors concurrent requests)",
23-
expectedConcurrentResults.timeFromStart, virtualTime
21+
"1000 ms for repos request plus max(1000, 1200, 800) = 1200 ms for concurrent contributors requests)",
22+
expectedConcurrentResults.timeFromStart, totalTime
23+
)
24+
*/
25+
Assert.assertTrue(
26+
"The calls run concurrently, so the total virtual time should be 2200 ms: " +
27+
"1000 ms for repos request plus max(1000, 1200, 800) = 1200 ms for concurrent contributors requests)",
28+
totalTime in expectedConcurrentResults.timeFromStart..(expectedConcurrentResults.timeFromStart + 500)
2429
)
2530
}
2631
}

test/tasks/Request6ProgressKtTest.kt

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
package tasks
22

3-
import contributors.*
4-
import kotlinx.coroutines.ExperimentalCoroutinesApi
5-
import kotlinx.coroutines.test.runBlockingTest
3+
import contributors.MockGithubService
4+
import contributors.progressResults
5+
import contributors.testRequestData
6+
import kotlinx.coroutines.runBlocking
67
import org.junit.Assert
78
import org.junit.Test
89

9-
@UseExperimental(ExperimentalCoroutinesApi::class)
1010
class Request6ProgressKtTest {
1111
@Test
12-
fun testProgress() = runBlockingTest {
13-
val startTime = currentTime
12+
fun testProgress() = runBlocking {
13+
val startTime = System.currentTimeMillis()
1414
var index = 0
1515
loadContributorsProgress(MockGithubService, testRequestData) {
1616
users, _ ->
1717
val expected = progressResults[index++]
18-
val virtualTime = currentTime - startTime
18+
val time = System.currentTimeMillis() - startTime
19+
/*
20+
// TODO: uncomment this assertion
1921
Assert.assertEquals("Expected intermediate results after virtual ${expected.timeFromStart} ms:",
20-
expected.timeFromStart, virtualTime)
21-
Assert.assertEquals("Wrong progress result after $virtualTime:", expected.users, users)
22+
expected.timeFromStart, time)
23+
*/
24+
Assert.assertEquals("Wrong progress result after $time:", expected.users, users)
2225
}
2326
}
2427
}

test/tasks/Request7ChannelsKtTest.kt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
package tasks
22

3-
import contributors.*
4-
import kotlinx.coroutines.ExperimentalCoroutinesApi
5-
import kotlinx.coroutines.channels.Channel
6-
import kotlinx.coroutines.test.runBlockingTest
3+
import contributors.MockGithubService
4+
import contributors.concurrentProgressResults
5+
import contributors.testRequestData
6+
import kotlinx.coroutines.runBlocking
77
import org.junit.Assert
88
import org.junit.Test
99

10-
@UseExperimental(ExperimentalCoroutinesApi::class)
1110
class Request7ChannelsKtTest {
1211
@Test
13-
fun testChannels() = runBlockingTest {
14-
val startTime = currentTime
12+
fun testChannels() = runBlocking {
13+
val startTime = System.currentTimeMillis()
1514
var index = 0
1615
loadContributorsChannels(MockGithubService, testRequestData) {
1716
users, _ ->
1817
val expected = concurrentProgressResults[index++]
19-
val virtualTime = currentTime - startTime
18+
val time = System.currentTimeMillis() - startTime
19+
/*
20+
// TODO: uncomment this assertion
2021
Assert.assertEquals("Expected intermediate results after virtual ${expected.timeFromStart} ms:",
2122
expected.timeFromStart, virtualTime)
22-
Assert.assertEquals("Wrong progress result after $virtualTime:", expected.users, users)
23+
*/
24+
Assert.assertEquals("Wrong progress result after $time:", expected.users, users)
2325
}
24-
2526
}
2627
}

0 commit comments

Comments
 (0)