Quelques uns nous ont demandé ce matin comment faire pour tester le server dans Docker (vu qu'il bloque la ligne de commande, on ne peut pu lancer de client dans le même Docker).
Il existe plusieurs solutions. L'idée de base est de le « détacher » du terminal courant pour garder la main pour donner d'autres commandes (typiquement le client). Pour cela vous pouvez :
- lancer le server en « tâche de fond » tout en récupérant sa sortie standard (stdout) et sortie d'erreur (stderr) dans un fichier. Pour cela faites :
Le « >LOG.txt » redirige stdout dans le fichier LOG.txt (qui sera créé)../cryptkvs small.ckvs httpd http://127.0.0.1:8000 >LOG.txt 2>&1 &
Le « 2>&1 » redirige stderr vers stdout (lequel a donc été redirigé comme dit ci-dessus)
Le « & » finale lance toute la commande « en tâche de fond », c.-à-d. la détache du terminal.
Pour voir ses « tâches de fond », tapez « jobs »
Pour arrêter la tâche de fond numéro 1 (votre server donc si vous n'avez pas lancé d'autres tâche de fond) :
kill -TERM %1 - vous pouvez alternativement utiliser des multiplexer de terminaux tels que GNU Screen ou tmux. Je vous laisse voir comment utiliser ces outils qui permettent de « créer plusieurs terminaux dans un seul terminal ».
J'en profite aussi pour ajouter un conseil : vous pouvez décorréler le test de votre client et de votre server en utilisant curl comme client (nous avons donné un exemple mais vous pouvez généraliser). Cela permet de séparer les problèmes et voir si le server répond correctement.