blob: bfbd7edfd8908a0f86f24105a280ece1f5e2f1b5 [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
Jim Flynn3e9bc192022-03-23 23:01:26 +00006#include <client/src/BufferManager.hpp>
7#include <client/src/PacketBuffer.hpp>
8#include <client/src/ProfilingUtils.hpp>
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +01009
Jim Flynnbbfe6032020-07-20 16:57:44 +010010#include <common/include/SwTrace.hpp>
11
Sadik Armagan1625efc2021-06-10 18:24:34 +010012#include <doctest/doctest.h>
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010013
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000014using namespace arm::pipe;
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010015
Sadik Armagan1625efc2021-06-10 18:24:34 +010016TEST_SUITE("BufferTests")
17{
18TEST_CASE("PacketBufferTest0")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010019{
Matteo Martincigh2ffcc412019-11-05 11:47:40 +000020 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010021
Sadik Armagan1625efc2021-06-10 18:24:34 +010022 CHECK(packetBuffer->GetSize() == 0);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010023
24 // Write data to the buffer
25 WriteUint32(packetBuffer, 0, 10);
26 WriteUint32(packetBuffer, 4, 20);
27 WriteUint32(packetBuffer, 8, 30);
28 WriteUint32(packetBuffer, 12, 40);
29
30 // Commit
31 packetBuffer->Commit(16);
32
33 // Size of buffer is equal to committed data
Sadik Armagan1625efc2021-06-10 18:24:34 +010034 CHECK(packetBuffer->GetSize() == 16);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010035
36 // Read data from the buffer
37 auto readBuffer = packetBuffer->GetReadableData();
38 uint32_t readData0 = ReadUint32(readBuffer, 0);
39 uint32_t readData1 = ReadUint32(readBuffer, 4);
40 uint32_t readData2 = ReadUint32(readBuffer, 8);
41 uint32_t readData3 = ReadUint32(readBuffer, 12);
42
43 // Check that data is correct
Sadik Armagan1625efc2021-06-10 18:24:34 +010044 CHECK(readData0 == 10);
45 CHECK(readData1 == 20);
46 CHECK(readData2 == 30);
47 CHECK(readData3 == 40);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010048
49 // Mark read
50 packetBuffer->MarkRead();
51
52 // Size of buffer become 0 after marked read
Sadik Armagan1625efc2021-06-10 18:24:34 +010053 CHECK(packetBuffer->GetSize() == 0);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010054}
55
Sadik Armagan1625efc2021-06-10 18:24:34 +010056TEST_CASE("PacketBufferTest1")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010057{
Matteo Martincigh2ffcc412019-11-05 11:47:40 +000058 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010059
Sadik Armagan1625efc2021-06-10 18:24:34 +010060 CHECK(packetBuffer->GetSize() == 0);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010061
62 // Write data to the buffer using GetWritableData
63 auto writeBuffer = packetBuffer->GetWritableData();
64 WriteUint32(writeBuffer, 0, 10);
65 WriteUint32(writeBuffer, 4, 20);
66 WriteUint32(writeBuffer, 8, 30);
67 WriteUint32(writeBuffer, 12, 40);
68
69 packetBuffer->Commit(16);
70
Sadik Armagan1625efc2021-06-10 18:24:34 +010071 CHECK(packetBuffer->GetSize() == 16);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010072
73 // Read data from the buffer
74 auto readBuffer = packetBuffer->GetReadableData();
75 uint32_t readData0 = ReadUint32(readBuffer, 0);
76 uint32_t readData1 = ReadUint32(readBuffer, 4);
77 uint32_t readData2 = ReadUint32(readBuffer, 8);
78 uint32_t readData3 = ReadUint32(readBuffer, 12);
79
Sadik Armagan1625efc2021-06-10 18:24:34 +010080 CHECK(readData0 == 10);
81 CHECK(readData1 == 20);
82 CHECK(readData2 == 30);
83 CHECK(readData3 == 40);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010084
85 packetBuffer->MarkRead();
86
Sadik Armagan1625efc2021-06-10 18:24:34 +010087 CHECK(packetBuffer->GetSize() == 0);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010088}
89
Sadik Armagan1625efc2021-06-10 18:24:34 +010090TEST_CASE("PacketBufferReleaseTest")
91{
Matteo Martincigh2ffcc412019-11-05 11:47:40 +000092 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010093
Sadik Armagan1625efc2021-06-10 18:24:34 +010094 CHECK(packetBuffer->GetSize() == 0);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +010095
96 auto writeBuffer = packetBuffer->GetWritableData();
97
98 WriteUint32(writeBuffer, 0, 10);
99 WriteUint32(writeBuffer, 4, 20);
100 WriteUint32(writeBuffer, 8, 30);
101 WriteUint32(writeBuffer, 12, 40);
102
103 packetBuffer->Release();
104
105 // Size of buffer become 0 after release
Sadik Armagan1625efc2021-06-10 18:24:34 +0100106 CHECK(packetBuffer->GetSize() == 0);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100107}
108
Sadik Armagan1625efc2021-06-10 18:24:34 +0100109TEST_CASE("PacketBufferCommitErrorTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100110{
Matteo Martincigh2ffcc412019-11-05 11:47:40 +0000111 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(8);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100112
113 // Cannot commit data bigger than the max size of the buffer
Jim Flynnf9db3ef2022-03-08 21:23:44 +0000114 CHECK_THROWS_AS(packetBuffer->Commit(16);, arm::pipe::ProfilingException);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100115}
116
Sadik Armagan1625efc2021-06-10 18:24:34 +0100117TEST_CASE("BufferReserveTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100118{
119 BufferManager bufferManager(1, 512);
120 unsigned int reservedSize = 0;
121 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
122
123 // Successfully reserved the buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100124 CHECK(reservedSize == 512);
125 CHECK(packetBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100126}
127
Sadik Armagan1625efc2021-06-10 18:24:34 +0100128TEST_CASE("BufferReserveExceedingSpaceTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100129{
130 BufferManager bufferManager(1, 512);
131 unsigned int reservedSize = 0;
132
133 // Cannot reserve buffer bigger than maximum buffer size
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100134 auto reservedBuffer = bufferManager.Reserve(1024, reservedSize);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100135 CHECK(reservedSize == 0);
136 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100137}
138
Sadik Armagan1625efc2021-06-10 18:24:34 +0100139TEST_CASE("BufferExhaustionTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100140{
141 BufferManager bufferManager(1, 512);
142 unsigned int reservedSize = 0;
143 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
144
145 // Successfully reserved the buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100146 CHECK(reservedSize == 512);
147 CHECK(packetBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100148
149 // Cannot reserve buffer when buffer is not available
Jim Flynn0204f092020-06-22 20:41:43 +0100150 // NOTE: because the buffer manager now has surge capacity of
151 // initial size * 3 we should be able to reserve three
152 // buffers before exhaustion
153 packetBuffer = bufferManager.Reserve(512, reservedSize);
154
155 // Successfully reserved the second buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100156 CHECK(reservedSize == 512);
157 CHECK(packetBuffer.get());
Jim Flynn0204f092020-06-22 20:41:43 +0100158
159 packetBuffer = bufferManager.Reserve(512, reservedSize);
160
161 // Successfully reserved the third buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100162 CHECK(reservedSize == 512);
163 CHECK(packetBuffer.get());
Jim Flynn0204f092020-06-22 20:41:43 +0100164
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100165 auto reservedBuffer = bufferManager.Reserve(512, reservedSize);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100166 CHECK(reservedSize == 0);
167 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100168}
169
Sadik Armagan1625efc2021-06-10 18:24:34 +0100170TEST_CASE("BufferReserveMultipleTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100171{
172 BufferManager bufferManager(3, 512);
173 unsigned int reservedSize0 = 0;
174 auto packetBuffer0 = bufferManager.Reserve(512, reservedSize0);
175
176 // Successfully reserved the buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100177 CHECK(reservedSize0 == 512);
178 CHECK(packetBuffer0.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100179
180 unsigned int reservedSize1 = 0;
181 auto packetBuffer1 = bufferManager.Reserve(128, reservedSize1);
182
183 // Successfully reserved the buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100184 CHECK(reservedSize1 == 128);
185 CHECK(packetBuffer1.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100186
187 unsigned int reservedSize2 = 0;
188 auto packetBuffer2 = bufferManager.Reserve(512, reservedSize2);
189
190 // Successfully reserved the buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100191 CHECK(reservedSize2 == 512);
192 CHECK(packetBuffer2.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100193
Jim Flynn0204f092020-06-22 20:41:43 +0100194 // NOTE: the buffer now has a surge capacity of initial size * 3
195 // so we can grab 9 of them prior to exhaustion now
196 for (unsigned int i = 0; i < 6 ; ++i)
197 {
198 // grab another six buffers to exhaust the surge capacity
199 unsigned int reservedSize = 0;
200 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
201
202 // Successfully reserved the third buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100203 CHECK(reservedSize == 512);
204 CHECK(packetBuffer.get());
Jim Flynn0204f092020-06-22 20:41:43 +0100205 }
206
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100207 // Cannot reserve when buffer is not available
208 unsigned int reservedSize3 = 0;
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100209 auto reservedBuffer = bufferManager.Reserve(512, reservedSize3);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100210 CHECK(reservedSize3 == 0);
211 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100212}
213
Sadik Armagan1625efc2021-06-10 18:24:34 +0100214TEST_CASE("BufferReleaseTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100215{
216 BufferManager bufferManager(2, 512);
217 unsigned int reservedSize0 = 0;
218 auto packetBuffer0 = bufferManager.Reserve(512, reservedSize0);
219
220 // Successfully reserved the buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100221 CHECK(reservedSize0 == 512);
222 CHECK(packetBuffer0.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100223
224 unsigned int reservedSize1 = 0;
225 auto packetBuffer1 = bufferManager.Reserve(128, reservedSize1);
226
227 // Successfully reserved the buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100228 CHECK(reservedSize1 == 128);
229 CHECK(packetBuffer1.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100230
Jim Flynn0204f092020-06-22 20:41:43 +0100231 // NOTE: now that we have a surge capacity of up to
232 // initial size * 3 we need to allocate four more
233 // buffers to exhaust the manager
234 for (unsigned int i = 0; i < 4 ; ++i)
235 {
236 // grab another six buffers to exhaust the surge capacity
237 unsigned int reservedSize = 0;
238 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
239
240 // Successfully reserved the third buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100241 CHECK(reservedSize == 512);
242 CHECK(packetBuffer.get());
Jim Flynn0204f092020-06-22 20:41:43 +0100243 }
244
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100245 // Cannot reserve when buffer is not available
246 unsigned int reservedSize2 = 0;
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100247 auto reservedBuffer = bufferManager.Reserve(512, reservedSize2);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100248 CHECK(reservedSize2 == 0);
249 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100250
251 bufferManager.Release(packetBuffer0);
252
253 // Buffer should become available after release
254 auto packetBuffer2 = bufferManager.Reserve(128, reservedSize2);
255
Sadik Armagan1625efc2021-06-10 18:24:34 +0100256 CHECK(reservedSize2 == 128);
257 CHECK(packetBuffer2.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100258}
259
Sadik Armagan1625efc2021-06-10 18:24:34 +0100260TEST_CASE("BufferCommitTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100261{
262 BufferManager bufferManager(2, 512);
263 unsigned int reservedSize0 = 0;
264 auto packetBuffer0 = bufferManager.Reserve(512, reservedSize0);
265
Sadik Armagan1625efc2021-06-10 18:24:34 +0100266 CHECK(reservedSize0 == 512);
267 CHECK(packetBuffer0.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100268
269 unsigned int reservedSize1 = 0;
270 auto packetBuffer1 = bufferManager.Reserve(128, reservedSize1);
271
Sadik Armagan1625efc2021-06-10 18:24:34 +0100272 CHECK(reservedSize1 == 128);
273 CHECK(packetBuffer1.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100274
Jim Flynn0204f092020-06-22 20:41:43 +0100275 // NOTE: now that we have a surge capacity of up to
276 // initial size * 3 we need to allocate four more
277 // buffers to exhaust the manager
278 for (unsigned int i = 0; i < 4 ; ++i)
279 {
280 // grab another six buffers to exhaust the surge capacity
281 unsigned int reservedSize = 0;
282 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
283
284 // Successfully reserved the third buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100285 CHECK(reservedSize == 512);
286 CHECK(packetBuffer.get());
Jim Flynn0204f092020-06-22 20:41:43 +0100287 }
288
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100289 unsigned int reservedSize2 = 0;
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100290 auto reservedBuffer = bufferManager.Reserve(512, reservedSize2);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100291 CHECK(reservedSize2 == 0);
292 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100293
294 bufferManager.Commit(packetBuffer0, 256);
295
296 // Buffer should become readable after commit
297 auto packetBuffer2 = bufferManager.GetReadableBuffer();
Sadik Armagan1625efc2021-06-10 18:24:34 +0100298 CHECK(packetBuffer2.get());
299 CHECK(packetBuffer2->GetSize() == 256);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100300
301 // Buffer not set back to available list after commit
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100302 unsigned int reservedSize = 0;
303 reservedBuffer = bufferManager.Reserve(512, reservedSize);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100304 CHECK(reservedSize == 0);
305 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100306}
307
Sadik Armagan1625efc2021-06-10 18:24:34 +0100308TEST_CASE("BufferMarkReadTest")
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100309{
310 BufferManager bufferManager(2, 512);
311 unsigned int reservedSize0 = 0;
312 auto packetBuffer0 = bufferManager.Reserve(512, reservedSize0);
313
Sadik Armagan1625efc2021-06-10 18:24:34 +0100314 CHECK(reservedSize0 == 512);
315 CHECK(packetBuffer0.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100316
317 unsigned int reservedSize1 = 0;
318 auto packetBuffer1 = bufferManager.Reserve(128, reservedSize1);
319
Sadik Armagan1625efc2021-06-10 18:24:34 +0100320 CHECK(reservedSize1 == 128);
321 CHECK(packetBuffer1.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100322
Jim Flynn0204f092020-06-22 20:41:43 +0100323 // NOTE: now that we have a surge capacity of up to
324 // initial size * 3 we need to allocate four more
325 // buffers to exhaust the manager
326 for (unsigned int i = 0; i < 4 ; ++i)
327 {
328 // grab another six buffers to exhaust the surge capacity
329 unsigned int reservedSize = 0;
330 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
331
332 // Successfully reserved the third buffer with requested size
Sadik Armagan1625efc2021-06-10 18:24:34 +0100333 CHECK(reservedSize == 512);
334 CHECK(packetBuffer.get());
Jim Flynn0204f092020-06-22 20:41:43 +0100335 }
336
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100337 // Cannot reserve when buffer is not available
338 unsigned int reservedSize2 = 0;
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100339 auto reservedBuffer = bufferManager.Reserve(512, reservedSize2);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100340 CHECK(reservedSize2 == 0);
341 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100342
343 bufferManager.Commit(packetBuffer0, 256);
344
345 // Buffer should become readable after commit
346 auto packetBuffer2 = bufferManager.GetReadableBuffer();
Sadik Armagan1625efc2021-06-10 18:24:34 +0100347 CHECK(packetBuffer2.get());
348 CHECK(packetBuffer2->GetSize() == 256);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100349
350 // Buffer not set back to available list after commit
Narumol Prangnawarat0ec068f2019-09-30 16:20:20 +0100351 reservedBuffer = bufferManager.Reserve(512, reservedSize2);
Sadik Armagan1625efc2021-06-10 18:24:34 +0100352 CHECK(reservedSize2 == 0);
353 CHECK(!reservedBuffer.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100354
355 bufferManager.MarkRead(packetBuffer2);
356
357 //Buffer should set back to available list after marked read and can be reserved
358 auto readBuffer = bufferManager.GetReadableBuffer();
Sadik Armagan1625efc2021-06-10 18:24:34 +0100359 CHECK(!readBuffer);
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100360 unsigned int reservedSize3 = 0;
361 auto packetBuffer3 = bufferManager.Reserve(56, reservedSize3);
362
Sadik Armagan1625efc2021-06-10 18:24:34 +0100363 CHECK(reservedSize3 == 56);
364 CHECK(packetBuffer3.get());
Narumol Prangnawarat7be47ef2019-09-27 18:00:11 +0100365}
366
Sadik Armagan1625efc2021-06-10 18:24:34 +0100367TEST_CASE("ReadSwTraceMessageExceptionTest0")
Kevin Mayc1351792020-07-28 11:29:04 +0100368{
369 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
370
Sadik Armagan1625efc2021-06-10 18:24:34 +0100371 CHECK(packetBuffer->GetSize() == 0);
Kevin Mayc1351792020-07-28 11:29:04 +0100372
373 // Write zero data to the buffer
374 WriteUint32(packetBuffer, 0, 0);
375 WriteUint32(packetBuffer, 4, 0);
376 WriteUint32(packetBuffer, 8, 0);
377 WriteUint32(packetBuffer, 12, 0);
378
379 // Commit
380 packetBuffer->Commit(16);
381
382 unsigned int uint32_t_size = sizeof(uint32_t);
383 unsigned int offset = uint32_t_size;
Cathal Corbett5aa9fd72022-02-25 15:33:28 +0000384 CHECK_THROWS_AS(ReadSwTraceMessage(packetBuffer->GetReadableData(), offset, packetBuffer->GetSize()),
Jim Flynnf9db3ef2022-03-08 21:23:44 +0000385 arm::pipe::ProfilingException);
Kevin Mayc1351792020-07-28 11:29:04 +0100386
387}
388
Sadik Armagan1625efc2021-06-10 18:24:34 +0100389TEST_CASE("ReadSwTraceMessageExceptionTest1")
Kevin Mayc1351792020-07-28 11:29:04 +0100390{
391 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
392
Sadik Armagan1625efc2021-06-10 18:24:34 +0100393 CHECK(packetBuffer->GetSize() == 0);
Kevin Mayc1351792020-07-28 11:29:04 +0100394
395 // Write data to the buffer
396 WriteUint32(packetBuffer, 0, 10);
397 WriteUint32(packetBuffer, 4, 20);
398 WriteUint32(packetBuffer, 8, 30);
399 WriteUint32(packetBuffer, 12, 40);
400
401 // Commit
402 packetBuffer->Commit(16);
403
404 unsigned int uint32_t_size = sizeof(uint32_t);
405 unsigned int offset = uint32_t_size;
Cathal Corbett5aa9fd72022-02-25 15:33:28 +0000406 CHECK_THROWS_AS(ReadSwTraceMessage(packetBuffer->GetReadableData(), offset, packetBuffer->GetSize()),
Jim Flynnf9db3ef2022-03-08 21:23:44 +0000407 arm::pipe::ProfilingException);
Kevin Mayc1351792020-07-28 11:29:04 +0100408
409}
410
Sadik Armagan1625efc2021-06-10 18:24:34 +0100411}