示例#1
0
def test_fle():
    now = time.time()
    init = Initial(timestamp=now,
                   src="10.0.0.1:32000",
                   dst="10.0.0.2:3888",
                   server_id=1,
                   election_addr="10.0.0.1:3888")
    notif = Notification(timestamp=now,
                         src="10.0.0.1:32000",
                         dst="10.0.0.2:3888",
                         state=PeerState.LOOKING,
                         leader=4,
                         zxid=0x100,
                         peer_epoch=0x1,
                         election_epoch=0x1,
                         version=2,
                         config="config")

    output = StringIO()
    printer = Printer(colors=False, output=output)

    printer.add(init)
    printer.add(notif)

    # wait for the messages to be consumed
    while not printer.empty:
        time.sleep(0.0001)

    # stop it
    printer.stop()
    while not printer.stopped:
        time.sleep(0.0001)

    assert str(init) in output.getvalue()
    assert str(notif) in output.getvalue()
示例#2
0
def test_zab():
    now = time.time()

    request = Request(
        timestamp=now,
        src="10.0.0.3:2889",
        dst="10.0.0.4:58566",
        ptype=PacketType.REQUEST,
        zxid=-1,
        length=100,
        session_id=0xdeadbeef,
        cxid=90000,
        req_type=OpCodes.CREATE,
    )

    proposal = Proposal(
        timestamp=now,
        src="10.0.0.3:2889",
        dst="10.0.0.4:58566",
        ptype=PacketType.PROPOSAL,
        zxid=0x100,
        length=100,
        session_id=0xdeadbeef,
        cxid=90000,
        txn_zxid=0x100,
        txn_time=now,
        txn_type=OpCodes.CREATE,
    )

    output = StringIO()
    printer = Printer(colors=False, output=output)

    printer.add(request)
    printer.add(proposal)

    # consume all messages
    while not printer.empty:
        time.sleep(0.0001)

    # stop it
    printer.stop()
    while not printer.stopped:
        time.sleep(0.0001)

    assert str(request) in output.getvalue()
    assert str(proposal) in output.getvalue()
示例#3
0
def test_zab():
    now = time.time()

    request = Request(
        timestamp=now,
        src="10.0.0.3:2889",
        dst="10.0.0.4:58566",
        ptype=PacketType.REQUEST,
        zxid=-1,
        length=100,
        session_id=0xDEADBEEF,
        cxid=90000,
        req_type=OpCodes.CREATE,
    )

    proposal = Proposal(
        timestamp=now,
        src="10.0.0.3:2889",
        dst="10.0.0.4:58566",
        ptype=PacketType.PROPOSAL,
        zxid=0x100,
        length=100,
        session_id=0xDEADBEEF,
        cxid=90000,
        txn_zxid=0x100,
        txn_time=now,
        txn_type=OpCodes.CREATE,
    )

    output = StringIO()
    printer = Printer(colors=False, output=output)

    printer.add(request)
    printer.add(proposal)

    # consume all messages
    while not printer.empty:
        time.sleep(0.0001)

    # stop it
    printer.stop()
    while not printer.stopped:
        time.sleep(0.0001)

    assert str(request) in output.getvalue()
    assert str(proposal) in output.getvalue()
示例#4
0
def test_fle():
  now = time.time()
  init = Initial(
    timestamp=now,
    src="10.0.0.1:32000",
    dst="10.0.0.2:3888",
    server_id=1,
    election_addr="10.0.0.1:3888"
  )
  notif = Notification(
    timestamp=now,
    src="10.0.0.1:32000",
    dst="10.0.0.2:3888",
    state=PeerState.LOOKING,
    leader=4,
    zxid=0x100,
    peer_epoch=0x1,
    election_epoch=0x1,
    version=2,
    config="config"
  )

  output = StringIO()
  printer = Printer(colors=False, output=output)

  printer.add(init)
  printer.add(notif)

  # wait for the messages to be consumed
  while not printer.empty:
    time.sleep(0.0001)

  # stop it
  printer.stop()
  while not printer.stopped:
    time.sleep(0.0001)

  assert str(init) in output.getvalue()
  assert str(notif) in output.getvalue()
