WebCore/manual-tests/database-threading-stress-test.html
changeset 0 4f2f89ce4247
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WebCore/manual-tests/database-threading-stress-test.html	Fri Sep 17 09:02:29 2010 +0300
@@ -0,0 +1,84 @@
+<!doctype html>
+<html>
+<head>
+
+<style>
+pre { padding: 5px; border: 1px solid black; }
+</style>
+
+<script>
+var db;
+
+try {
+    if (window.openDatabase) {
+        db = openDatabase("StressTest1", "1.0", "Database Stress Test", 200000);
+        if (!db)
+            alert("Failed to open the database on disk.  This is probably because the version was bad or there is not enough space left in this domain's quota");
+    } else
+        alert("Couldn't open the database.");
+} catch(err) { }
+
+var highestId = 0;
+var allData = new Array();
+
+function newData()
+{
+    var id = ++highestId;
+    allData.push(id);
+    db.transaction(function (tx) 
+    {
+        tx.executeSql("INSERT INTO FillerData (id, filler) VALUES (?, randomblob(1024))", [id]);
+    }); 
+}
+
+function testOpen()
+{
+    for (var i = 0; i < 4; i++) {
+        newData();
+    }
+
+    setTimeout("testClose();", 0);
+}
+
+function testClose()
+{    
+    db.transaction(function(tx)
+    {   
+        for (var i = 0; i < allData.length; i++)
+            tx.executeSql("DELETE FROM FillerData WHERE id = ?", [allData[i]]);
+
+        allData = new Array();
+    });
+    setTimeout("testOpen();", 0);
+}
+
+function updateTransactionCount()
+{
+    document.getElementById("transactionCount").innerHTML = "Current Transaction Count: " + highestId;
+    setTimeout("updateTransactionCount();", 1000);
+}
+
+function loaded()
+{
+    db.transaction(function(tx) {
+        tx.executeSql("SELECT COUNT(*) FROM FillerData", [], function(result) { }, function(tx, error) {
+            tx.executeSql("CREATE TABLE FillerData (id REAL UNIQUE, filler)", [], function(result) { 
+            });
+        });
+    });
+
+    setTimeout("testOpen();", 0);
+    setTimeout("updateTransactionCount();", 1000);
+}
+
+addEventListener('load', loaded, false);
+</script>
+</head>
+
+<body>
+This test stresses the database threading code by constantly opening transactions to the test database at a fast rate.<br>
+See radar 5729446 for more details.<br>
+<pre id="transactionCount">Current Transaction Count: 0</pre>
+
+</body>
+</html>