0

I'm attempting to use nose2-3 to run the sawtooth xo tp unit tests, but the code is hanging. When I Ctrl-C out, the below is displayed. Basically, the TP test case makes a call to register the mock validator, and that call never returns because the ZMQ Poller is waiting for something.

I'm on Ubutnu 16 LTS using Python 3.5.2 and rebased with hyperledger/sawtooth-core last week, so I'm running a straightforward configuration with the latest code.

What am I doing wrong here?

Thanks.

envoy:~/git/sawtooth-core/sdk/examples/xo_python$ nose2-3 tests.test_tp_xo
^C
----------------------------------------------------------------------
Ran 0 tests in 2.608s

OK
Traceback (most recent call last):
  File "/usr/bin/nose2-3", line 9, in <module>
    load_entry_point('nose2==0.6.4', 'console_scripts', 'nose2')()
  File "/usr/lib/python3/dist-packages/nose2/main.py", line 306, in discover
    return main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/nose2/main.py", line 100, in __init__
    super(PluggableTestProgram, self).__init__(**kw)
  File "/usr/lib/python3.5/unittest/main.py", line 94, in __init__
    self.runTests()
  File "/usr/lib/python3/dist-packages/nose2/main.py", line 271, in runTests
    self.result = runner.run(self.test)
  File "/usr/lib/python3/dist-packages/nose2/runner.py", line 53, in run
    executor(test, result)
  File "/usr/lib/python3/dist-packages/nose2/runner.py", line 41, in <lambda>
    executor = lambda suite, result: suite(result)
  File "/usr/lib/python3.5/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.5/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.5/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.5/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.5/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.5/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.5/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.5/unittest/suite.py", line 114, in run
    self._handleClassSetUp(test, result)
  File "/usr/lib/python3.5/unittest/suite.py", line 163, in _handleClassSetUp
    setUpClass()
  File "/project/git/sawtooth-core/sdk/examples/xo_python/tests/test_tp_xo.py", line 29, in setUpClass
    super().setUpClass()
  File "/usr/lib/python3/dist-packages/sawtooth_processor_test/transaction_processor_test_case.py", line 31, in setUpClass
    if not cls.validator.register_processor():
  File "/usr/lib/python3/dist-packages/sawtooth_processor_test/mock_validator.py", line 128, in register_processor
    message, ident = self.receive()
  File "/usr/lib/python3/dist-packages/sawtooth_processor_test/mock_validator.py", line 187, in receive
    self._receive()
  File "/usr/lib/python3.5/asyncio/base_events.py", line 375, in run_until_complete
    self.run_forever()
  File "/usr/lib/python3.5/asyncio/base_events.py", line 345, in run_forever
    self._run_once()
  File "/usr/lib/python3.5/asyncio/base_events.py", line 1276, in _run_once
    event_list = self._selector.select(timeout)
  File "/usr/lib/python3/dist-packages/zmq/asyncio.py", line 232, in select
    fd_event_list = self._zmq_poller.poll(timeout)
  File "/usr/lib/python3/dist-packages/zmq/sugar/poll.py", line 99, in poll
    return zmq_poll(self.sockets, timeout=timeout)
  File "zmq/backend/cython/_poll.pyx", line 115, in zmq.backend.cython._poll.zmq_poll (zmq/backend/cython/_poll.c:1705)
  File "zmq/backend/cython/checkrc.pxd", line 12, in zmq.backend.cython.checkrc._check_rc (zmq/backend/cython/_poll.c:2084)
KeyboardInterrupt
envoy
  • 36
  • 2

1 Answers1

0

Have you tried running Dockerfile-tests-installed in the same directory? These tests are mainly for automated use with a complete test environment all set up. See Jenkinsfile in the top level github directory.

If you just want to run it and try it out, you can run it in Ubuntu or with Docker following these instructions: https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide/installing_sawtooth.html

Basically you install Sawtooth, Docker, docker-compose, and run: docker-compose -f sawtooth-default.yaml up

You can then run Sawtooth commands from a Docker shell with: docker exec -it sawtooth-shell-default bash

Dan Anderson
  • 2,265
  • 1
  • 9
  • 20