Как потоки работают с внутренними вызовами других функций в сценарии? - PullRequest
0 голосов
/ 22 марта 2019

Я запускаю пару тестов, в которых я обращаюсь к другим функциям, чтобы выполнить проверку, вернуться к сценарию и выполнить дальше.

Пример:

Given url Admin

And def name = '1-' + now()

And json myReq = read('Swagger-AuthThrottling.json')

And set myReq.swagger.info.title = title

And def basepath = 'country' + now()

And set myReq.swagger.basePath = basepath

And request myReq

When method post

Then status 200

And def APPIDFromPublisher = call read('classpath:examples/Services/GetAPIIDFromPublisher.feature') {'title': '#(title)'  }

And def APIIDPub = APPIDFromPublisher.APIIDPub

And def utils = Java.type('examples.Publisher.AddAdvancedThrottlingPolicy')
And def result = utils.main(title)


And def APPIDFromStore = call read('classpath:examples/Services/GetAPIIDFromStore.feature') {'title': '#(title)'  }

And def APIIDStr = APPIDFromStore.APIIDStr

And print 'APPIDFromStore for Qantas Gateway API: ' , APPIDFromStore.APIIDStr

Я запускаю много тестов с такой структурой с 5 потоками.

Теперь я не уверен, как работают потоки при выполнении таких тестов.

Насколько я понимаю, когда я начинаю выполнение, должно быть выбрано 5 тестовых случаев, и один поток не должен покидать тест в любой момент, пока он не будет завершен. Поэтому в идеале я должен видеть 5 параллельных тестов, и как только эти 5 тестов будут завершены тогда следующие 5 должны быть подобраны.

Но на самом деле происходит следующее: 5 потоков выбирают 5 тестовых случаев, но, по-видимому, оставляют тесты посередине (подозревая, что они остаются в точке, где я вызываю другую функцию в середине теста), и выбирают еще один новый тест. из следующего слота, а затем какого-то другого потока или, может быть, того же потока, снова берет наполовину выполненный тест, чтобы завершить его.

Итак, в заключение, при 5 параллельных потоках я в идеале хотел видеть только 5 тестов, которые начинаются и заканчиваются от конца к концу, и только после этого должны быть выбраны следующие 5 тестов. Но в действительности я вижу 5 тестов, запущенных в начале выполнения, но затем постепенно он накапливается с большим количеством тестов, а затем случайным образом завершает выполнение для всех тестов.

Хотя полное выполнение не завершается неудачей из-за случайного выбора и отбрасывания тестов потоками, но он загружает мой магазин множеством API (мои тесты в основном регистрируют API в Магазине), что снижает производительность магазина.

Было бы здорово узнать больше о функционировании потоков и найти решение для этого.

1 Ответ

0 голосов
/ 22 марта 2019

Используете ли вы Parallel Runner ?Если нет, я не могу понять этот вопрос, пожалуйста, следуйте этому процессу, будьте просты и понятны: https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue

...