Compare commits

..

100 Commits

Author SHA1 Message Date
Alex Willmer 2d8751c1fe
Merge pull request #1375 from mitogen-hq/release-v0.3.34
Release v0.3.34
1 week ago
Alex Willmer b5993f4893 Merge commit '8e6a93d' into release-v0.3.34 1 week ago
Alex Willmer 4fdd2e38f9
Merge pull request #1369 from moreati/release-v0.3.33
Release v0.3.33
2 weeks ago
Alex Willmer f57bb3a385 Merge commit '4a442f5' into release-v0.3.33 2 weeks ago
Alex Willmer f050f07d17
Merge pull request #1366 from moreati/release-v0.3.32
Release v0.3.32
2 weeks ago
Alex Willmer c785c0e889 Merge commit '28ea478' into release-v0.3.32 2 weeks ago
Alex Willmer b411da8312
Merge pull request #1354 from moreati/release-v0.3.31
Release v0.3.31
4 weeks ago
Alex Willmer e572922d9d Merge commit '77b7a31' into release-v0.3.31 4 weeks ago
Alex Willmer 81e11d5456
Merge pull request #1347 from moreati/release-v0.3.30
Release v0.3.30
1 month ago
Alex Willmer 263884070d Merge commit '1e90ff2' into release-v0.3.30 1 month ago
Alex Willmer c01f430957
Merge pull request #1340 from moreati/release-v0.3.29
Release v0.3.29
3 months ago
Alex Willmer c0dd5c6966 Merge commit 'e670bf0' into stable 3 months ago
Alex Willmer ce0c596700
Merge pull request #1338 from moreati/release-v0.3.28
Release v0.3.28
3 months ago
Alex Willmer 2791abe17a Merge commit '9f9b37d' into release-v0.3.28 3 months ago
Alex Willmer ced63f96d9
Merge pull request #1332 from moreati/release-v0.3.27
Release v0.3.27
4 months ago
Alex Willmer cbf47967b1 Merge commit '154331e455a3153252e44fe41a9e0b3d08ccf477' into release-v0.3.27 4 months ago
Alex Willmer f77db1da59
Merge pull request #1321 from moreati/release-v0.3.26
Release v0.3.26
4 months ago
Alex Willmer fd1d45568a Merge commit '5908936' into release-v0.3.26 4 months ago
Alex Willmer 021d712edc
Merge pull request #1316 from moreati/release-v0.3.25
Release v0.3.25
4 months ago
Alex Willmer 536ab7d78e Merge commit 'dfafa14' into release-v0.3.25 4 months ago
Alex Willmer 4f213ab365
Merge pull request #1270 from moreati/stable
Release 0.3.24
6 months ago
Alex Willmer 1b137f1531 Merge commit '229fd67' into stable 6 months ago
Alex Willmer 0eb7ee2250
Merge pull request #1262 from moreati/release-v0.3.24
Release v0.3.24
7 months ago
Alex Willmer 9e02175134 Merge commit '8e25944' into release-v0.3.24 7 months ago
Alex Willmer 29d78ae4aa
Merge pull request #1241 from moreati/release-v0.3.23
Release v0.3.22
10 months ago
Alex Willmer f423529211 Merge commit 'ae703b9' into release-v0.3.23 10 months ago
Alex Willmer b8c876dac5
Merge pull request #1224 from moreati/release-v0.3.22
Release v0.3.21
11 months ago
Alex Willmer 0ebbb0650d Merge commit '8b7354c' into release-v0.3.22 11 months ago
Alex Willmer 161a231e48
Merge pull request #1208 from moreati/release-v0.3.20
Release v0.3.20
11 months ago
Alex Willmer 517768ac3f Merge commit 'f1f8ad1' into release-v0.3.20 11 months ago
Alex Willmer 5075cf9c24
Merge pull request #1199 from moreati/release-v0.3.19
Release v0.3.19
1 year ago
Alex Willmer d8494129f5 Merge commit '24ba734ff9d1a3669a844c41623d1583970d9787' into release-v0.3.19 1 year ago
Alex Willmer 4b0954a441
Merge pull request #1195 from moreati/release-v0.3.18
Release v0.3.18
1 year ago
Alex Willmer 02898d70a4 Merge commit 'd85d9a25ee02bddecf068b888c2d814cc918864c' into release-v0.3.18 1 year ago
Alex Willmer d8408b1f25
Merge pull request #1191 from moreati/release-v0.3.17
Release v0.3.17
1 year ago
Alex Willmer 35cc81b074 Merge commit '6cf6f69751e4533eb4f77d2e277c5989571357a5' into release-v0.3.17 1 year ago
Alex Willmer c883f177f3
Merge pull request #1180 from moreati/release-v0.3.16
Release v0.3.16
1 year ago
Alex Willmer a41a9544eb Merge commit 'd28dd09e23c17d82c3eedd5de64c94bebcf290f5' into release-v0.3.16 1 year ago
Alex Willmer 33b082f432
Merge pull request #1171 from moreati/release-v0.3.15
Release v0.3.15
1 year ago
Alex Willmer f4d7385a9c Merge commit '7634e2c' into release-v0.3.15 1 year ago
Alex Willmer 4bc0d9a050
Merge pull request #1164 from moreati/release-v0.3.14
Release v0.3.14
1 year ago
Alex Willmer 9e5d6bfb1b Merge commit 'c4ca015' into release-v0.3.14 1 year ago
Alex Willmer 94e02e1157
Merge pull request #1152 from moreati/release-0.3.13
Release 0.3.13
1 year ago
Alex Willmer 37684545e7 Merge commit '8dec03894170353a7588b1414cf88772d330d1f0' into release-0.3.13 1 year ago
Alex Willmer 63e193bdbe
Merge pull request #1141 from moreati/release-v0.3.12
Release v0.3.12
1 year ago
Alex Willmer 644d42f831 Merge commit '298d28a650a2f154ce3db4bc98495eab964e0e7f' into release-v0.3.12 1 year ago
Alex Willmer 0b895c8673
Merge pull request #1131 from moreati/release-v0.3.11
Release v0.3.11
1 year ago
Alex Willmer 61c82c8dee Merge commit 'c63dc0e080b0f3b955686b10facd0918cc5a71b5' into release-v0.3.11 1 year ago
Alex Willmer 80efb4668d
Merge pull request #1123 from moreati/release-0.3.10
Release 0.3.10
1 year ago
Alex Willmer 6f903b28de Merge commit 'cea2e7b98dc9e255b87f64471ed808a8e004afc1' into release-0.3.10 1 year ago
Alex Willmer db1b7af6cc
Merge pull request #1102 from moreati/release-v0.3.9
Release v0.3.9
1 year ago
Alex Willmer bfafcbbc77 Merge commit '6fbad3ae7dd03d6f41d3b0a4ceb7d0d4ed3832b8' into release-v0.3.9 1 year ago
Alex Willmer 5e903ab1e1
Merge pull request #1093 from moreati/release-v0.3.8
Release v0.3.8
1 year ago
Alex Willmer d0d39cccf2 Merge commit 'e334b50d9d5bc5174d1e07c83c6617db6406193e' into release-v0.3.8 1 year ago
Alex Willmer 3f7a0f74a5
Merge pull request #1057 from moreati/release-v0.3.7
Release v0.3.7
2 years ago
Alex Willmer f6ed546c38 Merge commit 'a3644963c40f117b2bef819cc8617bbd395c7f95' into release-v0.3.7 2 years ago
Alex Willmer b488baed25 Prepare 0.3.6 2 years ago
Alex Willmer d70ec4e540 ansible_mitogen: Handle AnsibleUnsafeText et al in Ansible >= 7
Follwing fixes in Ansible 7-9 for CVE-2023-5764 cating `AnsibleUnsafeBytes` &
`AnsibleUnsafeText` to `bytes()` or `str()` requires special handling. The
handling is Ansible specific, so it shouldn't go in the mitogen package but
rather the ansible_mitogen package.

