Project Plan - Declarative workload behavior definition for Hyperledger Caliper

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:

  1. Building a YAML schema to define Workload Module behavior, hence reducing the amount of JS code required for the task.

  2. 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.

  1. Survey the workload definition capabilities of relevant workload generators/benchmark tools and typical workload requirements of relevant standards or existing workloads.

  2. Implement a built-in Caliper workload module capable of generating requests based on the defined YAML configuration.

  3. Thoroughly test the implemented module - Provide developer and user documentation for the schema and the implemented module.

  4. Port some of the Caliper microbenchmarks to the declarative schema as proof of concept.

Mentor and Mentee

Mentor

Mentee

Mentor

Mentee

Attila Klenik

Aastha Bist

CEST

IST

klenik@mit.bme.hu

abist119@gmail.com

Milestones/Timeline

Duration

Goals

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

Pull Requests

Final Project Presentation