单元测试Azure EventHub,流分析作业和存储表

时间:2016-03-22 15:41:45

标签: unit-testing azure azure-table-storage azure-eventhub

我正在研究这个使用EventHub -> Stream Analytics Job -> Storage Table / Blob结构的项目,我想为它编写几个单元测试。

我可以测试EventHub发件人状态以查看查询是否具有预期的行为,但我如何检查数据是否被发送到表存储,因为整个过程不会立即发生从我点击EventHub到数据保存到存储的那一刻起,有一段很长的延迟。

1 个答案:

答案 0 :(得分:1)

首先创建一个新的Azure Table存储帐户,然后在该帐户中创建一个新的Azure表。在Stream Analytics作业中,为表存储添加新输出。设置输出详细信息时,您需要指定存储帐户,帐户密钥,表名以及事件中的哪些列名称将代表Azure表分区和行键。举个例子,我这​​样设置:

Output details screenshot

设置输出后,您可以创建一个简单的Stream Analytics查询,将输入事件从Event Hub映射到Azure Table输出。我还有一个名为'eventhub'的事件中心输入,具有发送/侦听权限。我的查询如下:

SELECT
   *
INTO
   tableoutput
FROM
   eventhub

此时点击Azure门户中的“开始”按钮以运行Stream Analytics作业。要生成事件,您可以按照here的说明操作,但将事件消息更改为:

string guid = Guid.NewGuid().ToString();
var message = "pk,rk,value\n" + guid + ",1,hello";
Console.WriteLine("{0} > Sending message: {1}", DateTime.Now, message);
eventHubClient.Send(new EventData(Encoding.UTF8.GetBytes(message))); 

要了解Azure Table结果,请下载TableXplorer之类的工具并输入存储帐户详细信息。双击Azure表,您应该看到如下所示的内容。请记住,您可能需要定期在TableXplorer查询中按F5 10-60秒,直到数据被推送完毕。当它出现时,它将如下所示:

TableXplorer Screenshot

对于编程单元测试,您需要将Event Hub代码中生成的分区键/行键值推送到数据结构中,并让工作人员使用点查询轮询Azure表。 Azure表使用情况的一个很好的概述是here