`ansible_mitogen.utils.unsafe.cast()` is most like `mitogen.utils.cast()`.
During development it began as `ansible_mitogen.utils.unsafe.unwrap_var()`,
closer to an inverse of `ansible.utils.unsafe_procy.wrap_var()`. Future
enhancements may move in this direction.

refs #977, refs #1046

See also
- https://github.com/advisories/GHSA-7j69-qfc3-2fq9
- https://github.com/ansible/ansible/pull/82293
- https://github.com/mitogen-hq/mitogen/wiki/AnsibleUnsafe-notes
2 years ago
Alex Willmer 8059be7160 ansible_mitogen: Make ansible_mitogens.utils a package
Prep work for ansible_mitogen.utils.unsafe
2 years ago
Alex Willmer 1c0253f201 mitogen: Raise TypeError on `mitogen.utils.cast(custom_str)` failures
If casting a string fails then raise a TypeError. This is potentially an API
breaking change; chosen as the lesser evil vs. allowing silent errors.

`cast()` relies on `bytes(obj)` & `str(obj)` returning the respective
supertype. That's no longer the case for `AnsibleUnsafeBytes` &
`AnsibleUnsafeText`; since fixes/mitigations for  CVE-2023-5764.

fixes #1046, refs #977

See also
- https://github.com/advisories/GHSA-7j69-qfc3-2fq9
- https://github.com/ansible/ansible/pull/82293
2 years ago
Orion Poplawski 11e5529e44 ansible_mitogen: Add Ansible 7 support
Co-authored-by: Orion Poplawski <orion@nwra.com>
2 years ago
Alex Willmer 1fbf93203c Start v0.3.6 development 2 years ago
Alex Willmer 541f7c3247
Merge pull request #1044 from moreati/stable-0.3.5
Release v0.3.5
2 years ago
Alex Willmer 1572da1563 docs: Correct PEP 451 hyperlink
(cherry picked from commit 50efa53f8f)
2 years ago
Alex Willmer d83cfd6bed Merge v0.3.5 preperation 2 years ago
Alex Willmer d26ded2ecb
Merge pull request #1003 from moreati/release-0.3.4
Release 0.3.4
2 years ago
Alex Willmer b4d910ae1d Merge commit 'f18f516' into release-0.3.4 2 years ago
Alex Willmer 660d3e0885
Merge pull request #932 from moreati/release-0.3.3
Release 0.3.3
4 years ago
Alex Willmer 8ab84237af Merge commit 'c0d3deeac571eb36dfccbe5ca2f1579f2aceca2a' into release-0.3.3 4 years ago
Alex Willmer bd3cfb4230
Merge pull request #892 from moreati/prepare-0.3.2
Fix Trove classifier, bump version
4 years ago
Alex Willmer 1a84184838 Fix Trove classifier, bump version
fixes #891
4 years ago
Alex Willmer 2bdffd05d0
Merge pull request #886 from moreati/prepare-0.3.1
Prepare 0.3.1
4 years ago
Alex Willmer b19223c168 Release 0.3.1 4 years ago
Alex Willmer 61ccf055ad Merge branch 'master' into prepare-0.3.1 4 years ago
Alex Willmer 74e7bc2bf7
Merge pull request #862 from moreati/release-0.3.0
Release 0.3.0
4 years ago
Alex Willmer 55f973e74e Release v0.3.0 4 years ago
Alex Willmer 58ce9d83a4 Merge branch 'master' into release-0.3.0 4 years ago
David Wilson d3f6ad74c4 Merge remote-tracking branch 'origin/stable-029' into stable 6 years ago
David Wilson 706a94bc97 Merge remote-tracking branch 'origin/v028' into stable
* origin/v028: (383 commits)
  Bump version for release.
  docs: update Changelog for 0.2.8.
  issue #627: add test and tweak Reaper behaviour.
  docs: lots more changelog concision
  docs: changelog concision
  docs: more changelog tweaks
  docs: reorder chapters
  docs: versionless <title>
  docs: update supported Ansible version, mention unsupported features
  docs: changelog fixes/tweaks
  issue #590: update Changelog.
  issue #621: send ADD_ROUTE earlier and add test for early logging.
  issue #590: whoops, import missing test modules
  issue #590: rework ParentEnumerationMethod to recursively handle bad modules
  issue #627: reduce the default pool size in a child to 2.
  tests: add a few extra service tests.
  docs: some more hyperlink joy
  docs: more hyperlinks
  docs: add domainrefs plugin to make link aliases everywhere \o/
  docs: link IS_DEAD in changelog
  docs: tweaks to better explain changelog race
  issue #533: update routing to account for DEL_ROUTE propagation race
  tests: use defer_sync() Rather than defer() + ancient sync_with_broker()
  tests: one case from doas_test was invoking su
  tests: hide memory-mapped files from lsof output
  issue #615: remove meaningless test
  issue #625: ignore SIGINT within MuxProcess
  issue #625: use exec() instead of subprocess in mitogen_ansible_playbook
  issue #615: regression test
  issue #615: update Changelog.
  issue #615: ensure 4GB max_message_size is configured for task workers.
  issue #615: update Changelog.
  issue #615: route a dead message to recipients when no reply is expected
  issue #615: fetch_file() might be called with AnsibleUnicode.
  issue #615: redirect 'fetch' action to 'mitogen_fetch'.
  issue #615: extricate slurp brainwrong from mitogen_fetch
  issue #615: ansible: import Ansible fetch.py action plug-in
  issue #533: include object identity of Stream in repr()
  docs: lots more changelog
  issue #595: add buildah to docs and changelog.
  docs: a few more internals.rst additions
  ci: update to Ansible 2.8.3
  tests: another random string changed in 2.8.3
  tests: fix sudo_flags_failure for Ansible 2.8.3
  ci: fix procps command line format warning
  Whoops, merge together lgtm.yml and .lgtm.yml
  issue #440: log Python version during bootstrap.
  docs: update changelog
  issue #558: disable test on OSX to cope with boundless mediocrity
  issue #558, #582: preserve remote tmpdir if caller did not supply one
  issue #613: must await 'exit' and 'disconnect' in wait=False test
  Import LGTM config to disable some stuff
  Fix up another handful of LGTM errors.
  tests: work around AnsibleModule.run_command() race.
  docs: mention another __main__ safeguard
  docs: tweaks
  formatting error
  docs: make Sphinx install soft fail on Python 2.
  issue #598: allow disabling preempt in terraform
  issue #598: update Changelog.
  issue #605: update Changelog.
  issue #605: ansible: share a sem_t instead of a pthread_mutex_t
  issue #613: add tests for all the weird shutdown methods
  Add mitogen.core.now() and use it everywhere; closes #614.
  docs: move decorator docs into core.py and use autodecorator
  preamble_size: make it work on Python 3.
  docs: upgrade Sphinx to 2.1.2, require Python 3 to build docs.
  docs: fix Sphinx warnings, add LogHandler, more docstrings
  docs: tidy up some Changelog text
  issue #615: fix up FileService tests for new logic
  issue #615: another Py3x fix.
  issue #615: Py3x fix.
  issue #615: update Changelog.
  issue #615: use FileService for target->controll file transfers
  issue #482: another Py3 fix
  ci: try removing exclude: to make Azure jobs work again
  compat: fix Py2.4 SyntaxError
  issue #482: remove 'ssh' from checked processes
  ci: Py3 fix
  issue #279: add one more test for max_message_size
  issue #482: ci: add stray process checks to all jobs
  tests: fix format string error
  core: MitogenProtocol.is_privileged was not set in children
  issue #482: tests: fail DockerMixin tests if stray processes exist
  docs: update Changelog.
  issue #586: update Changelog.
  docs: update Changelog.
  [security] core: undirectional routing wasn't respected in some cases
  docs: tidy up Select.all()
  issue #612: update Changelog.
  master: fix TypeError
  pkgutil: fix Python3 compatibility
  parent: use protocol for getting remote_id
  docs: merge signals.rst into internals.rst
  os_fork: do not attempt to cork the active thread.
  parent: fix get_log_level() for split out loggers.
  issue #547: fix service_test failures.
  issue #547: update Changelog.
  issue #547: core/service: race/deadlock-free service pool init
  docs: update Changelog.
  ...
