Skip to content

Commit

Permalink
Bug Fix: Adds validity round check for failing tests (#4085)
Browse files Browse the repository at this point in the history
  • Loading branch information
AlgoStephenAkiki authored Jun 7, 2022
1 parent febeb1e commit 5838f72
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 9 deletions.
22 changes: 17 additions & 5 deletions libgoal/transactions.go
Original file line number Diff line number Diff line change
Expand Up @@ -251,17 +251,29 @@ func generateRegistrationTransaction(part generated.ParticipationKey, fee basics

// MakeRegistrationTransactionWithGenesisID Generates a Registration transaction with the genesis ID set from the suggested parameters of the client
func (c *Client) MakeRegistrationTransactionWithGenesisID(part account.Participation, fee, txnFirstValid, txnLastValid uint64, leaseBytes [32]byte, includeStateProofKeys bool) (transactions.Transaction, error) {
goOnlineTx := part.GenerateRegistrationTransaction(
basics.MicroAlgos{Raw: fee},
basics.Round(txnFirstValid),
basics.Round(txnLastValid),
leaseBytes, includeStateProofKeys)

// Get current round, protocol, genesis ID
params, err := c.SuggestedParams()
if err != nil {
return transactions.Transaction{}, err
}

cparams, ok := c.consensus[protocol.ConsensusVersion(params.ConsensusVersion)]
if !ok {
return transactions.Transaction{}, errors.New("unknown consensus version")
}

txnFirstValid, txnLastValid, err = computeValidityRounds(txnFirstValid, txnLastValid, 0, params.LastRound, cparams.MaxTxnLife)
if err != nil {
return transactions.Transaction{}, err
}

goOnlineTx := part.GenerateRegistrationTransaction(
basics.MicroAlgos{Raw: fee},
basics.Round(txnFirstValid),
basics.Round(txnLastValid),
leaseBytes, includeStateProofKeys)

goOnlineTx.Header.GenesisID = params.GenesisID

// Check if the protocol supports genesis hash
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import (
"github.com/algorand/go-algorand/test/partitiontest"
)

func testExpirationAccounts(t *testing.T, fixture *fixtures.RestClientFixture, finalStatus basics.Status, protocolCheck string) {
func testExpirationAccounts(t *testing.T, fixture *fixtures.RestClientFixture, finalStatus basics.Status, protocolCheck string, includeStateProofs bool) {

a := require.New(fixtures.SynchronizedTest(t))
pClient := fixture.GetLibGoalClientForNamedNode("Primary")
Expand Down Expand Up @@ -84,7 +84,7 @@ func testExpirationAccounts(t *testing.T, fixture *fixtures.RestClientFixture, f
a.Equal(sAccount, partkeyResponse.Parent.String())

// account uses part key to go online
goOnlineTx, err := sClient.MakeRegistrationTransactionWithGenesisID(partkeyResponse, transactionFee, 0, 0, [32]byte{}, true)
goOnlineTx, err := sClient.MakeRegistrationTransactionWithGenesisID(partkeyResponse, transactionFee, 0, 0, [32]byte{}, includeStateProofs)
a.NoError(err)

a.Equal(sAccount, goOnlineTx.Src().String())
Expand Down Expand Up @@ -191,7 +191,7 @@ func TestParticipationAccountsExpirationFuture(t *testing.T) {
fixture.Start()
defer fixture.Shutdown()

testExpirationAccounts(t, &fixture, basics.Offline, "future")
testExpirationAccounts(t, &fixture, basics.Offline, "future", true)
}

// TestParticipationAccountsExpirationNonFuture tests that sending a transaction to an account with
Expand All @@ -214,5 +214,5 @@ func TestParticipationAccountsExpirationNonFuture(t *testing.T) {
fixture.Start()
defer fixture.Shutdown()

testExpirationAccounts(t, &fixture, basics.Online, string(protocol.ConsensusV29))
testExpirationAccounts(t, &fixture, basics.Online, string(protocol.ConsensusV29), false)
}

0 comments on commit 5838f72

Please sign in to comment.