Testowanie kodu usługi Azure Data Lake Analytics

Usługa Azure Data Lake udostępnia język U-SQL . Język U-SQL łączy deklaratywny język SQL z imperatywnego języka C# w celu przetwarzania danych w dowolnej skali. Z tego dokumentu dowiesz się, jak tworzyć przypadki testowe dla kodu U-SQL i rozszerzonego operatora zdefiniowanego przez użytkownika (UDO).

Ważne

Usługa Azure Data Lake Analytics wycofana 29 lutego 2024 r. Dowiedz się więcej z tego ogłoszenia.

Na potrzeby analizy danych organizacja może używać usługi Azure Synapse Analytics lub Microsoft Fabric.

Testowanie skryptów U-SQL

Skrypt U-SQL jest kompilowany i zoptymalizowany pod kątem kodu wykonywalnego do uruchamiania na platformie Azure lub na komputerze lokalnym. Proces kompilacji i optymalizacji traktuje cały skrypt U-SQL jako całość. Nie można wykonać tradycyjnego testu jednostkowego dla każdej instrukcji. Jednak przy użyciu zestawu SDK testu U-SQL i lokalnego zestawu SDK uruchamiania można wykonywać testy na poziomie skryptu.

Tworzenie przypadków testowych dla skryptu U-SQL

Azure Data Lake Tools for Visual Studio umożliwia tworzenie przypadków testowych skryptu U-SQL.

  1. Kliknij prawym przyciskiem myszy skrypt U-SQL w Eksplorator rozwiązań, a następnie wybierz pozycję Utwórz test jednostkowy.

  2. Utwórz nowy projekt testowy lub wstaw przypadek testowy do istniejącego projektu testowego.

    Data Lake Tools for Visual Studio — tworzenie konfiguracji projektu testowego U-SQL

Zarządzanie testowym źródłem danych

Podczas testowania skryptów U-SQL potrzebne są pliki wejściowe testowe. Aby zarządzać danymi testowymi, w Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt U-SQL i wybierz pozycję Właściwości. Źródło można wprowadzić w obszarze Testowe źródło danych.

Data Lake Tools for Visual Studio — konfigurowanie źródła danych testowych projektu

Po wywołaniu interfejsu Initialize() w zestawie SDK testu U-SQL tymczasowy folder główny danych lokalnych jest tworzony w katalogu roboczym projektu testowego. Wszystkie pliki i foldery w folderze źródła danych testowych są kopiowane do tymczasowego folderu głównego danych lokalnych przed uruchomieniem przypadków testowych skryptu U-SQL. Możesz dodać więcej folderów źródła danych testowych, dzieląc ścieżkę folderu danych testowych średnikami.

Zarządzanie środowiskiem bazy danych na potrzeby testowania

Jeśli skrypty U-SQL używają obiektów bazy danych U-SQL lub wysyłają do nich zapytania, przed uruchomieniem przypadków testowych U-SQL należy zainicjować środowisko bazy danych. Takie podejście może być konieczne podczas wywoływania procedur składowanych. Interfejs Initialize() w zestawie SDK testu U-SQL pomaga wdrożyć wszystkie bazy danych, do których odwołuje się projekt U-SQL, do tymczasowego lokalnego folderu głównego danych w katalogu roboczym projektu testowego.

Aby uzyskać więcej informacji na temat zarządzania odwołaniami projektu bazy danych U-SQL dla projektu U-SQL, zobacz Reference a U-SQL database project (Dokumentacja projektu bazy danych U-SQL).

Weryfikowanie wyników testu

Interfejs Run() zwraca wynik wykonania zadania. 0 oznacza sukces, a 1 oznacza niepowodzenie. Możesz również użyć funkcji potwierdzenia języka C#, aby zweryfikować dane wyjściowe.

Uruchamianie przypadków testowych w programie Visual Studio

Projekt testu skryptu U-SQL jest oparty na strukturze testów jednostkowych języka C#. Po utworzeniu projektu wybierz pozycję Testuj>Eksploratora testówsystemu Windows>. Przypadki testowe można uruchamiać z Poziomu Eksploratora testów. Alternatywnie kliknij prawym przyciskiem myszy plik .cs w teście jednostkowym i wybierz polecenie Uruchom testy.

