This change does 2 things:
- Skip 2 tests: they are not actually _testing_ anything, just running functions
Let's skip these for now until we can dedicate some time to investigate what
should be tested here. This will also help the tests breath a little bit.
- Add a small sleep to the async test. This test needs a little breathing room so
the procs don't get stepped on. I think this is what is causing the master to
shut down sometimes during test runs:
```
08:41:47 test_wheel_async (integration.netapi.test_client.NetapiClientTest)
08:41:47 [CPU:0.0%|MEM:13.2%] ... 12:41:47,280 [salt.utils.process :670 ][ERROR ] An un-handled exception from the multiprocessing process 'SignalHandlingMultiprocessingProcess-24' was caught:
08:41:47 Traceback (most recent call last):
08:41:47 File "/tmp/kitchen/testing/salt/utils/process.py", line 663, in _run
08:41:47 return self._original_run()
08:41:47 File "/usr/lib/python3.5/multiprocessing/process.py", line 93, in run
08:41:47 self._target(*self._args, **self._kwargs)
08:41:47 File "/tmp/kitchen/testing/salt/client/mixins.py", line 457, in _proc_function
08:41:47 salt.utils.daemonize()
08:41:47 File "/tmp/kitchen/testing/salt/utils/__init__.py", line 514, in daemonize
08:41:47 os.dup2(dev_null.fileno(), sys.stdout.fileno())
08:41:47 io.UnsupportedOperation: fileno
08:41:47 Process SignalHandlingMultiprocessingProcess-24:
08:41:47 Traceback (most recent call last):
08:41:47 File "/usr/lib/python3.5/multiprocessing/process.py", line 249, in _bootstrap
08:41:47 self.run()
08:41:47 File "/tmp/kitchen/testing/salt/utils/process.py", line 663, in _run
08:41:47 return self._original_run()
08:41:47 File "/usr/lib/python3.5/multiprocessing/process.py", line 93, in run
08:41:47 self._target(*self._args, **self._kwargs)
08:41:47 File "/tmp/kitchen/testing/salt/client/mixins.py", line 457, in _proc_function
08:41:47 salt.utils.daemonize()
08:41:47 File "/tmp/kitchen/testing/salt/utils/__init__.py", line 514, in daemonize
08:41:47 os.dup2(dev_null.fileno(), sys.stdout.fileno())
08:41:47 io.UnsupportedOperation: fileno
```
Marked as flaky originally, but they're still flaky with undetermined
race-conditions. These are skipped in 2018.3 and forward, so let's skip
them here as well.
These were removed in a downstream PR, #47415, and are now failing again
in this merge forward.
I will contact the OP about addressing this in 2018.3 as these test failures
are not something I have been able to track down in a merge-forward PR.
This makes the 2.x usage invalid syntax and forces the use of print as a
function. This adds the import to the files which I've updated in the
last couple of days but forgot to add it.
This PR is part of what will be an ongoing effort to use explicit
unicode strings in Salt. Because Python 3 does not suport Python 2's raw
unicode string syntax (i.e. `ur'\d+'`), we must use
`salt.utils.locales.sdecode()` to ensure that the raw string is unicode.
However, because of how `salt/utils/__init__.py` has evolved into the
hulking monstrosity it is today, this means importing a large module in
places where it is not needed, which could negatively impact
performance. For this reason, this PR also breaks out some of the
functions from `salt/utils/__init__.py` into new/existing modules under
`salt/utils/`. The long term goal will be that the modules within this
directory do not depend on importing `salt.utils`.
A summary of the changes in this PR is as follows:
* Moves the following functions from `salt.utils` to new locations
(including a deprecation warning if invoked from `salt.utils`):
`to_bytes`, `to_str`, `to_unicode`, `str_to_num`, `is_quoted`,
`dequote`, `is_hex`, `is_bin_str`, `rand_string`,
`contains_whitespace`, `clean_kwargs`, `invalid_kwargs`, `which`,
`which_bin`, `path_join`, `shlex_split`, `rand_str`, `is_windows`,
`is_proxy`, `is_linux`, `is_darwin`, `is_sunos`, `is_smartos`,
`is_smartos_globalzone`, `is_smartos_zone`, `is_freebsd`, `is_netbsd`,
`is_openbsd`, `is_aix`
* Moves the functions already deprecated by @rallytime to the bottom of
`salt/utils/__init__.py` for better organization, so we can keep the
deprecated ones separate from the ones yet to be deprecated as we
continue to break up `salt.utils`
* Updates `salt/*.py` and all files under `salt/client/` to use explicit
unicode string literals.
* Gets rid of implicit imports of `salt.utils` (e.g. `from salt.utils
import foo` becomes `import salt.utils.foo as foo`).
* Renames the `test.rand_str` function to `test.random_hash` to more
accurately reflect what it does
* Modifies `salt.utils.stringutils.random()` (née `salt.utils.rand_string()`)
such that it returns a string matching the passed size. Previously
this function would get `size` bytes from `os.urandom()`,
base64-encode it, and return the result, which would in most cases not
be equal to the passed size.