Condividi tramite


Testare il codice Azure Data Lake Analytics

Azure Data Lake fornisce il linguaggio U-SQL . U-SQL combina SQL dichiarativo con C# imperativo per elaborare i dati su qualsiasi scala. In questo documento viene illustrato come creare test case per il codice OPERATORE definito dall'utente U-SQL e C# esteso.

Importante

Azure Data Lake Analytics ritirato il 29 febbraio 2024. Altre informazioni con questo annuncio.

Per l'analisi dei dati, l'organizzazione può usare Azure Synapse Analytics o Microsoft Fabric.

Testare gli script U-SQL

Lo script U-SQL viene compilato e ottimizzato per l'esecuzione del codice eseguibile in Azure o nel computer locale. Il processo di compilazione e ottimizzazione considera l'intero script U-SQL nel suo complesso. Non è possibile eseguire un unit test tradizionale per ogni istruzione. Tuttavia, usando l'U-SQL test SDK in esecuzione locale è possibile eseguire test a livello di script.

Creare test case per lo script U-SQL

Strumenti Azure Data Lake per Visual Studio consente di creare test case dello script U-SQL.

  1. Fare clic con il pulsante destro del mouse su uno script U-SQL in Esplora soluzioni, quindi selezionare Crea unit test.

  2. Creare un nuovo progetto di test o inserire il test case in un progetto di test esistente.

    Strumenti Data Lake per Visual Studio -- crea una configurazione di progetto di test U-SQL

Gestire l'origine dei dati di test

Quando si testano script U-SQL, sono necessari file di input di test. Per gestire i dati di test, in Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto U-SQL e scegliere Proprietà. È possibile immettere un'origine in Origine dati di test.

Strumenti Data Lake per Visual Studio -- configura l'origine dei dati di test del progetto

Quando si chiama l'interfaccia nell'SDK Initialize() di test U-SQL, viene creata una cartella radice dati locale temporanea nella directory di lavoro del progetto di test. Tutti i file e le cartelle nella cartella dell'origine dati di test vengono copiati nella cartella radice dati locale temporanea prima di eseguire i test case di script U-SQL. È possibile aggiungere più cartelle di origine dei dati di test suddividendo il relativo percorso con un punto e virgola.

Gestire l'ambiente di database a scopo di test

Se gli script U-SQL usano o eseguono query con oggetti di database U-SQL, è necessario inizializzare l'ambiente di database prima di eseguire test case U-SQL. Questo approccio può essere necessario quando si chiamano stored procedure. L'interfaccia Initialize() nell'U-SQL test SDK consente di distribuire tutti i database a cui fa riferimento il progetto U-SQL nella cartella radice dei dati locali temporanei nella directory di lavoro del progetto di test.

Per altre informazioni su come gestire i riferimenti al progetto di database U-SQL per un progetto U-SQL, vedere Fare riferimento a un progetto di database U-SQL.

Verificare i risultati del test

L'interfaccia Run() restituisce un risultato di esecuzione progetto. 0 significa successo e 1 significa errore. È possibile usare anche funzioni di asserzione C# per verificare gli output.

Eseguire test case in Visual Studio

Un progetto di test dello script U-SQL viene creato su un framework di unit test C#. Dopo aver compilato il progetto, selezionare Test>di Esplora test diWindows>. È possibile eseguire test case da Esplora test. In alternativa, fare clic con il pulsante destro del mouse sul file .cs nel unit test e scegliere Esegui test.

UDO di test C#

Creare test case per UDO C#

È possibile usare un framework di unit test C# per testare gli operatori definiti dall'utente C# (UDOs). Quando si testano gli UDO, è necessario preparare gli oggetti IRowset corrispondenti come input.

Esistono due modi per creare un oggetto IRowset :

  • Caricare i dati da un file per creare 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');
    
  • Usare i dati da una raccolta dati per creare 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());
    

Verificare i risultati del test

Dopo aver chiamato le funzioni UDO, è possibile verificare i risultati attraverso la verifica dello schema e del valore Rowset usando le funzioni Assert C#. È possibile aggiungere un progetto U-SQL C# UDO Unit Test alla soluzione. A tale scopo, selezionare File > Nuovo > progetto in Visual Studio.

Eseguire test case in Visual Studio

Dopo aver compilato il progetto, selezionare Test>di Esplora test diWindows>. È possibile eseguire test case da Esplora test. In alternativa, fare clic con il pulsante destro del mouse sul file .cs nel unit test e scegliere Esegui test.

Eseguire test case in Azure Pipelines

Entrambi i progetti di test di script U-SQL e i progetti di test UDO C# ereditano i progetti di unit test C#. L'attività di test di Visual Studio in Azure Pipelines può eseguire questi test case.

Eseguire test case U-SQL in Azure Pipelines

Per un test U-SQL, assicurarsi di caricare CPPSDK nel computer di compilazione e quindi passare il CPPSDK percorso a USqlScriptTestRunner(cppSdkFolderFullPath: @"").

Definizione di CppSDK

CPPSDK è un pacchetto che include Microsoft Visual C++ 14 e Windows SDK 10.0.10240.0. Questo pacchetto include l'ambiente necessario per il runtime U-SQL. È possibile ottenere questo pacchetto nella cartella di installazione di Strumenti Azure Data Lake per Visual Studio:

  • Per Visual Studio 2015, il pacchetto è disponibile in 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
  • Per Visual Studio 2017, il pacchetto è disponibile in C:\Program Files (x86)\Microsoft Visual Studio\2017\<Visual Studio Edition>\SDK\ScopeCppSDK
  • Per Visual Studio 2019, è in C:\Program Files (x86)\Microsoft Visual Studio\2019\<Visual Studio Edition>\SDK\ScopeCppSDK

Preparare CPPSDK nell'agente di compilazione di Azure Pipelines

Il modo più comune per preparare la dipendenza CPPSDK in Azure Pipelines è il seguente:

  1. Zip la cartella che include le librerie CPPSDK.

  2. Archiviare il file .zip nel sistema di controllo di origine. Il file .zip garantisce che sia possibile archiviare tutte le librerie nella cartella CPPSDK in modo che i file non siano ignorati a causa di un .gitignore file.

  3. Decomprimere il file .zip nella pipeline di compilazione.

  4. Puntare USqlScriptTestRunner a questa cartella non compressa nel computer di compilazione.

Eseguire test case di UDO C# in Azure Pipelines

Per un test UDO C#, assicurarsi di fare riferimento agli assembly seguenti, necessari per gli UDO.

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

Se li si fa riferimento tramite il pacchetto NuGet Microsoft.Azure.DataLake.USQL.Interfaces, assicurarsi di aggiungere un'attività Di ripristino NuGet nella pipeline di compilazione.

Passaggi successivi