6 years ago
David Wilson 251642943d Merge remote-tracking branch 'origin/v027' into stable
* origin/v027:
  docs: update Changelog for release.
  Bump version for release.
  issue #587: update Changelog
  issue #587: ansible: descriptive version check during startup.
  ansible: descriptive version check during startup.
  issue #581: expose mitogen_mask_remote_name variable.
  issue #576: fix Kwargs minor version check.
  issue #574: fix ISSUE_TEMPLATE link
  issue #575: fix exception text rendering
  docs: remove infringing mark
  docs: fix config var scope
  docs: faster stats-preserving redirect
  docs: update ansible page
  issue #570: add firewalld to always-fork list for now.
  docs: removed excess word
  docs: fixed message routing example description
  docs: removed repeated word
  docs: update Changelog; closes #557.
  issue #557: support correct cpu_set_t size
7 years ago
David Wilson 407307adf6 Merge remote-tracking branch 'origin/026' into stable
* origin/026:
  docs: update Changelog for release.
  Bump version for release.
  issue #555: ansible: workaround ancient reload(sys) hack.
  issue #554: mitogen_action_script fix
  issue #554: fix Ansible 2.4 compatibility
  issue #554: don't rely on tmp_path autoremoval in test.
  issue #554: track and remove multiple make_tmp_path() calls.
  docs: update Changelog.
  docs: drastically simplify install/changelog.
  issue #552: include process identity in log messages.
  issue #550: update Changelog.
  issue #550: parent: add explanatory comment.
  issue #550: fix up TTY ioctls on WSL 2016 Anniversary Update
  docs: update Changelog.
  service: make service list optional.
  docs: update Changelog; closes #548.
  issue #548: always treat transport=smart as 'ssh' for mitogen_via=.
  docs: better intro paragraph.
  .ci: copy private key file to tempdir.
  os_fork: more doc tweaks
  os_fork: more doc tweaks
  os_fork: yet more doc tidyup
  os_fork: more doc tweaks
  os_fork: clean up docs
  .ci: import soak scripts.
  .ci: allow containers for different jobs to run simultaneously
  os_fork: python 3 fixes and tests.
  issue #535: activate Corker on 2.4 in master too.
  issue #535: update Changelog.
  issue #535: wire mitogen.os_fork into Broker and Pool.
  issue #535: parent: add create_socketpair(size=..) parameter.
  issue #535: introduce mitogen.os_fork module and Corker class.
  issue #535: docs: update Changelog
  issue #535: service: support Pool.defer() like Broker.defer()
  issue #535: core: unicode.encode() may take importer lock on 2.x
  issue #535: docs: fix up Select doc
  issue #535: docs: update Changelog.
  issue #535: core/select: support selecting from Latches.
  core: increase cookie field lengths to 64-bit; closes #545.
  tests: ensure serialization restrictions are in effect
  tests/bench: set process affinity in throughput.py.
  docs: update copyright year.
  docs: update Changelog.
  core: Make Latch.put(obj=) optional.
  docs: change 'unreleased' Changelog format and add a hint.
  docs: update Changelog; closes #542.
  issue #542: return of select poller, new selection logic
  issue #542: .ci: move some tests to Azure and enable Mac job.
  ansible: create stub __init__.py for sdist.
