Emcee

Форк
0
/
MultipleQueuesStatefulBucketQueueTests.swift 
104 строки · 3.6 Кб
1
import BalancingBucketQueue
2
import BucketQueueModels
3
import BucketQueueTestHelpers
4
import CommonTestModels
5
import DateProviderTestHelpers
6
import MetricsExtensions
7
import QueueModels
8
import XCTest
9

10
final class MultipleQueuesStatefulBucketQueueTests: XCTestCase {
11
    lazy var container = MultipleQueuesContainer()
12
    lazy var dateProvider = DateProviderFixture()
13
    lazy var statefulBucketQueueProvider = FakeStatefulBucketQueueProvider()
14
    lazy var stateProvider = MultipleQueuesStatefulBucketQueue(
15
        multipleQueuesContainer: container,
16
        statefulBucketQueueProvider: statefulBucketQueueProvider
17
    )
18
    
19
    func test___empty_container() {
20
        XCTAssertEqual(
21
            stateProvider.runningQueueState,
22
            RunningQueueState(
23
                enqueuedBucketCount: 0,
24
                enqueuedTests: [],
25
                dequeuedBucketCount: 0,
26
                dequeuedTests: [:]
27
            )
28
        )
29
    }
30
    
31
    func test___single_job() {
32
        let runningQueueState = RunningQueueState(
33
            enqueuedBucketCount: 50,
34
            enqueuedTests: [TestName(className: "Enqueued", methodName: "test")],
35
            dequeuedBucketCount: 25,
36
            dequeuedTests: ["worker": [TestName(className: "Dequeued", methodName: "test")]]
37
        )
38
        statefulBucketQueueProvider.fakeStatefulBucketQueue.runningQueueState = runningQueueState
39
        container.add(runningJobQueue: BalancingBucketQueueTests.createJobQueue())
40
        
41
        XCTAssertEqual(
42
            stateProvider.runningQueueState,
43
            runningQueueState
44
        )
45
    }
46
    
47
    func test___multiple_jobs() {
48
        var states: [RunningQueueState] = [
49
            RunningQueueState(
50
                enqueuedBucketCount: 50,
51
                enqueuedTests: [
52
                    TestName(className: "Enqueued1", methodName: "test1"),
53
                ],
54
                dequeuedBucketCount: 25,
55
                dequeuedTests: [
56
                    "worker1": [
57
                        TestName(className: "Dequeued1", methodName: "test1"),
58
                    ],
59
                ]
60
            ),
61
            RunningQueueState(
62
                enqueuedBucketCount: 10,
63
                enqueuedTests: [
64
                    TestName(className: "Enqueued2", methodName: "test2"),
65
                ],
66
                dequeuedBucketCount: 7,
67
                dequeuedTests: [
68
                    "worker2": [
69
                        TestName(className: "Dequeued2", methodName: "test2"),
70
                    ],
71
                ]
72
            ),
73
        ]
74
        
75
        statefulBucketQueueProvider.fakeStatefulBucketQueue.resultProvider = {
76
            let result = states[0]
77
            states.removeFirst()
78
            return result
79
        }
80
        
81
        container.add(runningJobQueue: BalancingBucketQueueTests.createJobQueue())
82
        container.add(runningJobQueue: BalancingBucketQueueTests.createJobQueue())
83
        
84
        XCTAssertEqual(
85
            stateProvider.runningQueueState,
86
            RunningQueueState(
87
                enqueuedBucketCount: 60,
88
                enqueuedTests: [
89
                    TestName(className: "Enqueued1", methodName: "test1"),
90
                    TestName(className: "Enqueued2", methodName: "test2"),
91
                ],
92
                dequeuedBucketCount: 32,
93
                dequeuedTests: [
94
                    "worker1": [
95
                        TestName(className: "Dequeued1", methodName: "test1"),
96
                    ],
97
                    "worker2": [
98
                        TestName(className: "Dequeued2", methodName: "test2"),
99
                    ],
100
                ]
101
            )
102
        )
103
    }
104
}
105

106

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.