| # 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 |