7 years ago
David Wilson ae80d42cb4 Merge remote-tracking branch 'origin/dmw' into stable
* origin/dmw:
  issue #537: disable just the trivial LinuxPolicyTest on Travis.
  docs: update Changelog; closes #537.
  ansible: refactor affinity class and add abstract tests.
  Bump version for release.
  docs: update Changelog.
  core: serialize calls to _service_stub_main().
  docs: update Changelog; closes #532.
  issue #532: PushFileService race.
  docs: more concise Changelog.
  issue #541: changelog typos.
  ansible: quiesce boto logger; closes #541.
  docs: update Changelog.
  tests/ansible: Spec.port() test & mitogen_via= fix.
  Update copyright year everywhere.
  tests/ansible: Spec.become_pass() test.
  docs: remove top "Table of Contents" link
  docs: remove a little more top margin wastage
  tests/ansible: Spec.become_user() test.
  docs: update Changelog; closes #539.
  issue #539: disable logger propagation.
  ansible: capture stderr stream of async tasks. Closes #540.
  docs: update Changelog.
  issue #536: rework how 2.3-compatible simplejson is served
  .github: add some more questions to issue template
  docs: duplicate word
  docs: update Changelog.
  tests/ansible: Spec.become_method() test & mitogen_via= fix.
  setup.py: include LICENSE; closes #538.
  tests/ansible: Spec.become() test
  tests/ansible: Spec.password() test, document interactive pw limitation.
  tests/ansible: Spec.remote_user() test & mitogen_via= fix.
  tests/ansible: Spec.remote_addr() test & mitogen_via= fix.
  tests/ansible: Spec.transport() test.
  docs: lighter pink
  docs: add 'Fixes' heading
  docs: more margin tweaks for changelog
  docs: tighter <p> margins, even less shouting, red headings
  docs: tidy up footer and GitHub link
  docs: enable fixed_sidebar
  docs: sans-serif fonts, reduce shouty headings
  issue #536: add mitogen_via= tests too.
  ansible: fix a crash on 2.3 when mitogen_via= host is missing.
  tests: for 2.3 compatibility, disable gcloud.py for now
  docs: update Changelog; closes #511, closes #536.
  docs: update Changelog release date.
  issue #536: disable transport_config tests on vanilla
  issue #536: restore correct Python interpreter selection behaviour.
  issue #536: connection_delegation/ tests were erroneously broken
  tests: define MITOGEN_INVENTORY_FILE even if -i unspecified.
  issue #536: add tests for each ansible_python_interpreter case.
  issue #536: stop defining explicit localhost in inventory.
  tests: allow running Ansible tests locally without -udmw again.
  stable: fix preamble_size on stable docs.
  issue #481: add test.
7 years ago
David Wilson 129f7c5dea Merge remote-tracking branch 'origin/docs-fix' into stable
* origin/docs-fix:
  stable: fix preamble_size on stable docs.
7 years ago
David Wilson cf1286b9e1 stable: fix preamble_size on stable docs. 7 years ago
David Wilson e56db4ccb7 Merge remote-tracking branch 'origin/v024' into stable
* origin/v024: (662 commits)
  docs: update Changelog release date.
  Bump version for release.
  docs: update Changelog; closes #481
  issue #481: core: preserve stderr TTY FD if one is present.
  issue #481: avoid crash if disconnect occurs during forward_modules()
  Add a few more important modules to preamble_size.py.
  .ci: add verbiage for run_batches() too.
  .ci: add README.md.
  docs: update thanks
  docs: lose "approaching stability" language, we're pretty good now
  docs: fix changelog syntax/order/"20KB"
  tests: add new compression parameter to mitogen_get_stack results
  tests: disable affinity_test on Travis :/
  issue #508: fix responder stats test due to new smaller parent.py.
  issue #508: tests: skip minify_test Py2.4/2.5 for profiler.py.
  tests: fix fallout from 36fb318adf5c56e729296c3efce84f4dd75ced4e
  issue #520: add AIX auth failure string to su.
  tests: move affinity_test to Ansible tests.
  core: cProfile is not available in 2.4.
  issue #505: docs: add new detail graph for one scenario.
  docs: update and re-record profile graphs in docs; closes #505
  service: fix PushFileService exception
  tests: pad out localhost-*
  service: start pool shutdown on broker shutdown.
  master: .encode() needed for Py3.
  ansible: stash PID files in CWD if requested for debugging.
  issue #508: master: minify_safe_re must be bytes for Py3.
  bench: tidy up and cpu-pin some more files.
  tests: add localhost-x100
  ansible: double the default pool size.
  ansible: raise error with correct exception type.
  issue #508: master: minify all Mitogen/ansible_mitogen sources.
  parent: PartialZlib docstrings.
  ansible: hacky parser to alow bools to be specified on command line
  parent: pre-cache bootstrap if possible.
  docs: update Changelog.
  ansible: add mitogen_ssh_compression variable.
  service: PushFileService never recorded a file as sent.
  parent: synchronize get_core_source()
  service: use correct profile aggregation name.
  SyntaxError.
  ansible: don't pin controller if <4 cores.
  tests: make soak testing work reliably on vanilla.
  docs: changelog tidyups.
  ansible: document and make affinity stuff portable to non-Linux
  ansible: fix affinity.py test failure on 2 cores.
  ansible: preheat PluginLoader caches before fork.
  tests: make mitogen_shutdown_all be run_once by default.
  docs: update Changelog.
  ansible: use Poller for WorkerProcess; closes #491.
  ansible: new multiplexer/workers configuration
  docs: update Changelog.
  docs: update Changelog.
  ansible: pin connection multiplexer to a single core
  utils: pad out reset_affinity() and integrate with detach_popen()
  utils: import reset_affinity() function.
  master: set Router.profiling if MITOGEN_PROFILING variable present.
  parent: don't kill children when profiling is active.
  ansible: hook strategy and worker processes into profiler
  profiler: import from linear2 branch
  core: tidy up existing profiling code and support MITOGEN_PROFILE_FMT
  issue #260: redundant if statement.
  ansible: ensure MuxProcess MITOGEN_PROFILING results reach disk.
  ansible/bench: make end= configurable.
  master: cache sent/forwarded module names
  Aggregate code coverage data across tox all runs
  Allow independant control of coverage erase and reporting
  Fix incorrect attempt to use coverage
  docs: update Changelog; closes #527.
  issue #527: catch new-style module tracebacks like vanilla.
  Fix DeprecationWarning in mitogen.utils.run_with_router()
  Generate coverage report even if some tests fail
  ci: fix incorrect partition/rpartition from 8a4caea84f
  issue #260: hide force-disconnect messages.
  issue #498: fix shutdown crash
  issue #260: avoid start_transmit()/on_transmit()/stop_transmit()
  core: ensure broker profiling output reaches disk
  master: keep is_stdlib_path() result as negative cache entry
  ci: Allow DISTROS="debian*32" variable, and KEEP=1
  Use develop mode in tox
  issue #429: fix sudo regression.
  misc: rename to scripts. tab completion!!
  core: Latch._wake improvements
  issue #498: prevent crash on double 'disconnect' signal.
  issue #413: don't double-propagate DEL_ROUTE to parent.
  issue #498: wrap Router dict mutations in a lock
  issue #429: enable en_US locale to unbreak debops test.
  issue #499: fix another mind-numbingly stupid vanilla inconsistency
  issue #497: do our best to cope with crap upstream code
  ssh: fix test to match updated log format.
  issue #429: update Changelog.
  issue #429: update Changelog.
  issue #429: teach sudo about every know i18n password string.
  issue #429: install i18n-related bits in test images.
  ssh: tidy up logs and stream names.
  tests: ensure file is closed in connection_test.
  gcloud: small updates
  tests: give ansible/gcloud/ its own requirements file.
  issue #499: another totally moronic implementation difference
  issue #499: disable new test on vanilla.
  ...
