| 131 | }; |
| 132 | |
| 133 | TEST_P(SequencerTest, BasicTaskOrder) |
| 134 | { |
| 135 | using namespace Bloomberg::quantum; |
| 136 | |
| 137 | const int taskCount = 2000; |
| 138 | const int sequenceKeyCount = 3; |
| 139 | SequencerTestData testData; |
| 140 | SequencerTestData::SequenceKeyMap sequenceKeys; |
| 141 | |
| 142 | SequencerTestData::TaskSequencer sequencer(getDispatcher()); |
| 143 | |
| 144 | // enqueue the tasks |
| 145 | for(SequencerTestData::TaskId id = 0; id < taskCount; ++id) |
| 146 | { |
| 147 | SequencerTestData::SequenceKey sequenceKey = id % sequenceKeyCount; |
| 148 | // save the task id for this sequenceKey |
| 149 | sequenceKeys[sequenceKey].push_back(id); |
| 150 | sequencer.enqueue(sequenceKey, testData.makeTask(id)); |
| 151 | } |
| 152 | sequencer.drain(); |
| 153 | |
| 154 | EXPECT_EQ(testData.results().size(), (size_t)taskCount); |
| 155 | |
| 156 | // the tasks must be ordered within the same sequenceKey |
| 157 | for(auto sequenceKeyData : sequenceKeys) |
| 158 | { |
| 159 | for(size_t i = 1; i < sequenceKeyData.second.size(); ++i) |
| 160 | { |
| 161 | testData.ensureOrder(sequenceKeyData.second[i-1], sequenceKeyData.second[i]); |
| 162 | } |
| 163 | } |
| 164 | } |
| 165 | |
| 166 | TEST_P(SequencerTest, TrimKeys) |
| 167 | { |
nothing calls this directly
no test coverage detected