The fix for bug #1667735 is a better fix for the retries that was originally part of this via https://code.launchpad.net/~mgerdts/cloud-init/+git/cloud-init/+merge/337271 This merge proposal obsoletes merge proposal 337271. The change to DataSourceSmartOS is now quite small. The new tests will only run on VMs running on a SmartOS host and then only if they have write access to /dev/ttyS1. This test code includes Python 2.6 fixes offered by smoser as part of the previous merge proposal. Proof that the new test runs under tox: $ tox tests.unittests.test_datasource.test_smartos.TestSerialConcurrency GLOB sdist-make: /home/mgerdts/cloud-init/setup.py py27 inst-nodeps: /home/mgerdts/cloud-init/.tox/dist/cloud-init-18.2.zip py27 installed: certifi==2018.1.18,chardet==3.0.4,cloud-init==18.2,configobj==5.0.6,contextlib2==0.5.5,coverage==4.5.1,funcsigs==1.0.2,functools32==3.2.3.post2,httpretty==0.8.14,idna==2.6,Jinja2==2.10,jsonpatch==1.23,jsonpointer==2.0,jsonschema==2.6.0,linecache2==1.0.0,MarkupSafe==1.0,mock==2.0.0,nose==1.3.7,oauthlib==2.0.7,pbr==4.0.2,pkg-resources==0.0.0,pyserial==3.4,PyYAML==3.12,requests==2.18.4,six==1.11.0,traceback2==1.4.0,unittest2==1.1.0,urllib3==1.22 py27 runtests: PYTHONHASHSEED='1425861219' py27 runtests: commands[0] | python -m nose tests.unittests.test_datasource.test_smartos.TestSerialConcurrency ---------------------------------------------------------------------- Ran 0 tests in 0.000s OK py3 inst-nodeps: /home/mgerdts/cloud-init/.tox/dist/cloud-init-18.2.zip py3 installed: certifi==2018.1.18,chardet==3.0.4,cloud-init==18.2,configobj==5.0.6,contextlib2==0.5.5,coverage==4.5.1,httpretty==0.8.14,idna==2.6,Jinja2==2.10,jsonpatch==1.23,jsonpointer==2.0,jsonschema==2.6.0,linecache2==1.0.0,MarkupSafe==1.0,mock==2.0.0,nose==1.3.7,nose-timer==0.7.1,oauthlib==2.0.7,pbr==4.0.2,pkg-resources==0.0.0,pyserial==3.4,PyYAML==3.12,requests==2.18.4,six==1.11.0,termcolor==1.1.0,traceback2==1.4.0,unittest2==1.1.0,urllib3==1.22 py3 runtests: PYTHONHASHSEED='1425861219' py3 runtests: commands[0] | /home/mgerdts/cloud-init/.tox/py3/bin/python -m nose --with-timer --timer-top-n 10 tests.unittests.test_datasource.test_smartos.TestSerialConcurrency . [success] 100.00% tests.unittests.test_datasource.test_smartos.TestSerialConcurrency.test_all_keys: 22.6319s ---------------------------------------------------------------------- Ran 1 test in 22.633s OK flake8 inst-nodeps: /home/mgerdts/cloud-init/.tox/dist/cloud-init-18.2.zip flake8 installed: certifi==2018.1.18,chardet==3.0.4,cloud-init==18.2,configobj==5.0.6,flake8==3.3.0,hacking==0.13.0,idna==2.6,Jinja2==2.10,jsonpatch==1.23,jsonpointer==2.0,jsonschema==2.6.0,MarkupSafe==1.0,mccabe==0.6.1,oauthlib==2.0.7,pbr==4.0.2,pep8==1.5.7,pkg-resources==0.0.0,pycodestyle==2.3.1,pyflakes==1.5.0,PyYAML==3.12,requests==2.18.4,six==1.11.0,urllib3==1.22 flake8 runtests: PYTHONHASHSEED='1425861219' flake8 runtests: commands[0] | /home/mgerdts/cloud-init/.tox/flake8/bin/python -m flake8 tests.unittests.test_datasource.test_smartos.TestSerialConcurrency xenial inst-nodeps: /home/mgerdts/cloud-init/.tox/dist/cloud-init-18.2.zip xenial installed: cloud-init==18.2,configobj==5.0.6,contextlib2==0.5.1,httpretty==0.8.6,Jinja2==2.8,jsonpatch==1.16,jsonpointer==2.0,linecache2==1.0.0,MarkupSafe==1.0,mock==1.3.0,nose==1.3.7,oauthlib==1.0.3,pbr==4.0.2,pkg-resources==0.0.0,pyserial==3.0.1,PyYAML==3.11,requests==2.9.1,six==1.10.0,traceback2==1.4.0,unittest2==1.1.0 xenial runtests: PYTHONHASHSEED='1425861219' xenial runtests: commands[0] | python ./tools/pipremove jsonschema xenial runtests: commands[1] | python -m nose tests.unittests.test_datasource.test_smartos.TestSerialConcurrency . ---------------------------------------------------------------------- Ran 1 test in 21.136s OK pylint inst-nodeps: /home/mgerdts/cloud-init/.tox/dist/cloud-init-18.2.zip pylint installed: astroid==1.6.3,certifi==2018.1.18,chardet==3.0.4,cloud-init==18.2,configobj==5.0.6,contextlib2==0.5.5,coverage==4.5.1,httpretty==0.8.14,idna==2.6,isort==4.3.4,Jinja2==2.10,jsonpatch==1.23,jsonpointer==2.0,jsonschema==2.6.0,lazy-object-proxy==1.3.1,linecache2==1.0.0,MarkupSafe==1.0,mccabe==0.6.1,mock==2.0.0,nose==1.3.7,oauthlib==2.0.7,pbr==4.0.2,pkg-resources==0.0.0,pylint==1.8.1,pyserial==3.4,PyYAML==3.12,requests==2.18.4,six==1.11.0,traceback2==1.4.0,unittest2==1.1.0,urllib3==1.22,wrapt==1.10.11 pylint runtests: PYTHONHASHSEED='1425861219' pylint runtests: commands[0] | /home/mgerdts/cloud-init/.tox/pylint/bin/python -m pylint tests.unittests.test_datasource.test_smartos.TestSerialConcurrency Using config file /home/mgerdts/cloud-init/.pylintrc _______________________________________ summary _______________________________________ py27: commands succeeded py3: commands succeeded flake8: commands succeeded xenial: commands succeeded pylint: commands succeeded congratulations :)