Skip to content

Commit

Permalink
Merge pull request #716 from OffchainLabs/staker-test-fixes
Browse files Browse the repository at this point in the history
test retries
  • Loading branch information
PlasmaPower authored Jun 24, 2022
2 parents 1950aab + f419338 commit 9b1c701
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 9 deletions.
2 changes: 1 addition & 1 deletion arbos/block_processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ func ProduceBlockAdvanced(
} else {
tx = txes[0]
txes = txes[1:]
if tx.Type() == types.ArbitrumInternalTxType {
if tx.Type() != types.ArbitrumInternalTxType {
hooks = sequencingHooks // the sequencer has the ability to drop this tx
isUserTx = true
}
Expand Down
24 changes: 17 additions & 7 deletions system_tests/staker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,14 @@ import (
"math/big"
"strings"
"testing"
"time"

"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/params"
"github.com/offchainlabs/nitro/arbutil"
"github.com/offchainlabs/nitro/solgen/go/rollupgen"
"github.com/offchainlabs/nitro/util/colors"
"github.com/offchainlabs/nitro/validator"
)

Expand Down Expand Up @@ -186,7 +188,7 @@ func stakerTestImpl(t *testing.T, faultyStaker bool, honestStakerInactive bool)
defer close(backgroundTxsShutdownChan)
err := makeBackgroundTxs(backgroundTxsCtx, l2info, l2clientA, l2clientB, faultyStaker)
if !errors.Is(err, context.Canceled) {
t.Error("error making background txs", err)
Fail(t, "error making background txs", err)
}
})()

Expand All @@ -210,6 +212,14 @@ func stakerTestImpl(t *testing.T, faultyStaker bool, honestStakerInactive bool)
stakerBTxs++
}
}

if err != nil && strings.Contains(err.Error(), "waiting") {
colors.PrintRed("retrying ", err.Error(), i)
time.Sleep(20 * time.Millisecond)
i--
continue
}

if err != nil && faultyStaker && i%2 == 1 {
// Check if this is an expected error from the faulty staker.
if strings.Contains(err.Error(), "agreed with entire challenge") {
Expand Down Expand Up @@ -247,15 +257,15 @@ func stakerTestImpl(t *testing.T, faultyStaker bool, honestStakerInactive bool)
isHonestZombie, err := rollup.IsZombie(&bind.CallOpts{}, valWalletAddrA)
Require(t, err)
if isHonestZombie {
t.Fatal("staker A became a zombie")
Fail(t, "staker A became a zombie")
}
for j := 0; j < 5; j++ {
TransferBalance(t, "Faucet", "Faucet", common.Big0, l1info, l1client, ctx)
}
}

if stakerATxs == 0 || stakerBTxs == 0 {
t.Fatal("staker didn't make txs: staker A made", stakerATxs, "staker B made", stakerBTxs)
Fail(t, "staker didn't make txs: staker A made", stakerATxs, "staker B made", stakerBTxs)
}

latestConfirmedNode, err := rollup.LatestConfirmed(&bind.CallOpts{})
Expand All @@ -264,24 +274,24 @@ func stakerTestImpl(t *testing.T, faultyStaker bool, honestStakerInactive bool)
if latestConfirmedNode <= 1 && !honestStakerInactive {
latestCreatedNode, err := rollup.LatestNodeCreated(&bind.CallOpts{})
Require(t, err)
t.Fatal("latest confirmed node didn't advance:", latestConfirmedNode, latestCreatedNode)
Fail(t, "latest confirmed node didn't advance:", latestConfirmedNode, latestCreatedNode)
}

if faultyStaker && !sawStakerZombie {
t.Fatal("staker B didn't become a zombie despite being faulty")
Fail(t, "staker B didn't become a zombie despite being faulty")
}

isStaked, err := rollup.IsStaked(&bind.CallOpts{}, valWalletAddrA)
Require(t, err)
if !isStaked {
t.Fatal("staker A isn't staked")
Fail(t, "staker A isn't staked")
}

if !faultyStaker {
isStaked, err := rollup.IsStaked(&bind.CallOpts{}, valWalletAddrB)
Require(t, err)
if !isStaked {
t.Fatal("staker B isn't staked")
Fail(t, "staker B isn't staked")
}
}
}
Expand Down
4 changes: 3 additions & 1 deletion validator/staker.go
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,9 @@ func (s *Staker) Act(ctx context.Context) (*types.Transaction, error) {
}
// If the wallet address is zero, or the wallet address isn't staked,
// this will return the latest node and its hash (atomically).
latestStakedNodeNum, latestStakedNodeInfo, err := s.validatorUtils.LatestStaked(callOpts, s.rollupAddress, walletAddressOrZero)
latestStakedNodeNum, latestStakedNodeInfo, err := s.validatorUtils.LatestStaked(
callOpts, s.rollupAddress, walletAddressOrZero,
)
if err != nil {
return nil, err
}
Expand Down

0 comments on commit 9b1c701

Please sign in to comment.