2016-06-09 82 views
4

我有一個自定義的USql應用程序,它擴展IApplier類。usql applier和腳本的單元測試

[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

之前,我們的船獨立的U型SQL Localrun SDK包,請得到您安裝ADLA工具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。您還需要Visual Studio 2015的「C:\ Program Files文件(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Microsoft Azure Data Lake DRI Tools \ 2.0.XXXX.0 \ CppSDK」

只要複製這兩個文件夾中的文件並把它們地方,比如:

C:\ USQLLocalRunSDK

然後你可以使用「LocalRunHelper.exe」編譯和本地運行你的U-SQL腳本。在編譯命令行上,您需要兩個選項: -DataRoot「存儲本地元數據和數據的位置」,與ADLA Tool中的設置選項相同。 -CppSDK「您複製CppSDK文件的位置」 該工具在編譯或運行時將返回-1,成功時返回0。

只需運行該工具即可查看命令行選項列表。

+0

只是一個更新,我們已經發布了獨立的SDK。 https://www.nuget.org/packages/Microsoft.Azure.DataLake.USQL.SDK 此處的文檔: https://docs.microsoft.com/en-us/azure/data-lake-analytics/數據湖分析數據湖 - 工具 - 本地運行 –

0

的VisualStudio中的ADL工具有本地模式,所以你可以做本地執行也UDOs的。雖然您可能無法在本地獲得完整的並行處理,但您應該能夠在本地運行中測試您的代碼。

+1

我可以手動測試腳本,但是,有沒有辦法讓我自動化測試。例如。另一位開發人員對腳本進行了更改,如果它仍然滿足輸入/輸出要求,我需要定期進行測試。尋找生產腳本的單元測試方面。 –

3

正如@邁克爾RYS提到,目前可以通過使用U-SQL本地運行完成,但在Visual Studio不一定。

我們正在試圖通過提供你一個「U-SQL本地運行SDK」,它可以作爲一種本地運行腳本中使用來解決這個問題。然後,可以通過編寫一些C#單元測試包裝來測試U-SQL腳本,然後在CI系統/構建服務器中運行這些單元測試。

我們正在通過NuGet發佈此SDK,但如果您對此感興趣,您可以在微點.com的xiaoyzhu上給我發一封電子郵件,我們可以向您發送我們試圖發佈的這些內容。

感謝

小勇朱從Azure的數據湖隊