fixes from rebase, install libtorrent from s3

This commit is contained in:
Victor Shyba 2020-02-24 13:03:42 -03:00
parent a2f8e7068e
commit abaac8ef48
6 changed files with 20 additions and 27 deletions

View file

@ -313,9 +313,9 @@ class JSONResponseEncoder(JSONEncoder):
'height': tx_height,
'confirmations': (best_height + 1) - tx_height if tx_height > 0 else tx_height,
'timestamp': self.ledger.headers.estimated_timestamp(tx_height),
'is_fully_reflected': managed_stream.is_fully_reflected,
'reflector_progress': managed_stream.reflector_progress,
'uploading_to_reflector': managed_stream.uploading_to_reflector
'is_fully_reflected': managed_stream.is_fully_reflected if is_stream else False,
'reflector_progress': managed_stream.reflector_progress if is_stream else False,
'uploading_to_reflector': managed_stream.uploading_to_reflector if is_stream else False
}
def encode_claim(self, claim):

View file

@ -98,7 +98,7 @@ class StreamManager(SourceManager):
async def _load_stream(self, rowid: int, sd_hash: str, file_name: Optional[str],
download_directory: Optional[str], status: str,
claim: Optional['StoredContentClaim'], content_fee: Optional['Transaction'],
added_on: Optional[int]):
added_on: Optional[int], fully_reflected: Optional[bool]):
try:
descriptor = await self.blob_manager.get_stream_descriptor(sd_hash)
except InvalidStreamDescriptorError as err:

View file

@ -1,6 +1,7 @@
import asyncio
import binascii
import os
import logging
from hashlib import sha1
from tempfile import mkdtemp
from typing import Optional
@ -33,6 +34,7 @@ NOTIFICATION_MASKS = [
"upload",
"block_progress"
]
log = logging.getLogger(__name__)
DEFAULT_FLAGS = ( # fixme: somehow the logic here is inverted?
@ -65,22 +67,19 @@ class TorrentHandle:
# fixme: cleanup
status = self._handle.status()
if status.has_metadata:
self.metadata_completed.set()
self._handle.pause()
self.size = status.total_wanted
self.total_wanted_done = status.total_wanted_done
self.name = status.name
# metadata: libtorrent.torrent_info = self._handle.get_torrent_info()
# print(metadata)
# print(metadata.files())
# print(type(self._handle))
if not self.metadata_completed.is_set():
self.metadata_completed.set()
log.info("Metadata completed for btih:%s - %s", status.info_hash, self.name)
if not status.is_seeding:
print('%.2f%% complete (down: %.1f kB/s up: %.1f kB/s peers: %d seeds: %d) %s - %s' % (
log.debug('%.2f%% complete (down: %.1f kB/s up: %.1f kB/s peers: %d seeds: %d) %s - %s' % (
status.progress * 100, status.download_rate / 1000, status.upload_rate / 1000,
status.num_peers, status.num_seeds, status.state, status.save_path))
elif not self.finished.is_set():
self.finished.set()
print("finished!")
log.info("Torrent finished: %s", self.name)
async def status_loop(self):
while True:
@ -125,7 +124,6 @@ class TorrentSession:
size = myfile.write(b'0' * 40 * 1024 * 1024)
fs = libtorrent.file_storage()
fs.add_file('tmp', size)
print(fs.file_path(0))
t = libtorrent.create_torrent(fs, 0, 4 * 1024 * 1024)
libtorrent.set_piece_hashes(t, dir)
info = libtorrent.torrent_info(t.generate())
@ -158,7 +156,7 @@ class TorrentSession:
def _pop_alerts(self):
for alert in self._session.pop_alerts():
print("alert: ", alert)
log.info("torrent alert: %s", alert)
async def process_alerts(self):
while True:
@ -182,13 +180,6 @@ class TorrentSession:
def _add_torrent(self, btih: str, download_directory: Optional[str]):
params = {'info_hash': binascii.unhexlify(btih.encode())}
flags = DEFAULT_FLAGS
print(bin(flags))
flags ^= libtorrent.add_torrent_params_flags_t.flag_paused
flags ^= libtorrent.add_torrent_params_flags_t.flag_auto_managed
# flags ^= libtorrent.add_torrent_params_flags_t.flag_stop_when_ready
print(bin(flags))
# params['flags'] = flags
if download_directory:
params['save_path'] = download_directory
handle = self._handles[btih] = TorrentHandle(self._loop, self._executor, self._session.add_torrent(params))
@ -208,9 +199,8 @@ class TorrentSession:
self._handles.pop(btih)
async def save_file(self, btih, download_directory):
return
handle = self._handles[btih]
handle._handle.move_storage(download_directory)
await handle.resume()
def get_size(self, btih):
return self._handles[btih].size
@ -242,9 +232,7 @@ async def main():
btih = await session.add_fake_torrent()
session2._session.add_dht_node(('localhost', 4040))
await session2.add_torrent(btih, "/tmp/down")
print('added')
while True:
print("idling")
await asyncio.sleep(100)
await session.pause()
executor.shutdown()

View file

@ -59,6 +59,10 @@ class TorrentSource(ManagedDownloadSource):
def torrent_name(self):
return self.torrent_session.get_name(self.identifier)
@property
def bt_infohash(self):
return self.identifier
def stop_tasks(self):
pass

View file

@ -13,7 +13,7 @@ class FileCommands(CommandTestCase):
async def initialize_torrent(self):
self.seeder_session = TorrentSession(self.loop, None)
self.addCleanup(self.seeder_session.stop)
await self.seeder_session.bind('localhost', 4040)
await self.seeder_session.bind(port=4040)
self.btih = await self.seeder_session.add_fake_torrent()
address = await self.account.receiving.get_or_create_usable_address()
claim = Claim()
@ -28,7 +28,7 @@ class FileCommands(CommandTestCase):
self.loop, self.daemon.conf, client_session, self.daemon.storage, self.daemon.analytics_manager
)
await self.daemon.file_manager.source_managers['torrent'].start()
await client_session.bind('localhost', 4041)
await client_session.bind(port=4041)
client_session._session.add_dht_node(('localhost', 4040))
async def test_download_torrent(self):

View file

@ -13,6 +13,7 @@ commands =
--global-option=fetch \
--global-option=--version --global-option=3.30.1 --global-option=--all \
--global-option=build --global-option=--enable --global-option=fts5
pip install https://s3.amazonaws.com/files.lbry.io/python_libtorrent-1.2.4-py2.py3-none-any.whl
orchstr8 download
blockchain: coverage run -p --source={envsitepackagesdir}/lbry -m unittest discover -vv integration.blockchain {posargs}
datanetwork: coverage run -p --source={envsitepackagesdir}/lbry -m unittest discover -vv integration.datanetwork {posargs}