vibora
vibora copied to clipboard
Run test cases failed after git clone
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)
Hi @leeexyz you probably forgot to run build.py to build Cython extensions, let me know if it helps, I appreciate your interest :)
@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.
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 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
+1, I got the same error
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
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!
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 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")
- 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>>>
- 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)
- 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. :)
- 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)