Тестирование кода 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.
В обозревателе решений щелкните правой кнопкой мыши сценарий U-SQL, а затем выберите Создать модульный тест.
Создайте новый тестовый проект или вставьте тестовый случай в существующий тестовый проект.
Управление источником тестовых данных
При тестировании сценариев U-SQL требуются файлы с тестовыми входными данными. Чтобы управлять тестовыми данными, нажмите правой кнопкой мыши проект U-SQL в Обозревателе решений и выберите Свойства. В поле Источник тестовых данных можно ввести источник.
При вызове 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 заключается в следующем:
Упакуйте в ZIP-файл папку с библиотеками CPPSDK.
Добавьте ZIP-файл в систему управления версиями Этот ZIP-файл гарантирует, что будут возвращены все библиотеки в папке CPPSDK, и позволяет избежать пропуска файлов из-за файла
.gitignore
.Распакуйте ZIP-файл в конвейер сборки.
Создайте для
USqlScriptTestRunner
ссылку на эту распакованную папку на компьютере сборки.
Запуск тестовых случаев для пользовательских операторов C# в Azure Pipelines
Для тестирования пользовательских операторов C# создайте ссылки на следующие необходимые сборки.
- Microsoft.Analytics.Interfaces
- Microsoft.Analytics.Types
- Microsoft.Analytics.UnitTest
Если вы ссылаетесь на них с помощью пакета NuGet Microsoft.Azure.DataLake.USQL.Interfaces, убедитесь, что вы добавили задачу восстановления NuGet в конвейер сборки.