Tester votre code Azure Data Lake Analytics

Azure Data Lake fournit le langage U- SQL. U-SQL combine le langage SQL déclaratif avec le langage C# impératif pour traiter des données quelle que soit l’échelle. Dans ce document, vous allez apprendre à créer des cas de test pour U-SQL et du code C# UDO (opérateur défini par l’utilisateur) étendu.

Important

Azure Data Lake Analytics mis hors service le 29 février 2024. Découvrez-en plus avec cette annonce.

Pour l’analytique des données, votre organization peut utiliser Azure Synapse Analytics ou Microsoft Fabric.

Tester les scripts U-SQL

Le script U-SQL est compilé et optimisé pour le code exécutable, en vue d’une exécution dans Azure ou sur votre ordinateur local. Le processus de compilation et d’optimisation traite l’intégralité du script U-SQL. Vous ne pouvez pas effectuer un test unitaire traditionnel pour chaque instruction. Cependant, en utilisant le SDK de test U-SQL et le SDK d’exécution locale, vous pouvez effectuer des tests au niveau du script.

Créer des cas de test pour le script U-SQL

Azure Data Lake Tools pour Visual Studio vous permet de créer des cas de test pour le script U-SQL.

  1. Cliquez avec le bouton droit sur un script U-SQL dans l’Explorateur de solutions, puis sélectionnez Créer un test unitaire.

  2. Créez un projet de test ou insérez le cas de test dans un projet de test existant.

    Data Lake Tools pour Visual Studio - Créer une configuration de projet de test U-SQL

Gérer la source de données de test

Lorsque vous testez des scripts U-SQL, vous avez besoin de fichiers d’entrée de test. Pour gérer les données de test, dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet U-SQL et sélectionnez Propriétés. Vous pouvez entrer une source dans Source de données de test.

Data Lake Tools pour Visual Studio - Configurer la source des données de test du projet

Quand vous appelez l'interface Initialize() dans le kit de développement logiciel (SDK) de test d’U-SQL, un dossier racine de données locales temporaire est créé sous le répertoire de travail du projet de test. Tous les fichiers et dossiers du dossier de source de données de test sont copiés dans le dossier racine de données locales temporaire avant l’exécution des cas de test de script U-SQL. Vous pouvez ajouter des dossiers de source de données de test en divisant le chemin du dossier des données de test à l’aide d’un point-virgule.

Gérer l’environnement de base de données pour les tests

Si vos scripts U-SQL utilisent des objets de base de données U-SQL ou interrogent à l’aide de ceux-ci, vous devez initialiser l’environnement de base de données avant d’exécuter les cas de test U-SQL. Cette approche peut être nécessaire lors de l’appel de procédures stockées. L’interface Initialize() du SDK de test U-SQL vous permet de déployer toutes les bases de données qui sont référencées par le projet U-SQL dans le dossier racine des données local temporaire, lui-même situé dans le répertoire de travail du projet de test.

Pour plus d’informations sur la gestion des références de projet de base de données U-SQL pour un projet U-SQL, consultez Référencer un projet de base de données U-SQL.

Vérifier les résultats du test

L’interface Run() retourne les résultats de l’exécution d’une tâche. 0 signifie Réussite, 1 signifie Échec. Vous pouvez également utiliser les fonctions C# assert pour vérifier les sorties.

Exécuter des cas de test dans Visual Studio

Un projet de test du script U-SQL s’appuie sur le framework de test unitaire C#. Après avoir généré le projet, sélectionnez Test>Windows>Explorateur de tests. Vous pouvez exécuter des cas de test à partir de l’Explorateur de tests. Vous pouvez également cliquer sur le fichier .cs dans votre test unitaire, puis sélectionner Exécuter les tests.

Tester les opérateurs définis par l’utilisateur (UDO) C#

Créer des cas de test pour les UDO C#

Vous pouvez utiliser le framework de test unitaire C# pour tester vos opérateurs définis par l’utilisateur C#. Lorsque vous testez les opérateurs définis par l’utilisateur, vous devez préparer les objets IRowset correspondants comme des entrées.

