Esempio n. 1
0
    def upgrade_database_to_current_version(self):
        """ Checks the database version and upgrade if it is not the latest version.
        """
        try:
            from Tribler.Core.leveldbstore import LevelDbStore
            torrent_store = LevelDbStore(
                self.session.config.get_torrent_store_dir())
            torrent_migrator = TorrentMigrator65(
                self.session.config.get_torrent_collecting_dir(),
                self.session.config.get_state_dir(),
                torrent_store=torrent_store,
                status_update_func=self.update_status)
            yield torrent_migrator.start_migrate()

            db_migrator = DBUpgrader(self.session,
                                     self.db,
                                     torrent_store=torrent_store,
                                     status_update_func=self.update_status)
            yield db_migrator.start_migrate()

            # Import all the torrent files not in the database, we do this in
            # case we have some unhandled torrent files left due to
            # bugs/crashes, etc.
            self.update_status("Recovering unregistered torrents...")
            yield db_migrator.reimport_torrents()

            yield torrent_store.close()
            del torrent_store

            self.failed = False
            self.is_done = True
        except Exception as e:
            self._logger.exception(u"failed to upgrade: %s", e)
Esempio n. 2
0
    def upgrade_database_to_current_version(self):
        """ Checks the database version and upgrade if it is not the latest version.
        """
        try:
            from Tribler.Core.leveldbstore import LevelDbStore
            torrent_store = LevelDbStore(self.session.config.get_torrent_store_dir())
            torrent_migrator = TorrentMigrator65(
                self.session.config.get_torrent_collecting_dir(), self.session.config.get_state_dir(),
                torrent_store=torrent_store, status_update_func=self.update_status)
            yield torrent_migrator.start_migrate()

            db_migrator = DBUpgrader(
                self.session, self.db, torrent_store=torrent_store, status_update_func=self.update_status)
            yield db_migrator.start_migrate()

            # Import all the torrent files not in the database, we do this in
            # case we have some unhandled torrent files left due to
            # bugs/crashes, etc.
            self.update_status("Recovering unregistered torrents...")
            yield db_migrator.reimport_torrents()

            yield torrent_store.close()
            del torrent_store

            self.failed = False
            self.is_done = True
        except Exception as e:
            self._logger.exception(u"failed to upgrade: %s", e)
Esempio n. 3
0
 def test_upgrade_17_to_latest(self):
     self.copy_and_initialize_upgrade_database('tribler_v17.sdb')
     db_migrator = DBUpgrader(self.session,
                              self.sqlitedb,
                              torrent_store=MockTorrentStore())
     db_migrator.start_migrate()
     self.assertEqual(self.sqlitedb.version, LATEST_DB_VERSION)
     self.assertFalse(
         os.path.exists(
             os.path.join(self.session.get_torrent_collecting_dir(),
                          'dir1')))
Esempio n. 4
0
    def test_reimport_torrents(self):
        self.copy_and_initialize_upgrade_database('tribler_v17.sdb')
        self.torrent_store = LevelDbStore(self.session.config.get_torrent_store_dir())
        db_migrator = DBUpgrader(self.session, self.sqlitedb, torrent_store=self.torrent_store)
        db_migrator.start_migrate()

        # Import a torrent
        self.torrent_store[TORRENT_UBUNTU_FILE_INFOHASH] = fix_torrent(TORRENT_UBUNTU_FILE)
        self.torrent_store.flush()

        db_migrator.reimport_torrents()

        torrent_db_handler = TorrentDBHandler(self.session)
        self.assertEqual(torrent_db_handler.getTorrentID(TORRENT_UBUNTU_FILE_INFOHASH), 3)
Esempio n. 5
0
 def test_upgrade_wrong_version(self):
     self.copy_and_initialize_upgrade_database('tribler_v17.sdb')
     db_migrator = DBUpgrader(self.session,
                              self.sqlitedb,
                              torrent_store=MockTorrentStore())
     db_migrator.db._version = LATEST_DB_VERSION + 1
     self.assertRaises(DatabaseUpgradeError, db_migrator.start_migrate)
