コード例 #1
0
 def test_handleGetNextPDU(self):
     readReturns = [1]
     read = (lambda oid: AP.Varbind(AP.VALUE_INTEGER,
                                    oid, readReturns.pop(0)))
     mjig = AX.MIBControl()
     mjig.addNode((0, 0), read)
     mjig.addNode((0, 1), read)
     sock = jigs.SocketJig()
     p = AX.PacketControl(sock, mjig)
     p.sessionID = 42
     # Test successful
     pkt = AP.GetNextPDU(True, 42, 23, 100, [AP.SearchRange((0, 0), ())])
     p.handle_GetNextPDU(pkt)
     self.assertEqual(len(sock.data), 1)
     sentPkt = AP.decode_packet(sock.data[0])[0]
     respPkt = AP.ResponsePDU(True, 42, 23, 100, 0, 0, 0,
                              (AP.Varbind(AP.VALUE_INTEGER, (0, 1), 1),))
     self.assertEqual(sentPkt, respPkt)
     # Test non-existent
     sock.data = []
     pkt = AP.GetNextPDU(True, 42, 23, 100, [AP.SearchRange((1, 0), ())])
     p.handle_GetNextPDU(pkt)
     self.assertEqual(len(sock.data), 1)
     sentPkt = AP.decode_packet(sock.data[0])[0]
     respPkt = AP.ResponsePDU(True, 42, 23, 100, 0, 0, 0,
                              (AP.Varbind(AP.VALUE_END_OF_MIB_VIEW,
                                          (1, 0)),))
     self.assertEqual(sentPkt, respPkt)
コード例 #2
0
 def test_sendNotify(self):
     sock = jigs.SocketJig()
     p = AX.PacketControl(sock, None)
     p.sessionID = 42
     vb = AP.Varbind(AP.VALUE_INTEGER, (0, 1, 2), 23)
     p.sendNotify([vb])
     self.assertEqual(sock.data,
                      [b"\x01\x0c\x10\x00"
                       b"\x00\x00\x00*\x00\x00\x00\x05"
                       b"\x00\x00\x00\x01\x00\x00\x00\x18"
                       b"\x00\x02\x00\x00"
                       b"\x03\x00\x00\x00\x00\x00\x00\x00"
                       b"\x00\x00\x00\x01\x00\x00\x00\x02"
                       b"\x00\x00\x00\x17"])
     self.assertEqual(list(p.packetLog.keys()), [(42, 5, 1)])
コード例 #3
0
ファイル: test_agentx.py プロジェクト: JamesB192/ntpsec-snap
 def test_handle_GetBulkPDU(self):
     readReturns = [1, 2, 3, 4, 5, 6]
     read = (
         lambda oid: AP.Varbind(AP.VALUE_INTEGER, oid, readReturns.pop(0)))
     mjig = AX.MIBControl()
     # non-repeated
     mjig.addNode((0, 0), read)
     mjig.addNode((0, 1), read)  # shouldn't see
     mjig.addNode((1, 0), read)
     mjig.addNode((1, 1), read)  # shouldn't see
     # repeated
     mjig.addNode((2, 0), read)
     mjig.addNode((2, 1), read)
     mjig.addNode((2, 2), read)  # shouldn't see
     mjig.addNode((3, 0), read)
     mjig.addNode((3, 1), read)
     mjig.addNode((3, 2), read)  # shouldn't see
     mjig.addNode((4, 0), read)  # shouldn't see
     sock = jigs.SocketJig()
     p = AX.PacketControl(sock, mjig)
     p.sessionID = 42
     pkt = AP.GetBulkPDU(True, 42, 23, 100, 2, 2, [
         AP.SearchRange((0, ), (1, ), True),
         AP.SearchRange((1, ), (2, ), True),
         AP.SearchRange((2, 0), (3, ), True),
         AP.SearchRange((3, 0), (), True)
     ])
     p.handle_GetBulkPDU(pkt)
     self.assertEqual(len(sock.data), 1)
     sentPkt = AP.decode_packet(sock.data[0])[0]
     respPkt = AP.ResponsePDU(
         True, 42, 23, 100, 0, 0, 0,
         (AP.Varbind(AP.VALUE_INTEGER,
                     (0, 0), 1), AP.Varbind(AP.VALUE_INTEGER, (1, 0), 2),
          AP.Varbind(AP.VALUE_INTEGER,
                     (2, 0), 3), AP.Varbind(AP.VALUE_INTEGER, (2, 1), 4),
          AP.Varbind(AP.VALUE_INTEGER,
                     (3, 0), 5), AP.Varbind(AP.VALUE_INTEGER, (3, 1), 6)))
     self.assertEqual(sentPkt, respPkt)
