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

Side by Side Diff: tools/page_cycler/database/common.js

Issue 148093016: [Telemetry] Clean up some page cycler cruft now that idb has moved out. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Remove database page cycler too Created 6 years, 10 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 unified diff | Download patch
« no previous file with comments | « no previous file | tools/page_cycler/database/delete-transactions/index.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 /**
6 * @fileoverview A collection of common functions used by all database
7 * performance tests.
8 */
9
10 var CANNOT_OPEN_DB = -1;
11 var SETUP_FAILED = -2;
12 var TEST_FAILED = -3;
13
14 var TRANSACTIONS = 1000; // number of transactions; number of rows in the DB
15 var RANDOM_STRING_LENGTH = 20; // the length of the string on each row
16
17 /**
18 * Generates a random string of upper-case letters of
19 * RANDOM_STRING_LENGTH length.
20 */
21 function getRandomString() {
22 var s = '';
23 for (var i = 0; i < RANDOM_STRING_LENGTH; i++)
24 s += String.fromCharCode(Math.floor(Math.random() * 26) + 64);
25 return s;
26 }
27
28 /**
29 * Sets up and runs a performance test.
30 * @param {!Object} params An object which must have the following fields:
31 * dbName: The database name.
32 * readOnly: If true, transactions will be run using the readTransaction()
33 * method. Otherwise, transaction() will be used.
34 * insertRowsAtSetup: Determines if setting up the database should include
35 * inserting TRANSACTIONS rows in it.
36 * transactionCallback: The transaction callback that should be timed. This
37 * function will be run TRANSACTIONS times and must take a transaction
38 * object as its only parameter.
39 * customRunTransactions: A custom function for running and timing
40 * transactions. If this parameter is not null, runPerformanceTest() will
41 * ignore the txFnct parameter and will call customRunTransactions() as
42 * soon as the setup is complete. In this case, the user is responsible
43 * for running and timing the transactions. If not null, this parameter
44 * must be a function that takes a database object as its only parameter.
45 */
46 function runPerformanceTest(params) {
47 var db = openTestDatabase(params.dbName);
48 if (!db) {
49 testComplete(CANNOT_OPEN_DB);
50 return;
51 }
52
53 db.transaction(
54 function(tx) {
55 tx.executeSql('CREATE TABLE IF NOT EXISTS Test (ID INT, Foo TEXT)', [],
56 function(tx, data) {}, function(tx, error) {});
57 tx.executeSql('DELETE FROM Test');
58 if (params.insertRowsAtSetup) {
59 var randomString = getRandomString();
60 for (var i = 0; i < TRANSACTIONS; i++) {
61 tx.executeSql('INSERT INTO Test VALUES (?, ?)',
62 [i, randomString]);
63 }
64 }
65 }, function(error) {
66 testComplete(SETUP_FAILED);
67 }, function() {
68 if (params.customRunTransactions)
69 params.customRunTransactions(db);
70 else
71 runTransactions(db, params.readOnly, params.transactionCallback);
72 });
73 }
74
75 /**
76 * Opens a database with the given name.
77 * @param {string} name The name of the database.
78 */
79 function openTestDatabase(name) {
80 if (window.openDatabase) {
81 return window.openDatabase(name, '1.0', 'Test database.',
82 TRANSACTIONS * RANDOM_STRING_LENGTH);
83 }
84
85 return null;
86 }
87
88 /**
89 * Runs the given transaction TRANSACTIONS times.
90 * @param {!Object} db The database to run transactions on.
91 * @param {boolean} readOnly If true, all transactions will be run using the
92 * db.readTransaction() call. Otherwise, the transactions will be run
93 * using the db.transaction() call.
94 * @param {function(!Object)} The transaction callback.
95 */
96 function runTransactions(db, readOnly, transactionCallback) {
97 var transactionsCompleted = 0;
98 var transactionFunction = readOnly ? db.readTransaction : db.transaction;
99 var startTime = Date.now();
100 for (var i = 0; i < TRANSACTIONS; i++) {
101 transactionFunction.call(db, transactionCallback,
102 function(error) {
103 testComplete(TEST_FAILED);
104 }, function() {
105 if (++transactionsCompleted == TRANSACTIONS)
106 testComplete(Date.now() - startTime);
107 });
108 }
109 }
OLDNEW
« no previous file with comments | « no previous file | tools/page_cycler/database/delete-transactions/index.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698