blob: c4714d6ad409b8699a0d9c6e67ef732634aabec9 [file] [log] [blame]
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +01001//
Kevin Mayc1351792020-07-28 11:29:04 +01002// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +01003// SPDX-License-Identifier: MIT
4//
5
6#include "BufferManager.hpp"
7#include "PacketBuffer.hpp"
8#include "ProfilingUtils.hpp"
9
Jim Flynnbbfe6032020-07-20 16:57:44 +010010#include <common/include/SwTrace.hpp>
11
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010012#include <armnn/Exceptions.hpp>
13
Sadik Armagan1625efc2021-06-10 18:24:34 +010014#include <doctest/doctest.h>
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010015
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000016using namespace arm::pipe;
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010017
Sadik Armagan1625efc2021-06-10 18:24:34 +010018TEST_SUITE("BufferTests")
19{
20TEST_CASE("PacketBufferTest0")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010021{
Matteo Martincigh2ffcc412019-11-05 11:47:40 +000022 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010023
Sadik Armagan1625efc2021-06-10 18:24:34 +010024 CHECK(packetBuffer->GetSize() == 0);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010025
26 // Write data to the buffer
27 WriteUint32(packetBuffer, 0, 10);
28 WriteUint32(packetBuffer, 4, 20);
29 WriteUint32(packetBuffer, 8, 30);
30 WriteUint32(packetBuffer, 12, 40);
31
32 // Commit
33 packetBuffer->Commit(16);
34
35 // Size of buffer is equal to committed data
Sadik Armagan1625efc2021-06-10 18:24:34 +010036 CHECK(packetBuffer->GetSize() == 16);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010037
38 // Read data from the buffer
39 auto readBuffer = packetBuffer->GetReadableData();
40 uint32_t readData0 = ReadUint32(readBuffer, 0);
41 uint32_t readData1 = ReadUint32(readBuffer, 4);
42 uint32_t readData2 = ReadUint32(readBuffer, 8);
43 uint32_t readData3 = ReadUint32(readBuffer, 12);
44
45 // Check that data is correct
Sadik Armagan1625efc2021-06-10 18:24:34 +010046 CHECK(readData0 == 10);
47 CHECK(readData1 == 20);
48 CHECK(readData2 == 30);
49 CHECK(readData3 == 40);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010050
51 // Mark read
52 packetBuffer->MarkRead();
53
54 // Size of buffer become 0 after marked read
Sadik Armagan1625efc2021-06-10 18:24:34 +010055 CHECK(packetBuffer->GetSize() == 0);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010056}
57
Sadik Armagan1625efc2021-06-10 18:24:34 +010058TEST_CASE("PacketBufferTest1")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010059{
Matteo Martincigh2ffcc412019-11-05 11:47:40 +000060 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010061
Sadik Armagan1625efc2021-06-10 18:24:34 +010062 CHECK(packetBuffer->GetSize() == 0);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010063
64 // Write data to the buffer using GetWritableData
65 auto writeBuffer = packetBuffer->GetWritableData();
66 WriteUint32(writeBuffer, 0, 10);
67 WriteUint32(writeBuffer, 4, 20);
68 WriteUint32(writeBuffer, 8, 30);
69 WriteUint32(writeBuffer, 12, 40);
70
71 packetBuffer->Commit(16);
72
Sadik Armagan1625efc2021-06-10 18:24:34 +010073 CHECK(packetBuffer->GetSize() == 16);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010074
75 // Read data from the buffer
76 auto readBuffer = packetBuffer->GetReadableData();
77 uint32_t readData0 = ReadUint32(readBuffer, 0);
78 uint32_t readData1 = ReadUint32(readBuffer, 4);
79 uint32_t readData2 = ReadUint32(readBuffer, 8);
80 uint32_t readData3 = ReadUint32(readBuffer, 12);
81
Sadik Armagan1625efc2021-06-10 18:24:34 +010082 CHECK(readData0 == 10);
83 CHECK(readData1 == 20);
84 CHECK(readData2 == 30);
85 CHECK(readData3 == 40);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010086
87 packetBuffer->MarkRead();
88
Sadik Armagan1625efc2021-06-10 18:24:34 +010089 CHECK(packetBuffer->GetSize() == 0);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010090}
91
Sadik Armagan1625efc2021-06-10 18:24:34 +010092TEST_CASE("PacketBufferReleaseTest")
93{
Matteo Martincigh2ffcc412019-11-05 11:47:40 +000094 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010095
Sadik Armagan1625efc2021-06-10 18:24:34 +010096 CHECK(packetBuffer->GetSize() == 0);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010097
98 auto writeBuffer = packetBuffer->GetWritableData();
99
100 WriteUint32(writeBuffer, 0, 10);
101 WriteUint32(writeBuffer, 4, 20);
102 WriteUint32(writeBuffer, 8, 30);
103 WriteUint32(writeBuffer, 12, 40);
104
105 packetBuffer->Release();
106
107 // Size of buffer become 0 after release
Sadik Armagan1625efc2021-06-10 18:24:34 +0100108 CHECK(packetBuffer->GetSize() == 0);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100109}
110
Sadik Armagan1625efc2021-06-10 18:24:34 +0100111TEST_CASE("PacketBufferCommitErrorTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100112{
Matteo Martincigh2ffcc412019-11-05 11:47:40 +0000113 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(8);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100114
115 // Cannot commit data bigger than the max size of the buffer
Sadik Armagan1625efc2021-06-10 18:24:34 +0100116 CHECK_THROWS_AS(packetBuffer->Commit(16);, armnn::RuntimeException);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100117}
118
Sadik Armagan1625efc2021-06-10 18:24:34 +0100119TEST_CASE("BufferReserveTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100120{
121 BufferManager bufferManager(1, 512);
122 unsigned int reservedSize = 0;
123 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
124
125 // Successfully reserved the buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100126 CHECK(reservedSize == 512);
127 CHECK(packetBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100128}
129
Sadik Armagan1625efc2021-06-10 18:24:34 +0100130TEST_CASE("BufferReserveExceedingSpaceTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100131{
132 BufferManager bufferManager(1, 512);
133 unsigned int reservedSize = 0;
134
135 // Cannot reserve buffer bigger than maximum buffer size
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100136 auto reservedBuffer = bufferManager.Reserve(1024, reservedSize);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100137 CHECK(reservedSize == 0);
138 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100139}
140
Sadik Armagan1625efc2021-06-10 18:24:34 +0100141TEST_CASE("BufferExhaustionTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100142{
143 BufferManager bufferManager(1, 512);
144 unsigned int reservedSize = 0;
145 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
146
147 // Successfully reserved the buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100148 CHECK(reservedSize == 512);
149 CHECK(packetBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100150
151 // Cannot reserve buffer when buffer is not available
Jim Flynn0204f092020-06-22 20:41:43 +0100152 // NOTE: because the buffer manager now has surge capacity of
153 // initial size * 3 we should be able to reserve three
154 // buffers before exhaustion
155 packetBuffer = bufferManager.Reserve(512, reservedSize);
156
157 // Successfully reserved the second buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100158 CHECK(reservedSize == 512);
159 CHECK(packetBuffer.get());
Jim Flynn0204f092020-06-22 20:41:43 +0100160
161 packetBuffer = bufferManager.Reserve(512, reservedSize);
162
163 // Successfully reserved the third buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100164 CHECK(reservedSize == 512);
165 CHECK(packetBuffer.get());
Jim Flynn0204f092020-06-22 20:41:43 +0100166
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100167 auto reservedBuffer = bufferManager.Reserve(512, reservedSize);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100168 CHECK(reservedSize == 0);
169 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100170}
171
Sadik Armagan1625efc2021-06-10 18:24:34 +0100172TEST_CASE("BufferReserveMultipleTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100173{
174 BufferManager bufferManager(3, 512);
175 unsigned int reservedSize0 = 0;
176 auto packetBuffer0 = bufferManager.Reserve(512, reservedSize0);
177
178 // Successfully reserved the buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100179 CHECK(reservedSize0 == 512);
180 CHECK(packetBuffer0.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100181
182 unsigned int reservedSize1 = 0;
183 auto packetBuffer1 = bufferManager.Reserve(128, reservedSize1);
184
185 // Successfully reserved the buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100186 CHECK(reservedSize1 == 128);
187 CHECK(packetBuffer1.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100188
189 unsigned int reservedSize2 = 0;
190 auto packetBuffer2 = bufferManager.Reserve(512, reservedSize2);
191
192 // Successfully reserved the buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100193 CHECK(reservedSize2 == 512);
194 CHECK(packetBuffer2.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100195
Jim Flynn0204f092020-06-22 20:41:43 +0100196 // NOTE: the buffer now has a surge capacity of initial size * 3
197 // so we can grab 9 of them prior to exhaustion now
198 for (unsigned int i = 0; i < 6 ; ++i)
199 {
200 // grab another six buffers to exhaust the surge capacity
201 unsigned int reservedSize = 0;
202 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
203
204 // Successfully reserved the third buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100205 CHECK(reservedSize == 512);
206 CHECK(packetBuffer.get());
Jim Flynn0204f092020-06-22 20:41:43 +0100207 }
208
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100209 // Cannot reserve when buffer is not available
210 unsigned int reservedSize3 = 0;
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100211 auto reservedBuffer = bufferManager.Reserve(512, reservedSize3);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100212 CHECK(reservedSize3 == 0);
213 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100214}
215
Sadik Armagan1625efc2021-06-10 18:24:34 +0100216TEST_CASE("BufferReleaseTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100217{
218 BufferManager bufferManager(2, 512);
219 unsigned int reservedSize0 = 0;
220 auto packetBuffer0 = bufferManager.Reserve(512, reservedSize0);
221
222 // Successfully reserved the buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100223 CHECK(reservedSize0 == 512);
224 CHECK(packetBuffer0.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100225
226 unsigned int reservedSize1 = 0;
227 auto packetBuffer1 = bufferManager.Reserve(128, reservedSize1);
228
229 // Successfully reserved the buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100230 CHECK(reservedSize1 == 128);
231 CHECK(packetBuffer1.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100232
Jim Flynn0204f092020-06-22 20:41:43 +0100233 // NOTE: now that we have a surge capacity of up to
234 // initial size * 3 we need to allocate four more
235 // buffers to exhaust the manager
236 for (unsigned int i = 0; i < 4 ; ++i)
237 {
238 // grab another six buffers to exhaust the surge capacity
239 unsigned int reservedSize = 0;
240 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
241
242 // Successfully reserved the third buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100243 CHECK(reservedSize == 512);
244 CHECK(packetBuffer.get());
Jim Flynn0204f092020-06-22 20:41:43 +0100245 }
246
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100247 // Cannot reserve when buffer is not available
248 unsigned int reservedSize2 = 0;
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100249 auto reservedBuffer = bufferManager.Reserve(512, reservedSize2);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100250 CHECK(reservedSize2 == 0);
251 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100252
253 bufferManager.Release(packetBuffer0);
254
255 // Buffer should become available after release
256 auto packetBuffer2 = bufferManager.Reserve(128, reservedSize2);
257
Sadik Armagan1625efc2021-06-10 18:24:34 +0100258 CHECK(reservedSize2 == 128);
259 CHECK(packetBuffer2.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100260}
261
Sadik Armagan1625efc2021-06-10 18:24:34 +0100262TEST_CASE("BufferCommitTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100263{
264 BufferManager bufferManager(2, 512);
265 unsigned int reservedSize0 = 0;
266 auto packetBuffer0 = bufferManager.Reserve(512, reservedSize0);
267
Sadik Armagan1625efc2021-06-10 18:24:34 +0100268 CHECK(reservedSize0 == 512);
269 CHECK(packetBuffer0.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100270
271 unsigned int reservedSize1 = 0;
272 auto packetBuffer1 = bufferManager.Reserve(128, reservedSize1);
273
Sadik Armagan1625efc2021-06-10 18:24:34 +0100274 CHECK(reservedSize1 == 128);
275 CHECK(packetBuffer1.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100276
Jim Flynn0204f092020-06-22 20:41:43 +0100277 // NOTE: now that we have a surge capacity of up to
278 // initial size * 3 we need to allocate four more
279 // buffers to exhaust the manager
280 for (unsigned int i = 0; i < 4 ; ++i)
281 {
282 // grab another six buffers to exhaust the surge capacity
283 unsigned int reservedSize = 0;
284 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
285
286 // Successfully reserved the third buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100287 CHECK(reservedSize == 512);
288 CHECK(packetBuffer.get());
Jim Flynn0204f092020-06-22 20:41:43 +0100289 }
290
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100291 unsigned int reservedSize2 = 0;
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100292 auto reservedBuffer = bufferManager.Reserve(512, reservedSize2);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100293 CHECK(reservedSize2 == 0);
294 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100295
296 bufferManager.Commit(packetBuffer0, 256);
297
298 // Buffer should become readable after commit
299 auto packetBuffer2 = bufferManager.GetReadableBuffer();
Sadik Armagan1625efc2021-06-10 18:24:34 +0100300 CHECK(packetBuffer2.get());
301 CHECK(packetBuffer2->GetSize() == 256);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100302
303 // Buffer not set back to available list after commit
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100304 unsigned int reservedSize = 0;
305 reservedBuffer = bufferManager.Reserve(512, reservedSize);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100306 CHECK(reservedSize == 0);
307 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100308}
309
Sadik Armagan1625efc2021-06-10 18:24:34 +0100310TEST_CASE("BufferMarkReadTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100311{
312 BufferManager bufferManager(2, 512);
313 unsigned int reservedSize0 = 0;
314 auto packetBuffer0 = bufferManager.Reserve(512, reservedSize0);
315
Sadik Armagan1625efc2021-06-10 18:24:34 +0100316 CHECK(reservedSize0 == 512);
317 CHECK(packetBuffer0.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100318
319 unsigned int reservedSize1 = 0;
320 auto packetBuffer1 = bufferManager.Reserve(128, reservedSize1);
321
Sadik Armagan1625efc2021-06-10 18:24:34 +0100322 CHECK(reservedSize1 == 128);
323 CHECK(packetBuffer1.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100324
Jim Flynn0204f092020-06-22 20:41:43 +0100325 // NOTE: now that we have a surge capacity of up to
326 // initial size * 3 we need to allocate four more
327 // buffers to exhaust the manager
328 for (unsigned int i = 0; i < 4 ; ++i)
329 {
330 // grab another six buffers to exhaust the surge capacity
331 unsigned int reservedSize = 0;
332 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
333
334 // Successfully reserved the third buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100335 CHECK(reservedSize == 512);
336 CHECK(packetBuffer.get());
Jim Flynn0204f092020-06-22 20:41:43 +0100337 }
338
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100339 // Cannot reserve when buffer is not available
340 unsigned int reservedSize2 = 0;
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100341 auto reservedBuffer = bufferManager.Reserve(512, reservedSize2);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100342 CHECK(reservedSize2 == 0);
343 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100344
345 bufferManager.Commit(packetBuffer0, 256);
346
347 // Buffer should become readable after commit
348 auto packetBuffer2 = bufferManager.GetReadableBuffer();
Sadik Armagan1625efc2021-06-10 18:24:34 +0100349 CHECK(packetBuffer2.get());
350 CHECK(packetBuffer2->GetSize() == 256);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100351
352 // Buffer not set back to available list after commit
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100353 reservedBuffer = bufferManager.Reserve(512, reservedSize2);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100354 CHECK(reservedSize2 == 0);
355 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100356
357 bufferManager.MarkRead(packetBuffer2);
358
359 //Buffer should set back to available list after marked read and can be reserved
360 auto readBuffer = bufferManager.GetReadableBuffer();
Sadik Armagan1625efc2021-06-10 18:24:34 +0100361 CHECK(!readBuffer);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100362 unsigned int reservedSize3 = 0;
363 auto packetBuffer3 = bufferManager.Reserve(56, reservedSize3);
364
Sadik Armagan1625efc2021-06-10 18:24:34 +0100365 CHECK(reservedSize3 == 56);
366 CHECK(packetBuffer3.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100367}
368
Sadik Armagan1625efc2021-06-10 18:24:34 +0100369TEST_CASE("ReadSwTraceMessageExceptionTest0")
Kevin Mayc1351792020-07-28 11:29:04 +0100370{
371 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
372
Sadik Armagan1625efc2021-06-10 18:24:34 +0100373 CHECK(packetBuffer->GetSize() == 0);
Kevin Mayc1351792020-07-28 11:29:04 +0100374
375 // Write zero data to the buffer
376 WriteUint32(packetBuffer, 0, 0);
377 WriteUint32(packetBuffer, 4, 0);
378 WriteUint32(packetBuffer, 8, 0);
379 WriteUint32(packetBuffer, 12, 0);
380
381 // Commit
382 packetBuffer->Commit(16);
383
384 unsigned int uint32_t_size = sizeof(uint32_t);
385 unsigned int offset = uint32_t_size;
Cathal Corbett5aa9fd72022-02-25 15:33:28 +0000386 CHECK_THROWS_AS(ReadSwTraceMessage(packetBuffer->GetReadableData(), offset, packetBuffer->GetSize()),
387 ProfilingException);
Kevin Mayc1351792020-07-28 11:29:04 +0100388
389}
390
Sadik Armagan1625efc2021-06-10 18:24:34 +0100391TEST_CASE("ReadSwTraceMessageExceptionTest1")
Kevin Mayc1351792020-07-28 11:29:04 +0100392{
393 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
394
Sadik Armagan1625efc2021-06-10 18:24:34 +0100395 CHECK(packetBuffer->GetSize() == 0);
Kevin Mayc1351792020-07-28 11:29:04 +0100396
397 // Write data to the buffer
398 WriteUint32(packetBuffer, 0, 10);
399 WriteUint32(packetBuffer, 4, 20);
400 WriteUint32(packetBuffer, 8, 30);
401 WriteUint32(packetBuffer, 12, 40);
402
403 // Commit
404 packetBuffer->Commit(16);
405
406 unsigned int uint32_t_size = sizeof(uint32_t);
407 unsigned int offset = uint32_t_size;
Cathal Corbett5aa9fd72022-02-25 15:33:28 +0000408 CHECK_THROWS_AS(ReadSwTraceMessage(packetBuffer->GetReadableData(), offset, packetBuffer->GetSize()),
409 ProfilingException);
Kevin Mayc1351792020-07-28 11:29:04 +0100410
411}
412
Sadik Armagan1625efc2021-06-10 18:24:34 +0100413}