From 628f0861f036d6dbe5aa195069021204e6fd610a Mon Sep 17 00:00:00 2001 From: Ben Guidarelli Date: Thu, 17 Mar 2022 08:18:26 -0400 Subject: [PATCH 1/3] dont make array with length if we're just appending to it --- daemon/algod/api/server/v2/dryrun.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daemon/algod/api/server/v2/dryrun.go b/daemon/algod/api/server/v2/dryrun.go index e0036516f1..fd09b527e7 100644 --- a/daemon/algod/api/server/v2/dryrun.go +++ b/daemon/algod/api/server/v2/dryrun.go @@ -511,7 +511,7 @@ func doDryrunRequest(dr *DryrunRequest, response *generated.DryrunResponse) { result.AppCallTrace = &debug.history result.GlobalDelta = StateDeltaToStateDelta(delta.GlobalDelta) if len(delta.LocalDeltas) > 0 { - localDeltas := make([]generated.AccountStateDelta, len(delta.LocalDeltas)) + localDeltas := []generated.AccountStateDelta{} for k, v := range delta.LocalDeltas { ldaddr, err2 := stxn.Txn.AddressByIndex(k, stxn.Txn.Sender) if err2 != nil { From 2b08b6c97eaeafefaa529f3313e8cd38d4ff09ac Mon Sep 17 00:00:00 2001 From: Ben Guidarelli Date: Thu, 17 Mar 2022 08:23:54 -0400 Subject: [PATCH 2/3] make it ahead of time like other slice init in the same file --- daemon/algod/api/server/v2/dryrun.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daemon/algod/api/server/v2/dryrun.go b/daemon/algod/api/server/v2/dryrun.go index fd09b527e7..38f902ed37 100644 --- a/daemon/algod/api/server/v2/dryrun.go +++ b/daemon/algod/api/server/v2/dryrun.go @@ -511,7 +511,7 @@ func doDryrunRequest(dr *DryrunRequest, response *generated.DryrunResponse) { result.AppCallTrace = &debug.history result.GlobalDelta = StateDeltaToStateDelta(delta.GlobalDelta) if len(delta.LocalDeltas) > 0 { - localDeltas := []generated.AccountStateDelta{} + localDeltas := make([]generated.AccountStateDelta, 0, len(delta.LocalDeltas)) for k, v := range delta.LocalDeltas { ldaddr, err2 := stxn.Txn.AddressByIndex(k, stxn.Txn.Sender) if err2 != nil { From dcc35c021b42eefeeaf1c8b52cac5d7b016f2486 Mon Sep 17 00:00:00 2001 From: Ben Guidarelli Date: Thu, 17 Mar 2022 09:35:09 -0400 Subject: [PATCH 3/3] tweaking unit tests to be less forgiving to local deltas slice --- daemon/algod/api/server/v2/dryrun_test.go | 54 +++++++++++------------ 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/daemon/algod/api/server/v2/dryrun_test.go b/daemon/algod/api/server/v2/dryrun_test.go index 99246ec715..287e47d19d 100644 --- a/daemon/algod/api/server/v2/dryrun_test.go +++ b/daemon/algod/api/server/v2/dryrun_test.go @@ -563,27 +563,27 @@ func TestDryrunLocal1(t *testing.T) { if response.Txns[0].LocalDeltas == nil { t.Fatal("empty local delta") } - addrFound := false + + // Should be a single account + assert.Len(t, *response.Txns[0].LocalDeltas, 1) + + lds := (*response.Txns[0].LocalDeltas)[0] + assert.Equal(t, lds.Address, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ") + valueFound := false - for _, lds := range *response.Txns[0].LocalDeltas { - if lds.Address == "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ" { - addrFound = true - for _, ld := range lds.Delta { - if ld.Key == b64("foo") { - valueFound = true - assert.Equal(t, ld.Value.Action, uint64(basics.SetBytesAction)) - assert.Equal(t, *ld.Value.Bytes, b64("bar")) + for _, ld := range lds.Delta { + if ld.Key == b64("foo") { + valueFound = true + assert.Equal(t, ld.Value.Action, uint64(basics.SetBytesAction)) + assert.Equal(t, *ld.Value.Bytes, b64("bar")) - } - } } } - if !addrFound { - t.Error("no local delta for AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ") - } + if !valueFound { t.Error("no local delta for value foo") } + if t.Failed() { logResponse(t, &response) } @@ -644,24 +644,22 @@ func TestDryrunLocal1A(t *testing.T) { if response.Txns[0].LocalDeltas == nil { t.Fatal("empty local delta") } - addrFound := false + + assert.Len(t, *response.Txns[0].LocalDeltas, 1) + + lds := (*response.Txns[0].LocalDeltas)[0] + assert.Equal(t, lds.Address, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ") + valueFound := false - for _, lds := range *response.Txns[0].LocalDeltas { - if lds.Address == "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ" { - addrFound = true - for _, ld := range lds.Delta { - if ld.Key == b64("foo") { - valueFound = true - assert.Equal(t, ld.Value.Action, uint64(basics.SetBytesAction)) - assert.Equal(t, *ld.Value.Bytes, b64("bar")) + for _, ld := range lds.Delta { + if ld.Key == b64("foo") { + valueFound = true + assert.Equal(t, ld.Value.Action, uint64(basics.SetBytesAction)) + assert.Equal(t, *ld.Value.Bytes, b64("bar")) - } - } } } - if !addrFound { - t.Error("no local delta for AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ") - } + if !valueFound { t.Error("no local delta for value foo") }