/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
library/cpp/messagebus/scheduler_actor_ut.cpp
48 строк
1 KB
ilnurkh
Y_FAIL->Y_ABORT at '^li'
17 окт 2023, 09:30
17 окт 2023, 09:30
33012fb
Код
Авторство
О чём код?
#include <library/cpp/testing/unittest/registar.h> #include "scheduler_actor.h" #include "misc/test_sync.h" using namespace NBus; using namespace NBus::NPrivate; using namespace NActor; Y_UNIT_TEST_SUITE(TSchedulerActorTests) { struct TMyActor: public TAtomicRefCount<TMyActor>, public TActor<TMyActor>, public TScheduleActor<TMyActor> { TTestSync TestSync; TMyActor(TExecutor* executor, TScheduler* scheduler) : TActor<TMyActor>(executor) , TScheduleActor<TMyActor>(scheduler) , Iteration(0) { } unsigned Iteration; void Act(TDefaultTag) { if (!Alarm.FetchTask()) { Y_ABORT("must not have no spurious wakeups in test"); } TestSync.WaitForAndIncrement(Iteration++); if (Iteration <= 5) { ScheduleAt(TInstant::Now() + TDuration::MilliSeconds(Iteration)); } } }; Y_UNIT_TEST(Simple) { TExecutor executor(1); TScheduler scheduler; TIntrusivePtr<TMyActor> actor(new TMyActor(&executor, &scheduler)); actor->ScheduleAt(TInstant::Now() + TDuration::MilliSeconds(1)); actor->TestSync.WaitForAndIncrement(6); // TODO: stop in destructor scheduler.Stop(); } }