Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/toolkit/components/telemetry/tests/gtest/TestCombinedStacks.cpp
Line
Count
Source (jump to first uncovered line)
1
/* Any copyright is dedicated to the Public Domain.
2
 * http://creativecommons.org/publicdomain/zero/1.0/
3
 */
4
5
#include "other/CombinedStacks.h"
6
#include "other/ProcessedStack.h"
7
using namespace mozilla::Telemetry;
8
using namespace TelemetryTestHelpers;
9
10
0
TEST_F(TelemetryTestFixture, CombinedStacks) {
11
0
12
0
  const size_t kMaxStacksKept = 10;
13
0
  CombinedStacks stacks(kMaxStacksKept);
14
0
15
0
  size_t iterations = kMaxStacksKept * 2;
16
0
  for (size_t i = 0; i < iterations; ++i) {
17
0
18
0
    ProcessedStack stack;
19
0
    ProcessedStack::Frame frame = {static_cast<uint16_t>(i)};
20
0
    const nsAutoString& name = NS_ConvertUTF8toUTF16(nsPrintfCString("test%zu", i));
21
0
    ProcessedStack::Module module = {name};
22
0
23
0
    stack.AddFrame(frame);
24
0
    stack.AddModule(module);
25
0
    stacks.AddStack(stack);
26
0
  }
27
0
28
0
  ASSERT_EQ(stacks.GetStackCount(), kMaxStacksKept) << "Wrong number of stacks";
29
0
  ASSERT_EQ(stacks.GetModuleCount(), kMaxStacksKept * 2) << "Wrong number of modules";
30
0
31
0
  for (size_t i = 0; i < kMaxStacksKept; ++i) {
32
0
33
0
    ProcessedStack::Frame frame = stacks.GetStack(i)[0];
34
0
    ASSERT_EQ(frame.mOffset, kMaxStacksKept + i) << "Frame is not returning expected value";
35
0
36
0
    ProcessedStack::Module module = stacks.GetModule(frame.mModIndex);
37
0
    nsPrintfCString moduleName("test%hu", frame.mModIndex);
38
0
    ASSERT_TRUE(module.mName.Equals(NS_ConvertUTF8toUTF16(moduleName))) << "Module should have expected name";
39
0
  }
40
0
41
0
  for (size_t i = 0; i < kMaxStacksKept; ++i) {
42
0
43
0
    stacks.RemoveStack(kMaxStacksKept - i - 1);
44
0
    ASSERT_EQ(stacks.GetStackCount(), kMaxStacksKept - i - 1) <<"Stack should be removed";
45
0
  }
46
0
}