def test_stealing_limited_by_host(db, config): host = platform.node() config['DATABASE_HOSTS'][0]['SHARDS'][0]['SYNC_HOSTS'] = [host] config['DATABASE_HOSTS'][0]['SHARDS'][1]['SYNC_HOSTS'] = ['otherhost'] purge_other_accounts() ss = SyncService(cpu_id=0, total_cpus=1) for key in (0, 1): with session_scope_by_shard_id(key) as db_session: acc = Account() acc.namespace = Namespace() db_session.add(acc) db_session.commit() ss.accounts_to_start() with session_scope_by_shard_id(0) as db_session: acc = db_session.query(Account).first() assert acc.sync_host == host with session_scope_by_shard_id(1) as db_session: acc = db_session.query(Account).first() assert acc.sync_host is None
def test_accounts_started_on_all_shards(db, default_account, config): config['SYNC_STEAL_ACCOUNTS'] = True purge_other_accounts(default_account) default_account.sync_host = None db.session.commit() ss = SyncService(cpu_id=0, total_cpus=1) ss.host = 'localhost' account_ids = {default_account.id} for key in (0, 1): with session_scope_by_shard_id(key) as db_session: acc = Account() acc.namespace = Namespace() db_session.add(acc) db_session.commit() account_ids.add(acc.id) assert len(account_ids) == 3 assert set(ss.accounts_to_start()) == account_ids for id_ in account_ids: with session_scope(id_) as db_session: acc = db_session.query(Account).get(id_) assert acc.sync_host == 'localhost'