|  | # Copyright 2018 the V8 project authors. All rights reserved. | 
|  | # Use of this source code is governed by a BSD-style license that can be | 
|  | # found in the LICENSE file. | 
|  |  | 
|  | from . import base | 
|  |  | 
|  |  | 
|  | class LoadProc(base.TestProc): | 
|  | """First processor in the chain that passes all tests to the next processor. | 
|  | """ | 
|  |  | 
|  | def __init__(self, tests): | 
|  | super(LoadProc, self).__init__() | 
|  |  | 
|  | self.tests = tests | 
|  |  | 
|  | def load_initial_tests(self, initial_batch_size): | 
|  | """ | 
|  | Args: | 
|  | exec_proc: execution processor that the tests are being loaded into | 
|  | initial_batch_size: initial number of tests to load | 
|  | """ | 
|  | loaded_tests = 0 | 
|  | while loaded_tests < initial_batch_size: | 
|  | try: | 
|  | t = next(self.tests) | 
|  | except StopIteration: | 
|  | return | 
|  |  | 
|  | if self._send_test(t): | 
|  | loaded_tests += 1 | 
|  |  | 
|  | def next_test(self, test): | 
|  | assert False, 'Nothing can be connected to the LoadProc' | 
|  |  | 
|  | def result_for(self, test, result): | 
|  | try: | 
|  | while not self._send_test(next(self.tests)): | 
|  | pass | 
|  | except StopIteration: | 
|  | # No more tests to load. | 
|  | pass |