blob: 9a314c1fdc4e50e2421346b42ecb94ca91a3a061 [file] [log] [blame]
//
// Copyright © 2017 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "../IBufferWrapper.hpp"
#include "../ISendCounterPacket.hpp"
#include <iostream>
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_SUITE(SendCounterPacketTests)
using namespace armnn::profiling;
class MockBuffer : public IBufferWrapper
{
public:
MockBuffer() : m_Buffer() {}
unsigned char* Reserve(unsigned int requestedSize, unsigned int& reservedSize) override
{
if (requestedSize > m_BufferSize)
{
reservedSize = m_BufferSize;
}
else
{
reservedSize = requestedSize;
}
return m_Buffer;
}
void Commit(unsigned int size) override {}
const unsigned char* GetReadBuffer(unsigned int& size) override
{
size = static_cast<unsigned int>(strlen(reinterpret_cast<const char*>(m_Buffer)) + 1);
return m_Buffer;
}
void Release( unsigned int size) override {}
private:
static const unsigned int m_BufferSize = 512;
unsigned char m_Buffer[m_BufferSize];
};
class MockSendCounterPacket : public ISendCounterPacket
{
public:
MockSendCounterPacket(IBufferWrapper& sendBuffer) : m_Buffer(sendBuffer) {}
void SendStreamMetaDataPacket() override
{
std::string message("SendStreamMetaDataPacket");
unsigned int reserved = 0;
unsigned char* buffer = m_Buffer.Reserve(1024, reserved);
memcpy(buffer, message.c_str(), static_cast<unsigned int>(message.size()) + 1);
}
void SendCounterDirectoryPacket(const Category& category, const std::vector<Counter>& counters) override
{
std::string message("SendCounterDirectoryPacket");
unsigned int reserved = 0;
unsigned char* buffer = m_Buffer.Reserve(1024, reserved);
memcpy(buffer, message.c_str(), static_cast<unsigned int>(message.size()) + 1);
}
void SendPeriodicCounterCapturePacket(uint64_t timestamp, const std::vector<uint32_t>& counterValues,
const std::vector<uint16_t>& counterUids) override
{
std::string message("SendPeriodicCounterCapturePacket");
unsigned int reserved = 0;
unsigned char* buffer = m_Buffer.Reserve(1024, reserved);
memcpy(buffer, message.c_str(), static_cast<unsigned int>(message.size()) + 1);
}
void SendPeriodicCounterSelectionPacket(uint32_t capturePeriod,
const std::vector<uint16_t>& selectedCounterIds) override
{
std::string message("SendPeriodicCounterSelectionPacket");
unsigned int reserved = 0;
unsigned char* buffer = m_Buffer.Reserve(1024, reserved);
memcpy(buffer, message.c_str(), static_cast<unsigned int>(message.size()) + 1);
m_Buffer.Commit(reserved);
}
void SetReadyToRead() override
{}
private:
IBufferWrapper& m_Buffer;
};
BOOST_AUTO_TEST_CASE(MockSendCounterPacketTest)
{
unsigned int size = 0;
MockBuffer mockBuffer;
MockSendCounterPacket sendCounterPacket(mockBuffer);
sendCounterPacket.SendStreamMetaDataPacket();
const char* buffer = reinterpret_cast<const char*>(mockBuffer.GetReadBuffer(size));
BOOST_TEST(strcmp(buffer, "SendStreamMetaDataPacket") == 0);
Category category;
std::vector<Counter> counters;
sendCounterPacket.SendCounterDirectoryPacket(category, counters);
BOOST_TEST(strcmp(buffer, "SendCounterDirectoryPacket") == 0);
uint64_t timestamp = 0;
std::vector<uint32_t> counterValues;
std::vector<uint16_t> counterUids;
sendCounterPacket.SendPeriodicCounterCapturePacket(timestamp, counterValues, counterUids);
BOOST_TEST(strcmp(buffer, "SendPeriodicCounterCapturePacket") == 0);
uint32_t capturePeriod = 0;
std::vector<uint16_t> selectedCounterIds;
sendCounterPacket.SendPeriodicCounterSelectionPacket(capturePeriod, selectedCounterIds);
BOOST_TEST(strcmp(buffer, "SendPeriodicCounterSelectionPacket") == 0);
}
BOOST_AUTO_TEST_SUITE_END()