Index: net/spdy/http2_priority_dependencies_unittest.cc |
diff --git a/net/spdy/http2_priority_dependencies_unittest.cc b/net/spdy/http2_priority_dependencies_unittest.cc |
deleted file mode 100644 |
index 73d1f7d7f749b1f4796b9f17a7fccb22383eab23..0000000000000000000000000000000000000000 |
--- a/net/spdy/http2_priority_dependencies_unittest.cc |
+++ /dev/null |
@@ -1,260 +0,0 @@ |
-// Copyright 2016 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "net/spdy/http2_priority_dependencies.h" |
- |
-#include <algorithm> |
- |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "testing/platform_test.h" |
- |
-using ::testing::ContainerEq; |
- |
-namespace net { |
- |
-bool operator==(const Http2PriorityDependencies::DependencyUpdate& a, |
- const Http2PriorityDependencies::DependencyUpdate& b) { |
- return a.id == b.id && a.dependent_stream_id == b.dependent_stream_id && |
- a.exclusive == b.exclusive; |
-} |
- |
-std::ostream& operator<<( |
- std::ostream& os, |
- const std::vector<Http2PriorityDependencies::DependencyUpdate>& v) { |
- for (auto e : v) { |
- os << "{" << e.id << "," << e.dependent_stream_id << "," |
- << (e.exclusive ? "true" : "false") << "}"; |
- } |
- return os; |
-} |
- |
-class HttpPriorityDependencyTest : public PlatformTest { |
- public: |
- HttpPriorityDependencyTest() : next_id_(0u) {} |
- |
- // Fixed priority values to use for testing. |
- enum { |
- HIGHEST = kV3HighestPriority, |
- MEDIUM = HIGHEST + 1, |
- LOW = MEDIUM + 1, |
- LOWEST = kV3LowestPriority, |
- }; |
- |
- SpdyStreamId GetId() { return ++next_id_; } |
- |
- void TestStreamCreation(SpdyStreamId new_id, |
- SpdyPriority priority, |
- SpdyStreamId expected_dependent_id) { |
- SpdyStreamId dependent_id = 999u; |
- bool exclusive = false; |
- dependency_state_.OnStreamCreation(new_id, priority, &dependent_id, |
- &exclusive); |
- if (expected_dependent_id != dependent_id || !exclusive) { |
- ADD_FAILURE() << "OnStreamCreation(" << new_id << ", " << int(priority) |
- << ")\n" |
- << " Got: (" << dependent_id << ", " << exclusive << ")\n" |
- << " Want: (" << expected_dependent_id << ", true)\n"; |
- } |
- } |
- |
- struct ExpectedDependencyUpdate { |
- SpdyStreamId id; |
- SpdyStreamId parent_id; |
- }; |
- |
- void TestStreamUpdate(SpdyStreamId id, |
- SpdyPriority new_priority, |
- std::vector<ExpectedDependencyUpdate> expected) { |
- auto value = dependency_state_.OnStreamUpdate(id, new_priority); |
- std::vector<Http2PriorityDependencies::DependencyUpdate> expected_value; |
- for (auto e : expected) { |
- expected_value.push_back({e.id, e.parent_id, true /* exclusive */}); |
- } |
- if (value != expected_value) { |
- ADD_FAILURE() << "OnStreamUpdate(" << id << ", " << int(new_priority) |
- << ")\n" |
- << " Value: " << value << "\n" |
- << " Expected: " << expected_value << "\n"; |
- } |
- } |
- |
- void OnStreamDestruction(SpdyStreamId id) { |
- dependency_state_.OnStreamDestruction(id); |
- } |
- |
- private: |
- SpdyStreamId next_id_; |
- Http2PriorityDependencies dependency_state_; |
-}; |
- |
-// Confirm dependencies correct for entries at the same priority. |
-TEST_F(HttpPriorityDependencyTest, SamePriority) { |
- const SpdyStreamId first_id = GetId(); |
- const SpdyStreamId second_id = GetId(); |
- const SpdyStreamId third_id = GetId(); |
- |
- TestStreamCreation(first_id, MEDIUM, 0u); |
- TestStreamCreation(second_id, MEDIUM, first_id); |
- TestStreamCreation(third_id, MEDIUM, second_id); |
-} |
- |
-// Confirm dependencies correct for entries at different priorities, increasing. |
-TEST_F(HttpPriorityDependencyTest, DifferentPriorityIncreasing) { |
- const SpdyStreamId first_id = GetId(); |
- const SpdyStreamId second_id = GetId(); |
- const SpdyStreamId third_id = GetId(); |
- |
- TestStreamCreation(first_id, LOWEST, 0u); |
- TestStreamCreation(second_id, MEDIUM, 0u); |
- TestStreamCreation(third_id, HIGHEST, 0u); |
-} |
- |
-// Confirm dependencies correct for entries at different priorities, increasing. |
-TEST_F(HttpPriorityDependencyTest, DifferentPriorityDecreasing) { |
- const SpdyStreamId first_id = GetId(); |
- const SpdyStreamId second_id = GetId(); |
- const SpdyStreamId third_id = GetId(); |
- |
- TestStreamCreation(first_id, HIGHEST, 0u); |
- TestStreamCreation(second_id, MEDIUM, first_id); |
- TestStreamCreation(third_id, LOWEST, second_id); |
-} |
- |
-// Confirm dependencies correct if requests are completed between before |
-// next creation. |
-TEST_F(HttpPriorityDependencyTest, CompletionBeforeIssue) { |
- const SpdyStreamId first_id = GetId(); |
- const SpdyStreamId second_id = GetId(); |
- const SpdyStreamId third_id = GetId(); |
- |
- TestStreamCreation(first_id, HIGHEST, 0u); |
- OnStreamDestruction(first_id); |
- TestStreamCreation(second_id, MEDIUM, 0u); |
- OnStreamDestruction(second_id); |
- TestStreamCreation(third_id, LOWEST, 0u); |
-} |
- |
-// Confirm dependencies correct if some requests are completed between before |
-// next creation. |
-TEST_F(HttpPriorityDependencyTest, SomeCompletions) { |
- const SpdyStreamId first_id = GetId(); |
- const SpdyStreamId second_id = GetId(); |
- const SpdyStreamId third_id = GetId(); |
- |
- TestStreamCreation(first_id, HIGHEST, 0u); |
- TestStreamCreation(second_id, MEDIUM, first_id); |
- OnStreamDestruction(second_id); |
- TestStreamCreation(third_id, LOWEST, first_id); |
-} |
- |
-// A more complex example parallel to a simple web page. |
-TEST_F(HttpPriorityDependencyTest, Complex) { |
- const SpdyStreamId first_id = GetId(); |
- const SpdyStreamId second_id = GetId(); |
- const SpdyStreamId third_id = GetId(); |
- const SpdyStreamId fourth_id = GetId(); |
- const SpdyStreamId fifth_id = GetId(); |
- const SpdyStreamId sixth_id = GetId(); |
- const SpdyStreamId seventh_id = GetId(); |
- const SpdyStreamId eighth_id = GetId(); |
- const SpdyStreamId nineth_id = GetId(); |
- const SpdyStreamId tenth_id = GetId(); |
- |
- TestStreamCreation(first_id, HIGHEST, 0u); |
- TestStreamCreation(second_id, MEDIUM, first_id); |
- TestStreamCreation(third_id, MEDIUM, second_id); |
- OnStreamDestruction(first_id); |
- TestStreamCreation(fourth_id, MEDIUM, third_id); |
- TestStreamCreation(fifth_id, LOWEST, fourth_id); |
- TestStreamCreation(sixth_id, MEDIUM, fourth_id); |
- OnStreamDestruction(third_id); |
- TestStreamCreation(seventh_id, MEDIUM, sixth_id); |
- TestStreamCreation(eighth_id, LOW, seventh_id); |
- OnStreamDestruction(second_id); |
- OnStreamDestruction(fourth_id); |
- OnStreamDestruction(fifth_id); |
- OnStreamDestruction(sixth_id); |
- OnStreamDestruction(seventh_id); |
- TestStreamCreation(nineth_id, MEDIUM, 0u); |
- TestStreamCreation(tenth_id, HIGHEST, 0u); |
-} |
- |
-// Confirm dependencies correct after updates with just one stream. |
-// All updates are no-ops. |
-TEST_F(HttpPriorityDependencyTest, UpdateSingleStream) { |
- const SpdyStreamId id = GetId(); |
- |
- TestStreamCreation(id, HIGHEST, 0); |
- |
- std::vector<ExpectedDependencyUpdate> empty; |
- TestStreamUpdate(id, HIGHEST, empty); |
- TestStreamUpdate(id, MEDIUM, empty); |
- TestStreamUpdate(id, LOWEST, empty); |
- TestStreamUpdate(id, HIGHEST, empty); |
-} |
- |
-// Confirm dependencies correct after updates with three streams. |
-TEST_F(HttpPriorityDependencyTest, UpdateThreeStreams) { |
- const SpdyStreamId first_id = GetId(); |
- const SpdyStreamId second_id = GetId(); |
- const SpdyStreamId third_id = GetId(); |
- |
- TestStreamCreation(first_id, HIGHEST, 0); |
- TestStreamCreation(second_id, MEDIUM, first_id); |
- TestStreamCreation(third_id, LOWEST, second_id); |
- |
- std::vector<ExpectedDependencyUpdate> empty; |
- |
- // no-op: still at top. |
- TestStreamUpdate(first_id, HIGHEST, empty); |
- |
- // no-op: still below first. |
- TestStreamUpdate(second_id, MEDIUM, empty); |
- |
- // no-op: still below second. |
- TestStreamUpdate(third_id, LOWEST, empty); |
- |
- // second moves to top, first moves below second. |
- TestStreamUpdate(first_id, MEDIUM, {{second_id, 0}, {first_id, second_id}}); |
- |
- // third moves to top. |
- TestStreamUpdate(third_id, HIGHEST, {{third_id, 0}}); |
- |
- // third moves to bottom. |
- TestStreamUpdate(third_id, LOWEST, {{second_id, 0}, {third_id, first_id}}); |
- |
- // first moves to top. |
- TestStreamUpdate(first_id, HIGHEST, {{third_id, second_id}, {first_id, 0}}); |
-} |
- |
-// A more complex example parallel to a simple web page with pushed responses. |
-TEST_F(HttpPriorityDependencyTest, UpdateComplex) { |
- const SpdyStreamId first_id = GetId(); |
- const SpdyStreamId second_id = GetId(); // pushed |
- const SpdyStreamId third_id = GetId(); // pushed |
- const SpdyStreamId fourth_id = GetId(); |
- const SpdyStreamId fifth_id = GetId(); |
- const SpdyStreamId sixth_id = GetId(); |
- const SpdyStreamId seventh_id = GetId(); |
- |
- TestStreamCreation(first_id, HIGHEST, 0u); |
- TestStreamCreation(second_id, LOWEST, first_id); |
- TestStreamCreation(third_id, LOWEST, second_id); |
- TestStreamCreation(fourth_id, HIGHEST, first_id); |
- TestStreamCreation(fifth_id, MEDIUM, fourth_id); |
- TestStreamCreation(sixth_id, MEDIUM, fifth_id); |
- TestStreamCreation(seventh_id, LOW, sixth_id); |
- |
- // second matches a HIGHEST priority response. |
- // 3 moves under 7 |
- // 2 moves under 4 |
- TestStreamUpdate(second_id, HIGHEST, |
- {{third_id, seventh_id}, {second_id, fourth_id}}); |
- |
- // third matches a MEDIUM priority response. |
- // 3 moves under 6 |
- TestStreamUpdate(third_id, MEDIUM, {{third_id, sixth_id}}); |
-} |
- |
-} // namespace net |