本文整理汇总了Python中Tribler.Core.CacheDB.sqlitecachedb.SQLiteCacheDB.close方法的典型用法代码示例。如果您正苦于以下问题:Python SQLiteCacheDB.close方法的具体用法?Python SQLiteCacheDB.close怎么用?Python SQLiteCacheDB.close使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tribler.Core.CacheDB.sqlitecachedb.SQLiteCacheDB
的用法示例。
在下文中一共展示了SQLiteCacheDB.close方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: AbstractDB
# 需要导入模块: from Tribler.Core.CacheDB.sqlitecachedb import SQLiteCacheDB [as 别名]
# 或者: from Tribler.Core.CacheDB.sqlitecachedb.SQLiteCacheDB import close [as 别名]
class AbstractDB(AbstractServer):
def setUp(self):
super(AbstractDB, self).setUp()
# dummy session
self.config = SessionStartupConfig()
self.config.set_state_dir(self.getStateDir())
self.config.set_torrent_checking(False)
self.config.set_multicast_local_peer_discovery(False)
self.config.set_megacache(False)
self.config.set_dispersy(False)
self.config.set_mainline_dht(False)
self.config.set_torrent_collecting(False)
self.config.set_libtorrent(False)
self.config.set_dht_torrent_collecting(False)
self.config.set_videoplayer(False)
self.config.set_torrent_store(False)
self.session = Session(self.config, ignore_singleton=True)
dbpath = init_bak_tribler_sdb('bak_new_tribler.sdb', destination_path=self.getStateDir(), overwrite=True)
self.sqlitedb = SQLiteCacheDB(self.session, busytimeout=BUSYTIMEOUT)
self.sqlitedb.initialize(dbpath)
self.session.sqlite_db = self.sqlitedb
@blocking_call_on_reactor_thread
def tearDown(self):
self.sqlitedb.close()
self.sqlitedb = None
self.session.del_instance()
self.session = None
super(AbstractDB, self).tearDown(self)
示例2: TestContentRepositoryWithRealDatabase
# 需要导入模块: from Tribler.Core.CacheDB.sqlitecachedb import SQLiteCacheDB [as 别名]
# 或者: from Tribler.Core.CacheDB.sqlitecachedb.SQLiteCacheDB import close [as 别名]
class TestContentRepositoryWithRealDatabase(TestBase):
"""
Tests content repository with real database.
"""
def setUp(self):
super(TestContentRepositoryWithRealDatabase, self).setUp()
session_base_dir = self.temporary_directory()
tar = tarfile.open(os.path.join(TESTS_DATA_DIR, 'bak_new_tribler.sdb.tar.gz'), 'r|gz')
tar.extractall(session_base_dir)
db_path = os.path.join(session_base_dir, 'bak_new_tribler.sdb')
self.sqlitedb = SQLiteCacheDB(db_path, busytimeout=BUSYTIMEOUT)
session = MockObject()
session.sqlite_db = self.sqlitedb
session.notifier = MockObject()
self.torrent_db = TorrentDBHandler(session)
channel_db = MockObject()
self.content_repository = ContentRepository(self.torrent_db, channel_db)
def tearDown(self):
self.torrent_db.close()
self.sqlitedb.close()
super(TestContentRepositoryWithRealDatabase, self).tearDown()
def test_update_db_from_search_results(self):
"""
Test if database is properly updated with the search results.
Should not raise any UnicodeDecodeError.
"""
# Add a torrent infohash before updating from search results
infohash = unhexlify('ed81da94d21ad1b305133f2726cdaec5a57fed98')
self.content_repository.torrent_db.addOrGetTorrentID(infohash)
# Sample search results
name = 'Puppy.Linux.manual.301.espa\xc3\xb1ol.pdf'
length = random.randint(1000, 9999)
num_files = random.randint(1, 10)
category_list = ['other']
creation_date = random.randint(1000000, 111111111)
seeders = random.randint(10, 200)
leechers = random.randint(5, 1000)
cid = None
search_results = [[infohash, name, length, num_files, category_list, creation_date, seeders, leechers, cid]]
# Update from search results
self.content_repository.update_from_torrent_search_results(search_results)
# Check if database has correct results
torrent_info = self.content_repository.get_torrent(infohash)
expected_name = u'Puppy.Linux.manual.301.espa\xc3\xb1ol.pdf'
self.assertEqual(expected_name, torrent_info['name'])
self.assertEqual(seeders, torrent_info['num_seeders'])
self.assertEqual(leechers, torrent_info['num_leechers'])
self.assertEqual(creation_date, torrent_info['creation_date'])
self.assertEqual(num_files, torrent_info['num_files'])
self.assertEqual(length, torrent_info['length'])
示例3: AbstractDB
# 需要导入模块: from Tribler.Core.CacheDB.sqlitecachedb import SQLiteCacheDB [as 别名]
# 或者: from Tribler.Core.CacheDB.sqlitecachedb.SQLiteCacheDB import close [as 别名]
class AbstractDB(TriblerCoreTest):
def setUpPreSession(self):
self.config = TriblerConfig(ConfigObj(configspec=CONFIG_SPEC_PATH))
self.config.set_state_dir(self.getStateDir())
self.config.set_torrent_checking_enabled(False)
self.config.set_megacache_enabled(False)
self.config.set_dispersy_enabled(False)
self.config.set_mainline_dht_enabled(False)
self.config.set_torrent_collecting_enabled(False)
self.config.set_libtorrent_enabled(False)
self.config.set_video_server_enabled(False)
self.config.set_torrent_store_enabled(False)
@inlineCallbacks
def setUp(self):
yield super(AbstractDB, self).setUp()
self.setUpPreSession()
self.session = Session(self.config)
tar = tarfile.open(os.path.join(TESTS_DATA_DIR, 'bak_new_tribler.sdb.tar.gz'), 'r|gz')
tar.extractall(self.session_base_dir)
db_path = os.path.join(self.session_base_dir, 'bak_new_tribler.sdb')
self.sqlitedb = SQLiteCacheDB(db_path, busytimeout=BUSYTIMEOUT)
self.session.sqlite_db = self.sqlitedb
@inlineCallbacks
def tearDown(self):
self.sqlitedb.close()
self.sqlitedb = None
self.session = None
yield super(AbstractDB, self).tearDown()
示例4: Session
# 需要导入模块: from Tribler.Core.CacheDB.sqlitecachedb import SQLiteCacheDB [as 别名]
# 或者: from Tribler.Core.CacheDB.sqlitecachedb.SQLiteCacheDB import close [as 别名]
#.........这里部分代码省略.........
"""
if event['isError']:
text = ""
if 'log_legacy' in event and 'log_text' in event:
text = event['log_text']
elif 'log_failure' in event:
text = str(event['log_failure'])
# There are some errors that we are ignoring.
# No route to host: this issue is non-critical since Tribler can still function when a request fails.
if 'socket.error' in text and '[Errno 113]' in text:
self._logger.error("Observed no route to host error (but ignoring)."
"This might indicate a problem with your firewall.")
return
# Socket block: this sometimes occurres on Windows and is non-critical.
if 'socket.error' in text and '[Errno %s]' % SOCKET_BLOCK_ERRORCODE in text:
self._logger.error("Unable to send data due to socket.error %s", SOCKET_BLOCK_ERRORCODE)
return
if 'socket.error' in text and '[Errno 51]' in text:
self._logger.error("Could not send data: network is unreachable.")
return
if 'socket.error' in text and '[Errno 16]' in text:
self._logger.error("Could not send data: socket is busy.")
return
if 'socket.error' in text and '[Errno 10053]' in text:
self._logger.error("An established connection was aborted by the software in your host machine.")
return
if 'socket.error' in text and '[Errno 10054]' in text:
self._logger.error("Connection forcibly closed by the remote host.")
return
if 'exceptions.ValueError: Invalid DNS-ID' in text:
self._logger.error("Invalid DNS-ID")
return
if 'twisted.web._newclient.ResponseNeverReceived' in text:
self._logger.error("Internal Twisted response error, consider updating your Twisted version.")
return
# We already have a check for invalid infohash when adding a torrent, but if somehow we get this
# error then we simply log and ignore it.
if 'exceptions.RuntimeError: invalid info-hash' in text:
self._logger.error("Invalid info-hash found")
return
if self.lm.api_manager and len(text) > 0:
self.lm.api_manager.root_endpoint.events_endpoint.on_tribler_exception(text)
self.lm.api_manager.root_endpoint.state_endpoint.on_tribler_exception(text)
def start_download_from_uri(self, uri, download_config=None):
"""
Start a download from an argument. This argument can be of the following type:
-http: Start a download from a torrent file at the given url.
-magnet: Start a download from a torrent file by using a magnet link.
-file: Start a download from a torrent file at given location.
:param uri: specifies the location of the torrent to be downloaded
:param download_config: an optional configuration for the download
:return: a deferred that fires when a download has been added to the Tribler core
"""
if self.config.get_libtorrent_enabled():
示例5: Session
# 需要导入模块: from Tribler.Core.CacheDB.sqlitecachedb import SQLiteCacheDB [as 别名]
# 或者: from Tribler.Core.CacheDB.sqlitecachedb.SQLiteCacheDB import close [as 别名]
#.........这里部分代码省略.........
function will be called when one of the specified events (changeTypes)
occurs on the specified subject.
The function will be called by a popup thread which can be used
indefinitely (within reason) by the higher level code.
@param func The observer function. It should accept as its first argument
the subject, as second argument the changeType, as third argument an
objectID (e.g. the primary key in the observed database) and an
optional list of arguments.
@param subject The subject to observe, one of NTFY_* subjects (see
simpledefs).
@param changeTypes The list of events to be notified of one of NTFY_*
events.
@param objectID The specific object in the subject to monitor (e.g. a
specific primary key in a database to monitor for updates.)
@param cache The time to bundle/cache events matching this function
TODO: Jelle will add per-subject/event description here ;o)
"""
# Called by any thread
self.notifier.add_observer(func, subject, changeTypes, objectID, cache=cache) # already threadsafe
def remove_observer(self, func):
""" Remove observer function. No more callbacks will be made.
@param func The observer function to remove. """
# Called by any thread
self.notifier.remove_observer(func) # already threadsafe
def open_dbhandler(self, subject):
""" Opens a connection to the specified database. Only the thread
calling this method may use this connection. The connection must be
closed with close_dbhandler() when this thread exits.
@param subject The database to open. Must be one of the subjects
specified here.
@return A reference to a DBHandler class for the specified subject or
None when the Session was not started with megacaches enabled.
<pre> NTFY_PEERS -> PeerDBHandler
NTFY_TORRENTS -> TorrentDBHandler
NTFY_MYPREFERENCES -> MyPreferenceDBHandler
NTFY_VOTECAST -> VotecastDBHandler
NTFY_CHANNELCAST -> ChannelCastDBHandler
</pre>
"""
if not self.get_megacache():
raise OperationNotEnabledByConfigurationException()
# Called by any thread
if subject == NTFY_METADATA:
return self.lm.metadata_db
elif subject == NTFY_PEERS:
return self.lm.peer_db
elif subject == NTFY_TORRENTS:
return self.lm.torrent_db
elif subject == NTFY_MYPREFERENCES:
return self.lm.mypref_db
elif subject == NTFY_VOTECAST:
return self.lm.votecast_db
elif subject == NTFY_CHANNELCAST:
return self.lm.channelcast_db
else:
raise ValueError(u"Cannot open DB subject: %s" % subject)
def close_dbhandler(self, dbhandler):
示例6: TestSqliteCacheDB
# 需要导入模块: from Tribler.Core.CacheDB.sqlitecachedb import SQLiteCacheDB [as 别名]
# 或者: from Tribler.Core.CacheDB.sqlitecachedb.SQLiteCacheDB import close [as 别名]
class TestSqliteCacheDB(TriblerCoreTest):
FILE_DIR = os.path.abspath(os.path.dirname(os.path.realpath(__file__)))
SQLITE_SCRIPTS_DIR = os.path.abspath(os.path.join(FILE_DIR, u"data/sqlite_scripts/"))
@inlineCallbacks
def setUp(self):
yield super(TestSqliteCacheDB, self).setUp()
db_path = u":memory:"
self.sqlite_test = SQLiteCacheDB(db_path)
self.sqlite_test.set_show_sql(True)
def tearDown(self):
self.sqlite_test.close()
self.sqlite_test = None
super(TestSqliteCacheDB, self).tearDown()
def test_create_db(self):
sql = u"CREATE TABLE person(lastname, firstname);"
self.sqlite_test.execute(sql)
self.assertIsInstance(self.sqlite_test.version, int)
@raises(OSError)
def test_no_file_db_error(self):
file_dir = os.path.abspath(os.path.dirname(os.path.realpath(__file__)))
sqlite_test_2 = SQLiteCacheDB(file_dir)
def test_open_db_new_file(self):
db_path = os.path.join(self.session_base_dir, "test_db.db")
sqlite_test_2 = SQLiteCacheDB(db_path)
self.assertTrue(os.path.isfile(db_path))
@raises(OSError)
def test_open_db_script_file_invalid_location(self):
sqlite_test_2 = SQLiteCacheDB(os.path.join(self.session_base_dir, "test_db.db"), u'myfakelocation')
@raises(OSError)
def test_open_db_script_file_directory(self):
file_dir = os.path.abspath(os.path.dirname(os.path.realpath(__file__)))
sqlite_test_2 = SQLiteCacheDB(os.path.join(self.session_base_dir, "test_db.db"), file_dir)
def test_open_db_script_file(self):
sqlite_test_2 = SQLiteCacheDB(os.path.join(self.session_base_dir, "test_db.db"), DB_SCRIPT_ABSOLUTE_PATH)
sqlite_test_2.write_version(4)
self.assertEqual(sqlite_test_2.version, 4)
@raises(SQLError)
def test_failed_commit(self):
sqlite_test_2 = SQLiteCacheDB(os.path.join(self.session_base_dir, "test_db.db"), DB_SCRIPT_ABSOLUTE_PATH)
sqlite_test_2.initial_begin()
sqlite_test_2.write_version(4)
@skipIf(sys.platform == "win32", "chmod does not work on Windows")
@raises(IOError)
def test_no_permission_on_script(self):
db_path = os.path.join(self.session_base_dir, "test_db.db")
new_script_path = os.path.join(self.session_base_dir, "script.sql")
shutil.copyfile(DB_SCRIPT_ABSOLUTE_PATH, new_script_path)
os.chmod(new_script_path, 0)
sqlite_test_2 = SQLiteCacheDB(db_path, new_script_path)
@raises(CorruptedDatabaseError)
def test_no_version_info_in_database(self):
sqlite_test_2 = SQLiteCacheDB(os.path.join(self.session_base_dir, "test_db.db"),
os.path.join(self.SQLITE_SCRIPTS_DIR, "script1.sql"))
@raises(CorruptedDatabaseError)
def test_integrity_check_failed(self):
sqlite_test_2 = SQLiteCacheDB(os.path.join(self.session_base_dir, "test_db.db"),
os.path.join(self.SQLITE_SCRIPTS_DIR, "script1.sql"))
def execute(sql):
if sql == u"PRAGMA quick_check":
db_response = MockObject()
db_response.next = lambda: ("Error: database disk image is malformed", )
return db_response
sqlite_test_2.execute = execute
def test_integrity_check_triggered(self):
""" Tests if integrity check is triggered if temporary rollback files are present."""
def do_integrity_check(_):
do_integrity_check.called = True
db_path = os.path.join(self.session_base_dir, "test_db.db")
sqlite_test = SQLiteCacheDB(db_path)
sqlite_test.do_quick_integrity_check = do_integrity_check
do_integrity_check.called = False
self.assertFalse(do_integrity_check.called)
db_path2 = os.path.join(self.session_base_dir, "test_db2.db")
wal_file = open(os.path.join(self.session_base_dir, "test_db2.db-shm"), 'w')
wal_file.close()
do_integrity_check.called = False
SQLiteCacheDB.do_quick_integrity_check = do_integrity_check
#.........这里部分代码省略.........
示例7: test_clean_db
# 需要导入模块: from Tribler.Core.CacheDB.sqlitecachedb import SQLiteCacheDB [as 别名]
# 或者: from Tribler.Core.CacheDB.sqlitecachedb.SQLiteCacheDB import close [as 别名]
def test_clean_db(self):
sqlite_test_2 = SQLiteCacheDB(os.path.join(self.session_base_dir, "test_db.db"), DB_SCRIPT_ABSOLUTE_PATH)
sqlite_test_2.clean_db(vacuum=True, exiting=False)
sqlite_test_2.close()
示例8: TestSqliteCacheDB
# 需要导入模块: from Tribler.Core.CacheDB.sqlitecachedb import SQLiteCacheDB [as 别名]
# 或者: from Tribler.Core.CacheDB.sqlitecachedb.SQLiteCacheDB import close [as 别名]
class TestSqliteCacheDB(AbstractServer):
def setUp(self):
super(TestSqliteCacheDB, self).setUp()
self.config = SessionStartupConfig()
self.config.set_state_dir(self.getStateDir())
self.config.set_torrent_checking(False)
self.config.set_multicast_local_peer_discovery(False)
self.config.set_megacache(False)
self.config.set_dispersy(False)
self.config.set_mainline_dht(False)
self.config.set_torrent_collecting(False)
self.config.set_libtorrent(False)
self.config.set_dht_torrent_collecting(False)
self.config.set_videoplayer(False)
self.session = Session(self.config, ignore_singleton=True)
self.sqlite_test = SQLiteCacheDB(self.session)
self.db_path = u":memory:"
self.sqlite_test.initialize(self.db_path)
def tearDown(self):
super(TestSqliteCacheDB, self).tearDown()
self.sqlite_test.close()
self.sqlite_test = None
self.session.del_instance()
self.session = None
@blocking_call_on_reactor_thread
def test_create_db(self):
sql = u"CREATE TABLE person(lastname, firstname);"
self.sqlite_test.execute(sql)
@blocking_call_on_reactor_thread
def test_insert(self):
self.test_create_db()
self.sqlite_test.insert('person', lastname='a', firstname='b')
assert self.sqlite_test.size('person') == 1
@blocking_call_on_reactor_thread
def test_fetchone(self):
self.test_insert()
one = self.sqlite_test.fetchone(u"SELECT * FROM person")
assert one == ('a', 'b')
one = self.sqlite_test.fetchone(u"SELECT lastname FROM person WHERE firstname == 'b'")
assert one == 'a'
one = self.sqlite_test.fetchone(u"SELECT lastname FROM person WHERE firstname == 'c'")
assert one is None
@blocking_call_on_reactor_thread
def test_insertmany(self):
self.test_create_db()
values = []
for i in range(100):
value = (str(i), str(i ** 2))
values.append(value)
self.sqlite_test.insertMany('person', values)
assert self.sqlite_test.size('person') == 100
@blocking_call_on_reactor_thread
def test_fetchall(self):
self.test_insertmany()
all = self.sqlite_test.fetchall('select * from person')
assert len(all) == 100
all = self.sqlite_test.fetchall("select * from person where lastname=='101'")
assert all == []
@blocking_call_on_reactor_thread
def test_insertorder(self):
self.test_insertmany()
self.sqlite_test.insert('person', lastname='1', firstname='abc')
one = self.sqlite_test.fetchone("select firstname from person where lastname == '1'")
assert one == '1' or one == 'abc'
all = self.sqlite_test.fetchall("select firstname from person where lastname == '1'")
assert len(all) == 2
@blocking_call_on_reactor_thread
def test_update(self):
self.test_insertmany()
self.sqlite_test.update('person', "lastname == '2'", firstname='56')
one = self.sqlite_test.fetchone("select firstname from person where lastname == '2'")
assert one == '56', one
self.sqlite_test.update('person', "lastname == '3'", firstname=65)
one = self.sqlite_test.fetchone("select firstname from person where lastname == '3'")
assert one == 65, one
self.sqlite_test.update('person', "lastname == '4'", firstname=654, lastname=44)
one = self.sqlite_test.fetchone("select firstname from person where lastname == 44")
assert one == 654, one