SNMP 代理在单元测试期间断开连接

SNMP Agent Disconnects During Unit-test

我已经为我的 SNMPv3 子代理创建了一个单元测试,我似乎 运行 遇到了问题。当它工作时,它工作得很好。但是,每隔几次我 运行 单元测试主节点就会断开子代理会话。另外,我绝对不想使用 SNMP,但这是一个要求。

我正在 运行使用 net-snmp 5.7.3 宁 Fedora 28

这里是单元测试的描述:

  1. 启动 SNMPv3 子代理(每次都有效)
  2. 创建客户端会话并连接到本地主机上的 SNMP 主机
  3. 为子代理注册的每个 OID 设置整数或字符串值 (这里通常会失败)
  4. 获取子代理注册的每个 OID 的整数或字符串值,并且 EXPECT_TRUE(值== TEST_VALUE)

我看到以下行为:

  1. 一切正常
  2. 客户端有时会在 GET 或 SET 上永远挂起
  3. 只是这个错误:"AgentX master disconnected us, reconnecting in 15"
  4. 这两条错误消息: "AgentX master disconnected us, reconnecting in 15" "transport->sock got negative fd value -1"
  5. 这三个消息:"received broken packet. closing session" "AgentX master disconnected us, reconnecting in 15""AgentX master disconnected us, reconnecting in 15"

在查看 net-snmp 源代码后,我能说的最好的是有时数据包由于某种原因格式不正确,但我认为这并不能涵盖我遇到的所有不同问题。

我还有一个 C# SNMP 客户端,它从未 运行 解决任何这些问题,所以我看不出它与服务器有何关系。

对于可能 运行 遇到此问题的任何人:

解决方法很简单,就是运行将subagent和client分在不同的进程中。我在同一个 googletest 进程中 运行ning 子代理和客户端,这引起了很多冲突。我想我应该意识到使用像 net-snmp 这样的库这样做是不安全的。