【问题标题】:Unit testing for usql applier and scriptsusql 应用程序和脚本的单元测试
【发布时间】:2016-06-09 05:50:29
【问题描述】:

我有一个自定义 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 脚本,从而不需要数据湖帐户?

【问题讨论】:

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


    【解决方案1】:

    在我们发布独立的 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 工具中的设置选项相同。 -CppSDK“您复制 CppSDK 文件的位置” 该工具将在错误(编译或运行)时返回 -1,在成功时返回 0。

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

    【讨论】:

    【解决方案2】:

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

    我们正在尝试通过为您提供“U-SQL 本地运行 SDK”来解决此问题,您可以将其用作在本地运行脚本的一种方式。然后,您可以通过编写一些 C# 单元测试包装器来利用它来测试 U-SQL 脚本,然后在您的 CI 系统/构建服务器中运行这些单元测试。

    我们正在通过 NuGet 发布此 SDK,但如果您对它感兴趣,可以给我发送电子邮件至 Microsoft dot com 的 xiaoyzhu,我们可以将我们正在尝试发布的部分发送给您。

    谢谢

    Azure Data Lake 团队的朱晓勇

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我可以手动测试脚本,但是有没有办法让我自动化测试。例如。另一个开发人员对脚本进行了更改,我需要定期测试它是否仍然满足输入/输出要求。寻找生产中脚本的单元测试方面。
      猜你喜欢
      • 2012-12-29
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      • 2015-08-13
      • 2022-10-14
      • 1970-01-01
      相关资源
      最近更新 更多