Модульное тестирование приложения и скриптов usql

У меня есть пользовательское приложение USql, которое расширяет класс IApplier.

[SqlUserDefinedApplier]
public class CsvApplier : IApplier
{
    public CsvApplier()
    {
        //totalcount = count;
    }
    public override IEnumerable<IRow> Apply(IRow input, IUpdatableRow output)
    {
        //....custom logic
        //yield return or yield break
    }
}

Затем это приложение используется из сценария Usql как

@log =
SELECT t.ultimateID,
t.siteID,
.
.
.
t.eTime,
t.hours
FROM @logWithCount
CROSS APPLY
new BSWBigData.USQLApplier.CsvApplier() AS t(ultimateID string, siteID string, .... , eTime string, hours double, count long?);

Мне удалось написать модульные тесты / ATP для отдельных частей приложения.

Как я могу написать тесты для кода C # метода Apply и пользовательской логики в зависимости от ввода / вывода? Как я могу автоматизировать тестирование сценариев usql с определенными входными и выходными данными, при которых учетная запись озера данных не требуется?


person Muhammad Umar Farooq    schedule 09.06.2016    source источник


Ответы (3)


Прежде чем мы отправим автономный пакет SDK U-SQL Localrun, получите необходимые файлы из того места, где вы установили ADLA Tool для VS.

В VS2015 все зависимости, необходимые для локального запуска, находятся в «C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Microsoft Azure Data Lake DRI Tools для Visual Studio 2015 \ 2.0.XXXX». 0 \ LocalRunSDK. Вам также понадобится «C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Microsoft Azure Data Lake DRI Tools для Visual Studio 2015 \ 2.0.XXXX.0 \ CppSDK».

Просто скопируйте файлы из этих двух папок и поместите их где-нибудь, например:

C: \ USQLLocalRunSDK

Затем вы можете использовать LocalRunHelper.exe для локальной компиляции и запуска ваших скриптов u-sql. В командной строке компиляции вам понадобятся два параметра: -DataRoot «Где хранятся ваши локальные метаданные и данные», то же самое, что и параметр настройки в ADLA Tool. -CppSDK «Куда вы скопировали файлы CppSDK» Этот инструмент вернет -1 в случае ошибки (компиляция или запуск) и 0 в случае успеха.

Просто запустите инструмент, чтобы увидеть список параметров командной строки.

person Yu Dong Yang    schedule 13.06.2016
comment
Просто обновление, мы выпустили отдельный SDK. nuget.org/packages/Microsoft.Azure.DataLake.USQL.SDK И документ здесь: docs.microsoft.com/en-us/azure/data-lake-analytics/ - person Yu Dong Yang; 24.11.2016

Как упомянул @Michael Rys, в настоящее время это можно сделать с помощью локального запуска U-SQL, но не обязательно в Visual Studio.

Мы пытаемся решить эту проблему, предоставляя вам «U-SQL Local Run SDK», который вы можете использовать как способ локального запуска ваших скриптов. Затем вы можете использовать его для тестирования сценариев U-SQL, написав несколько оболочек модульных тестов C #, а затем запустить эти модульные тесты в вашей системе CI / серверах сборки.

Мы находимся в процессе публикации этого SDK через NuGet, но если он вам интересен, вы можете написать мне электронное письмо на xiaoyzhu в Microsoft dot com, и мы отправим вам фрагменты, которые мы пытаемся выпустить.

Спасибо

Сяоюн Чжу из команды Azure Data Lake

person Xiaoyong Zhu    schedule 12.06.2016

Инструменты ADL для VisualStudio имеют локальный режим, поэтому вы можете выполнять локальное выполнение также UDO. Хотя вы не можете получить полную параллельную обработку локально, у вас должна быть возможность протестировать свой код при локальном запуске.

person Michael Rys    schedule 09.06.2016
comment
Однако я могу протестировать скрипты вручную, есть ли способ автоматизировать тестирование. Например. Другой разработчик внес изменения в сценарий, и мне нужно периодически проверять, удовлетворяет ли он требованиям ввода / вывода. Ищем аспекты модульного тестирования скриптов в продакшене. - person Muhammad Umar Farooq; 10.06.2016