コード例 #4
0
 def test_handle_TestSetPDU(self):
     mjig = AX.MIBControl()
     readReturns = []
     read = (lambda oid: AP.Varbind(AP.VALUE_INTEGER,
                                    oid, readReturns.pop(0)))
     writeCalls = []
     writeReturns = []
     write = (lambda a, vb: (writeCalls.append((a, vb)),
                             writeReturns.pop(0))[1])
     mjig.addNode((0,), read, write)
     mjig.addNode((1,), read)
     sock = jigs.SocketJig()
     p = AX.PacketControl(sock, mjig)
     p.sessionID = 42
     # Test success
     readReturns = [10]
     writeReturns = [AP.ERR_NOERROR]
     pkt = AP.TestSetPDU(True, 42, 23, 100,
                         [AP.Varbind(AP.VALUE_INTEGER, (0,), 16)])
     p.handle_TestSetPDU(pkt)
     self.assertEqual(len(sock.data), 1)
     sentPkt = AP.decode_packet(sock.data[0])[0]
     respPkt = AP.ResponsePDU(True, 42, 23, 100, 0, 0, 0)
     self.assertEqual(sentPkt, respPkt)
     self.assertEqual(writeCalls,
                      [("test", AP.Varbind(AP.VALUE_INTEGER, (0,), 16))])
     self.assertEqual(mjig.setVarbinds,
                      [AP.Varbind(AP.VALUE_INTEGER, (0,), 16)])
     self.assertEqual(mjig.setHandlers, [write])
     self.assertEqual(mjig.setUndoData,
                      [AP.Varbind(AP.VALUE_INTEGER, (0,), 10)])
     # Test failure, no access
     mjig.setVarbinds = []
     mjig.setHandlers = []
     mjig.setUndoData = []
     sock.data = []
     readReturns = [10]
     writeReturns = [AP.ERR_NOERROR]
     writeCalls = []
     pkt = AP.TestSetPDU(True, 42, 23, 100,
                         [AP.Varbind(AP.VALUE_INTEGER, (0, 1), 16)])
     p.handle_TestSetPDU(pkt)
     self.assertEqual(len(sock.data), 1)
     sentPkt = AP.decode_packet(sock.data[0])[0]
     respPkt = AP.ResponsePDU(True, 42, 23, 100, 0, 6, 0)
     self.assertEqual(sentPkt, respPkt)
     self.assertEqual(writeCalls, [])
     self.assertEqual(mjig.setVarbinds, [])
     self.assertEqual(mjig.setHandlers, [])
     self.assertEqual(mjig.setUndoData, [])
     # Test failure, not writable
     mjig.setVarbinds = []
     mjig.setHandlers = []
     mjig.setUndoData = []
     sock.data = []
     readReturns = [10]
     writeReturns = [AP.ERR_NOERROR]
     writeCalls = []
     pkt = AP.TestSetPDU(True, 42, 23, 100,
                         [AP.Varbind(AP.VALUE_INTEGER, (1,), 16)])
     p.handle_TestSetPDU(pkt)
     self.assertEqual(len(sock.data), 1)
     sentPkt = AP.decode_packet(sock.data[0])[0]
     respPkt = AP.ResponsePDU(True, 42, 23, 100, 0, 17, 0)
     self.assertEqual(sentPkt, respPkt)
     self.assertEqual(writeCalls, [])
     self.assertEqual(mjig.setVarbinds, [])
     self.assertEqual(mjig.setHandlers, [])
     self.assertEqual(mjig.setUndoData, [])