How To Test Your Blockchain On Google Cloud Using Hyperledger Caliper
Testing blockchain applications ⛓️ can be cumbersome, mainly because they are complex, resource-demanding distributed systems. Testing your blockchain app on the cloud might improve the efficiency of the testing process, as well as achieving more realistic test environments.
This article provides a 101 guide on how to use Hyperledger Caliper (commit 302665) on Google Cloud, tackling the scenario of testing a Hyperledger Composer application, a blockchain framework which facilitates the development of Hyperledger Fabric applications. Nonetheless, this testing process applies to all blockchains supported by Hyperledger Caliper (Hyperledger Burrow, Hyperledger Fabric, Hyperledger Iroha, Hyperledger Sawtooth and more to come).
Setting the testing environment
- Create a private repository (e.g., on Github).
- Fork the Hyperledger Caliper project to your private repo:
3. Clone your private repo:
git clone https://github.com/USERNAME/CALIPER-PRIVATE-REPO.git
4. On CALIPER-PRIVATE-REPO/packages/caliper-samples/benchmark/composer , create a folder with the name of your application, e.g. my-network.
5. On the my-network folder, paste the contents of the configuration and test files from this repository. On a future article, I will explain how to write tests (my-network.js) and benchmark configurations (config.yaml).
6. You should have a developed business network using Composer (the BNA archive). If you have not developed a business network, you can still configure Caliper to test default business networks.
On CALIPER-PRIVATE-REPO-justicechain/packages/caliper-samples/src/contract/composer, create a folder named my-network. Paste your business network archive files (decompressed BNA file) inside the folder. You should have a lib folder, a models folder, and the files package.json, permission.acl and optionally, a README.md.
Note that on package.json, the name and version of the network have to coincide with the one on composer.json. Example package.json:
7. You have the necessary files to test your app. Push them to your repository:
git add *
git commit -m"add benchmark files"
git push origin master
Setting Google Cloud
- Create an account on Google Cloud. New accounts can apply for a free trial grant. Create a project, and activate the Compute Instance API.
- At Compute Engine -> VM Instances, click on Create a new instance.
3. Start your instance.
4. Click on Connect — SSH.
5. Install the prerequisites for Hyperledger Caliper (thanks Daz Wilkin):
sudo apt-get updatesudo apt-get install \
linux-image-extra-$(uname -r) \
linux-image-extra-virtualsudo apt-get updatesudo apt-get install \
software-properties-commoncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"sudo apt-get updatesudo apt-get install docker-cesudo usermod -aG docker $USERsudo systemctl enable dockerdocker --version
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composeGolang (optional)VERSION=1.9.1
sudo curl \
--location https://golang.org/dl/go$VERSION.$OS-$ARCH.tar.gz \
--output go$VERSION.$OS-$ARCH.tar.gzsudo tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gzexport PATH=$PATH:/usr/local/go/bingo version
6. Clone your private repository with Caliper and your blockchain app to your Google Compute instance.
Testing your application
To run your benchmark, navigate to caliper/packages/caliper-samples.
To benchmark your application with CouchDB run:
caliper benchmark run -w ./ -c benchmark/composer/justice/config.yaml -n benchmark/composer/justice/composer.json
To benchmark your application with LevelDB run:
caliper benchmark run -w ./ -c benchmark/composer/justice/config.yaml -n benchmark/composer/justice/composer-level.json
The results of the benchmark will be reported on the terminal.
Do not forget to stop your machines in Google Cloud after finishing the experiments or else 💸.
If you are passionate about learning blockchain technologies, feel free to join Blockchain4Students, a project I’m bootstrapping 😃 We aim to teach students the blockchain technology.
If any step is not clear, feel free to leave a comment on the comments section.
That’s it, congrats! Cheers, Keep Rocking 💪