Duniter mock: Easy start your v2s dev stack

Avec @ManUtopiK on a créé un repo Duniter mock: tools / Duniter mocks · GitLab

Ca permet de très facilement lancer une chaine Duniter, ainsi qu’un Squid associé, et l’orcale de distance, en local avec des données de tests mockés.

Le readme explique bien comment ça fonctionne, c’est très facile vous allez voir. Avec Manu en tout cas on aime beaucoup.

C’était un peu galère sinon de lancer un squid local cohérent avec notre chaine Duniter. Là on a tout.
Pour développer les clients ça va être très utile.

7 Likes

Premier essai de duniter-mocks ! :rocket:

C’est vraiment top d’utiliser uv ! :star_struck:

Je test donc le parcours membre :

  • Alice verse 5 Junes à un compte dérivé du mnémonique root de Alice, avec la dérivation //Zargos
  • Alice créer une identité pour Zargos dans Tikka. Ok.
  • Zargos confirme son identité #7 dans Tikka avec le nom Zargos. Ok.
  • Bob certifie Zargos qui a maintenant deux certifications et devrait passer membre. KO !

J’ai beau patienter, le statut de l’identité reste bloqué à Unvalidated avec 2 certifications.

j’ajoute une troisième certification, alors que la config de base semble ne demander que deux certifications. KO!

Voici les logs de l’oracle avec un message d’erreur de connection au départ.
A noter que j’ai deux message sur la pool avec les 2 certifications et 3 avec la 3ème.

(.venv) vit@K72Jr:~/Documents/dev/blockchain/duniter-mocks$ docker logs distance-oracle 
thread 'main' panicked at /root/distance-oracle/src/api.rs:32:10:
Cannot create RPC client: Rpc(ClientError(Transport(Io(Os { code: 111, kind: ConnectionRefused, message: "Connection refused" }))))
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Waiting 600 seconds before next execution...
INFO  [distance_oracle] Nothing to do: Pool does not exist
Waiting 600 seconds before next execution...
INFO  [distance_oracle] Nothing to do: Pool does not exist
Waiting 600 seconds before next execution...
INFO  [distance_oracle] Nothing to do: Pool does not exist
Waiting 600 seconds before next execution...

Dans la documentation je rajouterai de taper :(non pas la peine !)

uv venv .venv
source .venv/bin/activate

pour ne pas installer les dépendances python sur les dépendances du python système…

Super outil en tout cas ! Bravo ! :star_struck:

4 Likes

As-tu changé les ports dans le docker compose, car déjà occupés ? Ça doit rester à 9944, car c’est à l’intérieur du réseau docker, pas dans le réseau local de l’hôte.

ORACLE_RPC_URL: ws://duniter:9944

Uniquement la partie gauche de la ligne suivante peut être changée, en cas de conflit de ports, car déjà une instance de Duniter v2 qui tourne en local :

    ports:
      - "9946:9944"      # RPC/WS

Tout ça est plutôt bien géré dans le run.sh et ce dernier est plutôt bien documenté. La dépendance substrate-interface est utilisée uniquement avec ./run.sh generate pour le fichier generate.py. Autrement, pas besoin du venv Python, non ?

Non je n’ai rien changé et seul duniter-mock est lancé sur mon laptop…


CONTAINER ID   IMAGE                                 COMMAND                  CREATED          STATUS                    PORTS                                                                                                                                 NAMES
241a5a1caf9c   duniter/squid-graphile-gtest:0.5.6    "./docker-entrypoint…"   57 minutes ago   Up 56 minutes             0.0.0.0:8081->5678/tcp, :::8081->5678/tcp                                                                                             squid-graphql
96de6088cd85   duniter/squid-app-gtest:0.5.6         "docker-entrypoint.s…"   57 minutes ago   Up 57 minutes (healthy)                                                                                                                                         squid-processor
218ab70b081e   duniter/duniter-v2s-gdev-800:latest   "docker-distance-ent…"   57 minutes ago   Up 57 minutes             9615/tcp, 9944/tcp, 30333/tcp                                                                                                         distance-oracle
f942dc326001   duniter/squid-postgres-gtest:0.5.6    "docker-entrypoint.s…"   57 minutes ago   Up 57 minutes (healthy)   0.0.0.0:5432->5432/tcp, :::5432->5432/tcp                                                                                             squid-db
3238a8c5fe30   duniter/duniter-v2s-gdev-800:latest   "docker-entrypoint -…"   57 minutes ago   Up 57 minutes (healthy)   0.0.0.0:9615->9615/tcp, :::9615->9615/tcp, 0.0.0.0:9944->9944/tcp, :::9944->9944/tcp, 0.0.0.0:30333->30333/tcp, :::30333->30333/tcp   duniter-mock

Effectivement run.sh gère bien l’environnement python. J’ai modifié mon message.