Project Plan - Declarative workload behavior definition for Hyperledger Caliper
Abstract
Caliper is built using NodeJS. The Workload Modules used for configuring transactions are also implemented in JavaScript at this point in time. Workload Module definition can be configured using the benchmark configuration file to some extent, but not completely.
This project would focus on:
Building a YAML schema to define Workload Module behavior, hence reducing the amount of JS code required for the task.
Possibly tuning the YAML specification for most frequent use cases.
Deliverables
Overarching goal: Specify/design a flexible and extendable YAML-based configuration schema for the declarative definition of complex workloads.
Survey the workload definition capabilities of relevant workload generators/benchmark tools and typical workload requirements of relevant standards or existing workloads.
Implement a built-in Caliper workload module capable of generating requests based on the defined YAML configuration.
Thoroughly test the implemented module - Provide developer and user documentation for the schema and the implemented module.
Port some of the Caliper microbenchmarks to the declarative schema as proof of concept.
Mentor and Mentee
Mentor | Mentee |
|---|---|
Attila Klenik | Aastha Bist |
CEST | IST |
Milestones/Timeline
Duration | Goals |
|---|---|
Week 1 - Week 6 | Research existing bench-marking solutions analyzing how they implement workload modules Understand Caliper environment Determine most frequently occurring use cases for Blockchain benchmarking Start designing the YAML configuration schema |
Week 7 - Week 12 | Analyze Caliper microbenchmarks and create the declarative schema for them Implement the schema and incrementally add more features to it |
Week 13 - Week 18 | Implementing value providers for the Caliper repository UniformRandomValueProvider VariableReferenceValueProvider ParameterReferenceValueProvider Writing Unit Tests for the above value providers |
Week 19 - Week 24 | Implementing value providers for the Caliper repository FormattedStringValueProvider ListElementValueProvider UniformRandomListElementValueProvider Writing Unit Tests for the above value providers Integrating Value Providers through contract and function classes (in progress) User and developer documentation Porting a microbenchmark to declarative schema |