[
https://issues.apache.org/jira/browse/CASSANDRA-10541?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15008770#comment-15008770
]
Paulo Motta commented on CASSANDRA-10541:
-----------------------------------------
Most of the tests (except the auto-completion suite) were fixed on Windows with
{{subprocess}}. Luckily the code was well modularized and allowed to replace
the posix-only pty terminal-access module with a custom WinPty emulation based
on {{subprocess}}.
The problem of accessing a subprocess interactively with {{subprocess.PIPE}} is
that {{subproc.stdout.read}} blocks until new data is present, so I used a
trick (described in [this blog
post|http://eyalarubas.com/python-subproc-nonblock.html]) that uses another
thread to read characters in the background from stdout and put them in a queue
which is consumed by the testing thread without blocking. This trick is not
necessary in dtests because all input is piped to the process, which processes
it and exits, and then all the output is verified at once. The cqlshlib tests
executes each command interactively and checks the output after each command.
Some other fixes:
* Replace the symlink trick to load cqlsh as a module with creating an empty
{{__init__.py}} file during tests on {{cassandra/bin}}, so python will allow
loading {{cqlsh.py}} as a module on both windows and Linux.
* Replaced the signal-based timeout handling on Windows with the eventlet
library, which is now necessary to run cqlshlib tests on Windows.
Although this was sufficient to fix the {{test_cqlsh_output.py}} and
{{test_cql_parsing.py}} suites, it did not fix the command completion tests of
{{test_cqlsh_completion.py}}, probably because readline disables
auto-completing from stdin piped input. For now, I disabled these tests on
Windows and created CASSANDRA-10720 to create platform-independent
auto-completion tests.
[~mambocab] [~philipthompson] any volunteer to review? :-) Also, could we set
up a Windows/Linux cqlshlib cassci run with this branch?
Tests will appear shortly below:
||2.2||3.0||trunk||
|[branch|https://github.com/apache/cassandra/compare/cassandra-2.2...pauloricardomg:2.2-10541]|[branch|https://github.com/apache/cassandra/compare/cassandra-3.0...pauloricardomg:3.0-10541]|[branch|https://github.com/apache/cassandra/compare/trunk...pauloricardomg:trunk-10541]|
|[testall|http://cassci.datastax.com/view/Dev/view/paulomotta/job/pauloricardomg-2.2-10541-testall/lastCompletedBuild/testReport/]|[testall|http://cassci.datastax.com/view/Dev/view/paulomotta/job/pauloricardomg-3.0-10541-testall/lastCompletedBuild/testReport/]|[testall|http://cassci.datastax.com/view/Dev/view/paulomotta/job/pauloricardomg-trunk-10541-testall/lastCompletedBuild/testReport/]|
|[dtests|http://cassci.datastax.com/view/Dev/view/paulomotta/job/pauloricardomg-2.2-10541-dtest/lastCompletedBuild/testReport/]|[dtests|http://cassci.datastax.com/view/Dev/view/paulomotta/job/pauloricardomg-3.0-10541-dtest/lastCompletedBuild/testReport/]|[dtests|http://cassci.datastax.com/view/Dev/view/paulomotta/job/pauloricardomg-trunk-10541-dtest/lastCompletedBuild/testReport/]|
> cqlshlib tests cannot run on Windows
> ------------------------------------
>
> Key: CASSANDRA-10541
> URL: https://issues.apache.org/jira/browse/CASSANDRA-10541
> Project: Cassandra
> Issue Type: Bug
> Components: Tools
> Reporter: Benjamin Lerer
> Assignee: Paulo Motta
> Priority: Minor
> Labels: cqlsh, windows
>
> If I try to run the {{cqlshlib}} tests on Windows, I got the following error:
> {quote}
> ======================================================================
> ERROR: Failure: AttributeError ('module' object has no attribute 'symlink')
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "C:\Python27\lib\site-packages\nose\loader.py", line 414, in
> loadTestsFromName
> addr.filename, addr.module)
> File "C:\Python27\lib\site-packages\nose\importer.py", line 47, in
> importFromPath
> return self.importFromDir(dir_path, fqname)
> File "C:\Python27\lib\site-packages\nose\importer.py", line 94, in
> importFromDir
> mod = load_module(part_fqname, fh, filename, desc)
> File "[...]\pylib\cqlshlib\test\__init__.py", line 17, in <module>
> from .cassconnect import create_test_db, remove_test_db
> File "[...]\pylib\cqlshlib\test\cassconnect.py", line 22, in <module>
> from .basecase import cql, cqlsh, cqlshlog, TEST_HOST, TEST_PORT, rundir
> File "[...]\pylib\cqlshlib\test\basecase.py", line 43, in <module>
> os.symlink(path_to_cqlsh, modulepath)
> AttributeError: 'module' object has no attribute 'symlink'
> ----------------------------------------------------------------------
> Ran 1 test in 0.002s
> FAILED (errors=1)
> {quote}
> The problem comes from the fact tha Windows has no support for symlinks.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)