Revision 818796ad151631188384a01bb218cf1f8a057135 authored by François Thiré on 22 January 2024, 17:11:32 UTC, committed by François Thiré on 22 January 2024, 17:11:32 UTC
1 parent 73a7a2c
Raw File
README.md
# Mockup mode

Libraries for mockup mode, i.e., the implementation of
`octez-client`'s `--mode mockup` flags.

## Overview

There are 3 libraries in this directory (see `dune` file):

* `tezos_mockup`
* `tezos_mockup_registration`
* `tezos_mockup_commands`


### Tezos mockup

This library defines a mockup implementation of RPCs that are handled locally
in mockup mode while they are executed on a node by vanilla clients.

Mockup-specific services (e.g., baking RPCs) are implemented in `local_services.ml`
The mockup RPC layer is itself in `RPC_client.ml`.

Higher-level mockup interaction is located in `persistence.ml`, in particular to
handle mockup states (creation, modification, etc.).

### Tezos mockup registration

This library defines the interface that is expected to be implemented by
the protocol. This then allows to register a protocol and support it in
mockup mode. See for example `src/proto_alpha/lib_client/mockup.ml`.

`mockup_args.ml` handles mockup (dummy) chain ids.

### Tezos mockup commands

Mockup commands that are independent from the protocol (one of `list mockup
protocols`) are implemented here. Currently, there is only one such command
(`list mockup protocols` indeed). All other mockup client commands are the same as for
vanilla clients, except for the additional `--mode mockup` switch.

Protocol-specific mockup commands are implemented in the respective
`src/proto_*/lib_client_commands/client_proto_mockup_commands.ml`. For example,
for protocol `alpha`, this is done in
`src/proto_alpha/lib_client_commands/client_proto_mockup_commands.ml`.  `create
mockup` is an example of such a command.

All mockup commands are used in
`src/lib_client_base_unix/client_config.ml`. More precisely, there is a
dedicated mockup context object in
`src/lib_client_base_unix/client_context_unix.ml`, delegating its RPC calls to
the local mockup implementation


## Testing

Tests for mockup mode use the `tezt` testing framework.

Run at toplevel

```
dune exec tezt/tests/main.exe -- mockup
```

## API Documentation

- https://tezos.gitlab.io/api/odoc/_html/tezos-mockup/index.html

### Other documentation

- [Manual](https://tezos.gitlab.io/user/mockup.html)
- [Blog post](https://blog.nomadic-labs.com/introducing-mockup-mode-for-tezos-client.html)
back to top