Files
o3de/Code/Tools/AssetProcessor/native/tests/assetmanager/TestEventSignal.cpp
T
amzn-mike 5dd88ba05c [LYN-9953] Asset Processor: Fix file watcher event handlers calling APM methods directly instead … (#7289)
* Fix file watcher event handlers calling APM methods directly instead of queuing them to run on the APM thread

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>

* Add unit test

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>

* Fix compile errors

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>

* Fix compile errors

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>

* Fix compile errors

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>

* Fix compile errors

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>

* Change ASSERT_ checks to EXPECT_ checks

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>

* Refactored Test

Removed leftover direct call
Changed invokeMethod to use lambda form

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>

* Fix compile error

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
2022-02-14 11:09:39 -06:00

38 lines
1.1 KiB
C++

/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#include <native/tests/assetmanager/TestEventSignal.h>
#include <AzCore/std/parallel/thread.h>
#include <AzCore/UnitTest/TestTypes.h>
namespace UnitTests
{
void TestEventPair::Signal()
{
bool expected = false;
ASSERT_TRUE(m_signaled.compare_exchange_strong(expected, true));
ASSERT_EQ(m_threadId, AZStd::thread_id{});
m_threadId = AZStd::this_thread::get_id();
m_event.release();
}
bool TestEventPair::WaitAndCheck()
{
constexpr int MaxWaitTimeMilliseconds = 100;
auto thisThreadId = AZStd::this_thread::get_id();
bool acquireSuccess = m_event.try_acquire_for(AZStd::chrono::milliseconds(MaxWaitTimeMilliseconds));
EXPECT_TRUE(acquireSuccess);
EXPECT_NE(m_threadId, AZStd::thread_id{});
EXPECT_TRUE(m_threadId != thisThreadId);
return acquireSuccess && m_threadId != AZStd::thread_id{} && m_threadId != thisThreadId;
}
}