Skip to content

Conversation

@Algo-devops-service
Copy link
Contributor

@Algo-devops-service Algo-devops-service commented Aug 27, 2021

GitHub Logo

Highlights

This is a maintenance release focused around many test improvements and other optimizations.

Changes

  1. REST API
  2. TEAL
  3. Ledger
  4. Node
  5. Metrics
  6. Goal
  7. Other

Protocol Upgrade

This release does not contain a protocol upgrade.

Additional Resources

tolikzinovyev and others added 30 commits July 20, 2021 09:36
Add a comment about deleted accounts in AccountDeltas
The current code would not pass the `DisableNetworking` flag to the network package. This could be worked around by adding the `DisableNetworking` to the `config.json` file, or with this fix.
The [ineffassign](https://github.com/gordonklaus/ineffassign) linter is in the default set of linters enabled by golangci-lint but wasn't added in #2523 because it was reporting issues.

It's also one of the least objectionable linters; ineffectual assignments are rarely intentional and can point out bugs related to assumptions that a variable assignment had some effect.

There were various fixes here but I'm not sure if all the changes to remove or fix ineffectual assignments were the right ones.
CircleCI VMs come pre-installed with homebrew and some of the taps and packages we need already set up, so skipping running update and tap and install for those pre-existing assets reduces each job by ~6 minutes each (x 4 jobs).
While working on the agreement package, I noticed the wrong messageEvent type was being used in TestVoteAggregatorBundles (voteVerified instead of a bundleVerified). This leads voteAggregator to use filterVote instead of filterBundle, and read the empty `messageEvent.Input.Vote` value (with round/period/step of 0/0/0) rather than the value of `messageEvent.Input.Bundle` that has the correct RPS and bundle of votes. This leads the events to be thrown away as from an old round instead of being processed by dispatch.
Remove msgp 1.1.47 from go.mod/go.sum files
As #1699 demonstrates, api v2 uses `JSONHandle` that incorrectly encodes maps with numeric fields. Switching to `JSONStrictHandle` fixes the issue since it was specially created for this purpose.
Fix for updating an application with extra program pages
There is now a single package for both centos 7 & 8.
Add report line about txn pool fullness.
`txnpool({lowest reading}, {min(node mean txn pool size)}, {mean(node mean txnpool size)}, {max(node mean txnpool size)}, {highest reading})`

For a test running across 20 nodes, each node has a `node mean txn pool size` across a 20 minute test time. The above line reports the min/avg/max of those txn pool average sizes, and also the lowest and highest txn pool size seen at any moment.
This PR adds two opcodes.
cover: "remove top of stack, and place it down the stack such that N elements are above it",
uncover: "remove the value at depth N in the stack and shift above items down so the Nth deep value is on top of the stack"
Gauge that didn't change used to disappear from results; this could make a non-zero value appear zero, confusing metrics.
gaugeCommon.go split was confusing, merge back into gauge.go
#2645)



Since #2527, when you run msgp-generated tests that call `protocol.RunEncodingTest` from a cwd that doesn't contain "go-algorand" in the name and with GOPATH not set, the test may fail due to `//msgp:allocbound` not being read from the source, leading to "msgp: length overflow" errors (test data exceeding the allocbound).
Parameterize no_output_timeout and -short in the general commands on the circle config file to reduce duplicate code.
Add partition to daemon/algod/api/server/router_test.go
Right now a system.json file is not created when setting up systemd through the setup-systemd.sh script. Therefore, users aren't letting their nodes know that the algod process will be managed with systemd. This change modifies the systemd configuration file to create the system.json file in the data directory.
Add a public `Eval()` function in ledger that Indexer can use. The function accepts a custom protocol config so that Indexer can override it to always get asset close amounts, as opposed to only when the protocol supports it.

Closes https://github.com/algorand/go-algorand-internal/issues/1211.
Delete `Balances.PutWithCreatable()` and add new functions that notify the COW that a creatable was created or deleted. Coming up next is similar two functions for asset/application local state, needed by indexer.
Removes signing calls to KMD by creating internal hashmap and signing transactions locally.
…mentations (#2679)

Spotted this dead code, and after discussing with @tsachiherman and @zeldovich, it should be fine to remove.
I made a TEAL quine to test the output of app_params_get AppApprovalProgram for the current program. It's mostly for fun but this does strengthen the tests for app_params_get.
id-ms and others added 21 commits August 7, 2021 14:00
Add the framework for supporting batch verification.
Passing a foreign app id to the `goal app create` cmd with dryrun tries to use ApplicationId (0) instead of the foreign app id.
…sensus protocol is unknown. (#2708)

Return an error in EncodeSignedTxn() and DecodeSignedTxn() if consensus protocol is unknown
…lation opcodes (#2710)

* TypeFuncs added with tests

* Fixed dup test and edited code to use more literals
Add slack notifications for rel/nightly failures.

This will help us easily track Circle CI rel/nightly test failures on our slack channel.
Update the Circle CI branch filters to run "nightly"/longer tests over "rel/" and "hotfix/" branches.
* new opcode

* adding log

* added unit tests

* more tests

* update evalDelta test in app

* update log call limit to 32

* move MaxLogCalls to config

* api updates

* test and gomod updates

* update logs to [appid,msg]

* update logs data structure

* increate wait for txn timeout

* update log allocbound and hanlder error message

* update maxlogcalls val

* remove getLogs()

* remove getLogs
* Add pooling for grouped app calls and add unit tests

* Fix doc errors

* Pool app call budget in ep

* Check if pooledBudget is not nil in budget call

* Fix app call integration test output and minor syntax changes

* Minor change in comment

* Modify some tests to get better coverage

* Refactor tests

* Clean up

* Remove a hardcoded constant

* Add pointer equivalence test
* Convenient and High-fidelity Transaction Processing Tests

This refactors some of the `ledger` code so that it's convenient
to write short tests that operate on a fairly complete ledger,
including rewards payouts.  Previously, tests used genesis(), but
genesis() build the genesis block internally "by hand" rather
than using MakeGenesisBlock, so it missed some details (like
setting up RewardsState). Presumably, this was because
MakeGenesisBlock was in the `data` package, and could not be
imported.  That is the motivation behind moving it, and some
related code, to bookkeeping (where various Genesis related code
already existed).

The txntest packaged is motivated purely by a desire for more
concise tests.  It allows for the construction of
transaction.Transaction objects concisely, and we can add all
sort of conveneince routines here that would not make sense in
the production code (turning these into SignedTxns,
SignedTxnWithADs, TransactionGroups, etc).

* Converted a test, went from 130 lines to 68.  Same test.

* Docs and and another test converted
Replaced SKIP_E2E_SUBS var and E2E_SUBS_ONLY var with E2E_SUBS var that has values of "ONLY" and "SKIP" as well as not set at all. We might need to add another value to this var in the future for another option.
* The test checks rekeying before and after upgrade but nodes running
  as separate processes might upgrade earlier than the test advances
* This fix takes this into account similarly to the app upgrade tests
Fixing typo of one equal sign instead of two for integration tests
…2784)

This also unifies a lot of field handling so that the code is less
susceptible to copy-paste errors, but it has a ways to go. Hard to
both unify the handling of the different fields and use separate
types for each field index. Lots and lots of interfaces could do. Or
generics in 6 months? For the moment, each field type is a pile of
arrays and maps working together.

It's unclear what we gain from those separate index types, since
we always cast into the type just before using them, as we are
getting the indexes from reading a byte in bytecode.

New tests will catch this mistake if we make it again.
@codecov-commenter
Copy link

Codecov Report

Merging #2813 (d1aca92) into rel/stable (7e09c41) will increase coverage by 0.13%.
The diff coverage is 51.60%.

Impacted file tree graph

@@              Coverage Diff               @@
##           rel/stable    #2813      +/-   ##
==============================================
+ Coverage       46.97%   47.10%   +0.13%     
==============================================
  Files             348      349       +1     
  Lines           55715    56351     +636     
==============================================
+ Hits            26170    26544     +374     
- Misses          26604    26831     +227     
- Partials         2941     2976      +35     
Impacted Files Coverage Δ
catchup/service.go 69.35% <0.00%> (+0.34%) ⬆️
cmd/goal/account.go 14.78% <ø> (+0.04%) ⬆️
cmd/goal/node.go 10.51% <0.00%> (ø)
cmd/tealdbg/localLedger.go 58.57% <0.00%> (-1.73%) ⬇️
config/version.go 9.09% <ø> (ø)
daemon/algod/api/server/v2/handlers.go 0.00% <0.00%> (ø)
daemon/algod/api/server/v2/utils.go 14.50% <0.00%> (-2.32%) ⬇️
data/bookkeeping/genesis.go 0.00% <0.00%> (ø)
data/ledger.go 24.08% <0.00%> (+4.56%) ⬆️
data/transactions/logic/doc.go 82.75% <ø> (ø)
... and 58 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 7e09c41...d1aca92. Read the comment docs.

@onetechnical onetechnical marked this pull request as ready for review August 30, 2021 12:22
@algojohnlee algojohnlee merged commit c1d2eb7 into algorand:rel/stable Aug 30, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.