Поделиться через


Проверка кода 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. Создайте новый тестовый проект или вставьте тестовый случай в существующий тестовый проект.

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

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

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

Средства Data Lake для 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 означает неудачу. Вы также можете использовать функции утверждения C# для проверки выходных данных.

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

Тестовый проект скрипта U-SQL построен на основе платформы модульных тестов C#. После сборки проекта выберите "Проверить>обозреватель тестовWindows>". Тестовые случаи можно запускать из обозревателя тестов. Кроме того, щелкните правой кнопкой мыши файл .cs в модульном тесте и выберите команду "Выполнить тесты".

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

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

Платформу модульного тестирования C# можно использовать для тестирования определяемых пользователем операторов C# (UDOS). При тестировании определяемых пользователем объектов необходимо подготовить соответствующие объекты 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 вы можете проверить результаты с помощью функции ASSERT в C#, проверяя значения схемы и набора строк. В решение можно добавить проект модульного теста U-SQL UDO на языке C#. Для этого выберите файл > нового > проекта в 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 Tools для 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. Запакуйте папку, содержащую библиотеки CPPSDK.

  2. Зафиксируйте файл .zip в вашей системе управления версиями. Файл .zip гарантирует, что вы проверяете все библиотеки в папке CPPSDK, чтобы файлы не пропускались из-за .gitignore файла.

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

  4. Укажите путь USqlScriptTestRunner к этой распакованной папке на компьютере сборки.

Запуск тестов UDO на C# в Azure Pipelines

Для теста UDO на C# необходимо ссылаться на следующие сборки для работы с этими объектами.

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

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

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