예제 #1
0
 def _poll_http_address(self, count=240, interval=0.5, is_running=None):
     address = self.addresses["http"]
     t0 = perf_counter()
     for _ in range(count):
         if callable(is_running) and not is_running():
             break
         wire = None
         try:
             wire = Wire.open(address, keep_alive=True)
             wire.write("GET / HTTP/1.1\r\n"
                        "Host: {}\r\n\r\n".format(
                            address.host).encode("ASCII"))
             wire.send()
             data = wire.read(4)
         except OSError:
             sleep(interval)
         else:
             t1 = perf_counter() - t0
             log.info("Machine {!r} available "
                      "for HTTP traffic "
                      "after {:.02f}s".format(self.fq_name, t1))
             return True
         finally:
             if wire:
                 wire.close()
     return False
예제 #2
0
def test_wire_open_with_connect_error(mock_socket):
    mock_socket.fail_on_connect = True
    try:
        with raises(WireError):
            _ = Wire.open(("localhost", 7687))
    finally:
        mock_socket.fail_on_connect = False
예제 #3
0
 def _poll_bolt_address(self, count=240, interval=0.5, is_running=None):
     address = self.addresses["bolt"]
     t0 = perf_counter()
     for _ in range(count):
         if callable(is_running) and not is_running():
             break
         wire = None
         try:
             wire = Wire.open(address, keep_alive=True)
             wire.write(b"\x60\x60\xB0\x17"
                        b"\x00\x00\x01\x04"
                        b"\x00\x00\x00\x04"
                        b"\x00\x00\x00\x03"
                        b"\x00\x00\x00\x02")
             wire.send()
             data = wire.read(4)
         except OSError:
             sleep(interval)
         else:
             t1 = perf_counter() - t0
             log.info("Machine {!r} available "
                      "for Bolt traffic "
                      "after {:.02f}s".format(self.fq_name, t1))
             return True
         finally:
             if wire:
                 wire.close()
     return False
예제 #4
0
def test_wire_read_with_recv_error(mock_socket):
    mock_socket.fail_on_recv = True
    try:
        wire = Wire.open(("localhost", 7687))
        with raises(WireError):
            _ = wire.read(1)
    finally:
        mock_socket.fail_on_recv = False
예제 #5
0
 def _connect(cls, profile, on_broken):
     log.debug("[#%04X] C: (Dialing <%s>)", 0, profile.address)
     wire = Wire.open(profile.address, keep_alive=True, on_broken=on_broken)
     local_port = wire.local_address.port_number
     log.debug("[#%04X] S: (Accepted)", local_port)
     if profile.secure:
         log.debug("[#%04X] C: (Securing connection)", local_port)
         wire.secure(verify=profile.verify, hostname=profile.host)
     return wire
예제 #6
0
 def writer(into):
     s = FakeSocket(out_packets=into)
     return Wire(s)
예제 #7
0
 def reader(packets):
     s = FakeSocket(packets)
     return Wire(s)
예제 #8
0
def test_wire_open_with_keep_alive(mock_socket):
    wire = Wire.open(("localhost", 7687), keep_alive=True)
    assert wire.remote_address == ("localhost", 7687)
예제 #9
0
def test_wire_open_simple(mock_socket):
    wire = Wire.open(("localhost", 7687))
    assert wire.remote_address == ("localhost", 7687)