diff --git a/planetmint/backend/tarantool/connection.py b/planetmint/backend/tarantool/connection.py index 346538f..e527368 100644 --- a/planetmint/backend/tarantool/connection.py +++ b/planetmint/backend/tarantool/connection.py @@ -26,6 +26,9 @@ class TarantoolDB: if reset_database: self.drop_database() self.init_database() + self.SPACE_NAMES = ["abci_chains", "assets", "blocks", "blocks_tx", + "elections", "meta_data", "pre_commits", "validators", + "transactions", "inputs", "outputs", "keys"] def space(self, space_name: str): return self.db_connect.space(space_name) @@ -35,12 +38,12 @@ class TarantoolDB: def drop_database(self): db_config = Config().get()["database"] - self.run_command(command=self.drop_path, config=db_config) + return self.run_command(command=self.drop_path, config=db_config) def init_database(self): db_config = Config().get()["database"] - self.run_command(command=self.init_path, config=db_config) + return self.run_command(command=self.init_path, config=db_config) def run_command(self, command: str, config: dict): import subprocess @@ -51,6 +54,6 @@ class TarantoolDB: stdout=subprocess.PIPE, universal_newlines=True, bufsize=0, - shell=True) + shell=True).stdout.readlines() # TODO verify if subprocess creation worked properly - return True # if ret > 0 else False + return True if "nil value" not in ret else False diff --git a/tests/backend/tarantool/test_schema.py b/tests/backend/tarantool/test_schema.py index 2460eba..8d32cb6 100644 --- a/tests/backend/tarantool/test_schema.py +++ b/tests/backend/tarantool/test_schema.py @@ -6,66 +6,78 @@ from planetmint.config import Config from planetmint.backend import Connection from planetmint.backend.tarantool.connection import TarantoolDB -def test_init_database_is_graceful_if_db_exists(): - + +def test_init_database_is_graceful_if_db_exists(): conn = TarantoolDB('localhost', 3303) conn.drop_database() conn.init_database() + def test_create_tables(): from planetmint.backend import schema conn = TarantoolDB('localhost', 3303) - #conn = Connection() - #dbname = Config().get()['database']['name'] + # conn = Connection() + # dbname = Config().get()['database']['name'] # The db is set up by the fixtures so we need to remove it conn.drop_database() conn.init_database() # TOTO verify spaces - #collection_names = conn.conn[dbname].list_collection_names() - #assert set(collection_names) == { + # collection_names = conn.conn[dbname].list_collection_names() + # assert set(collection_names) == { # 'transactions', 'assets', 'metadata', 'blocks', 'utxos', 'validators', 'elections', # 'pre_commit', 'abci_chains', - #} -# - #indexes = conn.conn[dbname]['assets'].index_information().keys() - #assert set(indexes) == {'_id_', 'asset_id', 'text'} -# - #index_info = conn.conn[dbname]['transactions'].index_information() - #indexes = index_info.keys() - #assert set(indexes) == { - # '_id_', 'transaction_id', 'asset_id', 'outputs', 'inputs'} - #assert index_info['transaction_id']['unique'] -# - #index_info = conn.conn[dbname]['blocks'].index_information() - #indexes = index_info.keys() - #assert set(indexes) == {'_id_', 'height'} - #assert index_info['height']['unique'] -# - #index_info = conn.conn[dbname]['utxos'].index_information() - #assert set(index_info.keys()) == {'_id_', 'utxo'} - #assert index_info['utxo']['unique'] - #assert index_info['utxo']['key'] == [('transaction_id', 1), - # ('output_index', 1)] -# - #indexes = conn.conn[dbname]['elections'].index_information() - #assert set(indexes.keys()) == {'_id_', 'election_id_height'} - #assert indexes['election_id_height']['unique'] -# - #indexes = conn.conn[dbname]['pre_commit'].index_information() - #assert set(indexes.keys()) == {'_id_', 'height'} - #assert indexes['height']['unique'] + # } -def test_drop(dummy_db): - from planetmint import backend - from planetmint.backend import schema +# +# indexes = conn.conn[dbname]['assets'].index_information().keys() +# assert set(indexes) == {'_id_', 'asset_id', 'text'} +# +# index_info = conn.conn[dbname]['transactions'].index_information() +# indexes = index_info.keys() +# assert set(indexes) == { +# '_id_', 'transaction_id', 'asset_id', 'outputs', 'inputs'} +# assert index_info['transaction_id']['unique'] +# +# index_info = conn.conn[dbname]['blocks'].index_information() +# indexes = index_info.keys() +# assert set(indexes) == {'_id_', 'height'} +# assert index_info['height']['unique'] +# +# index_info = conn.conn[dbname]['utxos'].index_information() +# assert set(index_info.keys()) == {'_id_', 'utxo'} +# assert index_info['utxo']['unique'] +# assert index_info['utxo']['key'] == [('transaction_id', 1), +# ('output_index', 1)] +# +# indexes = conn.conn[dbname]['elections'].index_information() +# assert set(indexes.keys()) == {'_id_', 'election_id_height'} +# assert indexes['election_id_height']['unique'] +# +# indexes = conn.conn[dbname]['pre_commit'].index_information() +# assert set(indexes.keys()) == {'_id_', 'height'} +# assert indexes['height']['unique'] +def _check_spaces_by_list(conn, space_names): + _exists = [] + for name in space_names: + try: + conn.space(name) + _exists.append(name) + except: + pass + return _exists + + +def test_drop(): # remove dummy_db as argument conn = TarantoolDB('localhost', 3303) - assert assets in conn.spaces('assets') conn.drop_database() - assert assets not in conn.conn.list_database_names() - + actual_spaces = _check_spaces_by_list(conn=conn, space_names=conn.SPACE_NAMES) + assert [] == actual_spaces + # conn.init_database() + # actual_spaces1 = _check_spaces_by_list(conn=conn, space_names=conn.SPACE_NAMES) + # assert conn.SPACE_NAMES == actual_spaces1