Ejemplo n.º 1
0
def test_config_load():
    with tempfile.TemporaryDirectory() as tempdir:
        c = Config(config_dir=tempdir)
        c['foo'] = 1
        old = c.config
        c.load()
        assert c.config == old
Ejemplo n.º 2
0
def test_defaults():
    c = Config(in_memory=True, defaults={'foo': 1})
    assert c.get('foo') == 1
    c['foo'] = 2
    assert c.get('foo') == 2
    del c['foo']
    assert c.get('foo') == 1
Ejemplo n.º 3
0
def test_get():
    with tempfile.TemporaryDirectory() as tempdir:
        c = Config(config_dir=tempdir)
        assert c.get('foo') is None
        assert c.get('foo', 1) == 1
        c['foo'] = 2
        assert c.get('foo') == 2
Ejemplo n.º 4
0
def test_config_save():
    with tempfile.TemporaryDirectory() as tempdir:
        c = Config(config_dir=tempdir)
        c.save()
        old = c.config
        c.load()
        assert old == c.config
Ejemplo n.º 5
0
def test_config_load():
    with tempfile.TemporaryDirectory() as tempdir:
        c = Config(config_dir=tempdir)
        c.load()
        assert c.data == {}
        c['foo'] = 1
        old = c.data
        c.load()
        assert c.data == old

        c = Config(config_dir=tempdir, in_memory=True)
        c.load()
        assert c.data == {}
Ejemplo n.º 6
0
def test_config_save():
    with tempfile.TemporaryDirectory() as tempdir:
        c = Config(config_dir=tempdir)
        c['foo'] = 1
        c.save()
        old = c.data
        c.load()
        assert old == c.data

    with tempfile.TemporaryDirectory() as tempdir:
        c = Config(config_dir=tempdir, in_memory=True)
        c['foo'] = 1
        c.save()
        assert not Path(tempdir, 'spritzle.conf').exists()
Ejemplo n.º 7
0
def core():
    # Create a new event loop for each core so that tests can't interfere with eachothers executor pools.
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    loop.set_debug(True)

    config = Config(in_memory=True, config_dir='/tmp')
    state_dir = Path(tempfile.mkdtemp(prefix='spritzle-test'))
    core = Core(config, state_dir)

    @run_until_complete
    async def core_start():
        await core.start(
            settings={
                'enable_upnp': False,
                'enable_natpmp': False,
                'enable_lsd': False,
                'enable_dht': False,
                'anonymous_mode': True,
                'alert_mask': 0,
                'stop_tracker_timeout': 0,
            })

    core_start()
    yield core

    @run_until_complete
    async def core_stop():
        await core.stop()

    core_stop()

    shutil.rmtree(str(state_dir))
Ejemplo n.º 8
0
def test_len():
    with tempfile.TemporaryDirectory() as tempdir:
        c = Config(config_dir=tempdir)
        assert len(c) == 0
        c['foo'] = 1
        assert len(c) == 1
        c['bar'] = 1
        assert len(c) == 2
Ejemplo n.º 9
0
def test_init_load():
    with tempfile.TemporaryDirectory() as tempdir:
        c = Config(config_dir=tempdir)
        c['foo'] = 1
        c.save()
        c = Config(config_dir=tempdir)
        assert c.get('foo') == 1
Ejemplo n.º 10
0
async def create_mock_request(core=None, config=None):
    config = Config(in_memory=True, config_dir='/tmp', initial=config)
    core.config = config
    request = MagicMock()
    request.app = {
        'spritzle.core': core,
        'spritzle.config': config,
    }

    return request
Ejemplo n.º 11
0
def main():
    parser = argparse.ArgumentParser(description='Spritzled')
    parser.add_argument('--debug',
                        dest='debug',
                        default=False,
                        action='store_true')
    parser.add_argument('-p', '--port', dest='port', default=8080, type=int)
    parser.add_argument('-c', '--config_dir', dest='config_dir', type=str)
    parser.add_argument('-l',
                        '--log-level',
                        default='INFO',
                        dest='log_level',
                        type=str)
    args = parser.parse_args()

    log = setup_logger(name='spritzle', level=args.log_level)
    log.info(f'spritzled starting.. args: {args}')
    app['spritzle.log'] = log

    loop = asyncio.get_event_loop()
    loop.set_debug(args.debug)

    config = Config('spritzle.conf', args.config_dir)

    # Prevent more than one process using the same config path from running.
    f = Path(config.path, 'spritzled.lock').open(mode='w')
    try:
        fcntl.lockf(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
    except IOError as e:
        log.error(f'Another instance of Spritzle is running: {e}')
        log.error('Exiting..')
        sys.exit(0)

    if not config['auth_secret']:
        config['auth_secret'] = secrets.token_hex()

    app['spritzle.config'] = config
    app['spritzle.core'] = Core(app['spritzle.config'])

    async def on_startup(app):
        await app['spritzle.core'].start()

    async def on_shutdown(app):
        await app['spritzle.core'].stop()

    app.on_startup.append(on_startup)
    app.on_shutdown.append(on_shutdown)
    setup_routes()
    aiohttp.web.run_app(app)
Ejemplo n.º 12
0
def test_config_init_no_dir():
    tmpdir = Path(tempfile.gettempdir(), 'spritzletmpdir')
    home = os.environ['HOME']
    os.environ['HOME'] = str(tmpdir)

    c = Config()

    os.environ['HOME'] = home

    assert c.config_file == Path(
        tmpdir, '.config', 'spritzle', 'spritzled.conf')

    assert c.config_file.is_file()

    shutil.rmtree(tmpdir)
Ejemplo n.º 13
0
def test_iter():
    with tempfile.TemporaryDirectory() as tempdir:
        c = Config(config_dir=tempdir)
        c['foo'] = 1
        assert next(iter(c)) == 'foo'
Ejemplo n.º 14
0
def test_config_init_with_dir():
    with tempfile.TemporaryDirectory() as tempdir:
        Config(config_dir=tempdir)
Ejemplo n.º 15
0
def test_initial():
    c = Config(in_memory=True, initial={'foo': 1})
    assert c.get('foo') == 1
Ejemplo n.º 16
0
def test_delitem():
    with tempfile.TemporaryDirectory() as tempdir:
        c = Config(config_dir=tempdir)
        c['foo'] = 1
        del c['foo']
        assert 'foo' not in c