| # 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 ShardProc(base.TestProcFilter): | |
| """Processor distributing tests between shards. | |
| It simply passes every n-th test. To be deterministic it has to be placed | |
| before all processors that generate tests dynamically. | |
| """ | |
| def __init__(self, myid, shards_count): | |
| """ | |
| Args: | |
| myid: id of the shard within [0; shards_count - 1] | |
| shards_count: number of shards | |
| """ | |
| super(ShardProc, self).__init__() | |
| assert myid >= 0 and myid < shards_count | |
| self._myid = myid | |
| self._shards_count = shards_count | |
| self._last = 0 | |
| def _filter(self, test): | |
| res = self._last != self._myid | |
| self._last = (self._last + 1) % self._shards_count | |
| return res |