7 years ago
David Wilson d9696c1cd5 docs: update Changelog release date. 7 years ago
David Wilson 0114358df0 Merge remote-tracking branch 'origin/master' into v024
* origin/master: (661 commits)
  Bump version for release.
  docs: update Changelog; closes #481
  issue #481: core: preserve stderr TTY FD if one is present.
  issue #481: avoid crash if disconnect occurs during forward_modules()
  Add a few more important modules to preamble_size.py.
  .ci: add verbiage for run_batches() too.
  .ci: add README.md.
  docs: update thanks
  docs: lose "approaching stability" language, we're pretty good now
  docs: fix changelog syntax/order/"20KB"
  tests: add new compression parameter to mitogen_get_stack results
  tests: disable affinity_test on Travis :/
  issue #508: fix responder stats test due to new smaller parent.py.
  issue #508: tests: skip minify_test Py2.4/2.5 for profiler.py.
  tests: fix fallout from 36fb318adf5c56e729296c3efce84f4dd75ced4e
  issue #520: add AIX auth failure string to su.
  tests: move affinity_test to Ansible tests.
  core: cProfile is not available in 2.4.
  issue #505: docs: add new detail graph for one scenario.
  docs: update and re-record profile graphs in docs; closes #505
  service: fix PushFileService exception
  tests: pad out localhost-*
  service: start pool shutdown on broker shutdown.
  master: .encode() needed for Py3.
  ansible: stash PID files in CWD if requested for debugging.
  issue #508: master: minify_safe_re must be bytes for Py3.
  bench: tidy up and cpu-pin some more files.
  tests: add localhost-x100
  ansible: double the default pool size.
  ansible: raise error with correct exception type.
  issue #508: master: minify all Mitogen/ansible_mitogen sources.
  parent: PartialZlib docstrings.
  ansible: hacky parser to alow bools to be specified on command line
  parent: pre-cache bootstrap if possible.
  docs: update Changelog.
  ansible: add mitogen_ssh_compression variable.
  service: PushFileService never recorded a file as sent.
  parent: synchronize get_core_source()
  service: use correct profile aggregation name.
  SyntaxError.
  ansible: don't pin controller if <4 cores.
  tests: make soak testing work reliably on vanilla.
  docs: changelog tidyups.
  ansible: document and make affinity stuff portable to non-Linux
  ansible: fix affinity.py test failure on 2 cores.
  ansible: preheat PluginLoader caches before fork.
  tests: make mitogen_shutdown_all be run_once by default.
  docs: update Changelog.
  ansible: use Poller for WorkerProcess; closes #491.
  ansible: new multiplexer/workers configuration
  docs: update Changelog.
  docs: update Changelog.
  ansible: pin connection multiplexer to a single core
  utils: pad out reset_affinity() and integrate with detach_popen()
  utils: import reset_affinity() function.
  master: set Router.profiling if MITOGEN_PROFILING variable present.
  parent: don't kill children when profiling is active.
  ansible: hook strategy and worker processes into profiler
  profiler: import from linear2 branch
  core: tidy up existing profiling code and support MITOGEN_PROFILE_FMT
  issue #260: redundant if statement.
  ansible: ensure MuxProcess MITOGEN_PROFILING results reach disk.
  ansible/bench: make end= configurable.
  master: cache sent/forwarded module names
  Aggregate code coverage data across tox all runs
  Allow independant control of coverage erase and reporting
  Fix incorrect attempt to use coverage
  docs: update Changelog; closes #527.
  issue #527: catch new-style module tracebacks like vanilla.
  Fix DeprecationWarning in mitogen.utils.run_with_router()
  Generate coverage report even if some tests fail
  ci: fix incorrect partition/rpartition from 8a4caea84f
  issue #260: hide force-disconnect messages.
  issue #498: fix shutdown crash
  issue #260: avoid start_transmit()/on_transmit()/stop_transmit()
  core: ensure broker profiling output reaches disk
  master: keep is_stdlib_path() result as negative cache entry
  ci: Allow DISTROS="debian*32" variable, and KEEP=1
  Use develop mode in tox
  issue #429: fix sudo regression.
  misc: rename to scripts. tab completion!!
  core: Latch._wake improvements
  issue #498: prevent crash on double 'disconnect' signal.
  issue #413: don't double-propagate DEL_ROUTE to parent.
  issue #498: wrap Router dict mutations in a lock
  issue #429: enable en_US locale to unbreak debops test.
  issue #499: fix another mind-numbingly stupid vanilla inconsistency
  issue #497: do our best to cope with crap upstream code
  ssh: fix test to match updated log format.
  issue #429: update Changelog.
  issue #429: update Changelog.
  issue #429: teach sudo about every know i18n password string.
  issue #429: install i18n-related bits in test images.
  ssh: tidy up logs and stream names.
  tests: ensure file is closed in connection_test.
  gcloud: small updates
  tests: give ansible/gcloud/ its own requirements file.
  issue #499: another totally moronic implementation difference
  issue #499: disable new test on vanilla.
  docs: update Changelog; closes #499.
  ...
