Example #1
0
def uhttpserver(request):
    tmp = tempfile.NamedTemporaryFile()
    server = uhttp.Server(tmp.name, uhttp.Connection)
    util.start_thread(server.serve_forever, kwargs={"poll_interval": 0.1})
    request.addfinalizer(server.shutdown)
    request.addfinalizer(tmp.close)
    return server
Example #2
0
def test_start_thread_kwargs():
    result = {}

    def f(k=None):
        result["k"] = k

    util.start_thread(f, kwargs={"k": "v"}).join()
    assert result == {"k": "v"}
Example #3
0
def test_start_thread_args():
    result = []

    def f(*a):
        result.extend(a)

    util.start_thread(f, args=(1, 2)).join()
    assert result == [1, 2]
Example #4
0
def test_start_thread_kwargs():
    result = {}

    def f(k=None):
        result["k"] = k

    util.start_thread(f, kwargs={"k": "v"}).join()
    assert result == {"k": "v"}
Example #5
0
def test_start_thread_args():
    result = []

    def f(*a):
        result.extend(a)

    util.start_thread(f, args=(1, 2)).join()
    assert result == [1, 2]
Example #6
0
def server():
    server = http.Server(("127.0.0.1", 0), http.Connection)
    log.info("Server listening on port %d", server.server_port)

    server.app = http.Router([
        (r"/demo/(.*)", Demo()),
        (r"/echo/(.*)", Echo()),
        (r"/json/", JSON()),
        (r"/range-demo/", RangeDemo()),
        (r"/request-info/(.*)", RequestInfo()),
        (r"/context/(.*)", Context()),
        (r"/close-context/(.*)", CloseContext()),
        (r"/server-error/(.*)", ServerError()),
        (r"/server-socket-error/(.*)", ServerSocketError()),
        (r"/client-error/(.*)", ClientError()),
        (r"/keep-connection/", KeepConnection()),
        (r"/partial-response/", PartialResponse()),
    ])

    t = util.start_thread(server.serve_forever, kwargs={"poll_interval": 0.1})
    try:
        yield server
    finally:
        server.shutdown()
        t.join()
Example #7
0
def test_run_operation_benchmark():
    # Run 1000000 operations with 4 concurrent threads.
    ticket = Ticket(testutils.create_ticket(ops=["read"]))
    operations = 10**6
    workers = 4
    chunk = 10**9
    step = chunk * workers // operations

    def worker(offset, size):
        while offset < size:
            ticket.run(Operation(offset, step))
            offset += step

    start = time.time()

    threads = []
    try:
        for i in range(workers):
            t = util.start_thread(worker, args=(i * chunk, chunk))
            threads.append(t)
    finally:
        for t in threads:
            t.join()

    elapsed = time.time() - start

    print("%d operations, %d concurrent threads in %.2f seconds (%d nsec/op)"
          % (operations, workers, elapsed, elapsed * 10**9 // operations))
Example #8
0
def test_run_operation_benchmark():
    # Run 1000000 operations with 4 concurrent threads.
    ticket = Ticket(testutils.create_ticket(ops=["read"]))
    operations = 10**6
    workers = 4
    chunk = 10**9
    step = chunk * workers // operations

    def worker(offset, size):
        while offset < size:
            ticket.run(Operation(offset, step))
            offset += step

    start = time.time()

    threads = []
    try:
        for i in range(workers):
            t = util.start_thread(worker, args=(i * chunk, chunk))
            threads.append(t)
    finally:
        for t in threads:
            t.join()

    elapsed = time.time() - start

    print("%d operations, %d concurrent threads in %.2f seconds (%d nsec/op)" %
          (operations, workers, elapsed, elapsed * 10**9 // operations))
Example #9
0
def server():
    server = http.Server(("127.0.0.1", 0), http.Connection)
    log.info("Server listening on port %d", server.server_port)

    server.app = http.Router([
        (r"/demo/(.*)", Demo()),
        (r"/echo/(.*)", Echo()),
        (r"/json/", JSON()),
        (r"/range-demo/", RangeDemo()),
        (r"/request-info/(.*)", RequestInfo()),
        (r"/context/(.*)", Context()),
        (r"/close-context/(.*)", CloseContext()),
        (r"/server-error/(.*)", ServerError()),
        (r"/server-socket-error/(.*)", ServerSocketError()),
        (r"/client-error/(.*)", ClientError()),
        (r"/keep-connection/", KeepConnection()),
        (r"/partial-response/", PartialResponse()),
    ])

    t = util.start_thread(
        server.serve_forever,
        kwargs={"poll_interval": 0.1})
    try:
        yield server
    finally:
        server.shutdown()
        t.join()
Example #10
0
def test_uninterruptible_interrupt():
    r, w = os.pipe()
    signo = signal.SIGUSR1
    prev = signal.signal(signo, lambda s, f: True)
    try:

        def read():
            return os.read(r, 1)

        def write():
            time.sleep(0.1)
            os.kill(os.getpid(), signo)
            time.sleep(0.1)
            os.write(w, b'a')

        util.start_thread(write)
        assert util.uninterruptible(read) == b'a'
    finally:
        signal.signal(signo, prev)
        os.close(r)
        os.close(w)
Example #11
0
def test_uninterruptible_interrupt():
    r, w = os.pipe()
    signo = signal.SIGUSR1
    prev = signal.signal(signo, lambda s, f: True)
    try:

        def read():
            return os.read(r, 1)

        def write():
            time.sleep(0.1)
            os.kill(os.getpid(), signo)
            time.sleep(0.1)
            os.write(w, 'a')

        util.start_thread(write)
        assert util.uninterruptible(read) == 'a'
    finally:
        signal.signal(signo, prev)
        os.close(r)
        os.close(w)
Example #12
0
def test_start_thread_name():
    t = util.start_thread(lambda: None, name="foo")
    t.join()
    assert t.name == "foo"
Example #13
0
def test_start_thread_non_daemon():
    t = util.start_thread(lambda: None, daemon=False)
    t.join()
    assert not t.daemon
Example #14
0
def test_start_thread_daemon():
    t = util.start_thread(lambda: None)
    t.join()
    assert t.daemon
Example #15
0
def test_start_thread_name():
    t = util.start_thread(lambda: None, name="foo")
    t.join()
    assert t.name == "foo"
Example #16
0
 def start(self):
     util.start_thread(self._run, name=self.name)
Example #17
0
 def start(self):
     log.debug("Starting %s", self.name)
     util.start_thread(
         self._server.serve_forever,
         kwargs={"poll_interval": self._config.daemon.poll_interval},
         name=self.name)
Example #18
0
def test_start_thread_non_daemon():
    t = util.start_thread(lambda: None, daemon=False)
    t.join()
    assert not t.daemon
Example #19
0
def test_start_thread_daemon():
    t = util.start_thread(lambda: None)
    t.join()
    assert t.daemon
Example #20
0
def start_server(config, server, name):
    log.debug("Starting thread %s", name)
    util.start_thread(server.serve_forever,
                      kwargs={"poll_interval": config.daemon.poll_interval},
                      name=name)