Call for more tools on the testnet!

in #testnet5 years ago (edited)

There has been a lot of discussion after the events of hardfork 20 about what we can do better in order to prevent another similar incident. One of the things that everybody seems to agree on is that we need more/better testing.

Testnet Infrastructure

In order to properly test things in the testnet, it is important that the testnet works as closely to the mainnet as possible. This means that users need to be able to do the same things in the testnet that they can do on the mainnet. It is impossible to do this without the right tools.

There is a lot of time between now and the go-live date for the SMT hardfork. I suggest that we use this time to build out the proper testnet infrastructure so that we can test the hell out of the SMT changes before applying them to production.

Steemit, Inc. has a large role to play in this in terms of updating all of their tools and libraries to work with the testnet. The community developers have a large role to play as well.

List of Tools Needed

In this post, I would like to start collecting a list of tools that we all need in order to use the testnet in the same way that we use the mainnet.

Here is the start of a list:

ToolDeveloper(s)
steemd.com@roadscape
Condenser (steemit.com)@steemit
SteemConnect@busy
cli_wallet@steemit
beem (python library)@holger80
SteemSQL@arcange
steem-python@steemit
steem-ruby@steemit
steem-js@steemit
SteemDB.com@jesta
eSteem@good-karma
Busy.org@busy
SteemPeak.com@jarvie @dmytrokorol @asgarth
Steem Monsters@steemmonsters @aggroed @yabapmatt
Partiko@partiko
DTube@heimindanger @nannal @superkoala
Vessel@jesta
Steem-in-a-box@someguy123

(Everyone please help add to the list in the comments below.)

Action Item for Community Developers:

If you created an application/tool for the Steem blockchain, please start thinking about how you can provide a "testnet" version of your application/tool, as well as instructions for your users on how to use your application/tool in the testnet environment.

If/when your application/tool is ready to be used in the testnet, please reply to this post with a link to information on how to use it in the testnet.

Action Item for Everyone:

Please reply in the comments below with a list of applications and tools that you use which would be helpful to have in the testnet.

Sort:  

@steemhunt and @dlike are two apps that many use, and they are planning smts so they should definitely be on there testing.

Posted using Partiko Android

First and most important is to establish a CI - CD system and everything else can wait. We do NOT have a CI-CD system and unfortunately noone seems to be able to tackle this and efforts are getting confused between static code analysis using few tools instead of plain old-nightly builds. None of the tools matter or will ever work without a build and deployment system existing for atleast one asset/codebase - say STEEM .

A common and simple CI-CD pipeline looks like following from 2000s

https://gitlab.com/SteemCommunity/tinman/pipelines

list of tools

Tinman : http://github.com/steemit/tinman

Jussi : https://github.com/steemit/jussi

Account creation Faucet : https://github.com/steemit/faucet

Once again the single most important item is a automatic build system which I had mentioned again again :-)

There are actually quite extensive automated tests built into the Steem blockchain code, which get run automatically each time a pull request is merged into master. You can see this happening if you look at the PRs - it will show up as Jenkins-CI.

It would be great if more people did audits/reviews of these tests, and even submitted PRs if they noticed things were lacking.

Regarding CD, this is a bit more challenging with the way that the blockchain deployment is structured, as many changes require a hardfork. Even non-hardfork changes often require a lot of coordination to roll out. I'm sure there are some improvements that could be made here even within the constraints we have. Specific recommendations would be good things to post about.

You can see this happening if you look at the PRs - it will show up as Jenkins-CI.

Agree - but this is not a modern CI. This is just testing.

The tests run on STEEM code base via jenkins can be seen here : https://github.com/steemit/steem/tree/master/ciscripts

and build can be auto triggered like this : https://gitlab.com/SteemCommunity/steem/pipelines/33379067/builds

For the faucet its circleCI : https://github.com/steemit/faucet/tree/master/.circleci

The point is, these tests are not enough

  • what is the code coverage offered by these tests ?

Regarding CD, this is a bit more challenging with the way that the blockchain deployment is structured,

What exactly makes it challenging ?

The point is, these tests are not enough

I would encourage you to right GitHub issues to cover specific test cases that are not covered by the existing tests.

What exactly makes it challenging ?

Hardfork deployment requires a lot of coordination with exchanges. As can be seen with HF20, there are several major exchanges that still have not gotten back online after needing to upgrade.

Even non-consensus changes (such as 20.5) often require exchanges to upgrade and replay.

The TLDR is that blockchain deployments, which require coordination among lots of different decentralized parties in order to successfully do, are not the best suited for doing frequent small deployments.

  • still we don't have answer on the % of code coverage ?

List of Challenges in deploying TESTNETs for HF

  1. Co-coordinating with exchanges

That's a very interesting post, I actually updated the Steem Smart Contracts tool I'm working on to make it test net compatible a few days ago as it is indeed a must have!

For sure, steemd.com, steemconnect and steemit.com are on the top of my list!

As far as I know, steem-js is already testnet compatible though the doc is lacking... (but I would encourage the js developers to move to dsteem (which I think is now supported by Steemit Inc.))

Interesting project @harpagon - will look into it. With SMT around the corner, smart contracts have good potential.

