| // Copyright (c) 2019 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/third_party/quiche/src/quic/test_tools/send_algorithm_test_utils.h" | 
 |  | 
 | #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h" | 
 | #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" | 
 | #include "net/third_party/quiche/src/quic/platform/api/quic_test_output.h" | 
 | #include "net/third_party/quiche/src/common/platform/api/quiche_str_cat.h" | 
 |  | 
 | namespace quic { | 
 | namespace test { | 
 |  | 
 | bool LoadSendAlgorithmTestResult(SendAlgorithmTestResult* result) { | 
 |   std::string test_result_file_content; | 
 |   if (!QuicLoadTestOutput(GetSendAlgorithmTestResultFilename(), | 
 |                           &test_result_file_content)) { | 
 |     return false; | 
 |   } | 
 |   return result->ParseFromString(test_result_file_content); | 
 | } | 
 |  | 
 | void RecordSendAlgorithmTestResult(uint64_t random_seed, | 
 |                                    int64_t simulated_duration_micros) { | 
 |   SendAlgorithmTestResult result; | 
 |   result.set_test_name(GetFullSendAlgorithmTestName()); | 
 |   result.set_random_seed(random_seed); | 
 |   result.set_simulated_duration_micros(simulated_duration_micros); | 
 |  | 
 |   QuicSaveTestOutput(GetSendAlgorithmTestResultFilename(), | 
 |                      result.SerializeAsString()); | 
 | } | 
 |  | 
 | void CompareSendAlgorithmTestResult(int64_t actual_simulated_duration_micros) { | 
 |   SendAlgorithmTestResult expected; | 
 |   ASSERT_TRUE(LoadSendAlgorithmTestResult(&expected)); | 
 |   QUIC_LOG(INFO) << "Loaded expected test result: " | 
 |                  << expected.ShortDebugString(); | 
 |  | 
 |   EXPECT_GE(expected.simulated_duration_micros(), | 
 |             actual_simulated_duration_micros); | 
 | } | 
 |  | 
 | std::string GetFullSendAlgorithmTestName() { | 
 |   const auto* test_info = | 
 |       ::testing::UnitTest::GetInstance()->current_test_info(); | 
 |   const std::string type_param = | 
 |       test_info->type_param() ? test_info->type_param() : ""; | 
 |   const std::string value_param = | 
 |       test_info->value_param() ? test_info->value_param() : ""; | 
 |   return quiche::QuicheStrCat(test_info->test_suite_name(), ".", | 
 |                               test_info->name(), "_", type_param, "_", | 
 |                               value_param); | 
 | } | 
 |  | 
 | std::string GetSendAlgorithmTestResultFilename() { | 
 |   return GetFullSendAlgorithmTestName() + ".test_result"; | 
 | } | 
 |  | 
 | }  // namespace test | 
 | }  // namespace quic |