Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(90)

Unified Diff: chrome/test/perf/generate_profile.cc

Issue 14585015: Recommit the generate profile patch (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Load the browser dll manually on Windows. Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/perf/generate_profile.h ('k') | chrome/test/perf/perf_ui_test_suite.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/perf/generate_profile.cc
diff --git a/chrome/tools/profiles/generate_profile.cc b/chrome/test/perf/generate_profile.cc
similarity index 75%
rename from chrome/tools/profiles/generate_profile.cc
rename to chrome/test/perf/generate_profile.cc
index fbd761eed7db0f2a3ea836de9016fbd78f6ecbac..e3dd38e6a43e45e7298374a0e66c1f246bc7aecf 100644
--- a/chrome/tools/profiles/generate_profile.cc
+++ b/chrome/test/perf/generate_profile.cc
@@ -2,10 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// This program generates a user profile and history by randomly generating
-// data and feeding it to the history service.
-
-#include "chrome/tools/profiles/thumbnail-inl.h"
+#include "chrome/test/perf/generate_profile.h"
#include "base/at_exit.h"
#include "base/command_line.h"
@@ -26,27 +23,19 @@
#include "chrome/common/thumbnail_score.h"
#include "chrome/test/base/testing_browser_process.h"
#include "chrome/test/base/testing_profile.h"
-#include "content/browser/browser_thread_impl.h"
+#include "chrome/tools/profiles/thumbnail-inl.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_service.h"
+#include "content/public/test/test_browser_thread.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/base/ui_base_paths.h"
#include "ui/gfx/codec/jpeg_codec.h"
-#if defined(TOOLKIT_GTK)
-#include <gtk/gtk.h>
-#endif
-
using base::Time;
using content::BrowserThread;
-// Addition types data can be generated for. By default only urls/visits are
-// added.
-enum Types {
- TOP_SITES = 1 << 0,
- FULL_TEXT = 1 << 1
-};
+namespace {
// RAII for initializing and shutting down the TestBrowserProcess
class InitBrowserProcess {
@@ -71,12 +60,12 @@ const float kWordLengthProbabilities[] = { 0.069f, 0.132f, 0.199f,
// Return a float uniformly in [0,1].
// Useful for making probabilistic decisions.
-float RandomFloat() {
+inline float RandomFloat() {
return rand() / static_cast<float>(RAND_MAX);
}
// Return an integer uniformly in [min,max).
-int RandomInt(int min, int max) {
+inline int RandomInt(int min, int max) {
return min + (rand() % (max-min));
}
@@ -154,10 +143,12 @@ void InsertURLBatch(Profile* profile,
// Scoping value for page IDs (required by the history service).
void* id_scope = reinterpret_cast<void*>(1);
- scoped_ptr<SkBitmap> google_bitmap(
- gfx::JPEGCodec::Decode(kGoogleThumbnail, sizeof(kGoogleThumbnail)));
- scoped_ptr<SkBitmap> weewar_bitmap(
- gfx::JPEGCodec::Decode(kWeewarThumbnail, sizeof(kWeewarThumbnail)));
+ scoped_refptr<base::RefCountedMemory> google_bitmap(
+ new base::RefCountedStaticMemory(kGoogleThumbnail,
+ sizeof(kGoogleThumbnail)));
+ scoped_refptr<base::RefCountedMemory> weewar_bitmap(
+ new base::RefCountedStaticMemory(kWeewarThumbnail,
+ sizeof(kWeewarThumbnail)));
printf("Inserting %d URLs...\n", batch_size);
GURL previous_url;
@@ -203,10 +194,10 @@ void InsertURLBatch(Profile* profile,
if (types & FULL_TEXT)
history_service->SetPageContents(url, ConstructRandomPage());
if (types & TOP_SITES && top_sites) {
- const SkBitmap& bitmap = (RandomInt(0, 2) == 0) ? *google_bitmap :
- *weewar_bitmap;
- gfx::Image image = gfx::Image::CreateFrom1xBitmap(bitmap);
- top_sites->SetPageThumbnail(url, image, score);
+ top_sites->SetPageThumbnailToJPEGBytes(
+ url,
+ (RandomInt(0, 2) == 0) ? google_bitmap.get() : weewar_bitmap.get(),
+ score);
}
previous_url = url;
@@ -216,53 +207,26 @@ void InsertURLBatch(Profile* profile,
}
}
-int main(int argc, char* argv[]) {
- CommandLine::Init(argc, argv);
- base::EnableTerminationOnHeapCorruption();
- base::AtExitManager exit_manager;
- CommandLine* cl = CommandLine::ForCurrentProcess();
-
- int types = 0;
- if (cl->HasSwitch("top-sites"))
- types |= TOP_SITES;
- if (cl->HasSwitch("full-text"))
- types |= FULL_TEXT;
-
- // We require two arguments: urlcount and profiledir.
- const CommandLine::StringVector& args = cl->GetArgs();
- if (args.size() < 2) {
- printf("usage: %s [--top-sites] [--full-text] <urlcount> "
- "<profiledir>\n", argv[0]);
- printf("\n --top-sites Generate thumbnails\n");
- printf("\n --full-text Generate full text index\n");
- return -1;
- }
+} // namespace
- int url_count = 0;
- base::StringToInt(args[0], &url_count);
- base::FilePath dst_dir(args[1]);
- if (!dst_dir.IsAbsolute()) {
- base::FilePath current_dir;
- file_util::GetCurrentDirectory(&current_dir);
- dst_dir = current_dir.Append(dst_dir);
- }
+bool GenerateProfile(GenerateProfileTypes types,
+ int url_count,
+ const base::FilePath& dst_dir) {
if (!file_util::CreateDirectory(dst_dir)) {
PLOG(ERROR) << "Unable to create directory " << dst_dir.value().c_str();
+ return false;
}
- icu_util::Initialize();
- // Copied from base/test/test_suite.cc.
-#if defined(TOOLKIT_GTK)
- gtk_init_check(&argc, &argv);
-#endif
+ // We want this profile to be as deterministic as possible, so seed the
+ // random number generator with the number of urls we're generating.
+ srand(static_cast<unsigned int>(url_count));
+
+ printf("Creating profiles for testing...\n");
InitBrowserProcess initialize_browser_process;
- chrome::RegisterPathProvider();
- ui::RegisterPathProvider();
- MessageLoopForUI message_loop;
- content::BrowserThreadImpl ui_thread(BrowserThread::UI, &message_loop);
- content::BrowserThreadImpl db_thread(BrowserThread::DB, &message_loop);
- ResourceBundle::InitSharedInstanceWithLocale("en-US", NULL);
+ base::MessageLoopForUI message_loop;
+ content::TestBrowserThread ui_thread(BrowserThread::UI, &message_loop);
+ content::TestBrowserThread db_thread(BrowserThread::DB, &message_loop);
TestingProfile profile;
profile.CreateHistoryService(false, false);
if (types & TOP_SITES) {
@@ -270,8 +234,6 @@ int main(int argc, char* argv[]) {
profile.BlockUntilTopSitesLoaded();
}
- srand(static_cast<unsigned int>(Time::Now().ToInternalValue()));
-
// The maximum number of URLs to insert into history in one batch.
const int kBatchSize = 2000;
int page_id = 0;
@@ -283,8 +245,6 @@ int main(int argc, char* argv[]) {
page_id += batch_size;
}
- printf("Writing to disk\n");
-
profile.DestroyTopSites();
profile.DestroyHistoryService();
@@ -296,15 +256,17 @@ int main(int argc, char* argv[]) {
while (!path.empty()) {
base::FilePath dst_file = dst_dir.Append(path.BaseName());
file_util::Delete(dst_file, false);
- printf("Copying file %" PRFilePath " to "
- "%" PRFilePath "\n", path.value().c_str(),
- dst_file.value().c_str());
if (!file_util::CopyFile(path, dst_file)) {
PLOG(ERROR) << "Copying file failed";
- return -1;
+ return false;
}
path = file_iterator.Next();
}
- return 0;
+ printf("Finished creating profiles for testing.\n");
+
+ // Restore the random seed.
+ srand(static_cast<unsigned int>(Time::Now().ToInternalValue()));
+
+ return true;
}
« no previous file with comments | « chrome/test/perf/generate_profile.h ('k') | chrome/test/perf/perf_ui_test_suite.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698