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