aboutsummaryrefslogtreecommitdiff
path: root/src/profiling/test/ProfilingTests.cpp
diff options
context:
space:
mode:
authorSadik Armagan <sadik.armagan@arm.com>2019-09-18 17:29:00 +0100
committerSadik Armagan <sadik.armagan@arm.com>2019-09-19 16:25:58 +0000
commitb5f01b2e1fba71fb0bd9dfffa615980bfbf56c40 (patch)
tree3df480524bedd8cb175d62e9fb29a81389244f81 /src/profiling/test/ProfilingTests.cpp
parent2fda80b2f3b81f89e5748404041786f0a6c3735f (diff)
downloadarmnn-b5f01b2e1fba71fb0bd9dfffa615980bfbf56c40.tar.gz
IVGCVSW-3430 Connection Acknowledged Command Handler Implementation
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com> Change-Id: I0ba97a93edb283b37bd1c089c668135a4bf9550c
Diffstat (limited to 'src/profiling/test/ProfilingTests.cpp')
-rw-r--r--src/profiling/test/ProfilingTests.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/profiling/test/ProfilingTests.cpp b/src/profiling/test/ProfilingTests.cpp
index e97068fbb4..1cf0e1e4b9 100644
--- a/src/profiling/test/ProfilingTests.cpp
+++ b/src/profiling/test/ProfilingTests.cpp
@@ -8,6 +8,7 @@
#include <CommandHandlerKey.hpp>
#include <CommandHandlerFunctor.hpp>
#include <CommandHandlerRegistry.hpp>
+#include <ConnectionAcknowledgedCommandHandler.hpp>
#include <CounterDirectory.hpp>
#include <EncodeVersion.hpp>
#include <Holder.hpp>
@@ -1649,6 +1650,62 @@ BOOST_AUTO_TEST_CASE(CounterSelectionCommandHandlerParseData)
BOOST_TEST(period == 11); // capture period
}
+BOOST_AUTO_TEST_CASE(CheckConnectionAcknowledged)
+{
+ using boost::numeric_cast;
+
+ const uint32_t connectionPacketId = 0x10000;
+ const uint32_t version = 1;
+
+ uint32_t sizeOfUint32 = numeric_cast<uint32_t>(sizeof(uint32_t));
+ uint32_t sizeOfUint16 = numeric_cast<uint32_t>(sizeof(uint16_t));
+
+ // Data with period and counters
+ uint32_t period1 = 10;
+ uint32_t dataLength1 = 8;
+ uint32_t offset = 0;
+
+ std::unique_ptr<char[]> uniqueData1 = std::make_unique<char[]>(dataLength1);
+ unsigned char* data1 = reinterpret_cast<unsigned char*>(uniqueData1.get());
+
+ WriteUint32(data1, offset, period1);
+ offset += sizeOfUint32;
+ WriteUint16(data1, offset, 4000);
+ offset += sizeOfUint16;
+ WriteUint16(data1, offset, 5000);
+
+ Packet packetA(connectionPacketId, dataLength1, uniqueData1);
+
+ ProfilingStateMachine profilingState(ProfilingState::Uninitialised);
+ BOOST_CHECK(profilingState.GetCurrentState() == ProfilingState::Uninitialised);
+
+ ConnectionAcknowledgedCommandHandler commandHandler(connectionPacketId, version, profilingState);
+
+ // command handler received packet on ProfilingState::Uninitialised
+ BOOST_CHECK_THROW(commandHandler(packetA), armnn::Exception);
+
+ profilingState.TransitionToState(ProfilingState::NotConnected);
+ BOOST_CHECK(profilingState.GetCurrentState() == ProfilingState::NotConnected);
+ // command handler received packet on ProfilingState::NotConnected
+ BOOST_CHECK_THROW(commandHandler(packetA), armnn::Exception);
+
+ profilingState.TransitionToState(ProfilingState::WaitingForAck);
+ BOOST_CHECK(profilingState.GetCurrentState() == ProfilingState::WaitingForAck);
+ // command handler received packet on ProfilingState::WaitingForAck
+ commandHandler(packetA);
+ BOOST_CHECK(profilingState.GetCurrentState() == ProfilingState::Active);
+
+ // command handler received packet on ProfilingState::Active
+ commandHandler(packetA);
+ BOOST_CHECK(profilingState.GetCurrentState() == ProfilingState::Active);
+
+ // command handler received different packet
+ const uint32_t differentPacketId = 0x40000;
+ Packet packetB(differentPacketId, dataLength1, uniqueData1);
+ ConnectionAcknowledgedCommandHandler differentCommandHandler(differentPacketId, version, profilingState);
+ BOOST_CHECK_THROW(differentCommandHandler(packetB), armnn::Exception);
+}
+
BOOST_AUTO_TEST_CASE(CheckSocketProfilingConnection)
{
// Check that creating a SocketProfilingConnection results in an exception as the Gator UDS doesn't exist.