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

MentorMentee
Attila KlenikAastha Bist
CESTIST
klenik@mit.bme.huabist119@gmail.com

Milestones/Timeline

DurationGoals
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

  • No labels