summaryrefslogtreecommitdiffstats
path: root/toolkit/components/places/tests/expiration/test_analyze_runs.js
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /toolkit/components/places/tests/expiration/test_analyze_runs.js
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'toolkit/components/places/tests/expiration/test_analyze_runs.js')
-rw-r--r--toolkit/components/places/tests/expiration/test_analyze_runs.js118
1 files changed, 118 insertions, 0 deletions
diff --git a/toolkit/components/places/tests/expiration/test_analyze_runs.js b/toolkit/components/places/tests/expiration/test_analyze_runs.js
new file mode 100644
index 000000000..1a84e1b38
--- /dev/null
+++ b/toolkit/components/places/tests/expiration/test_analyze_runs.js
@@ -0,0 +1,118 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Constants
+
+const TOPIC_AUTOCOMPLETE_FEEDBACK_INCOMING = "autocomplete-will-enter-text";
+
+// Helpers
+
+/**
+ * Ensures that we have no data in the tables created by ANALYZE.
+ */
+function clearAnalyzeData() {
+ let db = DBConn();
+ if (!db.tableExists("sqlite_stat1")) {
+ return;
+ }
+ db.executeSimpleSQL("DELETE FROM sqlite_stat1");
+}
+
+/**
+ * Checks that we ran ANALYZE on the specified table.
+ *
+ * @param aTableName
+ * The table to check if ANALYZE was ran.
+ * @param aRan
+ * True if it was expected to run, false otherwise
+ */
+function do_check_analyze_ran(aTableName, aRan) {
+ let db = DBConn();
+ do_check_true(db.tableExists("sqlite_stat1"));
+ let stmt = db.createStatement("SELECT idx FROM sqlite_stat1 WHERE tbl = :table");
+ stmt.params.table = aTableName;
+ try {
+ if (aRan) {
+ do_check_true(stmt.executeStep());
+ do_check_neq(stmt.row.idx, null);
+ }
+ else {
+ do_check_false(stmt.executeStep());
+ }
+ }
+ finally {
+ stmt.finalize();
+ }
+}
+
+// Tests
+
+function run_test() {
+ run_next_test();
+}
+
+add_task(function* init_tests() {
+ const TEST_URI = NetUtil.newURI("http://mozilla.org/");
+ const TEST_TITLE = "This is a test";
+
+ yield PlacesUtils.bookmarks.insert({
+ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ title: TEST_TITLE,
+ url: TEST_URI
+ });
+ yield PlacesTestUtils.addVisits(TEST_URI);
+ let thing = {
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsIAutoCompleteInput,
+ Ci.nsIAutoCompletePopup,
+ Ci.nsIAutoCompleteController]),
+ get popup() { return thing; },
+ get controller() { return thing; },
+ popupOpen: true,
+ selectedIndex: 0,
+ getValueAt: function() { return TEST_URI.spec; },
+ searchString: TEST_TITLE,
+ };
+ Services.obs.notifyObservers(thing, TOPIC_AUTOCOMPLETE_FEEDBACK_INCOMING,
+ null);
+});
+
+add_task(function* test_timed() {
+ clearAnalyzeData();
+
+ // Set a low interval and wait for the timed expiration to start.
+ let promise = promiseTopicObserved(PlacesUtils.TOPIC_EXPIRATION_FINISHED);
+ setInterval(3);
+ yield promise;
+ setInterval(3600);
+
+ do_check_analyze_ran("moz_places", false);
+ do_check_analyze_ran("moz_bookmarks", false);
+ do_check_analyze_ran("moz_historyvisits", false);
+ do_check_analyze_ran("moz_inputhistory", true);
+});
+
+add_task(function* test_debug() {
+ clearAnalyzeData();
+
+ yield promiseForceExpirationStep(1);
+
+ do_check_analyze_ran("moz_places", true);
+ do_check_analyze_ran("moz_bookmarks", true);
+ do_check_analyze_ran("moz_historyvisits", true);
+ do_check_analyze_ran("moz_inputhistory", true);
+});
+
+add_task(function* test_clear_history() {
+ clearAnalyzeData();
+
+ let promise = promiseTopicObserved(PlacesUtils.TOPIC_EXPIRATION_FINISHED);
+ let listener = Cc["@mozilla.org/places/expiration;1"]
+ .getService(Ci.nsINavHistoryObserver);
+ listener.onClearHistory();
+ yield promise;
+
+ do_check_analyze_ran("moz_places", true);
+ do_check_analyze_ran("moz_bookmarks", false);
+ do_check_analyze_ran("moz_historyvisits", true);
+ do_check_analyze_ran("moz_inputhistory", true);
+});