18 TEST_CASE(
"PacketBufferTest0")
20 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
22 CHECK(packetBuffer->GetSize() == 0);
25 WriteUint32(packetBuffer, 0, 10);
26 WriteUint32(packetBuffer, 4, 20);
27 WriteUint32(packetBuffer, 8, 30);
28 WriteUint32(packetBuffer, 12, 40);
31 packetBuffer->Commit(16);
34 CHECK(packetBuffer->GetSize() == 16);
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);
44 CHECK(readData0 == 10);
45 CHECK(readData1 == 20);
46 CHECK(readData2 == 30);
47 CHECK(readData3 == 40);
50 packetBuffer->MarkRead();
53 CHECK(packetBuffer->GetSize() == 0);
56 TEST_CASE(
"PacketBufferTest1")
58 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
60 CHECK(packetBuffer->GetSize() == 0);
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);
69 packetBuffer->Commit(16);
71 CHECK(packetBuffer->GetSize() == 16);
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);
80 CHECK(readData0 == 10);
81 CHECK(readData1 == 20);
82 CHECK(readData2 == 30);
83 CHECK(readData3 == 40);
85 packetBuffer->MarkRead();
87 CHECK(packetBuffer->GetSize() == 0);
90 TEST_CASE(
"PacketBufferReleaseTest")
92 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
94 CHECK(packetBuffer->GetSize() == 0);
96 auto writeBuffer = packetBuffer->GetWritableData();
98 WriteUint32(writeBuffer, 0, 10);
99 WriteUint32(writeBuffer, 4, 20);
100 WriteUint32(writeBuffer, 8, 30);
101 WriteUint32(writeBuffer, 12, 40);
103 packetBuffer->Release();
106 CHECK(packetBuffer->GetSize() == 0);
109 TEST_CASE(
"PacketBufferCommitErrorTest")
111 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(8);
114 CHECK_THROWS_AS(packetBuffer->Commit(16);, arm::pipe::ProfilingException);
117 TEST_CASE(
"BufferReserveTest")
119 BufferManager bufferManager(1, 512);
120 unsigned int reservedSize = 0;
121 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
124 CHECK(reservedSize == 512);
125 CHECK(packetBuffer.get());
128 TEST_CASE(
"BufferReserveExceedingSpaceTest")
130 BufferManager bufferManager(1, 512);
131 unsigned int reservedSize = 0;
134 auto reservedBuffer = bufferManager.Reserve(1024, reservedSize);
135 CHECK(reservedSize == 0);
136 CHECK(!reservedBuffer.get());
139 TEST_CASE(
"BufferExhaustionTest")
141 BufferManager bufferManager(1, 512);
142 unsigned int reservedSize = 0;
143 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
146 CHECK(reservedSize == 512);
147 CHECK(packetBuffer.get());
153 packetBuffer = bufferManager.Reserve(512, reservedSize);
156 CHECK(reservedSize == 512);
157 CHECK(packetBuffer.get());
159 packetBuffer = bufferManager.Reserve(512, reservedSize);
162 CHECK(reservedSize == 512);
163 CHECK(packetBuffer.get());
165 auto reservedBuffer = bufferManager.Reserve(512, reservedSize);
166 CHECK(reservedSize == 0);
167 CHECK(!reservedBuffer.get());
170 TEST_CASE(
"BufferReserveMultipleTest")
172 BufferManager bufferManager(3, 512);
173 unsigned int reservedSize0 = 0;
174 auto packetBuffer0 = bufferManager.Reserve(512, reservedSize0);
177 CHECK(reservedSize0 == 512);
178 CHECK(packetBuffer0.get());
180 unsigned int reservedSize1 = 0;
181 auto packetBuffer1 = bufferManager.Reserve(128, reservedSize1);
184 CHECK(reservedSize1 == 128);
185 CHECK(packetBuffer1.get());
187 unsigned int reservedSize2 = 0;
188 auto packetBuffer2 = bufferManager.Reserve(512, reservedSize2);
191 CHECK(reservedSize2 == 512);
192 CHECK(packetBuffer2.get());
196 for (
unsigned int i = 0; i < 6 ; ++i)
199 unsigned int reservedSize = 0;
200 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
203 CHECK(reservedSize == 512);
204 CHECK(packetBuffer.get());
208 unsigned int reservedSize3 = 0;
209 auto reservedBuffer = bufferManager.Reserve(512, reservedSize3);
210 CHECK(reservedSize3 == 0);
211 CHECK(!reservedBuffer.get());
214 TEST_CASE(
"BufferReleaseTest")
216 BufferManager bufferManager(2, 512);
217 unsigned int reservedSize0 = 0;
218 auto packetBuffer0 = bufferManager.Reserve(512, reservedSize0);
221 CHECK(reservedSize0 == 512);
222 CHECK(packetBuffer0.get());
224 unsigned int reservedSize1 = 0;
225 auto packetBuffer1 = bufferManager.Reserve(128, reservedSize1);
228 CHECK(reservedSize1 == 128);
229 CHECK(packetBuffer1.get());
234 for (
unsigned int i = 0; i < 4 ; ++i)
237 unsigned int reservedSize = 0;
238 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
241 CHECK(reservedSize == 512);
242 CHECK(packetBuffer.get());
246 unsigned int reservedSize2 = 0;
247 auto reservedBuffer = bufferManager.Reserve(512, reservedSize2);
248 CHECK(reservedSize2 == 0);
249 CHECK(!reservedBuffer.get());
251 bufferManager.Release(packetBuffer0);
254 auto packetBuffer2 = bufferManager.Reserve(128, reservedSize2);
256 CHECK(reservedSize2 == 128);
257 CHECK(packetBuffer2.get());
260 TEST_CASE(
"BufferCommitTest")
262 BufferManager bufferManager(2, 512);
263 unsigned int reservedSize0 = 0;
264 auto packetBuffer0 = bufferManager.Reserve(512, reservedSize0);
266 CHECK(reservedSize0 == 512);
267 CHECK(packetBuffer0.get());
269 unsigned int reservedSize1 = 0;
270 auto packetBuffer1 = bufferManager.Reserve(128, reservedSize1);
272 CHECK(reservedSize1 == 128);
273 CHECK(packetBuffer1.get());
278 for (
unsigned int i = 0; i < 4 ; ++i)
281 unsigned int reservedSize = 0;
282 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
285 CHECK(reservedSize == 512);
286 CHECK(packetBuffer.get());
289 unsigned int reservedSize2 = 0;
290 auto reservedBuffer = bufferManager.Reserve(512, reservedSize2);
291 CHECK(reservedSize2 == 0);
292 CHECK(!reservedBuffer.get());
294 bufferManager.Commit(packetBuffer0, 256);
297 auto packetBuffer2 = bufferManager.GetReadableBuffer();
298 CHECK(packetBuffer2.get());
299 CHECK(packetBuffer2->GetSize() == 256);
302 unsigned int reservedSize = 0;
303 reservedBuffer = bufferManager.Reserve(512, reservedSize);
304 CHECK(reservedSize == 0);
305 CHECK(!reservedBuffer.get());
308 TEST_CASE(
"BufferMarkReadTest")
310 BufferManager bufferManager(2, 512);
311 unsigned int reservedSize0 = 0;
312 auto packetBuffer0 = bufferManager.Reserve(512, reservedSize0);
314 CHECK(reservedSize0 == 512);
315 CHECK(packetBuffer0.get());
317 unsigned int reservedSize1 = 0;
318 auto packetBuffer1 = bufferManager.Reserve(128, reservedSize1);
320 CHECK(reservedSize1 == 128);
321 CHECK(packetBuffer1.get());
326 for (
unsigned int i = 0; i < 4 ; ++i)
329 unsigned int reservedSize = 0;
330 auto packetBuffer = bufferManager.Reserve(512, reservedSize);
333 CHECK(reservedSize == 512);
334 CHECK(packetBuffer.get());
338 unsigned int reservedSize2 = 0;
339 auto reservedBuffer = bufferManager.Reserve(512, reservedSize2);
340 CHECK(reservedSize2 == 0);
341 CHECK(!reservedBuffer.get());
343 bufferManager.Commit(packetBuffer0, 256);
346 auto packetBuffer2 = bufferManager.GetReadableBuffer();
347 CHECK(packetBuffer2.get());
348 CHECK(packetBuffer2->GetSize() == 256);
351 reservedBuffer = bufferManager.Reserve(512, reservedSize2);
352 CHECK(reservedSize2 == 0);
353 CHECK(!reservedBuffer.get());
355 bufferManager.MarkRead(packetBuffer2);
358 auto readBuffer = bufferManager.GetReadableBuffer();
360 unsigned int reservedSize3 = 0;
361 auto packetBuffer3 = bufferManager.Reserve(56, reservedSize3);
363 CHECK(reservedSize3 == 56);
364 CHECK(packetBuffer3.get());
367 TEST_CASE(
"ReadSwTraceMessageExceptionTest0")
369 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
371 CHECK(packetBuffer->GetSize() == 0);
374 WriteUint32(packetBuffer, 0, 0);
375 WriteUint32(packetBuffer, 4, 0);
376 WriteUint32(packetBuffer, 8, 0);
377 WriteUint32(packetBuffer, 12, 0);
380 packetBuffer->Commit(16);
382 unsigned int uint32_t_size =
sizeof(uint32_t);
383 unsigned int offset = uint32_t_size;
384 CHECK_THROWS_AS(ReadSwTraceMessage(packetBuffer->GetReadableData(), offset, packetBuffer->GetSize()),
385 arm::pipe::ProfilingException);
389 TEST_CASE(
"ReadSwTraceMessageExceptionTest1")
391 IPacketBufferPtr packetBuffer = std::make_unique<PacketBuffer>(512);
393 CHECK(packetBuffer->GetSize() == 0);
396 WriteUint32(packetBuffer, 0, 10);
397 WriteUint32(packetBuffer, 4, 20);
398 WriteUint32(packetBuffer, 8, 30);
399 WriteUint32(packetBuffer, 12, 40);
402 packetBuffer->Commit(16);
404 unsigned int uint32_t_size =
sizeof(uint32_t);
405 unsigned int offset = uint32_t_size;
406 CHECK_THROWS_AS(ReadSwTraceMessage(packetBuffer->GetReadableData(), offset, packetBuffer->GetSize()),
407 arm::pipe::ProfilingException);