Added tests for each group-approval outcome + fixes

This commit is contained in:
catbref
2019-06-02 17:53:17 +01:00
parent c9f226cf88
commit 4667b768df
5 changed files with 282 additions and 10 deletions

View File

@@ -1145,6 +1145,9 @@ public class Block {
for (TransactionData transactionData : approvalExpiringTransactions) {
transactionData.setApprovalStatus(ApprovalStatus.EXPIRED);
transactionRepository.save(transactionData);
// Update group-approval decision height for transaction in repository
transactionRepository.updateApprovalHeight(transactionData.getSignature(), this.blockData.getHeight());
}
// Search for pending transactions within min/max block delay range
@@ -1159,7 +1162,7 @@ public class Block {
if (isApproved == null)
continue; // approve/reject threshold not yet met
// Update approval height for transaction in repository
// Update group-approval decision height for transaction in repository
transactionRepository.updateApprovalHeight(transactionData.getSignature(), this.blockData.getHeight());
if (!isApproved) {
@@ -1321,15 +1324,16 @@ public class Block {
List<TransactionData> transactions = transactionRepository.getApprovalTransactionDecidedAtHeight(this.blockData.getHeight());
for (TransactionData transactionData : transactions) {
// Orphan/un-process transaction
// Orphan/un-process transaction (if approved)
Transaction transaction = Transaction.fromData(repository, transactionData);
transaction.orphan();
if (transactionData.getApprovalStatus() == ApprovalStatus.APPROVED)
transaction.orphan();
// Revert back to PENDING
transactionData.setApprovalStatus(ApprovalStatus.PENDING);
transactionRepository.save(transactionData);
// Undo approval decision height
// Remove group-approval decision height
transactionRepository.updateApprovalHeight(transactionData.getSignature(), null);
}
}

View File

@@ -679,7 +679,7 @@ public class HSQLDBTransactionRepository implements TransactionRepository {
String sql = "SELECT signature FROM Transactions "
+ "JOIN Groups on Groups.group_id = Transactions.tx_group_id "
+ "WHERE Transactions.approval_status = ? "
+ "AND Transactions.block_height >= ? - Groups.min_block_delay";
+ "AND Transactions.block_height < ? - Groups.min_block_delay";
List<TransactionData> transactions = new ArrayList<TransactionData>();