btw, official TESTNET is here : http://testnet.steemitdev.com/

& condersor aka steemit is here : https://condensertestnet.steemitdev.com/

just to clarify,

As far as I know, steem-js is already testnet compatible though the doc is lacking.

Is this compatible against the official TESTNET ?

It is indeed compatible with any testnet, you just need to setup steem-js when you instantiate it:

const steem = require('steem')
steem.api.setOptions({ url: 'https://testnet.steemitdev.com' });
steem.config.set('address_prefix', 'TST')
steem.config.set('chain_id', '46d82ab7d8db682eb1959aed0ada039a6d49afa1602491f93dde9cac3e8e6c32')

If you want to go with dsteem:

const dsteem = require('dsteem')
const client = new dsteem.Client('https://testnet.steemitdev.com', { addressPrefix: 'TST', chainId: '46d82ab7d8db682eb1959aed0ada039a6d49afa1602491f93dde9cac3e8e6c32'})

(I took the params from the official docs: https://developers.steem.io/testnet/)

Just to clarify.

Beem was able to connect to the testnet.

https://steemit.com/testnet/@holger80/using-beem-to-interact-with-the-hf20-testnet

hi. sorry for off-topic.
I'm sorry to trouble you. I know that you are a Witness and have a lot of work.

A lot of Steemians know about a Netcoins and an opportunity for Steem to be listed there for free according to oracle-d announcement

Recently we saw a messages (red and then blue) at the top of the Steemit pages about Hrdfork 20.

Maybe it's possible to show the same way a message about the contest Netcoins with the link to this contest http://contest.gonetcoins.com/ and maybe the link to short instructions on how to vote (like this for example https://steemit.com/promo-steem/@soyrosa/stop-what-you-are-doing-you-could-make-it-possible-for-us-all-to-pay-our-next-meal-in-steem-if-you-do-this-very-simple-thing ) or any other on the top of Steemit pages as it was in case with that Harwork
so that more people were informed about this contest (right now Steem is losing to VERGE so this mean that there are not enough people are informed about that contest).
Like we see it on steemworld.org/ these days (something like "Want STEEM to go to the moon? Here is your chance to make it happen!")

I'm steel think that I'm a newbie. So I didn't find anybody to contact with this little suggestion.
Or maybe I just don't understand something. It's of course easier to say that to do.

And there is only 13 hours left till the end of that contest.
But just in case I decided to try. Maybe that message will provide a good impulse for Steem to finish.

Totally agree !! In order to be able to use @steempeak we need to have at least a working steemconnect version, but other than that we should be a able to do it ;)

We've built live testing environments for cross platform testing of XR programs inserted on the steem blockchain.
https://glitch.com/edit/#!/cheerful-suggestion - VR boiler plate and instancable testing
https://glitch.com/edit/#!/pollen-gem - Same for AR
dlux.io | @dlux-io

Test it with the oficial steem testnet to make sure it will work in the future HF.

I'm not really familiar with what all of that stuff is. Can you please provide some more context?

Sure. Using a QR code you can attach a steem post to anything in reality. https://twitter.com/dluxxr/status/1050905950373072896
Here is a video on a business card, but could just as easily be on a paper menu or a information label in an art gallery. QR code to voting or steem/sbd transfer in a matter of seconds.

The VR portion at cheerful suggestion allows you to build VR experiences. Say like a classroom or an art gallery... all monetized and secured by steem data... stored on IPFS
video walkthrough VR platform and VR creation

How are the keys for the transaction signing handled?

Also, do you actually have an instance that is connected to the testnet version of the blockchain?

We rely on steemconnect.
The VR and AR dApps loading in to the browser this way are sandboxed in an iFrame with window messaging to their container... which has the steem connect token in a cookie. We can also store a users memo key. In short these dApps only know a users steem name... and if they want to make any changes other than vote they should be prompted for permission... users can also be asked if the XR app should have access to encrypt or decrypt using your memo key.

In short, these are steem aware applications that don't actually have any access to user keys. The test environments have some console feedback to show proper window messaging happened.

I've built in a lot of functionality that hasn't been used yet. As such things like commenting and custom_json would require a test net... I'm short on funding and necessity right now. Maybe even a lack of need?

Well, if you are using SteemConnect, then afaik your "test" environments would all still be pointing to the mainnet. Additional changes are needed in SC for it to support testnet connectivity. Once those are done, you would need to make changes to your app to use that testnet version as well.

While it would undoubtedly be preferable to have the environments totally separate, SC doesn't really need to be tested by every app as long as the HF doesn't make changes to the SC api itself necessary. It helps in testing SC, but if one or two big apps which use all the api calls work with it the rest also will.

Well part of it is just to get more users to actually use the testnet. It would be nice if whatever apps they are used to using could be used there.

A test environment is definitely the way to go. Wishing everyone involved in this effort the best of luck.

Thanks for the initiative!

Posted using Partiko Android

So there is a functioning testnet at the moment?

interesting, I hope they incentivize users to jump on it and try to break things in order to gather the necessary data

Coin Marketplace

STEEM 0.36
TRX 0.12
JST 0.040
BTC 70839.13
ETH 3563.41
USDT 1.00
SBD 4.77