Testowanie obiektów zdefiniowanych przez użytkownika języka C#

Tworzenie przypadków testowych dla obiektów zdefiniowanych przez użytkownika języka C#

Możesz użyć struktury testów jednostkowych języka C#, aby przetestować operatory zdefiniowane przez użytkownika w języku C#. Podczas testowania obiektów zdefiniowanych przez użytkownika należy przygotować odpowiednie obiekty IRowset jako dane wejściowe.

Istnieją dwa sposoby tworzenia obiektu IRowset :

  • Załaduj dane z pliku, aby utworzyć zestaw 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');
    
  • Użyj danych z kolekcji danych, aby utworzyć zestaw 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());
    

Weryfikowanie wyników testu

Po wywołaniu funkcji UDO można zweryfikować wyniki za pomocą weryfikacji wartości schematu i zestawu wierszy przy użyciu funkcji potwierdzenia języka C#. Do rozwiązania można dodać projekt U-SQL C# UDO Unit Test Project . W tym celu wybierz pozycję Plik > nowy > projekt w programie Visual Studio.

Uruchamianie przypadków testowych w programie Visual Studio

Po utworzeniu projektu wybierz pozycję Testuj>Eksploratora testówsystemu Windows>. Przypadki testowe można uruchamiać z Poziomu Eksploratora testów. Alternatywnie kliknij prawym przyciskiem myszy plik .cs w teście jednostkowym i wybierz polecenie Uruchom testy.

Uruchamianie przypadków testowych w usłudze Azure Pipelines

Zarówno projekty testowe skryptu U-SQL , jak i projekty testowe UDO języka C# dziedziczą projekty testów jednostkowych języka C#. Zadanie testowe programu Visual Studio w usłudze Azure Pipelines może uruchamiać te przypadki testowe.

Uruchamianie przypadków testowych U-SQL w usłudze Azure Pipelines

W przypadku testu U-SQL upewnij się, że ładujesz CPPSDK się na komputerze kompilacji, a następnie przekaż ścieżkę CPPSDK do USqlScriptTestRunner(cppSdkFolderFullPath: @"").

Co to jest CPPSDK?

CPPSDK to pakiet zawierający Microsoft Visual C++ 14 i Windows SDK 10.0.10240.0. Ten pakiet zawiera środowisko wymagane przez środowisko uruchomieniowe U-SQL. Ten pakiet można pobrać w folderze instalacji Azure Data Lake Tools for Visual Studio:

  • W przypadku programu Visual Studio 2015 jest on w obszarze 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
  • W przypadku programu Visual Studio 2017 jest on w obszarze C:\Program Files (x86)\Microsoft Visual Studio\2017\<Visual Studio Edition>\SDK\ScopeCppSDK
  • W przypadku programu Visual Studio 2019 jest on w obszarze C:\Program Files (x86)\Microsoft Visual Studio\2019\<Visual Studio Edition>\SDK\ScopeCppSDK

Przygotowywanie zestawu CPPSDK w agencie kompilacji usługi Azure Pipelines

Najbardziej typowym sposobem przygotowania zależności CPPSDK w usłudze Azure Pipelines jest następujący:

  1. Spakuj folder zawierający biblioteki CPPSDK.

  2. Zaewidencjonuj plik .zip w systemie kontroli źródła. Plik .zip gwarantuje, że zaewidencjonujesz wszystkie biblioteki w folderze CPPSDK, aby pliki nie zostały zignorowane z .gitignore powodu pliku.

  3. Rozpakuj plik .zip w potoku kompilacji.

  4. Wskaż USqlScriptTestRunner ten rozpakowany folder na komputerze kompilacji.

Uruchamianie przypadków testowych UDO języka C# w usłudze Azure Pipelines

W przypadku testu UDO języka C# należy odwołać się do następujących zestawów, które są wymagane dla obiektów zdefiniowanych przez użytkownika.

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

Jeśli odwołujesz się do nich za pośrednictwem pakietu NuGet Microsoft.Azure.DataLake.USQL.Interfaces, upewnij się, że dodano zadanie przywracania NuGet w potoku kompilacji.

Następne kroki