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



我已经为我的 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 主站断开了我们的连接,在 15 中重新连接"
  4. 这两个错误消息: "AgentX 主站断开了我们的连接,在 15 后重新连接" "运输>袜子的 FD 值为负 -1">
  5. 这三条消息:"收到损坏的数据包。闭幕式" "AgentX 主服务器断开了我们的连接,在 15 中重新连接" "AgentX 主服务器断开了我们的连接,在 15 中重新连接">

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

我还有一个 C# SNMP 客户端,它从未遇到过任何问题,所以我看不出它与服务器的关系。

对于任何可能遇到这种情况的人:

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

最新更新