From ddfce61b79895c63c84ace2e8861e1a59c63ed67 Mon Sep 17 00:00:00 2001 From: kansi Date: Fri, 27 Oct 2017 15:05:43 +0530 Subject: [PATCH 1/3] Added secondary index for "id" in bigchain collection. --- bigchaindb/backend/mongodb/schema.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bigchaindb/backend/mongodb/schema.py b/bigchaindb/backend/mongodb/schema.py index e398560f..00616dcb 100644 --- a/bigchaindb/backend/mongodb/schema.py +++ b/bigchaindb/backend/mongodb/schema.py @@ -50,6 +50,11 @@ def drop_database(conn, dbname): def create_bigchain_secondary_index(conn, dbname): logger.info('Create `bigchain` secondary index.') + # secondary index on block id which is should be unique + conn.conn[dbname]['bigchain'].create_index('id', + name='block_id', + unique=True) + # to order blocks by timestamp conn.conn[dbname]['bigchain'].create_index([('block.timestamp', ASCENDING)], From 421c67c62149b28b8de137c3ed46659c743df4dd Mon Sep 17 00:00:00 2001 From: kansi Date: Fri, 27 Oct 2017 15:31:44 +0530 Subject: [PATCH 2/3] Fixed mongodb tests --- bigchaindb/backend/mongodb/schema.py | 3 +-- tests/backend/mongodb/test_schema.py | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/bigchaindb/backend/mongodb/schema.py b/bigchaindb/backend/mongodb/schema.py index 00616dcb..01eac29c 100644 --- a/bigchaindb/backend/mongodb/schema.py +++ b/bigchaindb/backend/mongodb/schema.py @@ -52,8 +52,7 @@ def create_bigchain_secondary_index(conn, dbname): # secondary index on block id which is should be unique conn.conn[dbname]['bigchain'].create_index('id', - name='block_id', - unique=True) + name='block_id') # to order blocks by timestamp conn.conn[dbname]['bigchain'].create_index([('block.timestamp', diff --git a/tests/backend/mongodb/test_schema.py b/tests/backend/mongodb/test_schema.py index e11dbfe8..1a244b1b 100644 --- a/tests/backend/mongodb/test_schema.py +++ b/tests/backend/mongodb/test_schema.py @@ -22,8 +22,8 @@ def test_init_creates_db_tables_and_indexes(): 'votes'] indexes = conn.conn[dbname]['bigchain'].index_information().keys() - assert sorted(indexes) == ['_id_', 'asset_id', 'block_timestamp', 'inputs', - 'outputs', 'transaction_id'] + assert sorted(indexes) == ['_id_', 'asset_id', 'block_id', 'block_timestamp', + 'inputs', 'outputs', 'transaction_id'] indexes = conn.conn[dbname]['backlog'].index_information().keys() assert sorted(indexes) == ['_id_', 'assignee__transaction_timestamp', @@ -86,8 +86,8 @@ def test_create_secondary_indexes(): # Bigchain table indexes = conn.conn[dbname]['bigchain'].index_information().keys() - assert sorted(indexes) == ['_id_', 'asset_id', 'block_timestamp', 'inputs', - 'outputs', 'transaction_id'] + assert sorted(indexes) == ['_id_', 'asset_id', 'block_id', 'block_timestamp', + 'inputs', 'outputs', 'transaction_id'] # Backlog table indexes = conn.conn[dbname]['backlog'].index_information().keys() From 263e9a25f66cd883095d237bedd84c69337d614a Mon Sep 17 00:00:00 2001 From: kansi Date: Wed, 1 Nov 2017 21:23:06 +0530 Subject: [PATCH 3/3] Unique index for bigchain collection, fixed test case --- bigchaindb/backend/mongodb/schema.py | 5 +++-- tests/backend/mongodb/test_queries.py | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/bigchaindb/backend/mongodb/schema.py b/bigchaindb/backend/mongodb/schema.py index 01eac29c..572acff9 100644 --- a/bigchaindb/backend/mongodb/schema.py +++ b/bigchaindb/backend/mongodb/schema.py @@ -50,9 +50,10 @@ def drop_database(conn, dbname): def create_bigchain_secondary_index(conn, dbname): logger.info('Create `bigchain` secondary index.') - # secondary index on block id which is should be unique + # secondary index on block id which should be unique conn.conn[dbname]['bigchain'].create_index('id', - name='block_id') + name='block_id', + unique=True) # to order blocks by timestamp conn.conn[dbname]['bigchain'].create_index([('block.timestamp', diff --git a/tests/backend/mongodb/test_queries.py b/tests/backend/mongodb/test_queries.py index 0fd7229a..3ea7db28 100644 --- a/tests/backend/mongodb/test_queries.py +++ b/tests/backend/mongodb/test_queries.py @@ -299,12 +299,13 @@ def test_count_blocks(signed_create_tx): from bigchaindb.models import Block conn = connect() + assert query.count_blocks(conn) == 0 + # create and insert some blocks block = Block(transactions=[signed_create_tx]) conn.db.bigchain.insert_one(block.to_dict()) - conn.db.bigchain.insert_one(block.to_dict()) - assert query.count_blocks(conn) == 2 + assert query.count_blocks(conn) == 1 def test_count_backlog(signed_create_tx):