Тестирование кода Azure Data Lake Analytics

Azure Data Lake предоставляет язык U-SQL. U-SQL — это язык, который объединяет декларативный SQL и императивный C#, позволяя обрабатывать данные любого масштаба. В этом документе описано, как создавать тестовые случаи для U-SQL и расширенного кода C# с пользовательскими операторами (UDO).

Важно!

Поддержка Azure Data Lake Analytics прекращена 29 февраля 2024 г. Дополнительные сведения см. в этом объявлении.

Для аналитики данных ваша организация может использовать Azure Synapse Analytics или Microsoft Fabric.

Тестирование скриптов U-SQL

Скрипт U-SQL компилируется и оптимизируется для исполняемого кода, выполняемого в Azure или на локальном компьютере. В процессе компиляции и оптимизации обрабатывается весь сценарий U-SQL. Выполнить традиционные "модульные тесты" для каждой инструкции невозможно. Но используя тестовый пакет SDK для U-SQL и пакет SDK для запуска в локальной среде, можно выполнить тесты на уровне сценариев.

Создание тестовых случаев для скриптов U-SQL

Средства Azure Data Lake для Visual Studio позволяют создавать тестовые случаи для скриптов U-SQL.

  1. В обозревателе решений щелкните правой кнопкой мыши сценарий U-SQL, а затем выберите Создать модульный тест.

  2. Создайте новый тестовый проект или вставьте тестовый случай в существующий тестовый проект.

    Создание конфигурации тестового проекта U-SQL с помощью Средств Data Lake для Visual Studio

Управление источником тестовых данных

При тестировании сценариев U-SQL требуются файлы с тестовыми входными данными. Чтобы управлять тестовыми данными, нажмите правой кнопкой мыши проект U-SQL в Обозревателе решений и выберите Свойства. В поле Источник тестовых данных можно ввести источник.

Data Lake Tools для Visual Studio — настройка источника тестовых данных проекта

При вызове Initialize() интерфейса в пакете SDK для тестирования U-SQL в рабочем каталоге тестового проекта создается временная корневая локальная папка данных. Все файлы и папки в папке тестового источника данных копируются во временную корневую локальную папку данных перед запуском тестовых случаев скрипта U-SQL. Можно добавить дополнительные папки источника тестовых данных, разделив пути к папкам с тестовыми данными точкой с запятой.

Управление средой базы данных для тестирования

Если скрипты U-SQL используют или выполняют запросы к объектам базы данных U-SQL, необходимо инициализировать среду базы данных перед выполнением тестовых случаев U-SQL. Этот подход может потребоваться при вызове хранимых процедур. Интерфейс Initialize() в тестовом пакете SDK для U-SQL позволяет развернуть все базы данных, на которые ссылается проект U-SQL, во временную локальную корневую папку данных в рабочей папке тестового проекта.

Дополнительные сведения об управлении ссылками на проекты базы данных U-SQL в проектах U-SQL см. в разделе Ссылка на проект базы данных U-SQL.

Проверка результатов теста

Интерфейс Run() возвращает результат выполнения задания. 0 означает успешное выполнение, а 1 — сбой. Чтобы проверить выходные данные, можно также использовать функции assert в C#.

Запуск тестовых случаев в Visual Studio

Тестовый проект сценария U-SQL создается на базе платформы модульного тестирования C#. После сборки проекта выберите Тест>Windows>Обозреватель тестов. Тестовые случаи можно запускать в Обозревателе тестов. Можно также нажать правой кнопкой мыши CS-файл в модульном тесте и выбрать Запустить тесты.

Тестирование определяемых пользователем операторов C#

Создание тестовых случаев для определяемых пользователем операторов C#

Платформу модульного тестирования C# можно использовать для тестирования пользовательских операторов C# (UDO). При тестировании UDO необходимо подготовить соответствующий объект IRowset в качестве входных данных.

Объект IRowset можно создать двумя способами.

  • Загрузить данные из файла для создания 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');
    
  • Использовать данные из коллекции данных для создания 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());
    

Проверка результатов теста

После вызова функций UDO результат можно проверить, используя схемы и проверку значения Rowset с помощью функций assert в C#. В решение можно добавить проект модульного теста для C# UDO на языке U-SQL. Для этого выберите Файл > Новый > проект в Visual Studio.

Запуск тестовых случаев в Visual Studio

После сборки проекта выберите Тест>Windows>Обозреватель тестов. Тестовые случаи можно запускать в Обозревателе тестов. Можно также нажать правой кнопкой мыши CS-файл в модульном тесте и выбрать Запустить тесты.

Запуск тестовых случаев в Azure Pipelines

Оба проекта, тестовые проекты сценария U-SQL и тестовые проекты UDO C#, наследуют проекты модульного теста C#. Эти тестовые случаи можно выполнять с помощью задачи тестирования Visual Studio в Azure Pipelines.

Запуск тестовых случаев U-SQL в Azure Pipelines

Перед тестированием U-SQL убедитесь, что пакет CPPSDK загружен на компьютер сборки, а затем передайте путь CPPSDK в USqlScriptTestRunner(cppSdkFolderFullPath: @"").

Что такое CPPSDK?

CPPSDK — это пакет, включающий Microsoft Visual C++ 14 и Windows SDK 10.0.10240.0. В этот пакет включена среда, необходимая для среды выполнения U-SQL. Этот пакет можно получить в папке установки Средств Azure Data Lake для Visual Studio.

  • Для Visual Studio 2015: 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.
  • Для Visual Studio 2017: C:\Program Files (x86)\Microsoft Visual Studio\2017\<Visual Studio Edition>\SDK\ScopeCppSDK.
  • Для Visual Studio 2019: C:\Program Files (x86)\Microsoft Visual Studio\2019\<Visual Studio Edition>\SDK\ScopeCppSDK.

Подготовка CPPSDK в агенте сборки Azure Pipelines

Наиболее распространенный способ подготовки зависимости CPPSDK в Azure Pipelines заключается в следующем:

  1. Упакуйте в ZIP-файл папку с библиотеками CPPSDK.

  2. Добавьте ZIP-файл в систему управления версиями Этот ZIP-файл гарантирует, что будут возвращены все библиотеки в папке CPPSDK, и позволяет избежать пропуска файлов из-за файла .gitignore.

  3. Распакуйте ZIP-файл в конвейер сборки.

  4. Создайте для USqlScriptTestRunner ссылку на эту распакованную папку на компьютере сборки.

Запуск тестовых случаев для пользовательских операторов C# в Azure Pipelines

Для тестирования пользовательских операторов C# создайте ссылки на следующие необходимые сборки.

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

Если вы ссылаетесь на них с помощью пакета NuGet Microsoft.Azure.DataLake.USQL.Interfaces, убедитесь, что вы добавили задачу восстановления NuGet в конвейер сборки.

Дальнейшие действия