usql应用程序和脚本的单元测试

时间:2016-06-09 05:50:29

标签: c# azure-data-lake u-sql

我有一个自定义的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。

如何编写Apply方法的C#代码和依赖于输入/输出的自定义逻辑的测试? 如何使用定义的输入和输出自动测试usql脚本,以便不需要数据湖帐户?

3 个答案:

答案 0 :(得分:3)

正如@Michael Rys所提到的,目前可以通过使用U-SQL本地运行来完成,但不一定在Visual Studio中。

我们正试图通过为您提供一个&#34; U-SQL Local Run SDK&#34;来解决这个问题,您可以将其用作在本地运行脚本的方法。然后,您可以通过编写一些C#单元测试包装器来测试U-SQL脚本,然后在CI系统/构建服务器中运行这些单元测试。

我们正在通过NuGet发布此SDK,但如果您对此感兴趣,可以通过Microsoft dot com的xiaoyzhu向我发送电子邮件,我们可以向您发送我们尝试发布的内容。

由于

来自Azure Data Lake团队的朱晓勇

答案 1 :(得分:3)

在我们发布独立的U-SQL Localrun SDK软件包之前,请从安装ADLA Tool for VS的位置获取所需的文件。

在VS2015中,本地运行所需的所有依赖项都在“C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Microsoft Azure Data Lake DRI Tools for 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 for Visual Studio 2015 \ 2.0.XXXX.0 \ CppSDK”

只需从这两个文件夹中复制文件,然后将它们放在以下位置:

C:\ USQLLocalRunSDK

然后您可以使用“LocalRunHelper.exe”在本地编译和运行您的u-sql脚本。在编译命令行上,您需要两个选项:   -DataRoot“存储本地元数据和数据的位置”,与ADLA Tool中的设置选项相同。   -CppSDK“复制CppSDK文件的位置” 错误(编译或运行)时该工具将返回-1,成功时返回0。

只需运行该工具即可查看命令行选项列表。

答案 2 :(得分:0)

VisualStudio的ADL工具具有本地模式,因此您也可以执行UDO的本地执行。虽然您可能无法在本地获得完整的并行处理,但您应该能够在本地运行中测试代码。