vibora icon indicating copy to clipboard operation
vibora copied to clipboard

Run test cases failed after git clone

Open leeexyz opened this issue 7 years ago • 10 comments

Hi, this is an awesome project! I really want to do some contributions. After git clone, I installed all the requirements and then started to run the test cases. But sadly, they were totally failed.

This is an example error.

(vibora) leexyz:~/vibora $ python test.py 
EEEEEEEEEEEEEEEEEEEEEEEEEE
======================================================================
ERROR: blueprints (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: blueprints
Traceback (most recent call last):
  File "/usr/local/var/pyenv/versions/3.6.5/lib/python3.6/unittest/loader.py", line 428, in _find_test_path
    module = self._get_module_from_name(name)
  File "/usr/local/var/pyenv/versions/3.6.5/lib/python3.6/unittest/loader.py", line 369, in _get_module_from_name
    __import__(name)
  File "/Users/tuisku/Study/Project/vibora/tests/blueprints.py", line 1, in <module>
    from vibora.tests import TestSuite
  File "/Users/tuisku/Study/Project/vibora/vibora/__init__.py", line 7, in <module>
    from .server import *
  File "/Users/tuisku/Study/Project/vibora/vibora/server.py", line 9, in <module>
    from .client import Session
  File "/Users/tuisku/Study/Project/vibora/vibora/client/__init__.py", line 1, in <module>
    from .session import Session
  File "/Users/tuisku/Study/Project/vibora/vibora/client/session.py", line 6, in <module>
    from vibora.parsers.parser import parse_url
  File "/Users/tuisku/Study/Project/vibora/vibora/parsers/__init__.py", line 1, in <module>
    from . import parser, response, errors
ImportError: cannot import name 'parser'

......

----------------------------------------------------------------------
Ran 26 tests in 0.004s

FAILED (errors=26)
26 tests failed.

There are 26 errors just like this one.

System: macOS 10.13.4 Python: Python 3.6.5 (pyenv)

leeexyz avatar Jun 29 '18 13:06 leeexyz

Hi @leeexyz you probably forgot to run build.py to build Cython extensions, let me know if it helps, I appreciate your interest :)

frnkvieira avatar Jun 29 '18 13:06 frnkvieira

@frnkvieira Thanks for your quick reply :) After built, I still got many errors.

(vibora) leexyz:~/vibora $ time python test.py 
EEEEEEEEEEEEE....EEE<uvloop.loop.SSLProtocol object at 0x1020e6588>: SSL handshake failed
protocol: <uvloop.loop.SSLProtocol object at 0x1020e6588>
transport: <TCPTransport closed=False reading=False 0x7fa18b91df88>
Traceback (most recent call last):
  File "uvloop/sslproto.pyx", line 592, in uvloop.loop.SSLProtocol._on_handshake_complete
  File "uvloop/sslproto.pyx", line 171, in uvloop.loop._SSLPipe.feed_ssldata
  File "/usr/local/var/pyenv/versions/3.6.5/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)
<uvloop.loop.SSLProtocol object at 0x1020e6588>: SSL error errno:1 reason: CERTIFICATE_VERIFY_FAILED
protocol: <uvloop.loop.SSLProtocol object at 0x1020e6588>
transport: <TCPTransport closed=False reading=False 0x7fa18b91df88>
Traceback (most recent call last):
  File "uvloop/sslproto.pyx", line 496, in uvloop.loop.SSLProtocol.data_received
  File "uvloop/sslproto.pyx", line 204, in uvloop.loop._SSLPipe.feed_ssldata
  File "uvloop/sslproto.pyx", line 171, in uvloop.loop._SSLPipe.feed_ssldata
  File "/usr/local/var/pyenv/versions/3.6.5/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)
..<uvloop.loop.SSLProtocol object at 0x100a3ccf8>: SSL handshake failed
protocol: <uvloop.loop.SSLProtocol object at 0x100a3ccf8>
transport: <TCPTransport closed=False reading=False 0x7fa189610ce8>
Traceback (most recent call last):
  File "uvloop/sslproto.pyx", line 592, in uvloop.loop.SSLProtocol._on_handshake_complete
  File "uvloop/sslproto.pyx", line 171, in uvloop.loop._SSLPipe.feed_ssldata
  File "/usr/local/var/pyenv/versions/3.6.5/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)
