12 #include <client/src/IProfilingConnection.hpp> 13 #include <client/src/ProfilingService.hpp> 17 #include <common/include/CommandHandlerFunctor.hpp> 18 #include <common/include/Logging.hpp> 20 #include <doctest/doctest.h> 37 bool IsOpen()
const override {
return true; }
41 bool WritePacket(
const unsigned char* buffer, uint32_t length)
override 55 return arm::pipe::Packet(65536);
59 std::this_thread::sleep_for(std::chrono::milliseconds(timeout));
60 throw arm::pipe::TimeoutException(
"Simulate a timeout error\n");
77 if (m_ReadRequests % 3 == 0)
79 std::this_thread::sleep_for(std::chrono::milliseconds(timeout));
81 throw arm::pipe::TimeoutException(
"Simulate a timeout error\n");
84 return arm::pipe::Packet(65536);
89 return m_ReadRequests.load();
93 std::atomic<int> m_ReadRequests;
107 throw arm::pipe::ProfilingException(
"Simulate a non-timeout error");
112 return m_ReadRequests.load();
116 std::atomic<int> m_ReadRequests;
130 uint32_t packetFamily = 0;
131 uint32_t packetId = 37;
132 uint32_t header = ((packetFamily & 0x0000003F) << 26) | ((packetId & 0x000003FF) << 16);
134 return arm::pipe::Packet(header);
141 using CommandHandlerFunctor::CommandHandlerFunctor;
157 using TestFunctorA::TestFunctorA;
162 using TestFunctorA::TestFunctorA;
172 ProfilingService& profilingService)
173 : ProfilingService(maxGlobalCounterId,
175 arm::pipe::ARMNN_SOFTWARE_INFO,
176 arm::pipe::ARMNN_SOFTWARE_VERSION,
177 arm::pipe::ARMNN_HARDWARE_VERSION)
178 , m_ProfilingService(profilingService)
180 , m_BackupProfilingConnectionFactory(nullptr)
183 CHECK(m_MockProfilingConnectionFactory);
184 SwapProfilingConnectionFactory(m_ProfilingService,
185 m_MockProfilingConnectionFactory.get(),
186 m_BackupProfilingConnectionFactory);
187 CHECK(m_BackupProfilingConnectionFactory);
191 CHECK(m_BackupProfilingConnectionFactory);
192 IProfilingConnectionFactory* temp =
nullptr;
193 SwapProfilingConnectionFactory(m_ProfilingService,
194 m_BackupProfilingConnectionFactory,
200 IProfilingConnection* profilingConnection = GetProfilingConnection(m_ProfilingService);
201 return armnn::PolymorphicDowncast<MockProfilingConnection*>(profilingConnection);
206 TransitionToState(m_ProfilingService, newState);
212 uint32_t timeout = 1000)
214 long packetCount = mockProfilingConnection->
CheckForPacket({ packetType, length });
217 while(packetCount == 0 && timeout != 0)
219 std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();
221 ProfilingService::WaitForPacketSent(m_ProfilingService, timeout);
223 std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();
226 uint32_t elapsedTime =
static_cast<uint32_t
>(
227 std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count());
229 packetCount = mockProfilingConnection->
CheckForPacket({packetType, length});
231 if (elapsedTime > timeout)
236 timeout -= elapsedTime;
242 ProfilingService& m_ProfilingService;
244 IProfilingConnectionFactory* m_BackupProfilingConnectionFactory;
TestProfilingConnectionArmnnError()
TestProfilingConnectionTimeoutError()
MockProfilingConnection * GetMockProfilingConnection()
bool IsOpen() const override
long CheckForPacket(const std::pair< PacketType, uint32_t > packetInfo)
~TestProfilingConnectionBase()=default
arm::pipe::IInitialiseProfilingService IInitialiseProfilingService
long WaitForPacketsSent(MockProfilingConnection *mockProfilingConnection, MockProfilingConnection::PacketType packetType, uint32_t length=0, uint32_t timeout=1000)
void IgnoreUnused(Ts &&...)
TestProfilingConnectionBase()=default
SwapProfilingConnectionFactoryHelper(uint16_t maxGlobalCounterId, IInitialiseProfilingService &initialiser, ProfilingService &profilingService)
arm::pipe::Packet ReadPacket(uint32_t timeout) override
arm::pipe::Packet ReadPacket(uint32_t timeout) override
bool WritePacket(const unsigned char *buffer, uint32_t length) override
void ForceTransitionToState(ProfilingState newState)
arm::pipe::Packet ReadPacket(uint32_t timeout) override
void operator()(const arm::pipe::Packet &packet) override
arm::pipe::Packet ReadPacket(uint32_t timeout) override
std::unique_ptr< MockProfilingConnectionFactory > MockProfilingConnectionFactoryPtr
~SwapProfilingConnectionFactoryHelper()