forked from LBRYCommunity/lbry-sdk
passing integration tests
This commit is contained in:
parent
8948d5be86
commit
2ca438c36e
4 changed files with 31 additions and 65 deletions
|
@ -28,6 +28,15 @@ jobs:
|
||||||
- coverage combine
|
- coverage combine
|
||||||
- bash <(curl -s https://codecov.io/bash)
|
- bash <(curl -s https://codecov.io/bash)
|
||||||
|
|
||||||
|
- name: "Integration Tests"
|
||||||
|
install:
|
||||||
|
- pip install tox-travis coverage
|
||||||
|
- pushd .. && git clone https://github.com/lbryio/torba.git && popd
|
||||||
|
script: tox
|
||||||
|
after_success:
|
||||||
|
- coverage combine tests/
|
||||||
|
- bash <(curl -s https://codecov.io/bash)
|
||||||
|
|
||||||
- stage: build
|
- stage: build
|
||||||
name: "Windows"
|
name: "Windows"
|
||||||
language: generic
|
language: generic
|
||||||
|
|
|
@ -247,14 +247,13 @@ class Daemon(metaclass=JSONRPCServerType):
|
||||||
"""
|
"""
|
||||||
allowed_during_startup = []
|
allowed_during_startup = []
|
||||||
|
|
||||||
def __init__(self, conf: Config, analytics_manager: typing.Optional[analytics.Manager] = None,
|
def __init__(self, conf: Config, component_manager: typing.Optional[ComponentManager] = None):
|
||||||
component_manager: typing.Optional[ComponentManager] = None):
|
|
||||||
self.conf = conf
|
self.conf = conf
|
||||||
self._node_id = None
|
self._node_id = None
|
||||||
self._installation_id = None
|
self._installation_id = None
|
||||||
self.session_id = base58.b58encode(utils.generate_id()).decode()
|
self.session_id = base58.b58encode(utils.generate_id()).decode()
|
||||||
to_skip = conf.components_to_skip
|
to_skip = conf.components_to_skip
|
||||||
self.analytics_manager = analytics_manager or analytics.Manager(conf, self.installation_id, self.session_id)
|
self.analytics_manager = analytics.Manager(conf, self.installation_id, self.session_id)
|
||||||
self.component_manager = component_manager or ComponentManager(
|
self.component_manager = component_manager or ComponentManager(
|
||||||
conf, analytics_manager=self.analytics_manager, skip_components=to_skip or []
|
conf, analytics_manager=self.analytics_manager, skip_components=to_skip or []
|
||||||
)
|
)
|
||||||
|
@ -447,8 +446,12 @@ class Daemon(metaclass=JSONRPCServerType):
|
||||||
async def handle_old_jsonrpc(self, request):
|
async def handle_old_jsonrpc(self, request):
|
||||||
data = await request.json()
|
data = await request.json()
|
||||||
result = await self._process_rpc_call(data)
|
result = await self._process_rpc_call(data)
|
||||||
|
ledger = None
|
||||||
|
if 'wallet' in self.component_manager.get_components_status():
|
||||||
|
# self.ledger only available if wallet component is not skipped
|
||||||
|
ledger = self.ledger
|
||||||
return web.Response(
|
return web.Response(
|
||||||
text=jsonrpc_dumps_pretty(result, ledger=self.ledger),
|
text=jsonrpc_dumps_pretty(result, ledger=ledger),
|
||||||
content_type='application/json'
|
content_type='application/json'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -2195,8 +2198,8 @@ class Daemon(metaclass=JSONRPCServerType):
|
||||||
raise Exception("no previous stream to update")
|
raise Exception("no previous stream to update")
|
||||||
claim_dict['stream']['source'] = existing_claims[-1].claim_dict['stream']['source']
|
claim_dict['stream']['source'] = existing_claims[-1].claim_dict['stream']['source']
|
||||||
stream_hash = await self.storage.get_stream_hash_for_sd_hash(claim_dict['stream']['source']['source'])
|
stream_hash = await self.storage.get_stream_hash_for_sd_hash(claim_dict['stream']['source']['source'])
|
||||||
tx = await self.default_wallet.claim_name(
|
tx = await self.wallet_manager.claim_name(
|
||||||
account, name, bid, claim_dict, certificate, claim_address
|
account, name, amount, claim_dict, certificate, claim_address
|
||||||
)
|
)
|
||||||
await self.storage.save_content_claim(
|
await self.storage.save_content_claim(
|
||||||
stream_hash, tx.outputs[0].id
|
stream_hash, tx.outputs[0].id
|
||||||
|
|
|
@ -4,43 +4,26 @@ from torba.testcase import AsyncioTestCase
|
||||||
|
|
||||||
from lbrynet.conf import Config
|
from lbrynet.conf import Config
|
||||||
from lbrynet.extras import cli
|
from lbrynet.extras import cli
|
||||||
from lbrynet.extras.daemon.Components import DATABASE_COMPONENT, BLOB_COMPONENT, HEADERS_COMPONENT, WALLET_COMPONENT, \
|
from lbrynet.extras.daemon.Components import (
|
||||||
DHT_COMPONENT, HASH_ANNOUNCER_COMPONENT, FILE_MANAGER_COMPONENT, \
|
DATABASE_COMPONENT, BLOB_COMPONENT, HEADERS_COMPONENT, WALLET_COMPONENT, DHT_COMPONENT,
|
||||||
PEER_PROTOCOL_SERVER_COMPONENT, REFLECTOR_COMPONENT, UPNP_COMPONENT, EXCHANGE_RATE_MANAGER_COMPONENT, \
|
HASH_ANNOUNCER_COMPONENT, STREAM_MANAGER_COMPONENT, PEER_PROTOCOL_SERVER_COMPONENT,
|
||||||
RATE_LIMITER_COMPONENT, PAYMENT_RATE_COMPONENT
|
UPNP_COMPONENT, EXCHANGE_RATE_MANAGER_COMPONENT
|
||||||
|
)
|
||||||
from lbrynet.extras.daemon.Daemon import Daemon
|
from lbrynet.extras.daemon.Daemon import Daemon
|
||||||
|
|
||||||
|
|
||||||
class FakeAnalytics:
|
|
||||||
|
|
||||||
@property
|
|
||||||
def is_started(self):
|
|
||||||
return True
|
|
||||||
|
|
||||||
async def send_server_startup_success(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
async def send_server_startup(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def shutdown(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class CLIIntegrationTest(AsyncioTestCase):
|
class CLIIntegrationTest(AsyncioTestCase):
|
||||||
|
|
||||||
async def asyncSetUp(self):
|
async def asyncSetUp(self):
|
||||||
skip = [
|
|
||||||
DATABASE_COMPONENT, BLOB_COMPONENT, HEADERS_COMPONENT, WALLET_COMPONENT,
|
|
||||||
DHT_COMPONENT, HASH_ANNOUNCER_COMPONENT, FILE_MANAGER_COMPONENT,
|
|
||||||
PEER_PROTOCOL_SERVER_COMPONENT, REFLECTOR_COMPONENT, UPNP_COMPONENT, EXCHANGE_RATE_MANAGER_COMPONENT,
|
|
||||||
RATE_LIMITER_COMPONENT, PAYMENT_RATE_COMPONENT
|
|
||||||
]
|
|
||||||
conf = Config()
|
conf = Config()
|
||||||
conf.data_dir = '/tmp'
|
conf.data_dir = '/tmp'
|
||||||
conf.share_usage_data = False
|
conf.share_usage_data = False
|
||||||
conf.api = 'localhost:5299'
|
conf.api = 'localhost:5299'
|
||||||
conf.components_to_skip = skip
|
conf.components_to_skip = (
|
||||||
|
DATABASE_COMPONENT, BLOB_COMPONENT, HEADERS_COMPONENT, WALLET_COMPONENT, DHT_COMPONENT,
|
||||||
|
HASH_ANNOUNCER_COMPONENT, STREAM_MANAGER_COMPONENT, PEER_PROTOCOL_SERVER_COMPONENT,
|
||||||
|
UPNP_COMPONENT, EXCHANGE_RATE_MANAGER_COMPONENT
|
||||||
|
)
|
||||||
Daemon.component_attributes = {}
|
Daemon.component_attributes = {}
|
||||||
self.daemon = Daemon(conf)
|
self.daemon = Daemon(conf)
|
||||||
await self.daemon.start()
|
await self.daemon.start()
|
||||||
|
|
|
@ -1,14 +1,10 @@
|
||||||
import sys
|
|
||||||
import json
|
import json
|
||||||
import tempfile
|
import tempfile
|
||||||
import logging
|
import logging
|
||||||
from binascii import unhexlify
|
from binascii import unhexlify
|
||||||
|
|
||||||
import twisted.internet
|
|
||||||
from twisted.internet.asyncioreactor import AsyncioSelectorReactor
|
|
||||||
|
|
||||||
from lbrynet.extras.wallet.transaction import Transaction
|
from lbrynet.extras.wallet.transaction import Transaction
|
||||||
from lbrynet.p2p.Error import InsufficientFundsError
|
from lbrynet.error import InsufficientFundsError
|
||||||
from lbrynet.schema.claim import ClaimDict
|
from lbrynet.schema.claim import ClaimDict
|
||||||
|
|
||||||
from torba.testcase import IntegrationTestCase
|
from torba.testcase import IntegrationTestCase
|
||||||
|
@ -22,33 +18,11 @@ from lbrynet.extras.wallet import LbryWalletManager
|
||||||
from lbrynet.extras.daemon.Components import WalletComponent
|
from lbrynet.extras.daemon.Components import WalletComponent
|
||||||
from lbrynet.extras.daemon.Components import (
|
from lbrynet.extras.daemon.Components import (
|
||||||
DHT_COMPONENT, HASH_ANNOUNCER_COMPONENT, PEER_PROTOCOL_SERVER_COMPONENT,
|
DHT_COMPONENT, HASH_ANNOUNCER_COMPONENT, PEER_PROTOCOL_SERVER_COMPONENT,
|
||||||
REFLECTOR_COMPONENT, UPNP_COMPONENT, EXCHANGE_RATE_MANAGER_COMPONENT
|
UPNP_COMPONENT, EXCHANGE_RATE_MANAGER_COMPONENT
|
||||||
)
|
)
|
||||||
from lbrynet.extras.daemon.ComponentManager import ComponentManager
|
from lbrynet.extras.daemon.ComponentManager import ComponentManager
|
||||||
|
|
||||||
|
|
||||||
class FakeAnalytics:
|
|
||||||
|
|
||||||
@property
|
|
||||||
def is_started(self):
|
|
||||||
return True
|
|
||||||
|
|
||||||
async def send_new_channel(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def shutdown(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
async def send_claim_action(self, action):
|
|
||||||
pass
|
|
||||||
|
|
||||||
async def send_credits_sent(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
async def send_server_startup(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class CommandTestCase(IntegrationTestCase):
|
class CommandTestCase(IntegrationTestCase):
|
||||||
|
|
||||||
timeout = 180
|
timeout = 180
|
||||||
|
@ -58,8 +32,6 @@ class CommandTestCase(IntegrationTestCase):
|
||||||
async def asyncSetUp(self):
|
async def asyncSetUp(self):
|
||||||
await super().asyncSetUp()
|
await super().asyncSetUp()
|
||||||
|
|
||||||
twisted.internet.reactor = sys.modules['twisted.internet.reactor'] = AsyncioSelectorReactor()
|
|
||||||
|
|
||||||
logging.getLogger('lbrynet.blob_exchange').setLevel(self.VERBOSITY)
|
logging.getLogger('lbrynet.blob_exchange').setLevel(self.VERBOSITY)
|
||||||
logging.getLogger('lbrynet.daemon').setLevel(self.VERBOSITY)
|
logging.getLogger('lbrynet.daemon').setLevel(self.VERBOSITY)
|
||||||
|
|
||||||
|
@ -88,13 +60,12 @@ class CommandTestCase(IntegrationTestCase):
|
||||||
|
|
||||||
conf.components_to_skip = [
|
conf.components_to_skip = [
|
||||||
DHT_COMPONENT, UPNP_COMPONENT, HASH_ANNOUNCER_COMPONENT,
|
DHT_COMPONENT, UPNP_COMPONENT, HASH_ANNOUNCER_COMPONENT,
|
||||||
PEER_PROTOCOL_SERVER_COMPONENT, REFLECTOR_COMPONENT, EXCHANGE_RATE_MANAGER_COMPONENT
|
PEER_PROTOCOL_SERVER_COMPONENT, EXCHANGE_RATE_MANAGER_COMPONENT
|
||||||
]
|
]
|
||||||
self.daemon = Daemon(conf, ComponentManager(
|
self.daemon = Daemon(conf, ComponentManager(
|
||||||
conf, skip_components=conf.components_to_skip, wallet=wallet_maker
|
conf, skip_components=conf.components_to_skip, wallet=wallet_maker
|
||||||
))
|
))
|
||||||
await self.daemon.setup()
|
await self.daemon.setup()
|
||||||
self.daemon.wallet_manager = self.wallet_component.wallet_manager
|
|
||||||
self.manager.old_db = self.daemon.storage
|
self.manager.old_db = self.daemon.storage
|
||||||
|
|
||||||
async def asyncTearDown(self):
|
async def asyncTearDown(self):
|
||||||
|
|
Loading…
Add table
Reference in a new issue