usql 应用程序和脚本的单元测试
Unit testing for usql applier and scripts
我有一个自定义的 USql 应用程序,它扩展了 IApplier
class。
[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?);
我已经能够为应用程序的解耦部分编写单元 tests/ATPs。
如何为 Apply
方法的 C# 代码和依赖于 input/output 的自定义逻辑编写测试?
我如何使用定义的输入和输出自动测试 usql 脚本,以便不需要数据湖帐户?
VisualStudio 的 ADL 工具具有本地模式,因此您也可以在本地执行 UDO。虽然您可能无法在本地获得完整的并行处理,但您应该能够在本地测试您的代码 运行.
正如@Michael Rys 提到的,目前可以通过使用 U-SQL 本地 运行 来完成,但不一定在 Visual Studio.
中完成
我们正在尝试通过为您提供 "U-SQL Local Run SDK" 来解决此问题,您可以将其用作在本地 运行 脚本的一种方式。然后你可以使用它来测试 U-SQL 脚本,方法是编写一些 C# 单元测试包装器,然后 运行 在你的 CI system/build 服务器中进行这些单元测试。
我们正在通过 NuGet 发布此 SDK,但如果您对此感兴趣,可以给我发电子邮件至 xiaoyzhu at Microsoft dot com,我们可以将我们正在尝试发布的部分发送给您。
谢谢
Xiaoyong Zhu 来自 Azure Data Lake 团队
在我们发布独立的 U-SQL Local运行 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.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.0.XXXX。 0\CppSDK”
只需从这两个文件夹中复制文件并将它们放在如下位置:
C:\USQLLocalRunSDK
然后您可以使用 "LocalRunHelper.exe" 编译和 运行 您的本地 u-sql 脚本。在编译命令行上,您需要两个选项:
-DataRoot "Where your local metadata and data are stored",与 ADLA 工具中的设置选项相同。
-CppSDK "Where you copied the CppSDK files"
该工具将 return -1 错误(编译或 运行)和 0 成功。
只需 运行 该工具即可查看命令行选项列表。
我有一个自定义的 USql 应用程序,它扩展了 IApplier
class。
[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?);
我已经能够为应用程序的解耦部分编写单元 tests/ATPs。
如何为 Apply
方法的 C# 代码和依赖于 input/output 的自定义逻辑编写测试?
我如何使用定义的输入和输出自动测试 usql 脚本,以便不需要数据湖帐户?
VisualStudio 的 ADL 工具具有本地模式,因此您也可以在本地执行 UDO。虽然您可能无法在本地获得完整的并行处理,但您应该能够在本地测试您的代码 运行.
正如@Michael Rys 提到的,目前可以通过使用 U-SQL 本地 运行 来完成,但不一定在 Visual Studio.
中完成我们正在尝试通过为您提供 "U-SQL Local Run SDK" 来解决此问题,您可以将其用作在本地 运行 脚本的一种方式。然后你可以使用它来测试 U-SQL 脚本,方法是编写一些 C# 单元测试包装器,然后 运行 在你的 CI system/build 服务器中进行这些单元测试。
我们正在通过 NuGet 发布此 SDK,但如果您对此感兴趣,可以给我发电子邮件至 xiaoyzhu at Microsoft dot com,我们可以将我们正在尝试发布的部分发送给您。
谢谢
Xiaoyong Zhu 来自 Azure Data Lake 团队
在我们发布独立的 U-SQL Local运行 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.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.0.XXXX。 0\CppSDK”
只需从这两个文件夹中复制文件并将它们放在如下位置:
C:\USQLLocalRunSDK
然后您可以使用 "LocalRunHelper.exe" 编译和 运行 您的本地 u-sql 脚本。在编译命令行上,您需要两个选项: -DataRoot "Where your local metadata and data are stored",与 ADLA 工具中的设置选项相同。 -CppSDK "Where you copied the CppSDK files" 该工具将 return -1 错误(编译或 运行)和 0 成功。
只需 运行 该工具即可查看命令行选项列表。