示例#5
0
文件: omni.py 项目: XXXu/zktraffic
def main(_, options):
    if options.version:
        sys.stdout.write("%s\n" % __version__)
        sys.exit(0)

    printer = Printer(options.colors,
                      output=sys.stdout,
                      skip_print=None if options.include_pings else
                      lambda msg: isinstance(msg, ZAB.Ping))
    zk_printer = ZKDefaultPrinter(options.colors,
                                  loopback=False,
                                  output=sys.stdout)
    zk_printer.start()

    def fle_sniffer_factory(port):
        return Sniffer(None,
                       port,
                       FLE.Message,
                       printer.add,
                       options.dump_bad_packet,
                       start=False)

    def zab_sniffer_factory(port):
        return Sniffer(None,
                       port,
                       ZAB.QuorumPacket,
                       printer.add,
                       options.dump_bad_packet,
                       start=False)

    def zk_sniffer_factory(port):
        config = ZKSnifferConfig(None)
        config.track_replies = True
        config.zookeeper_port = port
        config.client_port = 0
        if options.include_pings:
            config.include_pings()
        return ZKSniffer(config,
                         zk_printer.request_handler,
                         zk_printer.reply_handler,
                         zk_printer.event_handler,
                         error_to_stderr=True)

    if not options.offline:
        sniffer = OmniSniffer(fle_sniffer_factory,
                              zab_sniffer_factory,
                              zk_sniffer_factory,
                              pfilter=options.packet_filter,
                              dump_bad_packet=options.dump_bad_packet)
    else:
        sniffer = OmniSniffer(fle_sniffer_factory,
                              zab_sniffer_factory,
                              zk_sniffer_factory,
                              pfilter=options.packet_filter,
                              dump_bad_packet=options.dump_bad_packet,
                              start=False)
        sniffer.run(offline=options.offline)

    try:
        while (printer.isAlive()
               or zk_printer.isAlive()) and not options.offline:
            sniffer.join(1)
    except (KeyboardInterrupt, SystemExit):
        pass

    # consume all messages
    while not printer.empty or not zk_printer.empty:
        time.sleep(0.0001)

    # stop it
    printer.stop()
    zk_printer.stop()
    while not printer.stopped or not zk_printer.stopped:
        time.sleep(0.0001)
示例#6
0
def main(_, options):
  if options.version:
    sys.stdout.write("%s\n" % __version__)
    sys.exit(0)

  printer = Printer(options.colors,
                    output=sys.stdout,
                    skip_print=None if options.include_pings else lambda msg: isinstance(msg, ZAB.Ping))
  zk_printer = ZKDefaultPrinter(options.colors, loopback=False, output=sys.stdout)
  zk_printer.start()

  def fle_sniffer_factory(port):
    return Sniffer('dummy', port, FLE.Message, printer.add, options.dump_bad_packet, start=False)

  def zab_sniffer_factory(port):
    return Sniffer('dummy', port, ZAB.QuorumPacket, printer.add, options.dump_bad_packet, start=False)

  def zk_sniffer_factory(port):
    config = ZKSnifferConfig('dummy')
    config.track_replies = True
    config.zookeeper_port = port
    config.client_port = 0
    if options.include_pings:
      config.include_pings()
    return ZKSniffer(
      config,
      zk_printer.request_handler,
      zk_printer.reply_handler,
      zk_printer.event_handler,
      error_to_stderr=True
    )

  if not options.offline:
    sniffer = OmniSniffer(
      fle_sniffer_factory,
      zab_sniffer_factory,
      zk_sniffer_factory,
      pfilter=options.packet_filter,
      dump_bad_packet=options.dump_bad_packet)
  else:
    sniffer = OmniSniffer(
      fle_sniffer_factory,
      zab_sniffer_factory,
      zk_sniffer_factory,
      pfilter=options.packet_filter,
      dump_bad_packet=options.dump_bad_packet,
      start=False)
    sniffer.run(offline=options.offline)

  try:
    while (printer.isAlive() or zk_printer.isAlive()) and not options.offline:
      sniffer.join(1)
  except (KeyboardInterrupt, SystemExit):
    pass

  # consume all messages
  while not printer.empty or not zk_printer.empty:
    time.sleep(0.0001)

  # stop it
  printer.stop()
  zk_printer.stop()
  while not printer.stopped or not zk_printer.stopped:
    time.sleep(0.0001)