/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/UnitTests/FoundationTest/System/ProcessGroupTest.cpp
69 строк
2 KB
C-Core
Array usage cleanup (#1864)
11 мар 2026, 23:44
Не верифицирован
11 мар 2026, 23:44
f7cb730
Код
Авторство
О чём код?
#include <FoundationTest/FoundationTestPCH.h> #if EZ_ENABLED(EZ_SUPPORTS_PROCESSES) # include <Foundation/System/ProcessGroup.h> # include <Foundation/Utilities/CommandLineUtils.h> EZ_CREATE_SIMPLE_TEST(System, ProcessGroup) { // we can launch FoundationTest with the -cmd parameter to execute a couple of useful things to test launching process const ezStringBuilder pathToSelf = ezCommandLineUtils::GetGlobalInstance()->GetParameter(0); EZ_TEST_BLOCK(ezTestBlock::Enabled, "WaitToFinish") { ezProcessGroup pgroup; ezStringBuilder out; ezMutex mutex; for (ezUInt32 i = 0; i < 8; ++i) { ezProcessOptions opt; opt.m_sProcess = pathToSelf; opt.m_onStdOut = [&out, &mutex](ezStringView sView) { EZ_LOCK(mutex); out.Append(sView); }; opt.m_Arguments.PushBack("-cmd"); opt.m_Arguments.PushBack("-sleep"); opt.m_Arguments.PushBack("1000"); opt.m_Arguments.PushBack("-stdout"); opt.m_Arguments.PushBack("Na"); EZ_TEST_BOOL(pgroup.Launch(opt).Succeeded()); } // in a debugger with child debugging enabled etc. even 10 seconds can lead to timeouts due to long delays in the IDE EZ_TEST_BOOL(pgroup.WaitToFinish(ezTime::MakeFromSeconds(60)).Succeeded()); EZ_TEST_STRING(out, "NaNaNaNaNaNaNaNa"); // BATMAN! } EZ_TEST_BLOCK(ezTestBlock::Enabled, "TerminateAll") { ezProcessGroup pgroup; ezTempHybridArray<ezProcess, 8> procs; for (ezUInt32 i = 0; i < 8; ++i) { ezProcessOptions opt; opt.m_sProcess = pathToSelf; opt.m_Arguments.PushBack("-cmd"); opt.m_Arguments.PushBack("-sleep"); opt.m_Arguments.PushBack("60000"); EZ_TEST_BOOL(pgroup.Launch(opt).Succeeded()); } const ezTime tStart = ezTime::Now(); EZ_TEST_BOOL(pgroup.TerminateAll().Succeeded()); const ezTime tDiff = ezTime::Now() - tStart; EZ_TEST_BOOL(tDiff < ezTime::MakeFromSeconds(10)); } } #endif