mirror of
https://github.com/LibreOffice/online.git
synced 2025-08-20 23:24:34 +00:00
Unit tests: use WSD's main socket-poll for test timeouts.
This commit is contained in:
@ -69,7 +69,7 @@ bool UnitBase::init(UnitType type, const std::string &unitLibPath)
|
||||
if (!unitLibPath.empty())
|
||||
{
|
||||
Global = linkAndCreateUnit(type, unitLibPath);
|
||||
if (Global)
|
||||
if (Global && type == UnitType::Kit)
|
||||
{
|
||||
TimeoutThread.startFunc([](){
|
||||
Poco::Thread::trySleep(Global->_timeoutMilliSeconds);
|
||||
@ -184,6 +184,7 @@ void UnitBase::exitTest(TestResult result)
|
||||
Poco::Util::Application::EXIT_OK :
|
||||
Poco::Util::Application::EXIT_SOFTWARE;
|
||||
TerminationFlag = true;
|
||||
SocketPoll::wakeupWorld();
|
||||
}
|
||||
|
||||
void UnitBase::timeout()
|
||||
|
@ -59,9 +59,6 @@ protected:
|
||||
/// After this time we invoke 'timeout' default 30 seconds
|
||||
void setTimeout(int timeoutMilliSeconds);
|
||||
|
||||
/// If the test times out this gets invoked, the default just exits.
|
||||
virtual void timeout();
|
||||
|
||||
enum class TestResult
|
||||
{
|
||||
Failed,
|
||||
@ -98,6 +95,14 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
/// If the test times out this gets invoked, the default just exits.
|
||||
virtual void timeout();
|
||||
|
||||
int getTimeoutMilliSeconds() const
|
||||
{
|
||||
return _timeoutMilliSeconds;
|
||||
}
|
||||
|
||||
static UnitBase& get()
|
||||
{
|
||||
assert(Global);
|
||||
|
@ -2518,14 +2518,21 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
|
||||
time_t startTimeSpan = time(nullptr);
|
||||
#endif
|
||||
|
||||
/// Something of a hack to get woken up on exit.
|
||||
auto startStamp = std::chrono::steady_clock::now();
|
||||
|
||||
/// The main-poll does next to nothing:
|
||||
SocketPoll mainWait("main");
|
||||
while (!TerminationFlag && !ShutdownRequestFlag)
|
||||
{
|
||||
UnitWSD::get().invokeTest();
|
||||
|
||||
mainWait.poll(SocketPoll::DefaultPollTimeoutMs * 10);
|
||||
mainWait.poll(SocketPoll::DefaultPollTimeoutMs * 2);
|
||||
|
||||
// Unit test timeout
|
||||
if (std::chrono::duration_cast<std::chrono::milliseconds>(
|
||||
std::chrono::steady_clock::now() - startStamp).count() <
|
||||
UnitWSD::get().getTimeoutMilliSeconds())
|
||||
UnitWSD::get().timeout();
|
||||
|
||||
std::unique_lock<std::mutex> docBrokersLock(DocBrokersMutex);
|
||||
cleanupDocBrokers();
|
||||
|
Reference in New Issue
Block a user