node_base_unittest.cc 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/performance_manager/graph/node_base.h"
  5. #include "components/performance_manager/graph/graph_impl_operations.h"
  6. #include "components/performance_manager/graph/page_node_impl.h"
  7. #include "components/performance_manager/graph/process_node_impl.h"
  8. #include "components/performance_manager/test_support/graph_test_harness.h"
  9. #include "components/performance_manager/test_support/mock_graphs.h"
  10. #include "testing/gtest/include/gtest/gtest.h"
  11. namespace performance_manager {
  12. namespace {
  13. class NodeBaseTest : public GraphTestHarness {};
  14. using NodeBaseDeathTest = NodeBaseTest;
  15. } // namespace
  16. TEST_F(NodeBaseTest, GetAssociatedNodesForSinglePageInSingleProcess) {
  17. MockSinglePageInSingleProcessGraph mock_graph(graph());
  18. auto pages_associated_with_process =
  19. GraphImplOperations::GetAssociatedPageNodes(mock_graph.process.get());
  20. EXPECT_EQ(1u, pages_associated_with_process.size());
  21. EXPECT_EQ(1u, pages_associated_with_process.count(mock_graph.page.get()));
  22. auto processes_associated_with_page =
  23. GraphImplOperations::GetAssociatedProcessNodes(mock_graph.page.get());
  24. EXPECT_EQ(1u, processes_associated_with_page.size());
  25. EXPECT_EQ(1u, processes_associated_with_page.count(mock_graph.process.get()));
  26. }
  27. TEST_F(NodeBaseTest, GetAssociatedNodesForMultiplePagesInSingleProcess) {
  28. MockMultiplePagesInSingleProcessGraph mock_graph(graph());
  29. auto pages_associated_with_process =
  30. GraphImplOperations::GetAssociatedPageNodes(mock_graph.process.get());
  31. EXPECT_EQ(2u, pages_associated_with_process.size());
  32. EXPECT_EQ(1u, pages_associated_with_process.count(mock_graph.page.get()));
  33. EXPECT_EQ(1u,
  34. pages_associated_with_process.count(mock_graph.other_page.get()));
  35. auto processes_associated_with_page =
  36. GraphImplOperations::GetAssociatedProcessNodes(mock_graph.page.get());
  37. EXPECT_EQ(1u, processes_associated_with_page.size());
  38. EXPECT_EQ(1u, processes_associated_with_page.count(mock_graph.process.get()));
  39. auto processes_associated_with_other_page =
  40. GraphImplOperations::GetAssociatedProcessNodes(
  41. mock_graph.other_page.get());
  42. EXPECT_EQ(1u, processes_associated_with_other_page.size());
  43. EXPECT_EQ(1u, processes_associated_with_page.count(mock_graph.process.get()));
  44. }
  45. TEST_F(NodeBaseTest, GetAssociatedNodesForSinglePageWithMultipleProcesses) {
  46. MockSinglePageWithMultipleProcessesGraph mock_graph(graph());
  47. auto pages_associated_with_process =
  48. GraphImplOperations::GetAssociatedPageNodes(mock_graph.process.get());
  49. EXPECT_EQ(1u, pages_associated_with_process.size());
  50. EXPECT_EQ(1u, pages_associated_with_process.count(mock_graph.page.get()));
  51. auto pages_associated_with_other_process =
  52. GraphImplOperations::GetAssociatedPageNodes(
  53. mock_graph.other_process.get());
  54. EXPECT_EQ(1u, pages_associated_with_other_process.size());
  55. EXPECT_EQ(1u,
  56. pages_associated_with_other_process.count(mock_graph.page.get()));
  57. auto processes_associated_with_page =
  58. GraphImplOperations::GetAssociatedProcessNodes(mock_graph.page.get());
  59. EXPECT_EQ(2u, processes_associated_with_page.size());
  60. EXPECT_EQ(1u, processes_associated_with_page.count(mock_graph.process.get()));
  61. EXPECT_EQ(
  62. 1u, processes_associated_with_page.count(mock_graph.other_process.get()));
  63. }
  64. TEST_F(NodeBaseTest, GetAssociatedNodesForMultiplePagesWithMultipleProcesses) {
  65. MockMultiplePagesWithMultipleProcessesGraph mock_graph(graph());
  66. auto pages_associated_with_process =
  67. GraphImplOperations::GetAssociatedPageNodes(mock_graph.process.get());
  68. EXPECT_EQ(2u, pages_associated_with_process.size());
  69. EXPECT_EQ(1u, pages_associated_with_process.count(mock_graph.page.get()));
  70. EXPECT_EQ(1u,
  71. pages_associated_with_process.count(mock_graph.other_page.get()));
  72. auto pages_associated_with_other_process =
  73. GraphImplOperations::GetAssociatedPageNodes(
  74. mock_graph.other_process.get());
  75. EXPECT_EQ(1u, pages_associated_with_other_process.size());
  76. EXPECT_EQ(1u, pages_associated_with_other_process.count(
  77. mock_graph.other_page.get()));
  78. auto processes_associated_with_page =
  79. GraphImplOperations::GetAssociatedProcessNodes(mock_graph.page.get());
  80. EXPECT_EQ(1u, processes_associated_with_page.size());
  81. EXPECT_EQ(1u, processes_associated_with_page.count(mock_graph.process.get()));
  82. auto processes_associated_with_other_page =
  83. GraphImplOperations::GetAssociatedProcessNodes(
  84. mock_graph.other_page.get());
  85. EXPECT_EQ(2u, processes_associated_with_other_page.size());
  86. EXPECT_EQ(
  87. 1u, processes_associated_with_other_page.count(mock_graph.process.get()));
  88. EXPECT_EQ(1u, processes_associated_with_other_page.count(
  89. mock_graph.other_process.get()));
  90. }
  91. } // namespace performance_manager