[
https://issues.apache.org/jira/browse/CASSANDRA-17293?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17492419#comment-17492419
]
Berenguer Blasi commented on CASSANDRA-17293:
---------------------------------------------
Hi [~bschoeni]
SSL is still failing for me. You mean you cannot repro locally? I am on Ubuntu
20.04, I test with your branch under j8
{noformat}
platform linux -- Python 3.8.10, pytest-7.0.1, pluggy-1.0.0
rootdir: /tmp/cassandra-trunk/pylib
plugins: flaky-3.7.0
collected 87 items
test/test_constants.py .
[ 1%]
test/test_copyutil.py .
[ 2%]
test/test_cql_parsing.py .......................
[ 28%]
test/test_cqlsh_completion.py ..................
[ 49%]
test/test_cqlsh_output.py ...................................
[ 89%]
test/test_sslhandling.py .F.F.
[ 95%]
test/test_unicode.py ....
[100%]
====================================================================================================================================
FAILURES
=====================================================================================================================================
_________________________________________________________________________________________________________________
SslSettingsTest.test_invalid_ssl_version_config
_________________________________________________________________________________________________________________
self = <cqlshlib.test.test_sslhandling.SslSettingsTest
testMethod=test_invalid_ssl_version_config>
def test_invalid_ssl_version_config(self):
> ssl_ret_val = ssl_settings(self.host, os.path.join('test', 'config',
> 'sslhandling_invalid.config'))
test/test_sslhandling.py:72:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
host = <Host: 10.0.0.1:9042 9000>, config_file =
'test/config/sslhandling_invalid.config'
env = environ({'SHELL': '/bin/bash', 'QT_ACCESSIBILITY': '1', 'COLORTERM':
'truecolor', 'PYENV_SHELL': 'bash', 'XDG_CONFIG_D..., 'PYTEST_CURRENT_TEST':
'cqlshlib/test/test_sslhandling.py::SslSettingsTest::test_invalid_ssl_version_config
(call)'})
def ssl_settings(host, config_file, env=os.environ):
"""
Function which generates SSL setting for cassandra.Cluster
Params:
* host .........: hostname of Cassandra node.
* env ..........: environment variables. SSL factory will use, if
passed,
SSL_CERTFILE and SSL_VALIDATE variables.
* config_file ..: path to cqlsh config file (usually ~/.cqlshrc).
SSL factory will use, if set, certfile and validate
options in [ssl] section, as well as host to certfile
mapping in [certfiles] section.
[certfiles] section is optional, 'validate' setting in [ssl] section is
optional too. If validation is enabled then SSL certfile must be
provided
either in the config file or as an environment variable.
Environment variables override any options set in cqlsh config file.
"""
configs = configparser.SafeConfigParser()
configs.read(config_file)
def get_option(section, option):
try:
return configs.get(section, option)
except configparser.Error:
return None
def get_best_tls_protocol(ssl_ver_str):
# newer python versions suggest to use PROTOCOL_TLS to negotiate
the highest TLS version.
# older protocol versions have been deprecated:
# https://docs.python.org/2/library/ssl.html#ssl.PROTOCOL_TLS
# https://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLS
if ssl_ver_str:
return getattr(ssl, "PROTOCOL_%s" % ssl_ver_str, None)
for protocol in ['PROTOCOL_TLS', 'PROTOCOL_TLSv1_2',
'PROTOCOL_TLSv1_1', 'PROTOCOL_TLSv1']:
if hasattr(ssl, protocol):
return getattr(ssl, protocol)
return ssl.PROTOCOL_TLS
ssl_validate = env.get('SSL_VALIDATE')
if ssl_validate is None:
ssl_validate = get_option('ssl', 'validate')
ssl_validate = ssl_validate is None or ssl_validate.lower() != 'false'
ssl_version_str = env.get('SSL_VERSION')
if ssl_version_str is None:
ssl_version_str = get_option('ssl', 'version')
ssl_version = get_best_tls_protocol(ssl_version_str)
if ssl_version is None:
> sys.exit("%s is not a valid SSL protocol, please use one of "
"TLS, TLSv1_2, TLSv1_1, or TLSv1" % (ssl_version_str,))
E SystemExit: invalid_ssl is not a valid SSL protocol, please use one
of TLS, TLSv1_2, TLSv1_1, or TLSv1
sslhandling.py:74: SystemExit
_____________________________________________________________________________________________________________________
SslSettingsTest.test_ssl_version_config
_____________________________________________________________________________________________________________________
self = <cqlshlib.test.test_sslhandling.SslSettingsTest
testMethod=test_ssl_version_config>
def test_ssl_version_config(self):
ssl_ret_val = ssl_settings(self.host, os.path.join('test', 'config',
'sslhandling.config'))
assert ssl_ret_val is not None
> assert ssl_ret_val.get('ssl_version') == getattr(ssl, 'PROTOCOL_TLS')
E AssertionError: assert <_SSLMethod.PROTOCOL_TLSv1: 3> ==
<_SSLMethod.PROTOCOL_TLS: 2>
E + where <_SSLMethod.PROTOCOL_TLSv1: 3> = <built-in method get of dict
object at 0x7f04d878e700>('ssl_version')
E + where <built-in method get of dict object at 0x7f04d878e700> =
{'ca_certs': None, 'cert_reqs': <VerifyMode.CERT_NONE: 0>, 'certfile': None,
'keyfile': None, ...}.get
E + and <_SSLMethod.PROTOCOL_TLS: 2> = getattr(ssl, 'PROTOCOL_TLS')
test/test_sslhandling.py:69: AssertionError
================================================================================================================================
warnings summary
=================================================================================================================================
../venv/lib/python3.8/site-packages/nose/importer.py:12
/tmp/cassandra-trunk/pylib/venv/lib/python3.8/site-packages/nose/importer.py:12:
DeprecationWarning: the imp module is deprecated in favour of importlib; see
the module's documentation for alternative uses
from imp import find_module, load_module, acquire_lock, release_lock
test/run_cqlsh.py:36
/tmp/cassandra-trunk/pylib/cqlshlib/test/run_cqlsh.py:36: DeprecationWarning:
invalid escape sequence \S
DEFAULT_CQLSH_PROMPT = DEFAULT_PREFIX + '(\S+@)?cqlsh(:\S+)?> '
test/test_cqlsh_output.py:766
/tmp/cassandra-trunk/pylib/cqlshlib/test/test_cqlsh_output.py:766:
DeprecationWarning: invalid escape sequence \s
self.assertRegex(output, '.*\s*$')
test/test_cqlsh_output.py:772
/tmp/cassandra-trunk/pylib/cqlshlib/test/test_cqlsh_output.py:772:
DeprecationWarning: invalid escape sequence \[
'^\[cqlsh \S+ \| Cassandra \S+ \| CQL spec \S+ \| Native protocol \S+\]$')
cqlshlib/test/test_cqlsh_completion.py::TestCqlshCompletion::test_complete_command_words
cqlshlib/test/test_cqlsh_completion.py::TestCqlshCompletion::test_complete_on_empty_string
cqlshlib/test/test_cqlsh_output.py::TestCqlshOutput::test_blob_output
cqlshlib/test/test_cqlsh_output.py::TestCqlshOutput::test_describe_keyspace_output
cqlshlib/test/test_cqlsh_output.py::TestCqlshOutput::test_user_types_with_collections
cqlshlib/test/test_unicode.py::TestCqlshUnicode::test_unicode_desc
/tmp/cassandra-trunk/pylib/venv/src/cassandra-driver/cassandra/cluster.py:1243:
DeprecationWarning: Legacy execution parameters will be removed in 4.0.
Consider using execution profiles.
warn("Legacy execution parameters will be removed in 4.0. Consider using "
cqlshlib/test/test_sslhandling.py::SslSettingsTest::test_default_ssl_version
cqlshlib/test/test_sslhandling.py::SslSettingsTest::test_invalid_ssl_version_config
cqlshlib/test/test_sslhandling.py::SslSettingsTest::test_invalid_ssl_versions_from_env
cqlshlib/test/test_sslhandling.py::SslSettingsTest::test_ssl_version_config
cqlshlib/test/test_sslhandling.py::SslSettingsTest::test_ssl_versions_from_env
cqlshlib/test/test_sslhandling.py::SslSettingsTest::test_ssl_versions_from_env
cqlshlib/test/test_sslhandling.py::SslSettingsTest::test_ssl_versions_from_env
cqlshlib/test/test_sslhandling.py::SslSettingsTest::test_ssl_versions_from_env
/tmp/cassandra-trunk/pylib/cqlshlib/sslhandling.py:42: DeprecationWarning:
The SafeConfigParser class has been renamed to ConfigParser in Python 3.2. This
alias will be removed in future versions. Use ConfigParser directly instead.
configs = configparser.SafeConfigParser()
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=============================================================================================================================
short test summary info
=============================================================================================================================
FAILED
test/test_sslhandling.py::SslSettingsTest::test_invalid_ssl_version_config -
SystemExit: invalid_ssl is not a valid SSL protocol, please use one of TLS,
TLSv1_2, TLSv1_1, or TLSv1
FAILED test/test_sslhandling.py::SslSettingsTest::test_ssl_version_config -
AssertionError: assert <_SSLMethod.PROTOCOL_TLSv1: 3> ==
<_SSLMethod.PROTOCOL_TLS: 2>
==============================================================================================================
2 failed, 85 passed, 18 warnings in 214.46s (0:03:34)
==============================================================================================================
+ RETURN=1
+ ccm remove
No currently active cluster (use ccm cluster switch)
+ sed -i 's/testsuite name="nosetests"/testsuite
name="cqlshlib.python3.jdk8.no_cython"/g' nosetests.xml
sed: can't read nosetests.xml: No such file or directory
+ sed -i 's/testcase classname="cqlshlib./testcase
classname="cqlshlib.python3.jdk8.no_cython./g' nosetests.xml
sed: can't read nosetests.xml: No such file or directory
+ mv nosetests.xml ../cqlshlib.xml
mv: cannot stat 'nosetests.xml': No such file or directory
+ deactivate
+ unset -f pydoc
+ '[' -z _ ']'
+
PATH=/home/bereng/.pyenv/plugins/pyenv-virtualenv/shims:/home/bereng/.pyenv/shims:/home/bereng/.pyenv/bin:/home/bereng/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
+ export PATH
+ unset _OLD_VIRTUAL_PATH
+ '[' -z '' ']'
+ '[' -n /bin/bash ']'
+ hash -r
+ '[' -z _ ']'
+ PS1=
+ export PS1
+ unset _OLD_VIRTUAL_PS1
+ unset VIRTUAL_ENV
+ '[' '!' '' = nondestructive ']'
+ unset -f deactivate
+ command -v circleci
+ exit 1
{noformat}
> Update python test framework from nose to pytest
> ------------------------------------------------
>
> Key: CASSANDRA-17293
> URL: https://issues.apache.org/jira/browse/CASSANDRA-17293
> Project: Cassandra
> Issue Type: Task
> Components: CQL/Interpreter
> Reporter: Brad Schoening
> Assignee: Brad Schoening
> Priority: Normal
> Fix For: 4.x
>
>
> I had trouble trying to install and run the python nose test from pip
> (nosetest not found).
> According to the homepage of nose at [https://nose.readthedocs.io/en/latest/]
> h1. _Note to Users_
> _Nose has been in maintenance mode for the past several years and will likely
> cease without a new person/team to take over maintainership. New projects
> should consider using [Nose2|https://github.com/nose-devs/nose2],
> [py.test|http://pytest.org/], or just plain unittest/unittest2._
>
> Upgrading to pytest is likely the least effort.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]