---
# System prepended metadata

title: cs test tool

---

# cs test tool

wip: https://github.com/marcellanz/hammer/blob/feature/play/

* open questions
    * how do we define/create binary data like the proto field in EntitySpec?
    * how to send/expect semantics?
* other input
    * peter: we might want to test concurrent messages exchanges
        * => message sequences might be interleaved.
        * => one might like to validate grpc stream
            * think of a grpc proxy that validates messages by a given schema
            * https://github.com/envoyproxy/protoc-gen-validate
            * >> validating gRPC communication is a thing by itself probably.
    * bigdatarepuclic talks: the developer would probably like to get a certain state and debug from there locally.
        * > great idea I think. one would have a state of an entity brought to a certain state through messages sent. it requires functions to have their local state consistent be the same.

* having a well known human usable format for reading and editing
    * json
    * yaml
    * cue?
    * proto-text?
* be able to validate its form (cue?, some form of schema)
* be able to inherit/reference other data for a message
    * think of request specific config
    * defaults
    * clearly this is an advantage of cue
* let the tool scaffold messages for a users provided gRPC services *.proto file
    * eases initial learning curve
    * reduces manual creation and repetetive tasks
    * increases quality
* let the tool send and receive sequences
* let the tool save sessions
* define expected behaviour like
    * timeouts
    * failures
    * connection and stream state (failures, ...)
    * having no response to a request (like init messages)
* report errors/success in a structured form (drive the TCK nightly matrix)
* having test suites/packs of specific tests like
    * different state models
    * failure scenarios
    * passivation
    * simple benchmarks?
* bonus: define the spec
* bonus: alternative transports?
* bonus: let the tool get skeleton for a gRPC service by introspection
* links
    * https://grpc-ecosystem.github.io/grpc-gateway/