7 years ago
David Wilson 71f8e84845 docs: 4kify images.
These commits were squashed to avoid repo size exploding.

[cherrypick from master]
7 years ago
David Wilson 2ab6394d1c docs: fix up incomplete Temporary Files section.
[cherrypick from master]
7 years ago
David Wilson 3c63290445 docs: comment out temp files section until I have a chance to write it. 7 years ago
David Wilson 5667116f58 Merge remote-tracking branch 'origin/master' into stable (0.2.3) 7 years ago
David Wilson 2446f85cb6 docs: host demo on Vimeo. 7 years ago
David Wilson ff5044272f Merge branch 'master' into stable (missing changelog) 7 years ago
David Wilson b1c7afa948 Merge remote-tracking branch 'origin/master' into stable v0.2.2 7 years ago
David Wilson 92e058c178 docs: glaring ancient typo. 7 years ago
David Wilson 74eb9b2702 docs: fix lock icon. 7 years ago
David Wilson d16f7eec26 docs: link to PyPI release, not GitHub archive URL.
Now download counts are visible via PSF BigQuery.
7 years ago
David Wilson 2a53d7b658 docs: add "no route" to known issues. 7 years ago
David Wilson bac2fe1689 docs: add jgadling to Contributors 7 years ago
David Wilson f8e191ca8d Merge branch 'master' into stable v0.2.1. 8 years ago

@ -470,7 +470,18 @@ class ActionModuleMixin(ansible.plugins.action.ActionBase):
# chicken-and-egg issue, mitogen needs a python to run low_level_execute_command # chicken-and-egg issue, mitogen needs a python to run low_level_execute_command
# which is required by Ansible's discover_interpreter function # which is required by Ansible's discover_interpreter function
if self._mitogen_discovering_interpreter: if self._mitogen_discovering_interpreter:
possible_pythons = self._mitogen_interpreter_candidates possible_pythons = [
'/usr/bin/python',
'python3',
'python3.7',
'python3.6',
'python3.5',
'python2.7',
'python2.6',
'/usr/libexec/platform-python',
'/usr/bin/python3',
'python'
]
else: else:
# not used, just adding a filler value # not used, just adding a filler value
possible_pythons = ['python'] possible_pythons = ['python']
@ -481,15 +492,12 @@ class ActionModuleMixin(ansible.plugins.action.ActionBase):
rc, stdout, stderr = self._connection.exec_command( rc, stdout, stderr = self._connection.exec_command(
cmd, in_data, sudoable, mitogen_chdir=chdir, cmd, in_data, sudoable, mitogen_chdir=chdir,
) )
except BaseException as exc: # TODO: what exception is thrown?
except:
# we've reached the last python attempted and failed # we've reached the last python attempted and failed
if possible_python == possible_pythons[-1]: if possible_python == possible_pythons[-1]:
raise raise
else: else:
LOG.debug(
'%r._low_level_execute_command: candidate=%r ignored: %s, %r',
self, possible_python, type(exc), exc,
)
continue continue
stdout_text = to_text(stdout, errors=encoding_errors) stdout_text = to_text(stdout, errors=encoding_errors)

@ -40,6 +40,7 @@ import errno
import grp import grp
import json import json
import logging import logging
import operator
import os import os
import pty import pty
import pwd import pwd
@ -65,6 +66,8 @@ if not sys.modules.get(str('__main__')):
import ansible.module_utils.json_utils import ansible.module_utils.json_utils
from ansible.module_utils.six.moves import reduce
import ansible_mitogen.runner import ansible_mitogen.runner
@ -715,9 +718,7 @@ def apply_mode_spec(spec, mode):
mask = CHMOD_MASKS[ch] mask = CHMOD_MASKS[ch]
bits = CHMOD_BITS[ch] bits = CHMOD_BITS[ch]
cur_perm_bits = mode & mask cur_perm_bits = mode & mask
new_perm_bits = 0 new_perm_bits = reduce(operator.or_, (bits[p] for p in perms), 0)
for perm in perms:
new_perm_bits |= bits[perm]
mode &= ~mask mode &= ~mask
if op == '=': if op == '=':
mode |= new_perm_bits mode |= new_perm_bits

