def test_journal_transaction_block_update_block_weight(self): # Test block update weight minfo = {'__SIGNATURE__': 'Test', "BlockNum": 0} transBlock = TransactionBlock(minfo) transBlock.Status = tbStatus.valid signingkey = SigObj.generate_signing_key() ident = SigObj.generate_identifier(signingkey) node = Node(identifier=ident, signingkey=signingkey, address=("localhost", 10003)) # Takes a journal, create a temporary directory to use with the journal path = tempfile.mkdtemp() journal = Journal(node, DataDirectory=path) transBlock.sign_from_node(node) transBlock.update_block_weight(journal) # No transactions self.assertEquals(transBlock.TransactionDepth, 0) minfo = {'__SIGNATURE__': 'Test', '__NONCE__': time.time(), 'Dependencies': []} transaction = Transaction(minfo) transaction.sign_from_node(node) transBlock.TransactionIDs += [transaction.Identifier] transBlock.update_block_weight(journal) # One transaction self.assertEquals(transBlock.TransactionDepth, 1) minfo = {'__SIGNATURE__': 'Test', "BlockNum": 1, 'PreviousBlockID': transBlock.Identifier} newTransBlock = TransactionBlock(minfo) newTransBlock.Status = tbStatus.valid journal.BlockStore[transBlock.Identifier] = transBlock newTransBlock.update_block_weight(journal) # Get depth from previous block self.assertEquals(newTransBlock.TransactionDepth, 1)
def test_journal_transaction_block_update_block_weight(self): # Test block update weight minfo = {'__SIGNATURE__': 'Test', "BlockNum": 0} trans_block = TransactionBlock(minfo) trans_block.Status = tbStatus.valid (gossip, journal) = self._create_journal() node = gossip.LocalNode trans_block.sign_from_node(gossip.LocalNode) trans_block.update_block_weight(journal) # No transactions self.assertEquals(trans_block.TransactionDepth, 0) minfo = {'__SIGNATURE__': 'Test', '__NONCE__': time.time(), 'Dependencies': []} transaction = Transaction(minfo) transaction.sign_from_node(node) trans_block.TransactionIDs += [transaction.Identifier] trans_block.update_block_weight(journal) # One transaction self.assertEquals(trans_block.TransactionDepth, 1) minfo = {'__SIGNATURE__': 'Test', "BlockNum": 1, 'PreviousBlockID': trans_block.Identifier} new_trans_block = TransactionBlock(minfo) new_trans_block.Status = tbStatus.valid journal.block_store[trans_block.Identifier] = trans_block new_trans_block.update_block_weight(journal) # Get depth from previous block self.assertEquals(new_trans_block.TransactionDepth, 1)
def test_journal_transaction_block_missing_transactions(self): # Test missing transactions, should return list of missing transactions minfo = {'__SIGNATURE__': 'Test', "BlockNum": 0} transBlock = TransactionBlock(minfo) signingkey = SigObj.generate_signing_key() ident = SigObj.generate_identifier(signingkey) node = Node(identifier=ident, signingkey=signingkey, address=("localhost", 10002)) path = tempfile.mkdtemp() # Takes a journal, create a temporary directory to use with the journal journal = Journal(node, DataDirectory=path) transBlock.sign_from_node(node) missing = transBlock.missing_transactions(journal) # No missing transactions self.assertEquals(missing, []) minfo = {'__SIGNATURE__': 'Test', '__NONCE__': time.time(), 'Dependencies': []} transaction = Transaction(minfo) transaction.sign_from_node(node) transBlock.TransactionIDs += [transaction.Identifier] missing = transBlock.missing_transactions(journal) # One missing transactions self.assertEquals(missing, [transaction.Identifier]) journal.TransactionStore[transaction.Identifier] = transaction missing = transBlock.missing_transactions(journal) # Back to no missing transactions self.assertEquals(missing, [])
def test_journal_transaction_block_missing_transactions(self): # Test missing transactions, should return list of missing # transactions minfo = {'__SIGNATURE__': 'Test', "BlockNum": 0} trans_block = TransactionBlock(minfo) (gossip, journal) = self._create_journal() node = gossip.LocalNode trans_block.sign_from_node(node) missing = trans_block.missing_transactions(journal) # No missing transactions self.assertEquals(missing, []) minfo = {'__SIGNATURE__': 'Test', '__NONCE__': time.time(), 'Dependencies': []} transaction = Transaction(minfo) transaction.sign_from_node(node) trans_block.TransactionIDs += [transaction.Identifier] missing = trans_block.missing_transactions(journal) # One missing transactions self.assertEquals(missing, [transaction.Identifier]) journal.transaction_store[transaction.Identifier] = transaction missing = trans_block.missing_transactions(journal) # Back to no missing transactions self.assertEquals(missing, [])
def test_journal_transaction_block_missing_transactions(self): # Test missing transactions, should return list of missing transactions minfo = {'__SIGNATURE__': 'Test', "BlockNum": 0} transBlock = TransactionBlock(minfo) signingkey = SigObj.generate_signing_key() ident = SigObj.generate_identifier(signingkey) node = Node(identifier=ident, signingkey=signingkey, address=("localhost", 10002)) path = tempfile.mkdtemp() # Takes a journal, create a temporary directory to use with the journal journal = Journal(node, DataDirectory=path) transBlock.sign_from_node(node) missing = transBlock.missing_transactions(journal) # No missing transactions self.assertEquals(missing, []) minfo = { '__SIGNATURE__': 'Test', '__NONCE__': time.time(), 'Dependencies': [] } transaction = Transaction(minfo) transaction.sign_from_node(node) transBlock.TransactionIDs += [transaction.Identifier] missing = transBlock.missing_transactions(journal) # One missing transactions self.assertEquals(missing, [transaction.Identifier]) journal.TransactionStore[transaction.Identifier] = transaction missing = transBlock.missing_transactions(journal) # Back to no missing transactions self.assertEquals(missing, [])
def test_web_api_transaction(self): # Test _handletxnrequest local_node = self._create_node(8802) gossip = Gossip(local_node) path = tempfile.mkdtemp() # Setup ledger and RootPage ledger = Journal(gossip, data_directory=path, genesis_ledger=True) validator = TestValidator(ledger) transaction_page = TransactionPage(validator) # TransactionBlock to the ledger txns = [] i = 0 while i < 10: txn = Transaction() txn.sign_from_node(local_node) txns += [txn.Identifier] ledger.TransactionStore[txn.Identifier] = txn i += 1 trans_block = self._create_tblock(local_node, 0, common.NullIdentifier, txns) ledger.BlockStore[trans_block.Identifier] = trans_block ledger.handle_advance(trans_block) # GET /transaction request = self._create_get_request("/transaction/", {}) r = transaction_page.do_get(request) print request.path, r r = r[1:-1].replace('"', "") r = r.replace(" ", "").split(",") self.assertEquals(r, txns) # GET /transaction?blockcount=1 request = self._create_get_request("/transaction", {"blockcount": [1]}) r = transaction_page.do_get(request) r = r[1:-1].replace('"', "") r = r.replace(" ", "").split(",") self.assertEquals(r, txns) # Returns None if testing # GET /transaction/{TransactionID} request = self._create_get_request("/transaction/" + txns[1], {}) txn = ledger.TransactionStore[txns[1]] tinfo = txn.dump() tinfo['Identifier'] = txn.Identifier tinfo['Status'] = txn.Status if txn.Status == tStatus.committed: tinfo['InBlock'] = txn.InBlock self.assertEquals(yaml.load(transaction_page.do_get(request)), tinfo) # GET /transaction/{TransactionID{}/InBlock request = self._create_get_request("/transaction/" + txns[1] + "/InBlock", {}) self.assertEquals(transaction_page.do_get(request).replace('"', ""), txn.InBlock)
def test_web_api_transaction(self): # Test _handletxnrequest LocalNode = self._create_node(8802) path = tempfile.mkdtemp() # Setup ledger and RootPage ledger = Journal(LocalNode, DataDirectory=path, GenesisLedger=True) validator = TestValidator(ledger) root = RootPage(validator) # TransactionBlock to the ledger txns = [] i = 0 while i < 10: txn = Transaction() txn.sign_from_node(LocalNode) txns += [txn.Identifier] ledger.TransactionStore[txn.Identifier] = txn i += 1 transBlock = self._create_tblock(LocalNode, 0, common.NullIdentifier, txns) ledger.BlockStore[transBlock.Identifier] = transBlock ledger.handle_advance(transBlock) request = self._create_get_request("/transaction", {}) # GET /transaction request = self._create_get_request("/transaction", {}) r = root.do_get(request) r = r[1:-1].replace('"', "") r = r.replace(" ", "").split(",") self.assertEquals(r, txns) # GET /transaction?blockcount=1 request = self._create_get_request("/transaction", {"blockcount": [1]}) r = root.do_get(request) r = r[1:-1].replace('"', "") r = r.replace(" ", "").split(",") self.assertEquals(r, txns) # Returns None if testing # GET /transaction/{TransactionID} request = self._create_get_request("/transaction/" + txns[1], {}) txn = ledger.TransactionStore[txns[1]] tinfo = txn.dump() tinfo['Identifier'] = txn.Identifier tinfo['Status'] = txn.Status if txn.Status == tStatus.committed: tinfo['InBlock'] = txn.InBlock self.assertEquals(yaml.load(root.do_get(request)), tinfo) # GET /transaction/{TransactionID{}/InBlock request = self._create_get_request("/transaction/" + txns[1] + "/InBlock", {}) self.assertEquals(root.do_get(request).replace('"', ""), txn.InBlock)
def test_web_api_transaction(self): validator = self._create_validator() gossip = validator.gossip journal = validator.journal transaction_page = TransactionPage(validator) # TransactionBlock to the journal txns = [] i = 0 while i < 10: txn = Transaction() txn.sign_from_node(gossip.LocalNode) txns += [txn.Identifier] journal.transaction_store[txn.Identifier] = txn i += 1 trans_block = self._create_tblock(gossip.LocalNode, 0, common.NullIdentifier, txns) journal.block_store[trans_block.Identifier] = trans_block journal.handle_advance(trans_block) # GET /transaction request = self._create_get_request("/transaction/", {}) r = transaction_page.do_get(request) print request.path, r r = r[1:-1].replace('"', "") r = r.replace(" ", "").split(",") self.assertEquals(r, txns) # GET /transaction?blockcount=1 request = self._create_get_request("/transaction", {"blockcount": [1]}) r = transaction_page.do_get(request) r = r[1:-1].replace('"', "") r = r.replace(" ", "").split(",") self.assertEquals(r, txns) # Returns None if testing # GET /transaction/{TransactionID} request = self._create_get_request("/transaction/" + txns[1], {}) txn = journal.transaction_store[txns[1]] tinfo = txn.dump() tinfo['Identifier'] = txn.Identifier tinfo['Status'] = txn.Status if txn.Status == tStatus.committed: tinfo['InBlock'] = txn.InBlock self.assertEquals(yaml.load(transaction_page.do_get(request)), tinfo) # GET /transaction/{TransactionID{}/InBlock request = self._create_get_request("/transaction/" + txns[1] + "/InBlock", {}) self.assertEquals(transaction_page.do_get(request).replace('"', ""), txn.InBlock)
def test_web_api_transaction(self): validator = self._create_validator() gossip = validator.gossip journal = validator.journal transaction_page = TransactionPage(validator) # TransactionBlock to the journal txns = [] i = 0 while i < 10: txn = Transaction() txn.sign_from_node(gossip.LocalNode) txns += [txn.Identifier] journal.transaction_store[txn.Identifier] = txn i += 1 trans_block = self._create_tblock(gossip.LocalNode, 0, common.NullIdentifier, txns) journal.block_store[trans_block.Identifier] = trans_block journal.handle_advance(trans_block) # GET /transaction request = self._create_get_request("/transaction/", {}) r = transaction_page.do_get(request) print request.path, r r = r[1:-1].replace('"', "") r = r.replace(" ", "").split(",") self.assertEquals(r, txns) # GET /transaction?blockcount=1 request = self._create_get_request("/transaction", {"blockcount": [1]}) r = transaction_page.do_get(request) r = r[1:-1].replace('"', "") r = r.replace(" ", "").split(",") self.assertEquals(r, txns) # Returns None if testing # GET /transaction/{TransactionID} request = self._create_get_request("/transaction/" + txns[1], {}) txn = journal.transaction_store[txns[1]] tinfo = txn.dump() tinfo['Identifier'] = txn.Identifier tinfo['Status'] = txn.Status if txn.Status == tStatus.committed: tinfo['InBlock'] = txn.InBlock self.assertEquals(yaml.load(transaction_page.do_get(request)), tinfo) # GET /transaction/{TransactionID{}/InBlock request = self._create_get_request( "/transaction/" + txns[1] + "/InBlock", {}) self.assertEquals( transaction_page.do_get(request).replace('"', ""), txn.InBlock)
def test_journal_transaction_block_update_block_weight(self): # Test block update weight minfo = {'__SIGNATURE__': 'Test', "BlockNum": 0} transBlock = TransactionBlock(minfo) transBlock.Status = tbStatus.valid signingkey = SigObj.generate_signing_key() ident = SigObj.generate_identifier(signingkey) node = Node(identifier=ident, signingkey=signingkey, address=("localhost", 10003)) # Takes a journal, create a temporary directory to use with the journal path = tempfile.mkdtemp() journal = Journal(node, DataDirectory=path) transBlock.sign_from_node(node) transBlock.update_block_weight(journal) # No transactions self.assertEquals(transBlock.TransactionDepth, 0) minfo = { '__SIGNATURE__': 'Test', '__NONCE__': time.time(), 'Dependencies': [] } transaction = Transaction(minfo) transaction.sign_from_node(node) transBlock.TransactionIDs += [transaction.Identifier] transBlock.update_block_weight(journal) # One transaction self.assertEquals(transBlock.TransactionDepth, 1) minfo = { '__SIGNATURE__': 'Test', "BlockNum": 1, 'PreviousBlockID': transBlock.Identifier } newTransBlock = TransactionBlock(minfo) newTransBlock.Status = tbStatus.valid journal.BlockStore[transBlock.Identifier] = transBlock newTransBlock.update_block_weight(journal) # Get depth from previous block self.assertEquals(newTransBlock.TransactionDepth, 1)