Tester et superviser des functions
Lancer des invocations de test dans l'environnement isolé réel, lire le journal d'exécution et diagnostiquer une function en échec ou silencieuse.
Exécutez une function sur un payload réaliste avant de la câbler, puis servez-vous du journal d'exécution pour savoir ce qui s'est réellement passé en production. Les deux se trouvent dans l'éditeur de la function.
L'interface Functions est uniquement en anglais
Les écrans Functions ne sont pas traduits ; les libellés sont donc cités en anglais dans cet article.
Lancer une invocation de test
Ouvrez la function et utilisez l'onglet Test. Le test exige le statut Ready : une function qui n'a pas été compilée avec succès n'a rien à exécuter.
Charger un payload d'exemple
Sélectionnez Load example pour insérer un payload correspondant au type de la function. Les functions d'événement reçoivent une enveloppe complète pour n'importe quel type du catalogue, et les functions hook l'entrée typée de leur point d'ancrage.
L'éditeur d'entrée valide le JSON à la saisie et signale la ligne fautive s'il ne parvient pas à l'analyser. Beautify JSON reformate le contenu.
Raccourcir le délai si besoin
Timeout override (ms) permet d'exécuter avec une échéance plus courte que celle configurée. Ce réglage ne peut que réduire : vous ne pouvez pas accorder à un gestionnaire plus de temps que sa propre limite. Laissez le champ vide pour utiliser le réglage de la function.
Exécuter et lire le résultat
Sélectionnez Run test. L'affichage dépend du type :
- Platform event montre un badge de code de sortie, la durée, l'identifiant de requête et la valeur retournée. Un code
0sans erreur signifie que tout s'est bien passé. - Hook montre la décision retournée par votre gestionnaire — continue ou deny — ainsi que le code et le message en cas de refus, et l'objet de résultat fourni.
Tout ce que votre gestionnaire a journalisé via console.log et ses variantes apparaît dans un panneau Logs sous le résultat, accompagné de quelques lignes de la plateforme indiquant le démarrage de l'exécution et l'appel du gestionnaire.
Une invocation de test est une invocation réelle
Les tests s'exécutent dans l'environnement isolé réel avec le vrai SDK. Une requête HTTP autorisée part effectivement, et une écriture de champ personnalisé est effectivement appliquée. Utilisez des données de test, et soyez prudent avec les hooks qui appellent un fournisseur externe : un test de contact.verification envoie réellement un e-mail.

Lire une violation de contrat
Si votre gestionnaire retourne quelque chose que le contrat du hook n'accepte pas, le résultat affiche un panneau Contract violation au lieu d'une décision. C'est le mode d'échec le plus important à prendre au sérieux : en production, la même réponse amène OmniLab à refuser l'opération, car un hook incompréhensible est traité comme un refus.
Les causes fréquentes sont le retour d'un objet ordinaire au lieu de passer par OmniLab.Flow, un refus sans code, ou un champ de résultat que le point d'ancrage ne définit pas.
La sortie d'une function d'événement n'est affichée qu'à titre de débogage
L'onglet Test montre ce qu'une function d'événement a retourné pour vous permettre de l'inspecter. En production, cette valeur est ignorée. Pour avoir un effet, votre function doit agir via le SDK.
Lire le journal d'exécution
L'onglet Executions liste les invocations réelles, les plus récentes d'abord. C'est l'outil principal pour répondre à la question « est-ce que ça s'est exécuté, et qu'est-ce qui s'est passé ».
| Colonne | Ce qu'elle indique |
|---|---|
| Started | Le moment du début de l'invocation |
| Source | Le mode de déclenchement — event, hook ou test |
| Exit code | 0 en cas de succès ; toute autre valeur, ou une erreur renseignée, signale un échec |
| Duration | La durée de bout en bout de l'invocation : elle peut donc être bien supérieure au temps du gestionnaire affiché sur un résultat de test |
| Error / Request id | Le message d'échec, ou l'identifiant de requête à transmettre au support |
Les enregistrements sont conservés 24 heures puis expirent : capturez donc ce dont vous aurez besoin pour une analyse post-incident tant qu'il est encore là. Conservez aussi chaque version de votre gestionnaire dans votre propre dépôt — la plateforme suit un numéro de version et l'artefact compilé, pas l'historique de votre source : c'est votre dépôt qui vous permettra de remettre la version précédente. La liste se charge par tranches de 20 avec Load more, et Refresh récupère les plus récents.
Sélectionnez une ligne pour ouvrir son détail, qui ajoute tout ce que la plateforme a enregistré :
- L'entrée et la sortie telles que stockées, plafonnées à 256 Ko de chaque côté. Si l'une des deux était plus longue, un bandeau indique les tailles d'origine.
- L'empreinte WASM — quelle version compilée s'est réellement exécutée. C'est ainsi que l'on distingue « mon nouveau code est cassé » de « l'ancienne version sert encore ».
- Les logs complets, ou une mention de troncature lorsque le gestionnaire a journalisé plus que la capture ne le permet.
- Les métriques de trace, dans une section repliable : le nombre d'appels SDK, la mémoire utilisée, et la répartition du temps entre l'attente avant démarrage, la préparation de l'exécution et l'exécution de votre code.

Consultez la répartition du temps avant d'optimiser
Si une function paraît lente, examinez les métriques de trace avant de toucher au code. Le temps qu'OmniLab consacre à préparer la première exécution après une modification échappe à votre gestionnaire et n'est pas décompté de votre délai. Seul le temps attribué à votre propre code peut être amélioré.
Causes probables en cas de problème
Toujours bloqué ?
Transmettez au support l'identifiant de requête de l'exécution en échec et l'identifiant de compilation de l'onglet Build. Les enregistrements d'exécution expirant au bout de 24 heures, capturez la vue de détail avant — entrée, erreur et métriques de trace incluses.
Pour aller plus loin
Configurer l'exécution et les secrets
Définir le délai et la mémoire d'une function, autoriser les hôtes sortants et stocker des identifiants dans des bundles de secrets.
Référence du SDK des functions
Exports attendus, formes d'entrée et de sortie, appels SDK disponibles, contrats des hooks, codes d'erreur, types d'événements et ensemble des limites.