Esempio n. 6
0
    def test_upgrade_17_to_latest_no_dispersy(self):
        # upgrade without dispersy DB should not raise an error
        self.copy_and_initialize_upgrade_database('tribler_v17.sdb')
        os.unlink(os.path.join(self.session.config.get_state_dir(), 'sqlite', 'dispersy.db'))
        db_migrator = DBUpgrader(self.session, self.sqlitedb, torrent_store=MockTorrentStore())
        db_migrator.start_migrate()
        self.assertEqual(self.sqlitedb.version, LATEST_DB_VERSION)

        # Check whether the torrents in the database are reindexed
        results = self.sqlitedb.fetchall("SELECT * FROM FullTextIndex")
        self.assertEqual(len(results), 1)
        self.assertTrue('test' in results[0][0])
        self.assertTrue('random' in results[0][1])
        self.assertTrue('tribler' in results[0][1])
        self.assertTrue('txt' in results[0][2])
        self.assertTrue('txt' in results[0][2])
Esempio n. 7
0
    def test_upgrade_17_to_latest_no_dispersy(self):
        # upgrade without dispersy DB should not raise an error
        self.copy_and_initialize_upgrade_database('tribler_v17.sdb')
        os.unlink(os.path.join(self.session.get_state_dir(), 'sqlite', 'dispersy.db'))
        db_migrator = DBUpgrader(self.session, self.sqlitedb, torrent_store=MockTorrentStore())
        db_migrator.start_migrate()
        self.assertEqual(self.sqlitedb.version, LATEST_DB_VERSION)

        # Check whether the torrents in the database are reindexed
        results = self.sqlitedb.fetchall("SELECT * FROM FullTextIndex")
        self.assertEqual(len(results), 1)
        self.assertTrue('test' in results[0][0])
        self.assertTrue('random' in results[0][1])
        self.assertTrue('tribler' in results[0][1])
        self.assertTrue('txt' in results[0][2])
        self.assertTrue('txt' in results[0][2])
Esempio n. 8
0
    def test_upgrade_from_obsolete_version(self):
        """We no longer support DB versions older than 17 (Tribler 6.0)"""
        self.copy_and_initialize_upgrade_database('tribler_v12.sdb')

        db_migrator = DBUpgrader(self.session,
                                 self.sqlitedb,
                                 torrent_store=MockTorrentStore())
        self.assertRaises(VersionNoLongerSupportedError,
                          db_migrator.start_migrate)
Esempio n. 9
0
    def test_reimport_torrents(self):
        self.copy_and_initialize_upgrade_database('tribler_v17.sdb')
        self.torrent_store = LevelDbStore(self.session.get_torrent_store_dir())
        db_migrator = DBUpgrader(self.session, self.sqlitedb, torrent_store=self.torrent_store)
        db_migrator.start_migrate()

        # Import a torrent
        self.torrent_store[TORRENT_FILE_INFOHASH] = fix_torrent(TORRENT_FILE)
        self.torrent_store.flush()

        db_migrator.reimport_torrents()

        torrent_db_handler = TorrentDBHandler(self.session)
        self.assertEqual(torrent_db_handler.getTorrentID(TORRENT_FILE_INFOHASH), 3)
Esempio n. 10
0
    def test_upgrade_from_obsolete_version(self):
        """We no longer support DB versions older than 17 (Tribler 6.0)"""
        dbpath = init_bak_tribler_sdb(u"bak_old_tribler.sdb",
                                      destination_path=self.getStateDir(),
                                      overwrite=True)

        self.sqlitedb = SQLiteCacheDB(self.session)
        self.sqlitedb.initialize(dbpath)

        class MockTorrentStore(object):
            def flush():
                pass

            def close():
                pass

        db_migrator = DBUpgrader(self.session,
                                 self.sqlitedb,
                                 torrent_store=MockTorrentStore())
        self.assertRaises(VersionNoLongerSupportedError,
                          db_migrator.start_migrate)
Esempio n. 11
0
 def test_upgrade_17_to_latest(self):
     self.copy_and_initialize_upgrade_database('tribler_v17.sdb')
     db_migrator = DBUpgrader(self.session, self.sqlitedb, torrent_store=MockTorrentStore())
     db_migrator.start_migrate()
     self.assertEqual(self.sqlitedb.version, LATEST_DB_VERSION)
     self.assertFalse(os.path.exists(os.path.join(self.session.config.get_torrent_collecting_dir(), 'dir1')))