diff options
author | shadi@chromium.org <shadi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-28 10:40:37 +0000 |
---|---|---|
committer | shadi@chromium.org <shadi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-28 10:40:37 +0000 |
commit | 900a3242b7d49415814ad43a24a57a9d61dfb211 (patch) | |
tree | ad5f1cb62f5f2a35569517735968c0f8fd0810e2 | |
parent | 685442f3419739cc35090343ad7845dc10226fa5 (diff) | |
download | chromium_src-900a3242b7d49415814ad43a24a57a9d61dfb211.zip chromium_src-900a3242b7d49415814ad43a24a57a9d61dfb211.tar.gz chromium_src-900a3242b7d49415814ad43a24a57a9d61dfb211.tar.bz2 |
Perf test to measure loading CDM library.
BUG=337674
Review URL: https://codereview.chromium.org/151283003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@254088 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | build/all.gyp | 1 | ||||
-rw-r--r-- | chrome/browser/load_library_perf_test.cc | 62 | ||||
-rw-r--r-- | chrome/chrome_tests.gypi | 18 |
3 files changed, 81 insertions, 0 deletions
diff --git a/build/all.gyp b/build/all.gyp index 3bfc588..8342c11 100644 --- a/build/all.gyp +++ b/build/all.gyp @@ -479,6 +479,7 @@ 'dependencies': [ '../cc/cc_tests.gyp:cc_perftests', '../chrome/chrome.gyp:chrome', + '../chrome/chrome.gyp:load_library_perf_tests', '../chrome/chrome.gyp:performance_browser_tests', '../chrome/chrome.gyp:performance_ui_tests', '../chrome/chrome.gyp:sync_performance_tests', diff --git a/chrome/browser/load_library_perf_test.cc b/chrome/browser/load_library_perf_test.cc new file mode 100644 index 0000000..e778af9 --- /dev/null +++ b/chrome/browser/load_library_perf_test.cc @@ -0,0 +1,62 @@ +// Copyright 2014 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 "base/files/file_path.h" +#include "base/path_service.h" +#include "base/scoped_native_library.h" +#include "base/strings/utf_string_conversions.h" +#include "base/time/time.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "testing/perf/perf_test.h" +#include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. + + +void MeasureTimeToLoadNativeLibrary(const base::FilePath& library_name) { + base::FilePath output_dir; + ASSERT_TRUE(PathService::Get(base::DIR_MODULE, &output_dir)); + base::FilePath library_path = output_dir.Append(library_name); + std::string error; + base::TimeTicks start = base::TimeTicks::HighResNow(); + base::NativeLibrary native_library = + base::LoadNativeLibrary(library_path, &error); + double delta = (base::TimeTicks::HighResNow() - start).InMillisecondsF(); + ASSERT_TRUE(native_library) << "Error loading library:\n" << error; + base::UnloadNativeLibrary(native_library); + perf_test::PrintResult("time_to_load_library", + "", + library_name.AsUTF8Unsafe(), + delta, + "ms", + true); +} + +// Use the base name of the library to dynamically get the platform specific +// name. See base::GetNativeLibraryName() for details. +void MeasureTimeToLoadNativeLibraryByBaseName( + const std::string& base_library_name) { + MeasureTimeToLoadNativeLibrary(base::FilePath::FromUTF16Unsafe( + base::GetNativeLibraryName(base::ASCIIToUTF16(base_library_name)))); +} + +#if defined(ENABLE_PEPPER_CDMS) +#if defined(WIDEVINE_CDM_AVAILABLE) +TEST(LoadCDMPerfTest, Widevine) { + MeasureTimeToLoadNativeLibrary( + base::FilePath(FILE_PATH_LITERAL(kWidevineCdmFileName))); +} + +TEST(LoadCDMPerfTest, WidevineAdapter) { + MeasureTimeToLoadNativeLibrary( + base::FilePath(FILE_PATH_LITERAL(kWidevineCdmAdapterFileName))); +} +#endif // defined(WIDEVINE_CDM_AVAILABLE) + +TEST(LoadCDMPerfTest, ExternalClearKey) { + MeasureTimeToLoadNativeLibraryByBaseName("clearkeycdm"); +} + +TEST(LoadCDMPerfTest, ExternalClearKeyAdapter) { + MeasureTimeToLoadNativeLibraryByBaseName("clearkeycdmadapter"); +} +#endif // defined(ENABLE_PEPPER_CDMS) diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index 853fbbb..006c64e 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -2833,6 +2833,24 @@ '../third_party/webrtc/tools/tools.gyp:rgba_to_i420_converter', ], }, # target 'webrtc_test_tools' + { + # Executable to measure time to load libraries. + 'target_name': 'load_library_perf_tests', + 'type': '<(gtest_target_type)', + 'dependencies': [ + '../base/base.gyp:test_support_perf', + '../testing/gtest.gyp:gtest', + '../testing/perf/perf_test.gyp:*', + '../third_party/widevine/cdm/widevine_cdm.gyp:widevine_cdm_version_h', + ], + 'sources': [ + 'browser/load_library_perf_test.cc', + ], + 'include_dirs': [ + '..', + '<(SHARED_INTERMEDIATE_DIR)', + ], + }, # target 'load_library_perf_tests' ], 'conditions': [ ['OS=="mac"', { |