bonjour je suis novice avec docker et j'ai un exo je ne sais pas comment commencer



Pour la correction de cet exercice, nous allons essayer de créer un pipeline de CI/CD pour tester une API. Nous allons nous placer dans la peau d'une équipe censé créer une batterie de test à appliquer automatiquement avant déploiement.

Dans notre scénario, une équipe a créé une application qui permet d'utiliser un algorithme de sentiment analysis: il permet de prédire si une phrase (en anglais) a plutôt un caractère positif ou négatif. Cette API va être déployée dans un container dont l'image est pour l'instant datascientest/fastapi:1.0.0.

Regardons les points d'entrée de notre API:

/status renvoie 1 si l'API fonctionne
/permissions renvoie les permissions d'un utilisateur
/v1/sentiment renvoie l'analyse de sentiment en utilisant un vieux modèle
/v2/sentiment renvoie l'analyse de sentiment en utilisant un nouveau modèle
Le point d'entrée /status permet simplement de vérifier que l'API fonctionne bien. Le point d'entrée /permissions permet à quelqu'un, identifié par un username et un password de voir à quelle version du modèle il a accès. Enfin les deux derniers prennent une phrase en entrée, vérifie que l'utilisateur est bien identifiée, vérifie que l'utilisateur a bien le droit d'utiliser ce modèle et si c'est le cas, renvoie le score de sentiment: -1 est négatif; +1 est positif.

Pour télécharger l'image, lancez la commande suivante

Code : Sélectionner tout - Visualiser dans une fenêtre à part
docker image pull datascientest/fastapi:1.0.0

Pour tester l'API manuellement, lancez la commande

Code : Sélectionner tout - Visualiser dans une fenêtre à part
docker container run -p 8000:8000 datascientest/fastapi:1.0.0

L'API est disponible sur le port 8000 de la machine hôte. Au point d'entrée /docs, vous pouvez trouvez une description détaillée des points d'entrée.

Nous allons définir certains scénarios de tests qui se feront via des containers distincts.

2. Tests


Authorization
Dans ce deuxième test, nous allons vérifier que la logique de gestion des droits de nos utilisateurs fonctionne correctement. Nous savons que bob a accès uniquement à la v1 alors que alice a accès aux deux versions. Pour chacun des utilisateurs, nous allons faire une requête sur les points d'entrée /v1/sentiment et /v2/sentiment: on doit alors fournir les arguments username, password et sentence qui contient la phrase à analyser.


un script python m'aiderait
thank you for help