blob: e131b3c9fbcf6a013e31ac28930ea8cad7eda6a6 [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/persistent_cache/persistent_cache.h"
#include "base/time/time.h"
#include "base/timer/elapsed_timer.h"
#include "build/buildflag.h"
#include "components/persistent_cache/entry.h"
#include "components/persistent_cache/sqlite/test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/perf/perf_result_reporter.h"
namespace persistent_cache {
using PersistentCachePerftest = testing::Test;
#if !BUILDFLAG(IS_FUCHSIA)
TEST_F(PersistentCachePerftest, OpenClose) {
test_utils::TestHelper provider;
BackendParams backend_params =
provider.CreateBackendFilesAndBuildParams(BackendType::kSqlite);
auto persistent_cache = PersistentCache::Open(backend_params.Copy());
ASSERT_TRUE(persistent_cache);
// Ensures there are entries in the cache.
const char* kKey = "foo";
persistent_cache->Insert(kKey, base::byte_span_from_cstring("1"));
auto entry = persistent_cache->Find(kKey);
ASSERT_TRUE(entry);
base::ElapsedTimer timer;
const int kAmountOfIteration = 16 * 1024;
for (size_t i = 0; i < kAmountOfIteration; ++i) {
auto persistent_cache_under_test =
PersistentCache::Open(backend_params.Copy());
}
perf_test::PerfResultReporter reporter("PersistentCache", "OpenClose");
reporter.RegisterImportantMetric(".wall_time", "us");
reporter.AddResult(".wall_time",
static_cast<size_t>(timer.Elapsed().InMicroseconds() /
kAmountOfIteration));
}
#endif // !BUILDFLAG(IS_FUCHSIA)
} // namespace persistent_cache