<uvloop.loop.SSLProtocol object at 0x100a3ccf8>: SSL error errno:1 reason: CERTIFICATE_VERIFY_FAILED
protocol: <uvloop.loop.SSLProtocol object at 0x100a3ccf8>
transport: <TCPTransport closed=False reading=False 0x7fa189610ce8>
Traceback (most recent call last):
  File "uvloop/sslproto.pyx", line 496, in uvloop.loop.SSLProtocol.data_received
  File "uvloop/sslproto.pyx", line 204, in uvloop.loop._SSLPipe.feed_ssldata
  File "uvloop/sslproto.pyx", line 171, in uvloop.loop._SSLPipe.feed_ssldata
  File "/usr/local/var/pyenv/versions/3.6.5/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)
..E<uvloop.loop.SSLProtocol object at 0x100b69198>: SSL handshake failed
protocol: <uvloop.loop.SSLProtocol object at 0x100b69198>
transport: <TCPTransport closed=False reading=False 0x7fa189490ba8>
Traceback (most recent call last):
  File "uvloop/sslproto.pyx", line 592, in uvloop.loop.SSLProtocol._on_handshake_complete
  File "uvloop/sslproto.pyx", line 171, in uvloop.loop._SSLPipe.feed_ssldata
  File "/usr/local/var/pyenv/versions/3.6.5/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)
<uvloop.loop.SSLProtocol object at 0x100b69198>: SSL error errno:1 reason: CERTIFICATE_VERIFY_FAILED
protocol: <uvloop.loop.SSLProtocol object at 0x100b69198>
transport: <TCPTransport closed=False reading=False 0x7fa189490ba8>
Traceback (most recent call last):
  File "uvloop/sslproto.pyx", line 496, in uvloop.loop.SSLProtocol.data_received
  File "uvloop/sslproto.pyx", line 204, in uvloop.loop._SSLPipe.feed_ssldata
  File "uvloop/sslproto.pyx", line 171, in uvloop.loop._SSLPipe.feed_ssldata
  File "/usr/local/var/pyenv/versions/3.6.5/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)
..<uvloop.loop.SSLProtocol object at 0x100b696a0>: SSL handshake failed on verifying the certificate
protocol: <uvloop.loop.SSLProtocol object at 0x100b696a0>
transport: <TCPTransport closed=False reading=False 0x7fa18b925478>
Traceback (most recent call last):
  File "uvloop/sslproto.pyx", line 592, in uvloop.loop.SSLProtocol._on_handshake_complete
  File "uvloop/sslproto.pyx", line 171, in uvloop.loop._SSLPipe.feed_ssldata
  File "/usr/local/var/pyenv/versions/3.6.5/lib/python3.6/ssl.py", line 694, in do_handshake
    match_hostname(self.getpeercert(), self.server_hostname)
  File "/usr/local/var/pyenv/versions/3.6.5/lib/python3.6/ssl.py", line 327, in match_hostname
    % (hostname, ', '.join(map(repr, dnsnames))))
ssl.CertificateError: hostname 'wrong.host.badssl.com' doesn't match either of '*.badssl.com', 'badssl.com'
Unhandled exception in event loop
Traceback (most recent call last):
  File "uvloop/handles/stream.pyx", line 784, in uvloop.loop.__uv_stream_on_read_impl
  File "uvloop/handles/stream.pyx", line 563, in uvloop.loop.UVStream._on_read
  File "uvloop/sslproto.pyx", line 496, in uvloop.loop.SSLProtocol.data_received
  File "uvloop/sslproto.pyx", line 204, in uvloop.loop._SSLPipe.feed_ssldata
  File "uvloop/sslproto.pyx", line 171, in uvloop.loop._SSLPipe.feed_ssldata
  File "/usr/local/var/pyenv/versions/3.6.5/lib/python3.6/ssl.py", line 694, in do_handshake
    match_hostname(self.getpeercert(), self.server_hostname)
  File "/usr/local/var/pyenv/versions/3.6.5/lib/python3.6/ssl.py", line 327, in match_hostname
    % (hostname, ', '.join(map(repr, dnsnames))))
