Size: a a a

2020 November 26

W

WhiteBlackGoose in pro.net
Я был уверен, что селектор реранит все это дело...
источник

W

WhiteBlackGoose in pro.net
А так получилось, что так как я в будущем делаю это:

var tasks = tasksAndCts.Select(c => c.Item2).ToArray();
var ctss = tasksAndCts.Select(c => c.Item1).ToArray();

То оно реранится дважды
источник

W

WhiteBlackGoose in pro.net
Такие дела. А попа болит, господа
источник

AB

Alex Bespalov in pro.net
ну не зря
источник

AB

Alex Bespalov in pro.net
(болит не зря)
источник

AB

Alex Bespalov in pro.net
судя по всему надо про linq почитать
источник

W

WhiteBlackGoose in pro.net
Злобно, но справедливо
источник

W

WhiteBlackGoose in pro.net
Ленивое оно оказывается
источник

W

WhiteBlackGoose in pro.net
Ура, слава сатане, тесты прошли
источник

W

WhiteBlackGoose in pro.net
А как в реальном мире проводят тесты на многопоток? Там же все время приходится придумывать операции, зависимые от времени. Я вот щас тестировал, что вот четыре таски запускаю, какие-то отменяю, и смотрю, те ли отменились. Но у меня тут везде миллисекунды - тут протестить, что операция длится не менее секунды, тут - отменить через полсекунды. Конечно, это зависит от железа и версии библиотеки, и вообще кажется ненадежным
источник

W

WhiteBlackGoose in pro.net
Иначе говоря, такие тесты бы не прошли на супер мощном железе, где у меня таска завершается до того, как я ее успеваю отменить
источник

W

WhiteBlackGoose in pro.net
Поэтому иногда, например, результат тестов на CI отличается от моих локальных
источник

W

WhiteBlackGoose in pro.net
Как это делается по-хорошему?
источник

AB

Alex Bespalov in pro.net
>где у меня таска завершается до того, как я ее успеваю отменить
возможно в тестовых целях эта таска должна крутить задачу _чуть дольше_, возомжно пока ей (задаче которую крутит таска) не просигнализируют, что можно завершаться
источник

W

WhiteBlackGoose in pro.net
Там бегает один метод, который на предоставленных данных у меня работает 5 секунд. Но я же не заставлю его дольше крутиться... хотя можно, конечно, десять раз его запустить. Но тогда другой вопрос: я хочу проверить, что у меня только определенные таски отменяются. Я это сделал через ожидание всех, и потом смотрю на их состояния. И если делать метод, который кучу времени крутится, то сильно замедлит выполнение тестов
источник

W

WhiteBlackGoose in pro.net
С другой стороны, я думаю, что могу подождать пару секунд не дожидаясь завершения всех тасков, и уже ассертить
источник

W

WhiteBlackGoose in pro.net
Наверное, это и имеет смысл сделать
источник

См

Свое мнение... in pro.net
Переслано от Свое мнение...
Ребята, добрый вечер, есть проект с гитхаба dllка, кто может помочь с компиляцией за небольшое вознаграждение?
источник

AB

Alex Bespalov in pro.net
WhiteBlackGoose
Наверное, это и имеет смысл сделать
Имеет смысл обмазаться примитивами синхронизации типа всяких семафоров и т.д. и подменять, например, код выполняемый в тасках на свой тестовый. В итоге таска будет завершаться по сигналу, который будет даваться примитиву синхронизации из теста. Например, считаешь числа фибаначи и есть у тебя интерфейс IFibanacii (хз как фибаначи пишется правильно). Реальный у тебя расчет в Fibanacii : IFibanacii. А для теста в контейнере регается TestFibanacii : IFibanacii который выставляет может быть какие то методы или свойства, через которые можно его, типа, завершить. В итоге код в задаче будет отрабатывать сколько нужно. По секундам, миллисекундам точно ничего не нужно ловить, это гиблое дело и те кто будут код поддерживать не поблагодарят. Ну и это гадание на гуще кофейной, т.к. кода не видно.
источник

W

WhiteBlackGoose in pro.net
Так я этот Fibanacii и тестю же, зачем мне дотнетовский многопоток тестить?
источник