Commit Graph

664 Commits

Author SHA1 Message Date
Alex Willmer a6e7b26c25 tests: Correct path to module_finder_test 2018-03-31 16:40:30 +01:00
Alex Willmer 556ee2aec6 minimize_source: Handling indentation
In the case that string(s) are replaced, any indent or dedent tags must
be re-inserted after the replacemnts.
2018-03-31 14:25:37 +01:00
Alex Willmer 36c5ff1d05 minimize_source: Make comments test invariant on hashbang/coding handling
strip_comments() currently ignores comments on lines 1 and 2, in order
to preserve lines such as

The comments test had normal comments on those lines, hence it was
failing.
2018-03-31 14:23:29 +01:00
Alex Willmer 3bf61bb311 tests: Clarify which minimize_source samples are the reference 2018-03-31 12:51:42 +01:00
Alex Willmer a1e9b9e8db Issue #160: Reimplement minimize_source as token filters
Benefits:

- More correct than re.sub()
- Better handling of trailing whitespace
- Recognises doc-strings regardless of quoting style

Limitations:

- Still not entirely correct
  - Creates a syntax error when function/class body is only a docstring
  - Doesn't handle indented docstrings yet
- Slower by 50x - 8-10 ms vs 0.2 ms for re.sub()
  - Not much scope for improving this, tokenize is 100% pure Python
- Complex state machine, harder to understand
- Higher line count in parent.py
- Untested with Mitogen parent on Python 2.x and child on Python 2.x+y

No change

