
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
28.08.2017, 17:46
|
|||
|---|---|---|---|
|
|||
Как написать тесты на экзекутор ? |
|||
|
#18+
Дали задачку написать класс который исполняет задачи. Он может это делать параллельно в некоторых случаях, а в некоторых случаях это запрещено. Просят написать тесты на эту функциональность. Что-то у меня в голове пазл не сходится как это сделать. Понятно, что имплементацию таски пишу я сам, но как оттестировать тот факт, что некоторые таски не исполнялись параллельно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.08.2017, 23:55
|
|||
|---|---|---|---|
Как написать тесты на экзекутор ? |
|||
|
#18+
questioner, Совсем недавно такое делал, глянь здесь . Проверка, что жобы выполнялись последовательно называется assertExecutedInOrder, использует время начала и окончания выполнения каждого жоба (начало выполнения следующего должно быть не раньше окончания предыдущего). Подразумевается, что каждый жоб сам умеет отдать эти два параметра, но в принципе можно их регистрировать независимо в экзекуторе или каком-нибудь листенере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2017, 01:36
|
|||
|---|---|---|---|
Как написать тесты на экзекутор ? |
|||
|
#18+
questionerДали задачку написать класс который исполняет задачи. Он может это делать параллельно в некоторых случаях, а в некоторых случаях это запрещено. Просят написать тесты на эту функциональность. Что-то у меня в голове пазл не сходится как это сделать. Понятно, что имплементацию таски пишу я сам, но как оттестировать тот факт, что некоторые таски не исполнялись параллельно Вы бы не могли уточнить Вам не сказали как это имплементировать через JUnit, Mock или BDD? На мой взгляд Вам надо написать сценарии на огурце и прогнать их походу когда проект встанет используя типо REST API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2017, 07:37
|
|||
|---|---|---|---|
|
|||
Как написать тесты на экзекутор ? |
|||
|
#18+
questionerПонятно, что имплементацию таски пишу я сам, но как оттестировать тот факт, что некоторые таски не исполнялись параллельно Семафор какой-нибудь. Пушишь две "непараллельные" таски. Одна блочит семафор и спит (условную) секунду. Вторая в течении той же (условной) секунды проверяет, что семафор свободен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2017, 08:58
|
|||
|---|---|---|---|
Как написать тесты на экзекутор ? |
|||
|
#18+
questionerДали задачку написать класс который исполняет задачи. Он может это делать параллельно в некоторых случаях, а в некоторых случаях это запрещено. Просят написать тесты на эту функциональность. Что-то у меня в голове пазл не сходится как это сделать. Понятно, что имплементацию таски пишу я сам, но как оттестировать тот факт, что некоторые таски не исполнялись параллельно Парень. Такое не тестят обычно. Тестят логику. Там где хотя-бы число состояний счетно. В параллельном коде число состояний - умножается. Плюс вводятся новые состояния связанные с ожиданиями. Вобщем протестировать параллельный код настолько сложно что лучше этим не заниматься. Только очковтирательство получится. Если ты сможешь - то вынеси логику в отдельный черный ящик и протестируй ее. Без мультипоточности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2017, 10:21
|
|||
|---|---|---|---|
|
|||
Как написать тесты на экзекутор ? |
|||
|
#18+
maytonПарень. Такое не тестят обычно. Тестят логику. Там где хотя-бы число состояний счетно. В параллельном коде число состояний - умножается. Плюс вводятся новые состояния связанные с ожиданиями. Вобщем протестировать параллельный код настолько сложно что лучше этим не заниматься. Только очковтирательство получится. Тестится. Я ловил в тестах ошибку. Да, надо понимать, что вероятность упасть при ошибке не 100%, но т.к. CI гоняет их постоянно- то проблемы обычно всплывают. Правда надо внимательно писать, чтобы не поймать лишних ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2017, 10:35
|
|||
|---|---|---|---|
Как написать тесты на экзекутор ? |
|||
|
#18+
Ваш тест скорее всего настолько сложен что его тоже надо покрыть тестами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2017, 12:33
|
|||
|---|---|---|---|
Как написать тесты на экзекутор ? |
|||
|
#18+
лол. убил. тольо что сказал своему коллеге тоже самое про его мегатесты. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2017, 15:28
|
|||
|---|---|---|---|
Как написать тесты на экзекутор ? |
|||
|
#18+
questionerПросят написать тесты на эту функциональностьТут только интеграционный тест ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2017, 17:10
|
|||
|---|---|---|---|
|
|||
Как написать тесты на экзекутор ? |
|||
|
#18+
maytonВаш тест скорее всего настолько сложен что его тоже надо покрыть тестами Не ударжелся, написал . Г@внокод, понятное дело. Ну да, мозги надо включать и с первого раза не заработает - ну так красные ленточки на входе были Если поправить код около "//!!!" тут и тут то можно словить ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.08.2017, 21:46
|
|||
|---|---|---|---|
Как написать тесты на экзекутор ? |
|||
|
#18+
Alexey TominmaytonВаш тест скорее всего настолько сложен что его тоже надо покрыть тестами Не ударжелся, написал . Г@внокод, понятное дело. Ну да, мозги надо включать и с первого раза не заработает - ну так красные ленточки на входе были Если поправить код около "//!!!" тут и тут то можно словить ошибки. Спасибо. Я даже более скажу. У меня есть аналогичный код в тестах со sleep(..). Но он не для мультипоточности а для JMS(Apache MQ). Дело в том что в некоторых тестах в силу особенностей технологии нет синхронного assert. Все - асинхронные. Стоишь как дурак и ждёшь. Придёт месседж или нет? Если не пришел сразу - то не факт что fail(). Просто надо еще пол-минутки подождать. Вот таков он этот JMS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.08.2017, 06:56
|
|||
|---|---|---|---|
|
|||
Как написать тесты на экзекутор ? |
|||
|
#18+
maytonУ меня есть аналогичный код в тестах со sleep(..). Но он не для мультипоточности а для JMS(Apache MQ). Дело в том что в некоторых тестах в силу особенностей технологии нет синхронного assert. Все - асинхронные. Стоишь как дурак и ждёшь. Придёт месседж или нет? Если не пришел сразу - то не факт что fail(). Просто надо еще пол-минутки подождать. Вот таков он этот JMS. Чем дальше, тем больше прихожу к убеждению, что JMS используется намного больше, чем нужно. И даже можно. Очередь/топик нужны только когда ответ вообще не нужен. Во всех остальных случаях есть инструменты и подходы лучше. Типа REST/gRPC и nginx/consul/костыли_в_mesos/... для отказа от конфигов. Если надо ждать ответа от очереди- значит архитектор идиот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.08.2017, 08:45
|
|||
|---|---|---|---|
Как написать тесты на экзекутор ? |
|||
|
#18+
Alexey TominЧем дальше, тем больше прихожу к убеждению, что JMS используется намного больше, чем нужно. И даже можно. Очередь/топик нужны только когда ответ вообще не нужен. Во всех остальных случаях есть инструменты и подходы лучше. Типа REST/gRPC и nginx/consul/костыли_в_mesos/... для отказа от конфигов. Если надо ждать ответа от очереди- значит архитектор идиот. Нет. У нас JMS реально нужен. :) Для нашей системы это natural way. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.08.2017, 10:46
|
|||
|---|---|---|---|
|
|||
Как написать тесты на экзекутор ? |
|||
|
#18+
maytonУ нас JMS реально нужен. :) Для нашей системы это natural way. Тогда зачем тестировать ответ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.08.2017, 19:52
|
|||
|---|---|---|---|
Как написать тесты на экзекутор ? |
|||
|
#18+
Тестируем потому что требование заказчика. Тесты - ендпоинт. То есть тестится не какой-то модуль а Полный цикл работы приложения. Начиная от того как jms сообщение зашло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.08.2017, 06:03
|
|||
|---|---|---|---|
|
|||
Как написать тесты на экзекутор ? |
|||
|
#18+
maytonТестируем потому что требование заказчика. Тесты - ендпоинт. То есть тестится не какой-то модуль а Полный цикл работы приложения. Начиная от того как jms сообщение зашло. Ну это как раз интеграционные тесты. А на subj можно и unit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.08.2017, 06:58
|
|||
|---|---|---|---|
Как написать тесты на экзекутор ? |
|||
|
#18+
Ваш тест не тестирует параллельной работы. По сути он просто утверждает что экзекютор когда нибудь остановится. И из него не очевидно что какая то работа была выполнена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.08.2017, 07:31
|
|||
|---|---|---|---|
Как написать тесты на экзекутор ? |
|||
|
#18+
Плюсую, что тестировать параллельную работу это не черный ящик со входом выход тестировать. Предмет теста не простой). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.08.2017, 09:06
|
|||
|---|---|---|---|
|
|||
Как написать тесты на экзекутор ? |
|||
|
#18+
maytonВаш тест не тестирует параллельной работы. Поставь один поток- тест упадёт. Значит тестирует. maytonПо сути он просто утверждает что экзекютор когда нибудь остановится. И из него не очевидно что какая то работа была выполнена. Да, надо дописать в конце выполнения установку флага. Там тестируется две вещи- задачи одной группы выполняются последовательно, разных- параллельно. Так было в первом сообщении. Больше ничего не тестировал. Да собственно и не надо- там внутри тредпулэкзекьютор, его тестировать не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.08.2017, 09:30
|
|||
|---|---|---|---|
Как написать тесты на экзекутор ? |
|||
|
#18+
Давай порассуждаем. В чем смысл этого экзекютора. Не вникая в детали твоих групп и прочих категорий. Я утверждаю что существует момент времени t _когда хотябы два потока работали одновременно. Это главный поинт и его надо тестировать. Без него этот экзекютор фейк и его работу можно было сэмулировать Как последовательную. Как проверить параллельную работу? Вопрос достойный отдельного топика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.08.2017, 09:39
|
|||
|---|---|---|---|
|
|||
Как написать тесты на экзекутор ? |
|||
|
#18+
maytonДавай порассуждаем. В чем смысл этого экзекютора. Не вникая в детали твоих групп и прочих категорий. Я утверждаю что существует момент времени t _когда хотябы два потока работали одновременно. Это главный поинт и его надо тестировать. Без него этот экзекютор фейк и его работу можно было сэмулировать Как последовательную. Как проверить параллельную работу? Вопрос достойный отдельного топика. Всё просто. Каждая задача выполняется секунду. У нас 5 задач. Через 1.5 секунды в очереди нет задач- значит параллельная работат есть. Проверим. Сделаем всё в один поток - получим падение теста. Значит проверка есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.08.2017, 09:44
|
|||
|---|---|---|---|
Как написать тесты на экзекутор ? |
|||
|
#18+
Мне кажется критерий потраченного времени - плохой советчик. Ведь в реальности потока не стоят в sleep а исполняют работу? Нужен пруф работы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.08.2017, 10:58
|
|||
|---|---|---|---|
|
|||
Как написать тесты на экзекутор ? |
|||
|
#18+
maytonМне кажется критерий потраченного времени - плохой советчик. Ведь в реальности потока не стоят в sleep а исполняют работу? Нужен пруф работы Зачем? А если тест гоняется на древнем одноядерном процессоре, то он упадёт, что ли? В реальности всё одно потоки ждут обычно- обычно сеть, или диск. В крайнем случае память. Загрузить ядро работой даже на 50%- это большая удача. Не надо ударяться в софистику. стоит вполне конкретная задача топикстартера. Этот тест её решает. Я писал код, в котором, к примеру, можно было выполнять к серверу не более 5 запросов в секунду, при этом ответы были медленные, поэтому работало 30 потоков. Тесты были, первоначальные ошибки поймали, потом код работал сутками и ограничения не превышал. Так что тесты писать можно. Было бы желание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.08.2017, 13:19
|
|||
|---|---|---|---|
|
|||
Как написать тесты на экзекутор ? |
|||
|
#18+
Продвинутые люди сказали, что надо писать тесты на jcStress ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.08.2017, 14:20
|
|||
|---|---|---|---|
|
|||
Как написать тесты на экзекутор ? |
|||
|
#18+
questionerПродвинутые люди сказали, что надо писать тесты на jcStress Классная штука. Но, насколько я понял, это black-box тест. Если так, то это не замена, а дополнение самописным тестам. white-box тестирование тоже нужно делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&tablet=1&tid=2122620]: |
0ms |
get settings: |
4ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 187ms |
| total: | 286ms |

| 0 / 0 |
