Я запускаю testng в многопоточном режиме с @DataProvider(name = "blah", parallel = true)
Мои тесты вызывают производственную службу, и я хотел бы ограничить количество запросов в секунду. Есть ли способ дросселировать testng?
Я запускаю testng в многопоточном режиме с @DataProvider(name = "blah", parallel = true)
Мои тесты вызывают производственную службу, и я хотел бы ограничить количество запросов в секунду. Есть ли способ дросселировать testng?
Если вы не возражаете против импорта Guava или уже используете ее, вы можете просто ввести a RateLimiter. Другими словами, в вашем тесте вместо:
@Test public void test() { runYourTest(); }
вы делаете:
//10 tests per second, for example:
private static final RateLimiter rateLimiter = RateLimiter.create(10.0);
@Test(dataProvider="blah")
public void test() { rateLimiter.acquire(); runYourTest(); }
Я бы сказал, что число тестовых потоков ограничено.
http://testng.org/doc/documentation-main.html#parallel-running
См. эту документацию, в которой объясняется, как это сделать как в XML, так и в @Annotation.
Большинство людей используют для этого Browsermob Proxy с помощью команды PUT /proxy/[port]/limit API, но решение, предложенное @assylias тоже очень круто выглядит.