- Only requires Python stdlib modules
2018-03-31 11:31:51 +01:00
Alex Willmer 35ae4e4227 Issue #160: Add minimize_source testcases 2018-03-31 11:12:55 +01:00
Alex Willmer f1e6fe007b preamble_size: Print compressed size and percentage 2018-03-30 11:07:51 +01:00
David Wilson c33bc22f21 docs: fix reading time tracking :( 2018-03-28 18:38:20 +05:45
David Wilson 45b81009f3 parent: call TIOCSCTTY on FreeBSD. Closes #171 2018-03-28 11:04:49 +05:45
David Wilson cd1683b924 ansible: split environment editing into a separate class. 2018-03-27 15:03:46 +05:45
David Wilson fccca54068 tests: ensure OpenSSL is initialized prior to test. 2018-03-27 14:56:03 +05:45
David Wilson e28e627f55 ssh: Disable GlobalKnownHostsFile with host_key_checking is off 2018-03-27 13:14:35 +05:45
David Wilson 4903052f42 fork: reseed Python/SSL PRNGs
Mac's SSL seems to have a pthread_atfork handler or similar that does
this for us, no clue if Linux is the same.
2018-03-27 11:58:17 +05:45
David Wilson 7f4368db87 docs: pad out signal handlers note 2018-03-27 11:38:48 +05:45
David Wilson c34f8dbef3 core: Fix Receiver.__iter__ loop termination.
Since the Message refactoring from a few weeks back, __iter__ has had
nothing to throw ChannelError if the remote sent _DEAD.
2018-03-27 02:08:54 +05:45
David Wilson 671f753207 core: cache result of unpickling message. 2018-03-27 02:08:41 +05:45
David Wilson 5b87d10ae6 core: clean up no longer useful Latch.__repr__
Those fields are always None since the recent fork cleanup work.
2018-03-27 02:08:01 +05:45
David Wilson d4bc44468b core: fix crash in fork stress test
14:50:04 E mitogen: mitogen.fork.Stream('fork.7431') crashed
Traceback (most recent call last):
  File "/home/dmw/src/mitogen/mitogen/core.py", line 1287, in _call
    func(self)
  File "/home/dmw/src/mitogen/mitogen/core.py", line 758, in on_receive
    return self.on_disconnect(broker)
  File "/home/dmw/src/mitogen/mitogen/parent.py", line 370, in on_disconnect
    super(Stream, self).on_disconnect(broker)
  File "/home/dmw/src/mitogen/mitogen/core.py", line 721, in on_disconnect
    fire(self, 'disconnect')
  File "/home/dmw/src/mitogen/mitogen/core.py", line 162, in fire
    return [func(*args, **kwargs) for func in signals.get(name, ())]
  File "/home/dmw/src/mitogen/mitogen/core.py", line 1160, in <lambda>
    listen(stream, 'disconnect', lambda: self.on_stream_disconnect(stream))
  File "/home/dmw/src/mitogen/mitogen/core.py", line 1142, in on_stream_disconnect
    for context in self._context_by_id.itervalues():
RuntimeError: dictionary changed size during iteration
2018-03-26 20:35:47 +05:45
David Wilson 95d50adb14 unix: simplify return statements. 2018-03-26 19:27:43 +05:45
David Wilson d68833757b docs: slightly bikeshed last testimonial 2018-03-26 18:37:12 +05:45
David Wilson adf527440f issue #155: parent: split out make_call_msg(). 2018-03-26 18:36:28 +05:45
dw d23a6174a2
Merge pull request #167 from danielcompton/patch-1
Add testimonial from Clojars
2018-03-26 18:35:55 +05:45
David Wilson 0dbb63ae3d docs: typo 2018-03-26 16:45:25 +05:45
David Wilson b254373cd7 docs: add local task serialization risk 2018-03-26 15:37:51 +05:45
David Wilson 7698f86a9f Whups, don't always enable profiling in mitogen.main() 2018-03-26 15:06:13 +05:45
David Wilson 52d980ad58 issue #155: fork: nop out get_boot_command, it's become quite expensive
-16% reduction in fork cost.
2018-03-26 14:41:12 +05:45
David Wilson e7c98e3bda Have mitogen.main(profiling=True) effect the master process too 2018-03-26 14:40:24 +05:45
David Wilson a868498469 Replace assertions with fixed checks; closes #157. 2018-03-26 13:41:35 +05:45
David Wilson 4dc001f496 parent: fire disconnect upon receiving DEL_ROUTE for context
This lets context.shutdown(wait=True) succeed in the master or any
parent.
2018-03-26 11:54:00 +05:45
David Wilson 862ec21160 core: allow shutdown triggered by any parent, not just immediate parent 2018-03-26 11:52:48 +05:45
David Wilson 0f08783330 core: fix NameError on disconnect 2018-03-26 11:52:12 +05:45
David Wilson 198bec3320 issue #168: ansible: Mitogen must also ignore the extra arguments. 2018-03-26 11:51:19 +05:45
David Wilson 26051caf4c ansible: Pass through connection loader kwargs; closes #168 2018-03-26 11:44:37 +05:45
David Wilson 749eddac71 ansible: fix flake8 errors in helpers.py. 2018-03-26 11:43:06 +05:45
Daniel Compton 871b853b59
Add testimonial from Clojars 2018-03-26 10:02:13 +13:00
David Wilson 2813d1a968 docs: update 2018-03-25 14:58:20 +05:45
David Wilson 3e384db7c2 service: add basic security policy types. 2018-03-25 13:52:07 +05:45
David Wilson 2ea65420d0 issue #155: fork.py v2, now with full resource cleanup 2018-03-25 12:39:49 +05:45
David Wilson 872181bebd issue #155: core: implement Side._on_fork()
Central mechanism for deleting all non-Latch file descriptors belonging
to the parent process during fork().
2018-03-25 12:38:08 +05:45
David Wilson 80642ed9ec issue #155: core: remove one duplicate set_cloexec(). 2018-03-25 12:37:40 +05:45
David Wilson cb71ce94c4 issue #155: core: be more careful reconfiguring stdio
Many dragons present!
2018-03-25 12:35:19 +05:45
David Wilson 443c94eb39 issue #155: core: prevent set_cloexec() use on standard handles 2018-03-25 12:34:39 +05:45
David Wilson 41ae6623c6 issue #155: parent: generic name generation
Let us override a class attribute to specify prefix from fork.py, rather
than reimplement the same logic.
2018-03-25 11:41:17 +05:45
David Wilson 22cc1a3689 issue #155: core: refactor Latch to avoid TLS use
TLS destructors are not called after fork, therefore we must explicitly
track a global list of free file descriptors, and arrange for that list
to explicitly be destroyed from fork.py.
2018-03-25 11:40:05 +05:45
David Wilson 2cf9edc895 issue #155: core: ensure reused Importer gets new Context reference.
More hacky layering violations.. force Importer's _context attribute to
our new parent.
2018-03-25 11:38:26 +05:45
David Wilson cd5b37ea5b core: Use Side.read() rather than bare os.read(). 2018-03-25 11:37:40 +05:45
David Wilson 1155de85af issue #155: parent: propagate context name too.
This allows context_by_id() in the master to succeed in returning a
Context with a .name matching the context's name, needed for correct
logging.

Previously this would have logged the empty string, because the master
had no mechanism to know the name of a context created by a child.
2018-03-25 10:51:44 +05:45
David Wilson 5579ac936b issue #155: docs: more fork() liability warnings 2018-03-25 10:08:46 +05:45
David Wilson f457f54758 docs: fix formatting 2018-03-24 22:16:06 +05:45
David Wilson d370290687 docs: one more warning 2018-03-24 22:15:24 +05:45