summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Thursfield <sam@afuera.me.uk>2018-07-15 16:09:09 +0200
committerSam Thursfield <sam@afuera.me.uk>2018-07-16 16:26:32 +0200
commit535b843d272d88c584fed026cd9754a7d68511f4 (patch)
tree632f3644c67de2525fbc792896f3ae1851a5ff3c
parentbaa4647d0316bfe27a0710e91716d7f98a3e94d8 (diff)
downloadtracker-535b843d272d88c584fed026cd9754a7d68511f4.tar.gz
functional-tests/200-backup-restore.py: Delete this test
The backup API appears to be totally broken. There aren't any good use cases for this, it's a legacy from the Maemo days. The plan is to deprecate and remove it, so let's start by deleting the test.
-rwxr-xr-xtests/functional-tests/200-backup-restore.py325
-rw-r--r--tests/functional-tests/Makefile.am3
-rw-r--r--tests/functional-tests/meson.build1
3 files changed, 1 insertions, 328 deletions
diff --git a/tests/functional-tests/200-backup-restore.py b/tests/functional-tests/200-backup-restore.py
deleted file mode 100755
index cbbb06e39..000000000
--- a/tests/functional-tests/200-backup-restore.py
+++ /dev/null
@@ -1,325 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2010, Nokia <ivan.frade@nokia.com>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-from gi.repository import GLib
-
-import os
-
-from common.utils.system import TrackerSystemAbstraction
-from common.utils.helpers import StoreHelper
-from common.utils import configuration as cfg
-from common.utils.storetest import CommonTrackerStoreTest as CommonTrackerStoreTest
-from common.utils.expectedFailure import expectedFailureBug, expectedFailureJournal
-import unittest2 as ut
-
-
-"""
-Call backup, restore, force the journal replay and check the data is correct afterwards
-"""
-class BackupRestoreTest (CommonTrackerStoreTest):
- """
- Backup and restore to/from valid/invalid files
- """
- def setUp (self):
- self.TEST_INSTANCE = "test://backup-restore/1"
- self.BACKUP_FILE = "file://" + os.path.join (cfg.TEST_TMP_DIR, "tracker-backup-test-1")
-
- if (os.path.exists (self.BACKUP_FILE)):
- os.unlink (self.BACKUP_FILE)
-
- def __insert_test_instance (self):
- self.tracker.update ("INSERT { <%s> a nco:Contact; nco:fullname 'test-backup' } "
- % (self.TEST_INSTANCE))
-
- def __delete_test_instance (self):
- self.tracker.update ("DELETE { <%s> a rdfs:Resource } " % (self.TEST_INSTANCE))
-
- def __is_test_instance_there (self):
- result = self.tracker.query ("SELECT ?u WHERE { ?u a nco:Contact; nco:fullname 'test-backup'}")
- if (len (result) == 1 and len (result[0]) == 1 and result[0][0] == self.TEST_INSTANCE):
- return True
- return False
-
- def test_backup_01(self):
- """
- Inserted data is restored after backup
-
- 1.Insert contact
- 2.Take backup.
- 3.Delete contact. (check it is not there)
- 4.Restore the file.
- 5.Check the contact is back there
- """
-
- self.__insert_test_instance ()
- instances_before = self.tracker.count_instances ("nco:Contact")
-
- self.tracker.backup (self.BACKUP_FILE)
-
- self.__delete_test_instance ()
- instances_now = self.tracker.count_instances ("nco:Contact")
-
- self.assertEquals (instances_before-1, instances_now)
-
- self.tracker.restore (self.BACKUP_FILE)
-
- instances_after = self.tracker.count_instances ("nco:Contact")
-
- self.assertEquals (instances_before, instances_after)
- self.assertTrue (self.__is_test_instance_there ())
-
- # Clean the DB for the next test
- self.__delete_test_instance ()
-
-
- def test_backup_02 (self):
- """
- Data inserted after backup is lost in restore
-
- 1.Take backup of db.
- 2.Insert a contact.
- 3.Restore the db.
- 4.Search for the contact inserted.
- """
-
- # Precondition: test backup contact shouldn't be there
- self.assertFalse (self.__is_test_instance_there ())
-
- self.tracker.backup (self.BACKUP_FILE)
-
- self.__insert_test_instance ()
- self.assertTrue (self.__is_test_instance_there ())
-
- self.tracker.restore (self.BACKUP_FILE)
-
- self.assertFalse (self.__is_test_instance_there ())
-
-
-
- def test_backup_03 (self):
- """
- Restore from a random text file
- """
- TEST_FILE = os.path.join (cfg.TEST_TMP_DIR, "trash_file")
- trashfile = open (TEST_FILE, "w")
- trashfile.write ("Here some useless text that obviously is NOT a backup")
- trashfile.close ()
-
- self.assertRaises(GLib.Error,
- self.tracker.restore,
- "file://" + TEST_FILE)
- os.unlink (TEST_FILE)
-
- def test_backup_04 (self):
- """
- Restore from a random binary file
- """
- TEST_FILE = os.path.join (cfg.TEST_TMP_DIR, "trash_file.dat")
-
- import struct
- trashfile = open (TEST_FILE, "wb")
- for n in range (0, 50):
- data = struct.pack ('i', n)
- trashfile.write (data)
- trashfile.close ()
-
- instances_before = self.tracker.count_instances ("nie:InformationElement")
- self.assertRaises(GLib.Error,
- self.tracker.restore,
- "file://" + TEST_FILE)
-
- os.unlink (TEST_FILE)
-
- def test_backup_05(self):
- """
- Take backup of db to a invalid path.
- Expected: Backup should not be taken and tracker should behave normally.
- """
- self.assertRaises(GLib.Error,
- self.tracker.backup,
- "file://%s/this/is/a/non-existant/folder/backup" % (cfg.TEST_TMP_DIR))
-
-
- def test_backup_06 (self):
- """
- Try to restore an invalid path
- """
- self.assertRaises(GLib.Error,
- self.tracker.restore,
- "file://%s/this/is/a/non-existant/folder/backup" % (cfg.TEST_TMP_DIR))
-
-
- def test_backup_07(self):
- """
- Restore after removing the DBs and journal
-
- 1.Insert a contact.
- 2.Take backup of db.
- 4.Delete the database
- 5.Restore the db.
- 6.Search for the contact inserted.
- """
- self.__insert_test_instance ()
- instances_before = self.tracker.count_instances ("nco:Contact")
- self.tracker.backup (self.BACKUP_FILE)
-
- self.system.tracker_store_stop_nicely ()
- self.system.tracker_store_remove_dbs ()
- self.system.tracker_store_remove_journal ()
- self.system.tracker_store_start ()
-
- instances_before_restore = self.tracker.count_instances ("nco:Contact")
- self.assertNotEqual (instances_before_restore, instances_before)
-
- self.tracker.restore (self.BACKUP_FILE)
- self.assertTrue (self.__is_test_instance_there ())
-
- self.__delete_test_instance ()
-
-
- def test_backup_08 (self):
- """
- Restore after corrupting DB
-
- 1.Insert a contact.
- 2.Take backup of db.
- 5.Restore the db.
- 6.Search for the contact inserted.
- """
- self.__insert_test_instance ()
- instances_before = self.tracker.count_instances ("nco:Contact")
- self.tracker.backup (self.BACKUP_FILE)
-
- self.system.tracker_store_stop_brutally ()
- self.system.tracker_store_corrupt_dbs ()
- self.system.tracker_store_remove_journal ()
- self.system.tracker_store_start ()
-
- instances_before_restore = self.tracker.count_instances ("nco:Contact")
- self.assertNotEqual (instances_before_restore, instances_before)
-
- self.tracker.restore (self.BACKUP_FILE)
- self.assertTrue (self.__is_test_instance_there ())
-
- # DB to the original state
- self.__delete_test_instance ()
-
- def test_backup_11(self):
- """
- Backup ignores the file extension
-
- 1.Insert a contact.
- 2.Take backup of db in .jpg format.
- 3.Restore the db.
- 4.Search for the contact inserted.
- """
- BACKUP_JPG_EXT = "file://%s/tracker-test-backup.jpg" % (cfg.TEST_TMP_DIR)
-
- self.__insert_test_instance ()
-
- instances_before = self.tracker.count_instances ("nco:Contact")
-
- self.tracker.backup (BACKUP_JPG_EXT)
-
- self.__delete_test_instance ()
- instances_now = self.tracker.count_instances ("nco:Contact")
- self.assertEquals (instances_before, instances_now+1)
-
- self.tracker.restore (BACKUP_JPG_EXT)
- instances_after = self.tracker.count_instances ("nco:Contact")
- self.assertEquals (instances_before, instances_after)
-
- # Restore the DB to the original state
- self.__delete_test_instance ()
-
-
-
-class JournalReplayTest (CommonTrackerStoreTest):
- """
- Force journal replaying and check that the DB is correct aftewards
- """
- @expectedFailureJournal()
- def test_journal_01 (self) :
- """
- Journal replaying when the DB is corrupted
-
- Insert few data (to have more than the pre-defined instances)
- Check instances of different classes
- Kill the store (SIGKILL)
- Replace the DB with a random file
- Start the store
- Check instances of different classes
- """
- self.tracker.update ("INSERT { <test://journal-replay/01> a nco:Contact. }")
-
- emails = self.tracker.count_instances ("nmo:Email")
- ie = self.tracker.count_instances ("nie:InformationElement")
- contacts = self.tracker.count_instances ("nco:Contact")
-
- self.system.tracker_store_stop_brutally ()
- self.system.tracker_store_corrupt_dbs ()
- self.system.tracker_store_start ()
-
- emails_now = self.tracker.count_instances ("nmo:Email")
- ie_now = self.tracker.count_instances ("nie:InformationElement")
- contacts_now = self.tracker.count_instances ("nco:Contact")
-
- self.assertEquals (emails, emails_now)
- self.assertEquals (ie, ie_now)
- self.assertEquals (contacts, contacts_now)
-
- self.tracker.update ("DELETE { <test://journal-replay/01> a rdfs:Resource. }")
-
- @expectedFailureJournal()
- def test_journal_02 (self) :
- """
- Journal replaying when the DB disappears
-
- Insert few data (to have more than the pre-defined instances)
- Check instances of different classes
- KILL the store
- Force a journal replay (DB missing, .meta.isrunning exists, journal OK)
- Start the store
- Check instances of different classes
- """
- self.tracker.update ("INSERT { <test://journal-replay/02> a nco:Contact. }")
-
- emails = self.tracker.count_instances ("nmo:Email")
- ie = self.tracker.count_instances ("nie:InformationElement")
- contacts = self.tracker.count_instances ("nco:Contact")
-
- self.system.tracker_store_stop_brutally ()
- self.system.tracker_store_prepare_journal_replay ()
- self.system.tracker_store_start ()
-
- emails_now = self.tracker.count_instances ("nmo:Email")
- ie_now = self.tracker.count_instances ("nie:InformationElement")
- contacts_now = self.tracker.count_instances ("nco:Contact")
-
- self.assertEquals (emails, emails_now)
- self.assertEquals (ie, ie_now)
- self.assertEquals (contacts, contacts_now)
-
- self.tracker.update ("DELETE { <test://journal-replay/02> a rdfs:Resource. }")
-
-if __name__ == "__main__":
- ut.main()
-
-
-
diff --git a/tests/functional-tests/Makefile.am b/tests/functional-tests/Makefile.am
index ddad7e0fe..c12a47d4c 100644
--- a/tests/functional-tests/Makefile.am
+++ b/tests/functional-tests/Makefile.am
@@ -32,8 +32,7 @@ standard_tests += \
14-signals.py \
15-statistics.py \
16-collation.py \
- 17-ontology-changes.py \
- 200-backup-restore.py
+ 17-ontology-changes.py
slow_tests = \
10-sqlite-misused.py \
diff --git a/tests/functional-tests/meson.build b/tests/functional-tests/meson.build
index 69cd6df2d..d7b25cd26 100644
--- a/tests/functional-tests/meson.build
+++ b/tests/functional-tests/meson.build
@@ -21,7 +21,6 @@ functional_tests = [
'15-statistics',
'16-collation',
'17-ontology-changes',
- '200-backup-restore',
]
subdir('ttl')