Тест дроссельной заслонки

Я запускаю testng в многопоточном режиме с @DataProvider(name = "blah", parallel = true)

Мои тесты вызывают производственную службу, и я хотел бы ограничить количество запросов в секунду. Есть ли способ дросселировать testng?


person CrazyDoggg    schedule 19.12.2013    source источник


Ответы (3)


Если вы не возражаете против импорта 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(); }
person assylias    schedule 19.12.2013

Я бы сказал, что число тестовых потоков ограничено.
http://testng.org/doc/documentation-main.html#parallel-running
См. эту документацию, в которой объясняется, как это сделать как в XML, так и в @Annotation.

person user2318564    schedule 19.12.2013
comment
Можете быть более конкретными? Я не вижу никаких упоминаний о троттлинге в документации. - person assylias; 19.12.2013
comment
Это определяет количество потоков, но не ограничивает частоту выполнения тестов. Так что это не будет ограничивать тесты до 5 в секунду, например... - person assylias; 19.12.2013

Большинство людей используют для этого Browsermob Proxy с помощью команды PUT /proxy/[port]/limit API, но решение, предложенное @assylias тоже очень круто выглядит.

person djangofan    schedule 23.03.2015