ssl.CertificateError: hostname 'wrong.host.badssl.com' doesn't match either of '*.badssl.com', 'badssl.com'
..EEEEEE..EEEEEEEEEEEEEEEEEEE.E.EEEEEEEEEEEEEE..EEEEEEEEEEEEEEEEEEEE...........EEEEEEE........EEEEE
======================================================================
ERROR: test_simple_add_blueprint__expects_added (blueprints.BlueprintsTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/tuisku/Study/Project/vibora/vibora/tests.py", line 9, in async_runner
    loop.run_until_complete(f(*args, **kwargs))
  File "uvloop/loop.pyx", line 1422, in uvloop.loop.Loop.run_until_complete
  File "/Users/tuisku/Study/Project/vibora/tests/blueprints.py", line 20, in test_simple_add_blueprint__expects_added
    async with self.app.test_client() as client:
  File "/Users/tuisku/Study/Project/vibora/vibora/server.py", line 205, in test_client
    self.run(host=address, port=port, block=False, verbose=False, necromancer=False, workers=1, debug=True)
  File "/Users/tuisku/Study/Project/vibora/vibora/server.py", line 279, in run
    wait_server_available(host, port)
  File "/Users/tuisku/Study/Project/vibora/vibora/utils.py", line 139, in wait_server_available
    sock.connect((host, port))
OSError: [Errno 22] Invalid argument

......
similar errors

----------------------------------------------------------------------
Ran 126 tests in 460.096s

FAILED (errors=89)
89 tests failed.

real	7m41.095s
user	0m3.535s
sys	0m2.900s

I am not sure if the SSL handshake error is related to pyenv.

leeexyz avatar Jun 29 '18 13:06 leeexyz

Can you please show me the value of (host, port) at the last stack trace ? (This line: "sock.connect((host, port))")... You can put a breakpoint there or add a print statement right before this line to get the value. Many thanks!

frnkvieira avatar Jun 29 '18 14:06 frnkvieira

@frnkvieira I printed some values as follows.

..host: 127.0.0.1, port: 64557
host: 127.0.0.1, port: 64557
Ehost: 127.0.0.1, port: 64559
host: 127.0.0.1, port: 64559
Ehost: 127.0.0.1, port: 64561
host: 127.0.0.1, port: 64561
Ehost: 127.0.0.1, port: 64563
host: 127.0.0.1, port: 64563
Ehost: 127.0.0.1, port: 64565
host: 127.0.0.1, port: 64565
Ehost: 127.0.0.1, port: 64567
host: 127.0.0.1, port: 64567
E..host: 127.0.0.1, port: 64569
host: 127.0.0.1, port: 64569
Ehost: 127.0.0.1, port: 64571
host: 127.0.0.1, port: 64571
Ehost: 127.0.0.1, port: 64573
host: 127.0.0.1, port: 64573
Ehost: 127.0.0.1, port: 64575
host: 127.0.0.1, port: 64575
Ehost: 127.0.0.1, port: 64577
host: 127.0.0.1, port: 64577
Ehost: 127.0.0.1, port: 64579
host: 127.0.0.1, port: 64579

leeexyz avatar Jun 29 '18 14:06 leeexyz

+1, I got the same error

yunstanford avatar Jun 29 '18 15:06 yunstanford

I got the same error too. In my system, I have to 'pip install cython' to make 'build.py' run, and it failed.

$ python --version; uname -a
Python 3.6.5
Linux ls-main 4.17.2-gentoo #1 SMP Wed Jun 20 14:23:34 EDT 2018 x86_64 Intel(R) Core(TM) i3-4130T CPU @ 2.90GHz GenuineIntel GNU/Linux

If that helps.

That's one of the reasons I created #85

pyx avatar Jun 29 '18 20:06 pyx

In MacOS (with a few other cases) the socket library raises a few different exceptions that I was unaware of, I think I got them fixed, I'll push an update tonight and update here so you guys can check it out. Many thanks!

frnkvieira avatar Jun 29 '18 20:06 frnkvieira

I think this is issue is gone in master branch but I'll work more on it by Monday, I appreciate your feedback on this, thanks !

frnkvieira avatar Jun 30 '18 18:06 frnkvieira

@frnkvieira Even installed the patch, I still encounter this issue.

Here are some tries I made to reproduce the issue.

First, I added two line before and after sock.connect((host, port)).

# vibora.utils.wait_server_available
            print("connecting:", (host, port))
            sock.connect((host, port))
            print("connected")
  1. Runing the server directly, it was ok.
Python 3.6.5 (default, Jun 29 2018, 23:22:22) 
[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from vibora import Vibora
>>> app = Vibora()
>>> app.run()
connecting: ('127.0.0.1', 5000)
connected
# Vibora (0.0.7) # http://127.0.0.1:5000
^C>>> 
  1. Runing the test client, but it cannot connect to port 52652. The wired thing is the port was listening. localhost:52652 (LISTEN)
>>> app.test_client()
connecting: ('127.0.0.1', 52652)
....... keep printing
connecting: ('127.0.0.1', 52652)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/tuisku/Study/Project/vibora/vibora/server.py", line 206, in test_client
    startup_message=False)
  File "/Users/tuisku/Study/Project/vibora/vibora/server.py", line 295, in run
    wait_server_available(host, port)
  File "/Users/tuisku/Study/Project/vibora/vibora/utils.py", line 148, in wait_server_available
    raise TimeoutError(f'Server is taking too long to get online.')
TimeoutError: Server is taking too long to get online.

tuisku:~ $ lsof -i:52652
COMMAND   PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
python  73603 tuisku   16u  IPv4 0x17a6fed78c937775      0t0  TCP localhost:52653->localhost:52652 (CLOSED)
python  73617 tuisku   17u  IPv4 0x17a6fed7972984b5      0t0  TCP localhost:52652 (LISTEN)
  1. And when the timeout error occurred, I tried to connect it manually.
tuisku:~ $ lsof -i:52652
COMMAND   PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
python  73617 tuisku   17u  IPv4 0x17a6fed7972984b5      0t0  TCP localhost:52652 (LISTEN)

>>> import socket
>>> sock = socket.socket()
>>> sock.connect(('127.0.0.1', 52652))
>>> sock.connect(('127.0.0.1', 52652))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 56] Socket is already connected
>>> 
>>> sock
<socket.socket fd=16, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 52665), raddr=('127.0.0.1', 52652)>