Il existe deux façons de créer un objet IRowset :

  • Charger des données à partir d’un fichier pour créer IRowset :

    //Schema: "a:int, b:int"
    USqlColumn<int> col1 = new USqlColumn<int>("a");
    USqlColumn<int> col2 = new USqlColumn<int>("b");
    List<IColumn> columns = new List<IColumn> { col1, col2 };
    USqlSchema schema = new USqlSchema(columns);
    
    //Generate one row with default values
    IUpdatableRow output = new USqlRow(schema, null).AsUpdatable();
    
    //Get data from file
    IRowset rowset = UnitTestHelper.GetRowsetFromFile(@"processor.txt", schema, output.AsReadOnly(), discardAdditionalColumns: true, rowDelimiter: null, columnSeparator: '\t');
    
  • Utiliser les données d’une collecte pour créer IRowset :

    //Schema: "a:int, b:int"
    USqlSchema schema = new USqlSchema(
        new USqlColumn<int>("a"),
        new USqlColumn<int>("b")
    );
    
    IUpdatableRow output = new USqlRow(schema, null).AsUpdatable();
    
    //Generate Rowset with specified values
    List<object[]> values = new List<object[]>{
        new object[2] { 2, 3 },
        new object[2] { 10, 20 }
    };
    
    IEnumerable<IRow> rows = UnitTestHelper.CreateRowsFromValues(schema, values);
    IRowset rowset = UnitTestHelper.GetRowsetFromCollection(rows, output.AsReadOnly());
    

Vérifier les résultats du test

Après l’appel des fonctions UDO, vous pouvez vérifier les résultats par l’intermédiaire du schéma et de la vérification de la valeur Rowset à l’aide des fonctions C# Assert. Vous pouvez ajouter un projet de test unitaire C# U-SQL UDO à votre solution. Pour ce faire, sélectionnez Fichier > Nouveau > Projet dans Visual Studio.

Exécuter des cas de test dans Visual Studio

Après avoir généré le projet, sélectionnez Test>Windows>Explorateur de tests. Vous pouvez exécuter des cas de test à partir de l’Explorateur de tests. Vous pouvez également cliquer sur le fichier .cs dans votre test unitaire, puis sélectionner Exécuter les tests.

Exécuter des cas de test dans Azure Pipelines

Les projets de test du script U-SQL et les projets de test C# UDO héritent des projet de test unitaire C#. La tâche Visual Studio Test dans Azure Pipelines peut exécuter ces cas de test.

Exécuter des cas de test U-SQL dans Azure Pipelines

Pour un test U-SQL, assurez-vous que vous chargez CPPSDK sur votre ordinateur de build , puis passez le chemin CPPSDK à USqlScriptTestRunner(cppSdkFolderFullPath: @"").

Qu’est-ce que CPPSDK ?

CPPSDK est un package qui comprend Microsoft Visual C++ 14 et Windows SDK 10.0.10240.0. Ce package contient l’environnement nécessaire pour le runtime U-SQL. Ce package est disponible sous le dossier d’installation d’Azure Data Lake Tools pour Visual Studio :

  • Pour Visual Studio 2015, il se trouve sous C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Microsoft Azure Data Lake Tools for Visual Studio 2015\X.X.XXXX.X\CppSDK
  • Pour Visual Studio 2017, il se trouve sous C:\Program Files (x86)\Microsoft Visual Studio\2017\<Visual Studio Edition>\SDK\ScopeCppSDK
  • Pour Visual Studio 2019, il se trouve sous C:\Program Files (x86)\Microsoft Visual Studio\2019\<Visual Studio Edition>\SDK\ScopeCppSDK

Préparer CPPSDK dans l’agent de build Azure Pipelines

La méthode la plus courante pour préparer la dépendance CPPSDK dans Azure Pipelines est la suivante :

  1. Compressez le dossier qui contient les bibliothèques CPPSDK.

  2. Archivez le fichier .zip dans votre système de contrôle de code source Le fichier .zip garantit que toutes les bibliothèques du dossier CPPSDK sont archivées, pour qu’aucun fichier ne soit ignoré à cause d’un fichier .gitignore.

  3. Décompressez le fichier .zip dans le pipeline de build.

  4. Pointez USqlScriptTestRunner sur ce dossier décompressé sur l’ordinateur de build.

Exécuter des cas de test C# UDO dans Azure Pipelines

Pour le test C# UDO, veillez à référencer les assemblys ci-dessous, qui sont nécessaires pour les opérateurs définis par l’utilisateur.

  • Microsoft.Analytics.Interfaces
  • Microsoft.Analytics.Types
  • Microsoft.Analytics.UnitTest

Si vous les référencez via le package NuGet Microsoft.Azure.DataLake.USQL.Interfaces, veillez à ajouter une tâche de restauration NuGet dans votre pipeline de build.

Étapes suivantes