Closed bedeho closed 5 months ago
Changes that need to be tested
Timeline Oct 30 ~ Nov 6
Outline
1. Stage an Ephesus network complete with RPC, QN, Pioneer and Atlas (freakstatic) 2. On the staging network test the following (ivant, polikosi)
RPC
content:deleteChannelAsModerator
content:deleteChannelAssetsAsModerator
content:deleteVideoAsModerator
content:deleteVideoAssetsAsModerator
These extrinsics should be available.
The functionality of the above extrinsics are out of scopeCLI
constructTxCall
advanced-transactions:constructUnsignedTxInitiateMs
signUnsignedTx
advanced-transactions:constructUnsignedTxApproveMs
signUnsignedTx
advanced-transactions:constructUnsignedTxFinalApproveMs
signUnsignedTx
Atlas
3. Create a node with new runtime and expose RPC endpoint (freakstatic) 4. Perform a runtime upgrade from Ephesus to Nara using Pioneer Runtime Upgrade Proposal (ivant, polikosi) 5. Perform the following tests on Nara Network (ivant, polikosi)
RPC
content:deleteChannelAsModerator
content:deleteVideoAsModerator
Pioneer
CLI
constructTxCall
advanced-transactions:constructUnsignedTxInitiateMs
signUnsignedTx
advanced-transactions:constructUnsignedTxApproveMs
signUnsignedTx
advanced-transactions:constructUnsignedTxFinalApproveMs
signUnsignedTx
Atlas
Having a proper QA plan is critical now that we are on mainnet and need much greater assurance, and also when people involed are far less coordinated than when QA <=> dev relationship was much closer than today. Before mainnet, internal QA was done by mostly one person, and those plans may have reflected that.
A production level QA plan needs to be very specific about what the goals are, how success is determined and what resources are needed for a proper test. Without this, proper peer review of the plan is not going to be possible. Vague statements about goals will leave ambiguity, and there may be missed coverage of things that are critical. Also coordination and resource allocation within the QA team will be worse.
This plan still can be significantly improved, it's still not clear to me what changes were made from the first version that received feedback, but for the benefit of next iteration please post a new entry into the thread with the new version.
A few comments from me. In general, I would say it would be nice to add more context.
Some of this I shared on a call, and I'm sure you have though of this, but expanding/repeating it anyway as it's nice to include in the protocol. When testing that a new/changed/removed transaction behaves as intended after a runtime upgrade:
The last point is often overlapping with integration tests, but the point also applies to testing pioneer, atlas and the CLI.
--
- Stage an Ephesus network complete with RPC, QN, Pioneer and Atlas (freakstatic)
If I were @freakstatic, I would have needed more context here. For testing purposes, we have typically deployed a playground-runtime
first, which has only one validator, very different election and proposal periods, making testing easier.
Furthermore, you will also start with a council elected, and leads hired for all roles. This is ideal for things that depends on council, proposals and working groups. It's also quick to redeploy and re-test if you happen to find any bugs.
If you haven't already, I would frequently start with a (playground) network with the "post-upgrade" runtime – in this case nara
. Otherwise, you may spend time creating state on ephesus
only to find you have to do it again, or you'll have to wait for some fixes on the CLI that could have been caught sooner.
For the final test, you may want to use a staging-runtime
or a default one, but with some custom parameters (especially for elections and proposals).
- On the staging network test the following (ivant, polikosi)
Again, lots of content should be added here. For each transaction:
For the multisig tests – before the upgrade:
m/n
2/2, 2-off 2/3 and 4-off 3/5vesting.vest
balance.transfer
which depends on the vesting.vest
to free the tokens, balance.transfer
(not final approve)balance.transfer
balance.transfer
balance.transfer
balance.transfer
balance.transfer
balance.transfer
(signer 2)balance.transfer
balance.transfer
(signer 2)balance.transfer
(signer 3)balance.transfer
balance.transfer
(signer 2)balance.transfer
with (signer 3) just before the runtime upgrade, then broadcast a few blocks after the upgrade.After the upgrade.
vesting.vest
, then the balance.transfer
--
In order to test the content.x
transactions (ref point 1. at the top), you need
*
curatorGroups
...*
Probably not true on a playground-runtime
Then find out in which cases a curator can delete which channels/assets/videos before the upgrade – I don't remember exactly how does this works on ephesus
, and I'm not sure how much help you'll get from the handbook...
The usual playground-runtime
wouldn't be ideal for this runtime QA testing because one of the things that need to be tested are the election parameters.
Also, during 16th Oct meeting, it was decided to use a testnet with multiple validators for QA testing.
There are two separate required test networks
Nara
testnet which has 3
validators, same parameters as nara
. It should already have a council
.
polkadotjs-api, CLI, Pioneer, Storage node, distribution node, query node, Orion, Atlas instances required.Ephesus
testnet with 1s blocktime
and 3
validators. It should already have a council
and constitutionality 1 for runtime upgrade proposal
.
Pioneer instance is required.Testnet No. 2
Runtime Upgrade
proposal in Pioneer to upgrade from Ephesus
to Nara
Testnet No.2
which is now in Nara
after the Runtime upgrade from Ephesus to Nara
test
Idle period should be 56 hours, announcing period 16 hours, voting period 24 hours, revealing period 16 hours.polkadotjs-api
This test will be performed on Testnet No.1
ChainState/Constants/council/idlePeriodDuration
should be 201,600
ChainState/Constants/council/announcingPeriodDuration
should be 57,600
ChainState/Constants/referendum/voteStageDuration
should be 86,400
ChainState/Constants/referendum/revealStageDuration
should be 57,600
Testnet No. 1
10
sub categories under that.
Before the runtime upgrade, only 5
sub categories were possible.Testnet No. 1
50
workers each.
Before the runtime upgrade, the limit was 30
workers.Testnet No. 1
Extrinsics/content/deleteChannelAsModerator
Extrinsics/content/deleteVideoAsModerator
Before the runtime upgrade, they were available.joystream-cli content:deleteChannelAsModerator
joystream-cli content:deleteVideoAsModerator
Before the runtime upgrade, they were available.Testnet No. 1
CRT feature management
proposal on Pioneer to turn off CRT featuresCRT feature management
proposal on Pioneer to turn on CRT features Testnet No. 1
polkadotjs-api
Extrinsics/multisig/approveAsMulti
to test multisig transactions.joystream-cli
to test multisig transactions.
advanced-transactions:constructTxCall
advanced-transactions:constructUnsignedTxInitiateMs
sign-offline:signUnsignedTx
advanced-transactions:constructUnsignedTxApproveMs
advanced-transactions:constructUnsignedTxFinalApproveMsAny constructed call should be successfully signed and the transaction should be performed
@chrlschwb
In Nara
meeting today we concluded that the plan could have benefited from greater specificity about how the different initial settings of each testnet will be actually achieved, for example by stating which runtime profile will be used. Also, if chainspec builder is used, also which deployment option is being used, as this determines the initial genesis configuration to be used. Take this into account for future network QA plans.
@freakstatic Will add details of parameters chosen for the testnet(s) here
In progress...
Tested on https://65.21.109.54.nip.io/pioneer/#/council
✅ Forum lead creates a forum category and 10 sub categories under that. Before the runtime upgrade, only 5 sub categories were possible.
✅ Forum lead creates 11 sub categories. This should lead to failure.
✅ SWG Limit
✅ DWG Limit
✅ Extrinsics are removed. (Extrinsics/content/deleteChannelAsModerator, Extrinsics/content/deleteVideoAsModerator)
✅ CLI Commands are removed. (joystream-cli content:deleteChannelAsModerator, joystream-cli content:deleteVideoAsModerator)
Tested on https://65.108.208.60.nip.io/pioneer/#/proposals/preview/2
Proposal Executed ⚠️ The application is unable to connect to the network Network status - connecting...
(Elect a council on Pioneer and confirm period lengths. This test will be performed on Testnet No.2 which is now in Nara after the Runtime upgrade from Ephesus to Nara test)
Tested on https://65.108.208.60.nip.io/pioneer/#/council
⚠️ As described in the previous step, after the update the app fails to connect to the network, but there is an option to check the data in the Polkadot app
Target - 1s
✅ Idle period should be 56 hours = 201 600 blocks
⚠️ announcing period should be 16 hours = 57 600 blocks
⚠️ voting period should be 24 hours = 86 400 blocks
✅ revealing period should be 16 hours = 57 600 blocks
QA result for Atlas CRT feature testing https://github.com/Joystream/atlas/issues/5483
@ivanturlakov the "types" errors was expected after the runtime upgrade, it's necessary to upgrade the joystream-node after the Nara runtime upgrade. I have done that, please try again to access: https://65.108.208.60.nip.io/pioneer/#/settings?network-config=https://65.108.208.60.nip.io/network/config.json
@ivanturlakov also the expected council duration parameters is here: https://github.com/Joystream/joystream/issues/4866#issuecomment-1732561544 please update your tests results based on that
@freakstatic thank you! Works as expected 👍
(Elect a council on Pioneer and confirm period lengths. This test will be performed on Testnet No.2 which is now in Nara after the Runtime upgrade from Ephesus to Nara test)
✅ Idle Period: 14 days = 201 600 blocks ✅ Announcing Period: 6 days = 86 400 blocks ✅ Voting Period: 4 days = 57 600 blocks ✅ Revealing Period: 4 days = 57 600 blocks
target 1s
Tested on: Pioneer: https://65.21.109.54.nip.io/pioneer/#/proposals/past Atlas: https://65.21.109.54.nip.io/channel/
freezePallet Proposal Executed
✅ Attempting to create a token > Fail ⚠️ Attempting to buy/sell tokens > Links to channels and tokens => 404
UnFreezePallet Proposal Executed
✅ Attempting to create a token > Success
switched to https://jsdao-nara-atlas.vercel.app/portfolio
✅ Attempting to create a token > Fail
⚠️ Attempting to buy tokens > Success https://polkadot.js.org/apps/?rpc=wss://65.21.109.54.nip.io/ws-rpc#/explorer/query/0xff4f43177bcfd8da57028859100bb087e863c89998be5f02e6a72b729e34f919
⚠️ Attempting to sell tokens > Success https://polkadot.js.org/apps/?rpc=wss://65.21.109.54.nip.io/ws-rpc#/explorer/query/0xed1271870a2e6d6e0c46454dda58db109153a1fe0a619f69794109a462927eb1
freezePallet Proposal view does not allow us to understand which exact action is proposed - ON/OFF would be good to show a widget
Tested on https://65.21.109.54.nip.io/pioneer/#/proposals/past
The toggle button is a bit confusing, maybe we should replace it with a:
Disabled
Enable
Pallet)Current Status - Disabled
I am trying to - Enable
Specific parameters default state - Disable
, Create Proposal button is active(result will be the Proposal with the opposite state)
If I toggle to Enable
⚠️ Observation: no matter of toggle btn state result will be the Proposal with the opposite state, and always executes
Atlas https://65.21.109.54.nip.io/ Dev Testnet
Pioneer https://65.21.109.54.nip.io/pioneer/#/settings wss://65.21.109.54.nip.io/ws-rpc
# | Enabled Pallet | Disabled Pallet |
---|---|---|
Create Channel | ✅ Success | ✅ Success |
Create Token | ✅ Success | ✅ Fail |
Buy Token | ✅ Success | ✅ Fail |
Sell Token | ✅ Success | ⚠️ Token page error |
Start Revenue Share | ✅ Success | ✅ Fail |
Portfolio > Claim Your Share | ⚠️ Button Inactive | ⚠️ Button Inactive |
Token Page > Stake/Claim Share | ⚠️ Token page error | ⚠️ Token page error |
⚠️ Means there is no possibility to test ✅ Means expected result
Token page(if it was bought at least once) opens with an error
WIP: Will add link to past plan soon.
Remember to consider all apps, including CLI, where changes have been made.
┆Issue is synchronized with this Asana task by Unito