tuisku:~ $ lsof -i:52652
COMMAND   PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
python  73603 tuisku   16u  IPv4 0x17a6fed79766a4b5      0t0  TCP localhost:52665->localhost:52652 (ESTABLISHED)
python  73617 tuisku   17u  IPv4 0x17a6fed7972984b5      0t0  TCP localhost:52652 (LISTEN)
python  73617 tuisku   28u  IPv4 0x17a6fed796be2775      0t0  TCP localhost:52652->localhost:52665 (ESTABLISHED)

Finally, I thought it should be the server is not ready yet. So, I added a sleep statement before wait_server_available. Surprisingly, it worked!

# vibora.Vibora.run
        if not sock:
            import time
            time.sleep(1)
            wait_server_available(host, port)

>>> from vibora import Vibora
>>> app = Vibora()
>>> app.test_client()
connecting: ('127.0.0.1', 53329)
connected
<vibora.client.session.Session object at 0x1052edf20>

Hope this is useful. :)

leeexyz avatar Jul 01 '18 03:07 leeexyz

  • 1 for same error on OSX Sierra 10.12.06 + Python3.6.5

venv -p python3.6 venv source veenv/bin/activate pip install vibora ... make a project and run it

Traceback

Traceback (most recent call last):
  File "run.py", line 7, in <module>
    app.run()
  File "/Users/federicocerchiari/GitHub/MiyagiBaseProject/Miyagi/miyagi.py", line 55, in run
    self.webapp.vibora.run(host=self.config.host, port=self.config.port, debug=self.config.debug)
  File "/Users/federicocerchiari/GitHub/MiyagiBaseProject/venv/lib/python3.6/site-packages/vibora/server.py", line 265, in run
    wait_server_available(host, port)
  File "/Users/federicocerchiari/GitHub/MiyagiBaseProject/venv/lib/python3.6/site-packages/vibora/utils.py", line 134, in wait_server_available
    sock.connect((host, port))

The traceback of sock.connect is:

Traceback (most recent call last):
  File "/Users/federicocerchiari/GitHub/MiyagiBaseProject/venv/lib/python3.6/site-packages/vibora/utils.py", line 134, in wait_server_available
    sock.connect((host, port))
ConnectionRefusedError: [Errno 61] Connection refused

python version: Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 05:52:31)

Hrabal avatar Aug 08 '18 10:08 Hrabal