| 895 | } |
| 896 | |
| 897 | void TCoroTest::TestComputeCoroutineYield() { |
| 898 | //if we have busy (e.g., on cpu) coroutine, when it yields, io must flow |
| 899 | TContExecutor exec(32000); |
| 900 | exec.SetFailOnError(true); |
| 901 | |
| 902 | TPipe in, out; |
| 903 | TPipe::Pipe(in, out); |
| 904 | SetNonBlock(in.GetHandle()); |
| 905 | size_t lastRead = 42; |
| 906 | |
| 907 | auto compute = [&](TCont* cont) { |
| 908 | for (size_t i = 0; i < 10; ++i) { |
| 909 | write(out.GetHandle(), &i, sizeof i); |
| 910 | Sleep(TDuration::MilliSeconds(10)); |
| 911 | cont->Yield(); |
| 912 | UNIT_ASSERT(lastRead == i); |
| 913 | } |
| 914 | }; |
| 915 | |
| 916 | auto io = [&](TCont* cont) { |
| 917 | for (size_t i = 0; i < 10; ++i) { |
| 918 | NCoro::ReadI(cont, in.GetHandle(), &lastRead, sizeof lastRead); |
| 919 | } |
| 920 | }; |
| 921 | |
| 922 | exec.Create(compute, "compute"); |
| 923 | exec.Create(io, "io"); |
| 924 | |
| 925 | exec.Execute(); |
| 926 | } |
| 927 | |
| 928 | void TCoroTest::TestPollEngines() { |
| 929 | bool defaultChecked = false; |
nothing calls this directly
no test coverage detected