@ -73,21 +73,13 @@ import ansible.utils.unsafe_proxy
from ansible.module_utils.six import with_metaclass from ansible.module_utils.six import with_metaclass
from ansible.module_utils.parsing.convert_bool import boolean from ansible.module_utils.parsing.convert_bool import boolean
import ansible_mitogen.utils
import mitogen.core import mitogen.core
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
if ansible_mitogen.utils.ansible_version[:2] >= (2, 19):
_FALLBACK_INTERPRETER = ansible.executor.interpreter_discovery._FALLBACK_INTERPRETER
elif ansible_mitogen.utils.ansible_version[:2] >= (2, 17):
_FALLBACK_INTERPRETER = u'/usr/bin/python3'
else:
_FALLBACK_INTERPRETER = u'/usr/bin/python'
def run_interpreter_discovery_if_necessary(s, task_vars, action, rediscover_python):
def run_interpreter_discovery_if_necessary(s, candidates, task_vars, action, rediscover_python):
""" """
Triggers ansible python interpreter discovery if requested. Triggers ansible python interpreter discovery if requested.
Caches this value the same way Ansible does it. Caches this value the same way Ansible does it.
@ -115,11 +107,8 @@ def run_interpreter_discovery_if_necessary(s, candidates, task_vars, action, red
# blow away the discovered_interpreter_config cache and rediscover # blow away the discovered_interpreter_config cache and rediscover
del task_vars['ansible_facts'][discovered_interpreter_config] del task_vars['ansible_facts'][discovered_interpreter_config]
try: if discovered_interpreter_config not in task_vars['ansible_facts']:
s = task_vars[u'ansible_facts'][discovered_interpreter_config]
except KeyError:
action._mitogen_discovering_interpreter = True action._mitogen_discovering_interpreter = True
action._mitogen_interpreter_candidates = candidates
# fake pipelining so discover_interpreter can be happy # fake pipelining so discover_interpreter can be happy
action._connection.has_pipelining = True action._connection.has_pipelining = True
s = ansible.executor.interpreter_discovery.discover_interpreter( s = ansible.executor.interpreter_discovery.discover_interpreter(
@ -132,17 +121,18 @@ def run_interpreter_discovery_if_necessary(s, candidates, task_vars, action, red
# cache discovered interpreter # cache discovered interpreter
task_vars['ansible_facts'][discovered_interpreter_config] = s task_vars['ansible_facts'][discovered_interpreter_config] = s
action._connection.has_pipelining = False action._connection.has_pipelining = False
else:
s = task_vars['ansible_facts'][discovered_interpreter_config]
# propagate discovered interpreter as fact # propagate discovered interpreter as fact
action._discovered_interpreter_key = discovered_interpreter_config action._discovered_interpreter_key = discovered_interpreter_config
action._discovered_interpreter = s action._discovered_interpreter = s
action._mitogen_discovering_interpreter = False action._mitogen_discovering_interpreter = False
action._mitogen_interpreter_candidates = None
return s return s
def parse_python_path(s, candidates, task_vars, action, rediscover_python): def parse_python_path(s, task_vars, action, rediscover_python):
""" """
Given the string set for ansible_python_interpeter, parse it using shell Given the string set for ansible_python_interpeter, parse it using shell
syntax and return an appropriate argument vector. If the value detected is syntax and return an appropriate argument vector. If the value detected is
@ -153,9 +143,10 @@ def parse_python_path(s, candidates, task_vars, action, rediscover_python):
# if python_path doesn't exist, default to `auto` and attempt to discover it # if python_path doesn't exist, default to `auto` and attempt to discover it
s = 'auto' s = 'auto'
s = run_interpreter_discovery_if_necessary(s, candidates, task_vars, action, rediscover_python) s = run_interpreter_discovery_if_necessary(s, task_vars, action, rediscover_python)
# if unable to determine python_path, fallback to '/usr/bin/python'
if not s: if not s:
s = _FALLBACK_INTERPRETER s = '/usr/bin/python'
return ansible.utils.shlex.shlex_split(s) return ansible.utils.shlex.shlex_split(s)
@ -519,9 +510,6 @@ class PlayContextSpec(Spec):
interpreter_python = C.config.get_config_value( interpreter_python = C.config.get_config_value(
'INTERPRETER_PYTHON', variables=variables, 'INTERPRETER_PYTHON', variables=variables,
) )
interpreter_python_fallback = C.config.get_config_value(
'INTERPRETER_PYTHON_FALLBACK', variables=variables,
)
if '{{' in interpreter_python or '{%' in interpreter_python: if '{{' in interpreter_python or '{%' in interpreter_python:
templar = self._connection.templar templar = self._connection.templar
@ -529,7 +517,6 @@ class PlayContextSpec(Spec):
return parse_python_path( return parse_python_path(
interpreter_python, interpreter_python,
candidates=interpreter_python_fallback,
task_vars=self._task_vars, task_vars=self._task_vars,
action=self._action, action=self._action,
rediscover_python=rediscover_python) rediscover_python=rediscover_python)
@ -745,12 +732,11 @@ class MitogenViaSpec(Spec):
def python_path(self, rediscover_python=False): def python_path(self, rediscover_python=False):
s = self._host_vars.get('ansible_python_interpreter') s = self._host_vars.get('ansible_python_interpreter')
interpreter_python_fallback = self._host_vars.get( # #511, #536: executor/module_common.py::_get_shebang() hard-wires
'ansible_interpreter_python_fallback', [], # "/usr/bin/python" as the default interpreter path if no other
) # interpreter is specified.
return parse_python_path( return parse_python_path(
s, s,
candidates=interpreter_python_fallback,
task_vars=self._task_vars, task_vars=self._task_vars,
action=self._action, action=self._action,
rediscover_python=rediscover_python) rediscover_python=rediscover_python)

@ -145,8 +145,6 @@ Noteworthy Differences
+-----------------+ 3.11 - 3.14 | +-----------------+ 3.11 - 3.14 |
| 12 | | | 12 | |
+-----------------+-----------------+ +-----------------+-----------------+
| 13 | 3.12 - 3.14 |
+-----------------+-----------------+
Verify your installation is running one of these versions by checking Verify your installation is running one of these versions by checking
``ansible --version`` output. ``ansible --version`` output.

@ -18,24 +18,6 @@ To avail of fixes in an unreleased version, please download a ZIP file
`directly from GitHub <https://github.com/mitogen-hq/mitogen/>`_. `directly from GitHub <https://github.com/mitogen-hq/mitogen/>`_.
In progress (unreleased)
------------------------
* :gh:issue:`1237` :mod:`mitogen`: Re-declare Python 2.4 compatibility
* :gh:issue:`1385` :mod:`ansible_mitogen`: Remove a use of
``ansible.module_utils.six``
* :gh:issue:`1354` docs: Document Ansible 13 (ansible-core 2.20) support
* :gh:issue:`1354` :mod:`mitogen`: Clarify error message when a module
request would be refused by allow or deny listing
v0.3.35 (2025-12-01)
--------------------
* :gh:issue:`1132` :mod:`ansible_mitogen` During intrepreter discovery use
Ansible ``INTERPRETER_PYTHON_FALLBACK`` config as list of candidates
v0.3.34 (2025-11-27) v0.3.34 (2025-11-27)
-------------------- --------------------
@ -448,7 +430,7 @@ v0.3.1 (unreleased)
* :gh:issue:`878` Kubectl connector fixed with Ansible 2.10 and above * :gh:issue:`878` Kubectl connector fixed with Ansible 2.10 and above
v0.3.0 (2021-11-24) v0.3.0 (2021-10-28)
------------------- -------------------
This release separates itself from the v0.2.X releases. Ansible's API changed too much to support backwards compatibility so from now on, v0.2.X releases will be for Ansible < 2.10 and v0.3.X will be for Ansible 2.10+. This release separates itself from the v0.2.X releases. Ansible's API changed too much to support backwards compatibility so from now on, v0.2.X releases will be for Ansible < 2.10 and v0.3.X will be for Ansible 2.10+.
@ -461,7 +443,7 @@ This release separates itself from the v0.2.X releases. Ansible's API changed to
* :gh:issue:`847` Removed historic Continuous Integration reverse shell * :gh:issue:`847` Removed historic Continuous Integration reverse shell
v0.2.10 (2021-11-24) v0.2.10 (2021-10-28)
-------------------- --------------------
* :gh:issue:`597` mitogen does not support Ansible 2.8 Python interpreter detection * :gh:issue:`597` mitogen does not support Ansible 2.8 Python interpreter detection
@ -476,6 +458,7 @@ v0.2.10 (2021-11-24)
:py:meth:`ansible.plugins.callback.CallbackBase.v2_runner_on_start` :py:meth:`ansible.plugins.callback.CallbackBase.v2_runner_on_start`
* :gh:issue:`775` Test with Python 3.9 * :gh:issue:`775` Test with Python 3.9
* :gh:issue:`775` Add msvcrt to the default module deny list * :gh:issue:`775` Add msvcrt to the default module deny list
* :gh:issue:`847` Removed historic Continuous Integration reverse shell
v0.2.9 (2019-11-02) v0.2.9 (2019-11-02)

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 84 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 99 KiB

@ -332,16 +332,12 @@ a large fleet of machines, or to alert the parent of unexpected state changes.
Compatibility Compatibility
############# #############
``mitogen.*`` is compatible with Python 2.4 - 2.7 and 3.6 onward; making it Mitogen is compatible with **Python 2.4** released November 2004, making it
suitable for managing a fleet of potentially ancient corporate hardware, such suitable for managing a fleet of potentially ancient corporate hardware, such
as Red Hat Enterprise Linux 5, released in 2007. as Red Hat Enterprise Linux 5, released in 2007.
Every combination of Python 3.x/2.x parent and child should be possible. Every combination of Python 3.x/2.x parent and child should be possible,
Automated testing cannot cover every combination, automated testing tries to however at present only Python 2.4, 2.6, 2.7 and 3.6 are tested automatically.
cover the extemities (e.g. Python 3.14 parent -> Python 2.4 child).
``ansible_mitogen.*`` is compatible with Python 2.7 and 3.6 onward; making it
suitable for Ansible 2.10 onward.
Zero Dependencies Zero Dependencies

@ -0,0 +1,13 @@
# Add viewBox attr to SVGs lacking it, so IE scales properly.
import lxml.etree
import glob
for name in glob.glob('images/*.svg') + glob.glob('images/ansible/*.svg'):
doc = lxml.etree.parse(open(name))
svg = doc.getroot()
if 'viewBox' not in svg.attrib:
svg.attrib['viewBox'] = '0 0 %(width)s %(height)s' % svg.attrib
open(name, 'w').write(lxml.etree.tostring(svg, xml_declaration=True, encoding='UTF-8'))

@ -35,7 +35,7 @@ be expected. On the slave, it is built dynamically during startup.
#: Library version as a tuple. #: Library version as a tuple.
__version__ = (0, 3, 36, 'dev') __version__ = (0, 3, 34)
#: This is :data:`False` in slave contexts. Previously it was used to prevent #: This is :data:`False` in slave contexts. Previously it was used to prevent

@ -541,7 +541,6 @@ def is_blacklisted_import(importer, fullname):
any packages have been whitelisted and `fullname` is not part of one. any packages have been whitelisted and `fullname` is not part of one.
NB: NB:
- The default whitelist is `['']` which matches any module name.
- If a package is on both lists, then it is treated as blacklisted. - If a package is on both lists, then it is treated as blacklisted.
- If any package is whitelisted, then all non-whitelisted packages are - If any package is whitelisted, then all non-whitelisted packages are
treated as blacklisted. treated as blacklisted.
@ -1537,8 +1536,9 @@ class Importer(object):
return importlib.machinery.ModuleSpec(fullname, loader=self) return importlib.machinery.ModuleSpec(fullname, loader=self)
blacklisted_msg = ( blacklisted_msg = (
'A %r request would be refused by the Mitogen master. The module is ' '%r is present in the Mitogen importer blacklist, therefore this '
'on the deny list (blacklist) or not on the allow list (whitelist).' 'context will not attempt to request it from the master, as the '
'request will always be refused.'
) )
pkg_resources_msg = ( pkg_resources_msg = (
'pkg_resources is prohibited from importing __main__, as it causes ' 'pkg_resources is prohibited from importing __main__, as it causes '

@ -82,7 +82,7 @@ setup(
license = 'BSD-3-Clause', license = 'BSD-3-Clause',
url = 'https://github.com/mitogen-hq/mitogen/', url = 'https://github.com/mitogen-hq/mitogen/',
packages = find_packages(exclude=['tests', 'examples']), packages = find_packages(exclude=['tests', 'examples']),
python_requires='>=2.4, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*', python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*',
zip_safe = False, zip_safe = False,
classifiers = [ classifiers = [
'Environment :: Console', 'Environment :: Console',
@ -91,9 +91,6 @@ setup(
'Operating System :: MacOS :: MacOS X', 'Operating System :: MacOS :: MacOS X',
'Operating System :: POSIX', 'Operating System :: POSIX',
'Programming Language :: Python', 'Programming Language :: Python',
'Programming Language :: Python :: 2.4',
'Programming Language :: Python :: 2.5',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.6',

@ -43,7 +43,6 @@ centos7
centos8 centos8
debian9 debian9
debian10 debian10
ubuntu1604
ubuntu1804 ubuntu1804
[ansible_11] [ansible_11]

@ -198,3 +198,21 @@ class ForwardTest(testlib.RouterMixin, testlib.TestCase):
self.assertEqual(2+os_fork, self.router.responder.good_load_module_count) self.assertEqual(2+os_fork, self.router.responder.good_load_module_count)
self.assertLess(10000, self.router.responder.good_load_module_size) self.assertLess(10000, self.router.responder.good_load_module_size)
self.assertGreater(40000, self.router.responder.good_load_module_size) self.assertGreater(40000, self.router.responder.good_load_module_size)
class BlacklistTest(testlib.TestCase):
@unittest.skip('implement me')
def test_whitelist_no_blacklist(self):
assert 0
@unittest.skip('implement me')
def test_whitelist_has_blacklist(self):
assert 0
@unittest.skip('implement me')
def test_blacklist_no_whitelist(self):
assert 0
@unittest.skip('implement me')
def test_blacklist_has_whitelist(self):
assert 0

@ -63,7 +63,7 @@ envlist =
py{27,36}-m_ans-ans{2.10,3,4} py{27,36}-m_ans-ans{2.10,3,4}
py{311}-m_ans-ans{2.10,3-5} py{311}-m_ans-ans{2.10,3-5}
py{313}-m_ans-ans{6-9} py{313}-m_ans-ans{6-9}
py{314}-m_ans-ans{10-13} py{314}-m_ans-ans{10-12}
py{27,36,314}-m_mtg py{27,36,314}-m_mtg
report, report,

Loading…
Cancel
Save