104 lines
3.5 KiB
HTML
104 lines
3.5 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<title>Pseudo-random transactions</title>
|
|
<script src="../head.js"></script>
|
|
<script src="../common.js"></script>
|
|
<script>
|
|
var SELECT_STATEMENT_IN_READ_TRANSACTION = 0;
|
|
var SELECT_STATEMENT_IN_TRANSACTION = 1;
|
|
var INSERT_STATEMENT = 2;
|
|
var UPDATE_STATEMENT = 3;
|
|
var DELETE_STATEMENT = 4;
|
|
var STATEMENTS =
|
|
[2, 0, 4, 2, 2, 2, 2, 2, 1, 4, 1, 1, 0, 2, 0, 0, 2, 1, 2, 0,
|
|
4, 4, 2, 3, 3, 4, 3, 1, 3, 3, 2, 4, 3, 3, 2, 3, 1, 1, 4, 2,
|
|
4, 1, 4, 2, 3, 0, 4, 2, 4, 0, 4, 3, 3, 2, 0, 2, 1, 4, 4, 4,
|
|
4, 2, 3, 2, 0, 3, 3, 0, 4, 4, 4, 2, 3, 1, 4, 2, 4, 2, 3, 0,
|
|
2, 4, 0, 4, 2, 2, 4, 0, 3, 2, 3, 2, 3, 2, 0, 0, 4, 0, 2, 0];
|
|
|
|
var transactionsCompleted = 0;
|
|
var startTime = 0;
|
|
|
|
function statementSuccessCallback(tx, data) {}
|
|
function statementErrorCallback(tx, error) {}
|
|
|
|
function transactionSuccessCallback() {
|
|
if (++transactionsCompleted == TRANSACTIONS)
|
|
testComplete(Date.now() - startTime);
|
|
}
|
|
|
|
function transactionErrorCallback(error) {
|
|
testComplete(TEST_FAILED);
|
|
}
|
|
|
|
function customRunTransactions(db) {
|
|
var selectIDCounter = 0;
|
|
var insertIDCounter = 0;
|
|
var updateIDCounter = 0;
|
|
var deleteIDCounter = 0;
|
|
var randomString = getRandomString();
|
|
var randomStringForUpdates = getRandomString();
|
|
startTime = Date.now();
|
|
for (var i = 0; i < TRANSACTIONS; i++) {
|
|
switch (STATEMENTS[i % STATEMENTS.length]) {
|
|
case SELECT_STATEMENT_IN_READ_TRANSACTION:
|
|
db.readTransaction(
|
|
function(tx) {
|
|
tx.executeSql('SELECT * FROM Test WHERE ID = ?',
|
|
[selectIDCounter++],
|
|
statementSuccessCallback, statementErrorCallback);
|
|
}, transactionErrorCallback, transactionSuccessCallback);
|
|
break;
|
|
case SELECT_STATEMENT_IN_TRANSACTION:
|
|
db.transaction(
|
|
function(tx) {
|
|
tx.executeSql('SELECT * FROM Test WHERE ID = ?',
|
|
[selectIDCounter++],
|
|
statementSuccessCallback, statementErrorCallback);
|
|
}, transactionErrorCallback, transactionSuccessCallback);
|
|
break;
|
|
case INSERT_STATEMENT:
|
|
db.transaction(
|
|
function(tx) {
|
|
tx.executeSql('INSERT INTO Test VALUES (?, ?)',
|
|
[insertIDCounter++, randomString],
|
|
statementSuccessCallback, statementErrorCallback);
|
|
}, transactionErrorCallback, transactionSuccessCallback);
|
|
break;
|
|
case UPDATE_STATEMENT:
|
|
db.transaction(
|
|
function(tx) {
|
|
tx.executeSql('UPDATE Test SET Foo = ? WHERE ID = ?',
|
|
[randomStringForUpdates, updateIDCounter++],
|
|
statementSuccessCallback, statementErrorCallback);
|
|
}, transactionErrorCallback, transactionSuccessCallback);
|
|
break;
|
|
case DELETE_STATEMENT:
|
|
db.transaction(
|
|
function(tx) {
|
|
tx.executeSql('DELETE FROM Test WHERE ID = ?',
|
|
[deleteIDCounter++],
|
|
statementSuccessCallback, statementErrorCallback);
|
|
}, transactionErrorCallback, transactionSuccessCallback);
|
|
break;
|
|
default:
|
|
testComplete(TEST_FAILED);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<body>
|
|
<script>
|
|
runPerformanceTest({
|
|
dbName: "PseudoRandomTransactions",
|
|
readOnly: false,
|
|
insertRowsAtSetup: true,
|
|
transactionCallback: null,
|
|
customRunTransactions: customRunTransactions
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|