Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Side by Side Diff: components/tracing/core/trace_ring_buffer_unittest.cc

Issue 2196663002: tracing v2: Introduce TraceBufferWriter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@proto_refactor
Patch Set: Fix linking errors moving kChunkSize outside of exported class Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/tracing/core/trace_ring_buffer.h" 5 #include "components/tracing/core/trace_ring_buffer.h"
6 6
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 8
9 namespace tracing { 9 namespace tracing {
10 namespace v2 { 10 namespace v2 {
11 11
12 namespace { 12 namespace {
13 13
14 const size_t kChunkSize = TraceRingBuffer::Chunk::kSize;
15
16 TEST(TraceRingBufferTest, BasicChunkWrapping) { 14 TEST(TraceRingBufferTest, BasicChunkWrapping) {
17 const uint32_t kNumChunks = 5; 15 const uint32_t kNumChunks = 5;
18 const size_t kBufferSize = kChunkSize * kNumChunks; 16 const size_t kBufferSize = kChunkSize * kNumChunks;
19 std::unique_ptr<uint8_t[]> storage(new uint8_t[kBufferSize]); 17 std::unique_ptr<uint8_t[]> storage(new uint8_t[kBufferSize]);
20 TraceRingBuffer ring_buffer(storage.get(), kBufferSize); 18 TraceRingBuffer ring_buffer(storage.get(), kBufferSize);
21 19
22 EXPECT_EQ(0u, ring_buffer.GetNumChunksTaken()); 20 EXPECT_EQ(0u, ring_buffer.GetNumChunksTaken());
23 uint8_t* last_chunk_end = nullptr; 21 uint8_t* last_chunk_end = nullptr;
24 22
25 // Fill the buffer twice to test wrapping logic. 23 // Fill the buffer twice to test wrapping logic.
(...skipping 17 matching lines...) Expand all
43 uint8_t* chunk_start = storage.get() + (chunk_idx * kChunkSize); 41 uint8_t* chunk_start = storage.get() + (chunk_idx * kChunkSize);
44 const uint32_t kPayloadSize = (chunk_idx + 1) * 8; 42 const uint32_t kPayloadSize = (chunk_idx + 1) * 8;
45 EXPECT_EQ(kPayloadSize, *reinterpret_cast<uint32_t*>(chunk_start)); 43 EXPECT_EQ(kPayloadSize, *reinterpret_cast<uint32_t*>(chunk_start));
46 for (uint32_t i = 0; i < kPayloadSize; ++i) 44 for (uint32_t i = 0; i < kPayloadSize; ++i)
47 EXPECT_EQ(chunk_idx + 1, *(chunk_start + sizeof(uint32_t) + i)); 45 EXPECT_EQ(chunk_idx + 1, *(chunk_start + sizeof(uint32_t) + i));
48 } 46 }
49 } 47 }
50 48
51 TEST(TraceRingBufferTest, ChunkBankrupcyDoesNotCrash) { 49 TEST(TraceRingBufferTest, ChunkBankrupcyDoesNotCrash) {
52 const size_t kNumChunks = 2; 50 const size_t kNumChunks = 2;
53 const size_t kBufferSize = TraceRingBuffer::Chunk::kSize * kNumChunks; 51 const size_t kBufferSize = kChunkSize * kNumChunks;
54 std::unique_ptr<uint8_t[]> storage(new uint8_t[kBufferSize]); 52 std::unique_ptr<uint8_t[]> storage(new uint8_t[kBufferSize]);
55 TraceRingBuffer ring_buffer(storage.get(), kBufferSize); 53 TraceRingBuffer ring_buffer(storage.get(), kBufferSize);
56 54
57 TraceRingBuffer::Chunk* chunk1 = ring_buffer.TakeChunk(1); 55 TraceRingBuffer::Chunk* chunk1 = ring_buffer.TakeChunk(1);
58 ASSERT_NE(nullptr, chunk1); 56 ASSERT_NE(nullptr, chunk1);
59 57
60 TraceRingBuffer::Chunk* chunk2 = ring_buffer.TakeChunk(1); 58 TraceRingBuffer::Chunk* chunk2 = ring_buffer.TakeChunk(1);
61 ASSERT_NE(nullptr, chunk2); 59 ASSERT_NE(nullptr, chunk2);
62 60
63 EXPECT_EQ(2u, ring_buffer.GetNumChunksTaken()); 61 EXPECT_EQ(2u, ring_buffer.GetNumChunksTaken());
(...skipping 13 matching lines...) Expand all
77 ring_buffer.ReturnChunk(chunk2); 75 ring_buffer.ReturnChunk(chunk2);
78 EXPECT_EQ(1u, ring_buffer.GetNumChunksTaken()); 76 EXPECT_EQ(1u, ring_buffer.GetNumChunksTaken());
79 TraceRingBuffer::Chunk* chunk = ring_buffer.TakeChunk(1); 77 TraceRingBuffer::Chunk* chunk = ring_buffer.TakeChunk(1);
80 ASSERT_NE(nullptr, chunk); 78 ASSERT_NE(nullptr, chunk);
81 ASSERT_FALSE(ring_buffer.IsBankrupcyChunkForTesting(chunk)); 79 ASSERT_FALSE(ring_buffer.IsBankrupcyChunkForTesting(chunk));
82 } 80 }
83 81
84 } // namespace 82 } // namespace
85 } // namespace v2 83 } // namespace v2
86 } // namespace tracing 84 } // namespace tracing
OLDNEW
« no previous file with comments | « components/tracing/core/trace_ring_buffer.cc ('k') | components/tracing/proto/events_chunk.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698