def test_http_server_not_found(mock_socket):
    sample_req = \
        (f"GET /somefile.txt HTTP/1.1\r\n"
         f"Host: localhost\r\n"
         f"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0)"
         f"Gecko/20100101 Firefox/69.0\r\n"
         f"Accept: text/html,application/xhtml+xml"
         f"application/xml;q=0.9,*/*;q=0.8\r\n"
         f"Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3\r\n"
         f"Accept-Encoding: gzip, deflate, br\r\n\r\n"
         )
    mock_socket.return_value.bind.return_value = None
    mock_socket.return_value.listen.return_value = None
    mock_socket.return_value.setblocking.return_value = None
    mock_socket.return_value.settimeout.return_value = None
    mock_socket.return_value.recv.side_effect = [bytes(sample_req, "utf-8")]
    mock_socket.return_value.sendall.side_effect = (lambda x: len(x))
    mock_socket.return_value.send.side_effect = (lambda x: len(x))
    mock_socket.return_value.fileno.return_value = 0
    mock_socket.return_value.close.return_value = None
    client_instance = mock_socket(AF_INET, SOCK_STREAM)
    mock_socket.return_value.accept.side_effect = [(client_instance, None),
                                                   mock.DEFAULT]

    http_server = HttpServer("test_config.json")
    http_server.run()
    http_server.thread_pool.tasks.join()
    http_server.thread_pool.terminate_all_workers()

    response, *_ = client_instance.sendall.call_args[0]
    str_response = response.decode('utf-8', errors='ignore')
    header = str_response.partition('\r\n')[0]

    assert header == 'HTTP/1.1 404'
示例#2
0
def main():
    if len(sys.argv) != 2:
        print('Usage: python main.py <node_name>')
        sys.exit(1)

    node_name = sys.argv[1]

    configuration = Configuration()
    configuration.load()
    if node_name not in configuration.nodes.keys():
        print('Node {} is not in cluster.conf'.format(node_name))
        sys.exit(1)

    state = State()
    state.load(node_name)

    raft = Raft(node_name, configuration, state)

    raft.reset_election_timer()
    server = HttpServer(raft.parse_json_request)
    server.run(configuration.nodes[node_name]['port'])
示例#3
0
def _init_http_server():
    asyncio.run(HttpServer.run())
示例#4
0
import sys
from http_server import HttpServer

HOST = '0.0.0.0'

if len(sys.argv) > 1:
    PORT = int(sys.argv[1])
else:
    PORT = 8000

app = HttpServer(host=HOST, port=PORT)

if __name__ == "__main__":
    app.run()