在node.js / net上使用Aedes Broker进行MQTT QoS自动化测试

时间:2019-01-18 14:56:11

标签: node.js mqtt netsh

我想测试MQTT协议的QoS。我使用伊蚊作为经纪人。

对于测试QoS 2,我必须评估的测试用例之一是运行一种方案,即一旦客户端发布了一条消息,则代理将其转发给接收该消息的订户,但是{ 3}}和/或acknowledgement(tcp)未被经纪人接收。通过运行这种情况,我检查订户两次没有收到消息。

所以我的计划是,一旦客户端发布一条消息以运行aedes.authorizePublish代理方并设置休眠状态几秒钟,同时阻止使用的端口上订户的IP(1883) )。

尝试过:

netsh advfirewall firewall add rule name="IP Block" dir=in 
protocol=TCP interface=any action=block remoteip=172.30.10.120 
localport=1883

因此,我希望代理将消息发布到172.30.10.120(订阅者),并且在我用以下命令反转netsh命令之前,代理不应接收来自订阅者的任何数据包

netsh advfirewall firewall delete rule name="IP Block" remoteip=172.30.10.120.

这是运行伊蚊经纪人的代码:

mqttBroker.authorizePublish = function (client, packet) {
    if (packet.topic === 'hello' && client.id === '01B4C') {
        let PACK = packet;
        setTimeout(function (packet) {
            mqttBroker.publish(PACK)
        }, 10000)
    }
}

所以我希望得到这样的数据包: pubrec(mqtt)

但是,从上图中获得的数据包是我从已订阅的客户端中拔出eth电缆并将其放回去时得到的。

我使用netsh命令从过程中获得的数据包是: Packets when I remove eth cable from subscribed client

我的问题是:

  1. 这是测试MQTT QoS的好方法吗?
  2. 我该如何以自动化方式模拟这种情况,在这种情况下,无需卸下电缆,而我会阻塞一种连接方式?

预先感谢

P.S。初学者。.

0 个答案:

没有答案