Rework Data Model Tests of HL Iroha
Description
One of the major current trends of Iroha development is modularization and decoupling. Though there are some base concepts that will persist, such as the data model. Iroha has a set of commands and queries that are extensively covered by tests. But as we approached the data model decoupling, we found these tests unnecessarily too tightly bound to existing code, rather than only using proper interfaces.
We have already created a replacement test framework and reworked several commands and queries tests with it. But there is more to do in this direction. So, in this project, the mentee will have complete and functional examples of the work that needs to be done, and guidance from mentor about the architecture and rationale of the changes.
Additional Information
Commands and queries of Iroha: https://iroha.readthedocs.io/en/master/develop/api.html
A guide to Google Test that explains many useful things to keep in mind while implementing tests: https://github.com/google/googletest/blob/master/googletest/docs/primer.md
Learning Objectives
Test design: reasonable scope, accurate assumptions and expectations, following apparent examples of our previous test design flaws.
Google test framework experience.
Expected Outcome
The outcome of the project is a reworked set of data model tests that is decoupled from current implementation and will provide us a great help in having pluggable data model modules.
Relation to Hyperledger
HL Iroha.
Education Level
Any, see skills.
Skills
Mainly C++.
Experience in writing tests great plus.
In our tests we heavily use Google Test framework, but it is easy to start working with having lots of examples.
Future plans
Modular data model in Iroha.
Preferred Hours and Length of Internship
Full time preferred, but part time also possible.
Mentor(s) Names and Contact Info
Mikhail Boldyrev (boldrev@soramitsu.co.jp, Telegram: mboldyrev).
Mentee Name and Contact Info
Ashutosh Tiwari (atiwarixs@gmail.com, Telegram: ashttxx)
Project Plan
A detailed project plan can be found here.