169 похожих чатов

Кстати ещё хотел бы узнать как тестить таймер? Я при

композиции приложения потребовал

F[_] : Concurrent: Timer

Собственно с тестированием таймера возникли сложности. Единственное что пришло в голову это сделать таймер для тестов у которого sleep будет просто инкрементить приватный внутренний атомик. Но есть у меня сильное подозрение, что идея эта очень такая себе.

4 ответов

8 просмотров

Я как раз сейчас работаю над похожей штукой

Идея симулировать конкурентные эффекты в SyncIO, все задачи кидать в глобальную очередь. Вручную следить за набором работающих файберов и обрабатывать синхронно же брекеты. И держать приоритетную очередь задач на пробуждение после sleep. Ну и когда все файберы в режиме ожидания и задач в очереди нет - брать ближайшую задачу на пробуждение в определённый момент и сдвигать "глобальное время" на этот момент. Т.е. будут такие моковые инстансы Concurrent, ContextShift и Timer. В конце можно получить конечное время, но можно и дедлок

Можно попробовать заюзать TestContext из cats-laws https://github.com/typelevel/cats-effect/blob/fffb01758a29870f62146e22d1020c14a71db79b/laws/shared/src/main/scala/cats/effect/laws/util/TestContext.scala

сделать реализацию с виртуальным временем. Внутри - long а-ля текущее время и очередь засабмиченных тасок с временем их выполнения

Похожие вопросы

Обсуждают сегодня

Кстати, а я вот тут подумал. Допустим, у нас имеется цикл который выполняет огромное количество итераций, но мы хотим, чтобы какие-то действия исполнилось только один раз. В Я...
The Bird of Hermes
23
Доброй ночи. Вопрос знатокам. Имеется некая таблица, результат которой выведен в DBGrid на форме. И есть форма, с помощью которой можно как добавить запись, так и отредактиров...
Евгений
28
а всё почему? потому что ассемблер в отличии от яву порождает множество пагубных привычек, среди которых например можно отметить использование глобальных переменных для всего ...
Mixail Frolov
35
анрей С какой целью зашёл?
КТ315
42
я часов 15 назад начал пытаться написать хоть что-то напоминающее ос и у меня есть проблема, которую я пытаюсь решить последние часов 5: есть крч 2 исходника с минимальным код...
Al1to
17
@not_fajox С какой целью зашёл?
КТ315
9
Короче получается только кнопки не поменять А кнопки вроде тоже слетают при редактировании не?
inc.
10
Кто нибудь из участников чата пишет на ассемблере под GNU/Linux?
Spiker01
24
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
Всем привет ребят! Мб кто-то сталкивался? adminСomponents .get("searchСomponents", use: searchComponents) .openAPI( summary: ...
Admin Adminov
2
Карта сайта