mitogen/tests/context_test.py

32 lines
997 B
Python

import pickle
import mitogen.core
from mitogen.core import b
import testlib
class PickleTest(testlib.RouterMixin, testlib.TestCase):
klass = mitogen.core.Context
# Ensure Context can be round-tripped by regular pickle in addition to
# Mitogen's hacked pickle. Users may try to call pickle on a Context in
# strange circumstances, and it's often used to glue pieces of an app
# together (e.g. Ansible).
def test_mitogen_roundtrip(self):
c = self.router.local()
r = mitogen.core.Receiver(self.router)
r.to_sender().send(c)
c2 = r.get().unpickle()
self.assertEqual(None, c2.router)
self.assertEqual(c.context_id, c2.context_id)
self.assertEqual(c.name, c2.name)
def test_vanilla_roundtrip(self):
c = self.router.local()
c2 = pickle.loads(pickle.dumps(c))
self.assertEqual(None, c2.router)
self.assertEqual(c.context_id, c2.context_id)
self.assertEqual(c.name, c2.name)