?>Array ( [lang] => fr [id] => 153 ) Scénario Cas Limite : Gestion d'Erreurs et Débogage d'une Librairie Externe Instable - WeAreCAS
fcmpact addPrototypes

Scénario Cas Limite : Gestion d'Erreurs et Débogage d'une Librairie Externe Instable

Scénario de test & Cas d'usage

Contexte Métier

Une équipe de R&D intègre une nouvelle bibliothèque C de simulation physique qui est encore en phase de test et potentiellement instable. Il est crucial de s'assurer que l'environnement SAS Viya est robuste face aux erreurs potentielles : échec de liaison avec la bibliothèque, erreurs de syntaxe dans la déclaration, et gestion des crashs potentiels du code C. Ce scénario teste les mécanismes de gestion d'erreur et de débogage.
Préparation des Données

Aucune préparation de données n'est nécessaire. Ce scénario se concentre sur la gestion des erreurs de l'action.

Copié !
1/* Aucune donnée requise pour ce test. */

Étapes de réalisation

1
Tentative d'ajout d'un prototype en liant à une bibliothèque partagée (.so) qui n'existe pas. Une erreur est attendue dans le log SAS.
Copié !
1PROC CAS;
2 fcmpact.addPrototypes
3 routineCode={"proto run_simulation(double) returns double;"}
4 library="non_existent_lib"
5 bridgeFile="/cas/caslibs/public/libs/non_existent_lib.so"
6 funcTable={name="sim_protos_fail", caslib="casuser"};
7QUIT;
2
Tentative d'appel de l'action sans le paramètre obligatoire 'routineCode'. Une erreur de syntaxe est attendue.
Copié !
1PROC CAS;
2 fcmpact.addPrototypes
3 library="physics_lib"
4 bridgeFile="/cas/caslibs/public/libs/physics_lib.so"
5 funcTable={name="sim_protos_fail2", caslib="casuser"};
6QUIT;
3
Ajout d'un prototype valide mais en activant l'option 'bridgeCatchSignals'. Cela prépare le terrain pour un débogage plus facile si la fonction C venait à crasher.
Copié !
1PROC CAS;
2 fcmpact.addPrototypes
3 routineCode={"proto stable_simulation(double) returns double;"}
4 library="physics_lib"
5 bridgeFile="/cas/caslibs/public/libs/physics_lib.so"
6 bridgeCatchSignals=true
7 funcTable={name="sim_protos_debug", caslib="casuser", replace=true};
8QUIT;

Résultat Attendu


L'étape 1 doit échouer avec un message d'erreur clair dans le log indiquant que le fichier spécifié dans 'bridgeFile' est introuvable. L'étape 2 doit échouer avec une erreur de syntaxe indiquant que le paramètre 'routineCode' est manquant. L'étape 3 doit réussir, créant la table 'sim_protos_debug' et configurant un pont de signalisation pour le débogage, démontrant ainsi que l'action peut à la fois signaler des erreurs de configuration de manière appropriée et fournir des options pour gérer l'instabilité du code externe.