Merge pull request #920 from moreati/unittest-deprecations

Add Ansible podman connection support
pull/922/head
Alex Willmer 3 years ago committed by GitHub
commit 566d75d82f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -2,6 +2,7 @@
# Run tests/ansible/all.yml under Ansible and Ansible-Mitogen # Run tests/ansible/all.yml under Ansible and Ansible-Mitogen
import os import os
import subprocess
import sys import sys
import ci_lib import ci_lib
@ -24,29 +25,30 @@ with ci_lib.Fold('job_setup'):
# NOTE: sshpass v1.06 causes errors so pegging to 1.05 -> "msg": "Error when changing password","out": "passwd: DS error: eDSAuthFailed\n", # NOTE: sshpass v1.06 causes errors so pegging to 1.05 -> "msg": "Error when changing password","out": "passwd: DS error: eDSAuthFailed\n",
# there's a checksum error with "brew install http://git.io/sshpass.rb" though, so installing manually # there's a checksum error with "brew install http://git.io/sshpass.rb" though, so installing manually
if not ci_lib.exists_in_path('sshpass'): if not ci_lib.exists_in_path('sshpass'):
os.system("curl -O -L https://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz && \ subprocess.check_call(
"curl -O -L https://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz && \
tar xvf sshpass-1.05.tar.gz && \ tar xvf sshpass-1.05.tar.gz && \
cd sshpass-1.05 && \ cd sshpass-1.05 && \
./configure && \ ./configure && \
sudo make install") sudo make install",
shell=True,
)
with ci_lib.Fold('machine_prep'): with ci_lib.Fold('machine_prep'):
# generate a new ssh key for localhost ssh # generate a new ssh key for localhost ssh
if not os.path.exists(os.path.expanduser("~/.ssh/id_rsa")): if not os.path.exists(os.path.expanduser("~/.ssh/id_rsa")):
os.system("ssh-keygen -P '' -m pem -f ~/.ssh/id_rsa") subprocess.check_call("ssh-keygen -P '' -m pem -f ~/.ssh/id_rsa", shell=True)
os.system("cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys") subprocess.check_call("cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys", shell=True)
# also generate it for the sudo user
if os.system("sudo [ -f /var/root/.ssh/id_rsa ]") != 0:
os.system("sudo ssh-keygen -P '' -m pem -f /var/root/.ssh/id_rsa")
os.system("sudo cat /var/root/.ssh/id_rsa.pub | sudo tee -a /var/root/.ssh/authorized_keys")
os.chmod(os.path.expanduser('~/.ssh'), int('0700', 8)) os.chmod(os.path.expanduser('~/.ssh'), int('0700', 8))
os.chmod(os.path.expanduser('~/.ssh/authorized_keys'), int('0600', 8)) os.chmod(os.path.expanduser('~/.ssh/authorized_keys'), int('0600', 8))
# run chmod through sudo since it's owned by root
os.system('sudo chmod 700 /var/root/.ssh') # also generate it for the sudo user
os.system('sudo chmod 600 /var/root/.ssh/authorized_keys') if os.system("sudo [ -f ~root/.ssh/id_rsa ]") != 0:
subprocess.check_call("sudo ssh-keygen -P '' -m pem -f ~root/.ssh/id_rsa", shell=True)
subprocess.check_call("sudo cat ~root/.ssh/id_rsa.pub | sudo tee -a ~root/.ssh/authorized_keys", shell=True)
subprocess.check_call('sudo chmod 700 ~root/.ssh', shell=True)
subprocess.check_call('sudo chmod 600 ~root/.ssh/authorized_keys', shell=True)
if os.path.expanduser('~mitogen__user1') == '~mitogen__user1': if os.path.expanduser('~mitogen__user1') == '~mitogen__user1':
os.chdir(IMAGE_PREP_DIR) os.chdir(IMAGE_PREP_DIR)

@ -262,6 +262,21 @@ def _connect_machinectl(spec):
return _connect_setns(spec, kind='machinectl') return _connect_setns(spec, kind='machinectl')
def _connect_podman(spec):
"""
Return ContextService arguments for a Docker connection.
"""
return {
'method': 'podman',
'kwargs': {
'username': spec.remote_user(),
'container': spec.remote_addr(),
'python_path': spec.python_path(rediscover_python=True),
'connect_timeout': spec.ansible_ssh_timeout() or spec.timeout(),
'remote_name': get_remote_name(spec),
}
}
def _connect_setns(spec, kind=None): def _connect_setns(spec, kind=None):
""" """
Return ContextService arguments for a mitogen_setns connection. Return ContextService arguments for a mitogen_setns connection.
@ -400,6 +415,7 @@ CONNECTION_METHOD = {
'lxc': _connect_lxc, 'lxc': _connect_lxc,
'lxd': _connect_lxd, 'lxd': _connect_lxd,
'machinectl': _connect_machinectl, 'machinectl': _connect_machinectl,
'podman': _connect_podman,
'setns': _connect_setns, 'setns': _connect_setns,
'ssh': _connect_ssh, 'ssh': _connect_ssh,
'smart': _connect_ssh, # issue #548. 'smart': _connect_ssh, # issue #548.

@ -0,0 +1,44 @@
# Copyright 2022, Mitogen contributers
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its contributors
# may be used to endorse or promote products derived from this software without
# specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
from __future__ import absolute_import
import os.path
import sys
try:
import ansible_mitogen
except ImportError:
base_dir = os.path.dirname(__file__)
sys.path.insert(0, os.path.abspath(os.path.join(base_dir, '../../..')))
del base_dir
import ansible_mitogen.connection
class Connection(ansible_mitogen.connection.Connection):
transport = 'podman'

@ -107,6 +107,7 @@ REDIRECTED_CONNECTION_PLUGINS = (
'lxc', 'lxc',
'lxd', 'lxd',
'machinectl', 'machinectl',
'podman',
'setns', 'setns',
'ssh', 'ssh',
) )

@ -652,7 +652,8 @@ def read_path(path):
""" """
Fetch the contents of a filesystem `path` as bytes. Fetch the contents of a filesystem `path` as bytes.
""" """
return open(path, 'rb').read() with open(path, 'rb') as f:
return f.read()
def set_file_owner(path, owner, group=None, fd=None): def set_file_owner(path, owner, group=None, fd=None):

@ -354,6 +354,12 @@ class Spec(with_metaclass(abc.ABCMeta, object)):
The path to the "machinectl" program for the 'setns' transport. The path to the "machinectl" program for the 'setns' transport.
""" """
@abc.abstractmethod
def mitogen_podman_path(self):
"""
The path to the "podman" program for the 'podman' transport.
"""
@abc.abstractmethod @abc.abstractmethod
def mitogen_ssh_keepalive_interval(self): def mitogen_ssh_keepalive_interval(self):
""" """
@ -527,6 +533,9 @@ class PlayContextSpec(Spec):
def mitogen_lxc_info_path(self): def mitogen_lxc_info_path(self):
return self._connection.get_task_var('mitogen_lxc_info_path') return self._connection.get_task_var('mitogen_lxc_info_path')
def mitogen_podman_path(self):
return self._connection.get_task_var('mitogen_podman_path')
def mitogen_ssh_keepalive_interval(self): def mitogen_ssh_keepalive_interval(self):
return self._connection.get_task_var('mitogen_ssh_keepalive_interval') return self._connection.get_task_var('mitogen_ssh_keepalive_interval')
@ -747,6 +756,9 @@ class MitogenViaSpec(Spec):
def mitogen_lxc_info_path(self): def mitogen_lxc_info_path(self):
return self._host_vars.get('mitogen_lxc_info_path') return self._host_vars.get('mitogen_lxc_info_path')
def mitogen_podman_path(self):
return self._host_vars.get('mitogen_podman_path')
def mitogen_ssh_keepalive_interval(self): def mitogen_ssh_keepalive_interval(self):
return self._host_vars.get('mitogen_ssh_keepalive_interval') return self._host_vars.get('mitogen_ssh_keepalive_interval')

@ -188,9 +188,9 @@ Noteworthy Differences
your_ssh_username = (ALL) NOPASSWD:/usr/bin/python -c* your_ssh_username = (ALL) NOPASSWD:/usr/bin/python -c*
* The :ans:conn:`~buildah`, :ans:conn:`~docker`, :ans:conn:`~jail`, * The :ans:conn:`~buildah`, :ans:conn:`~docker`, :ans:conn:`~jail`,
:ans:conn:`~kubectl`, :ans:conn:`~local`, :ans:conn:`~lxd`, and :ans:conn:`~kubectl`, :ans:conn:`~local`, :ans:conn:`~lxd`,
:ans:conn:`~ssh` built-in connection types are supported, along with :ans:conn:`~podman`, & :ans:conn:`~ssh` connection types are supported; also
Mitogen-specific :ref:`machinectl <machinectl>`, :ref:`mitogen_doas <doas>`, Mitogen-specific :ref:`mitogen_doas <doas>`, :ref:`machinectl <machinectl>`,
:ref:`mitogen_su <su>`, :ref:`mitogen_sudo <sudo>`, and :ref:`setns <setns>` :ref:`mitogen_su <su>`, :ref:`mitogen_sudo <sudo>`, and :ref:`setns <setns>`
types. File bugs to register interest in others. types. File bugs to register interest in others.
@ -819,6 +819,20 @@ Like the :ans:conn:`local` except connection delegation is supported.
* ``ansible_python_interpreter`` * ``ansible_python_interpreter``
Podman
~~~~~~
Like :ans:conn:`podman` except connection delegation is supported.
* ``ansible_host``: Name of container (default: inventory hostname).
* ``ansible_user``: Name of user within the container to execute as.
* ``mitogen_mask_remote_name``: if :data:`True`, mask the identity of the
Ansible controller process on remote machines. To simplify diagnostics,
Mitogen produces remote processes named like
`"mitogen:user@controller.name:1234"`, however this may be a privacy issue in
some circumstances.
Process Model Process Model
^^^^^^^^^^^^^ ^^^^^^^^^^^^^

@ -23,6 +23,7 @@ v0.3.3.dev0
* :gh:issue:`906` Support packages dynamically inserted into sys.modules, e.g. `distro` >= 1.7.0 as `ansible.module_utils.distro`. * :gh:issue:`906` Support packages dynamically inserted into sys.modules, e.g. `distro` >= 1.7.0 as `ansible.module_utils.distro`.
* :gh:issue:`918` Support Python 3.10 * :gh:issue:`918` Support Python 3.10
* :gh:issue:`920` Support Ansible :ans:conn:`~podman` connection plugin
v0.3.2 (2022-01-12) v0.3.2 (2022-01-12)

@ -201,7 +201,7 @@ nested.py:
print('Connect local%d via %s' % (x, context)) print('Connect local%d via %s' % (x, context))
context = router.local(via=context, name='local%d' % x) context = router.local(via=context, name='local%d' % x)
context.call(os.system, 'pstree -s python -s mitogen') context.call(subprocess.check_call, ['pstree', '-s', 'python', '-s', 'mitogen'])
Output: Output:

@ -101,7 +101,7 @@ to your network topology**.
container='billing0', container='billing0',
) )
internal_box.call(os.system, './run-nightly-billing.py') internal_box.call(subprocess.check_call, ['./run-nightly-billing.py'])
The multiplexer also ensures the remote process is terminated if your Python The multiplexer also ensures the remote process is terminated if your Python
program crashes, communication is lost, or the application code running in the program crashes, communication is lost, or the application code running in the
@ -250,7 +250,7 @@ After:
""" """
Install our application. Install our application.
""" """
os.system('tar zxvf app.tar.gz') subprocess.check_call(['tar', 'zxvf', 'app.tar.gz'])
context.call(install_app) context.call(install_app)
@ -258,7 +258,7 @@ Or even:
.. code-block:: python .. code-block:: python
context.call(os.system, 'tar zxvf app.tar.gz') context.call(subprocess.check_call, ['tar', 'zxvf', 'app.tar.gz'])
Exceptions raised by function calls are propagated back to the parent program, Exceptions raised by function calls are propagated back to the parent program,
and timeouts can be configured to ensure failed calls do not block progress of and timeouts can be configured to ensure failed calls do not block progress of

@ -8,14 +8,14 @@ Usage:
Where: Where:
<hostname> Hostname to install to. <hostname> Hostname to install to.
""" """
import os import subprocess
import sys import sys
import mitogen import mitogen
def install_app(): def install_app():
os.system('tar zxvf my_app.tar.gz') subprocess.check_call(['tar', 'zxvf', 'my_app.tar.gz'])
@mitogen.main() @mitogen.main()

@ -386,6 +386,20 @@ def _partition(s, sep, find):
return left, sep, s[len(left)+len(sep):] return left, sep, s[len(left)+len(sep):]
def threading__current_thread():
try:
return threading.current_thread() # Added in Python 2.6+
except AttributeError:
return threading.currentThread() # Deprecated in Python 3.10+
def threading__thread_name(thread):
try:
return thread.name # Added in Python 2.6+
except AttributeError:
return thread.getName() # Deprecated in Python 3.10+
if hasattr(UnicodeType, 'rpartition'): if hasattr(UnicodeType, 'rpartition'):
str_partition = UnicodeType.partition str_partition = UnicodeType.partition
str_rpartition = UnicodeType.rpartition str_rpartition = UnicodeType.rpartition
@ -2758,7 +2772,7 @@ class Latch(object):
return 'Latch(%#x, size=%d, t=%r)' % ( return 'Latch(%#x, size=%d, t=%r)' % (
id(self), id(self),
len(self._queue), len(self._queue),
threading.currentThread().getName(), threading__thread_name(threading__current_thread()),
) )

@ -1236,7 +1236,7 @@ class Broker(mitogen.core.Broker):
def __init__(self, install_watcher=True): def __init__(self, install_watcher=True):
if install_watcher: if install_watcher:
self._watcher = ThreadWatcher.watch( self._watcher = ThreadWatcher.watch(
target=threading.currentThread(), target=mitogen.core.threading__current_thread(),
on_join=self.shutdown, on_join=self.shutdown,
) )
super(Broker, self).__init__() super(Broker, self).__init__()

@ -35,7 +35,6 @@ Support for operating in a mixed threading/forking environment.
import os import os
import socket import socket
import sys import sys
import threading
import weakref import weakref
import mitogen.core import mitogen.core
@ -158,7 +157,7 @@ class Corker(object):
held. This will not return until each thread acknowledges it has ceased held. This will not return until each thread acknowledges it has ceased
execution. execution.
""" """
current = threading.currentThread() current = mitogen.core.threading__current_thread()
s = mitogen.core.b('CORK') * ((128 // 4) * 1024) s = mitogen.core.b('CORK') * ((128 // 4) * 1024)
self._rsocks = [] self._rsocks = []

@ -109,7 +109,8 @@ def get_or_create_pool(size=None, router=None, context=None):
def get_thread_name(): def get_thread_name():
return threading.currentThread().getName() thread = mitogen.core.threading__current_thread()
return mitogen.core.threading__thread_name(thread)
def call(service_name, method_name, call_context=None, **kwargs): def call(service_name, method_name, call_context=None, **kwargs):

@ -13,36 +13,33 @@
- name: set up test container and run tests inside it - name: set up test container and run tests inside it
block: block:
- name: install deps - name: install deps
block: homebrew:
- name: install docker name:
shell: | - podman
# NOTE: for tracking purposes: https://github.com/docker/for-mac/issues/2359 state: present
# using docker for mac CI workaround: https://github.com/drud/ddev/pull/1748/files#diff-19288f650af2dabdf1dcc5b354d1f245
DOCKER_URL=https://download.docker.com/mac/stable/31259/Docker.dmg && - name: start machine
curl -O -sSL $DOCKER_URL && command:
open -W Docker.dmg && cp -r /Volumes/Docker/Docker.app /Applications cmd: "{{ item.cmd }}"
sudo /Applications/Docker.app/Contents/MacOS/Docker --quit-after-install --unattended && loop:
ln -s /Applications/Docker.app/Contents/Resources/bin/docker /usr/local/bin/docker && - cmd: podman machine init
nohup /Applications/Docker.app/Contents/MacOS/Docker --unattended & - cmd: podman machine start
# wait 2 min for docker to come up - cmd: podman info
counter=0 && timeout: 300
while ! /usr/local/bin/docker ps 2>/dev/null ; do register: podman_machine
if [ $counter -lt 24 ]; then
let counter=counter+1 - debug:
else var: podman_machine
exit 1
fi
sleep 5
done
# python bindings (docker_container) aren't working on this host, so gonna shell out # python bindings (docker_container) aren't working on this host, so gonna shell out
- name: create docker container - name: create container
shell: /usr/local/bin/docker run --name testMitogen -d --rm centos:8 bash -c "sleep infinity & wait" command:
cmd: podman run --name testMitogen -d --rm centos:8 bash -c "sleep infinity & wait"
- name: add container to inventory - name: add container to inventory
add_host: add_host:
name: testMitogen name: testMitogen
ansible_connection: docker ansible_connection: podman
ansible_user: root ansible_user: root
changed_when: false changed_when: false
environment: environment:
@ -82,6 +79,10 @@
PATH: /usr/local/bin/:{{ ansible_env.PATH }} PATH: /usr/local/bin/:{{ ansible_env.PATH }}
- name: remove test container - name: remove test container
shell: /usr/local/bin/docker stop testMitogen command:
cmd: "{{ item.cmd }}"
loop:
- cmd: podman stop testMitogen
- cmd: podman machine stop
tags: tags:
- issue_655 - issue_655

@ -28,136 +28,136 @@ class FixedPolicyTest(testlib.TestCase):
# Uniprocessor . # Uniprocessor .
policy = self.klass(cpu_count=1) policy = self.klass(cpu_count=1)
policy.assign_controller() policy.assign_controller()
self.assertEquals(0x1, policy.mask) self.assertEqual(0x1, policy.mask)
def test_assign_controller_2core(self): def test_assign_controller_2core(self):
# Small SMP gets 1.. % cpu_count # Small SMP gets 1.. % cpu_count
policy = self.klass(cpu_count=2) policy = self.klass(cpu_count=2)
policy.assign_controller() policy.assign_controller()
self.assertEquals(0x2, policy.mask) self.assertEqual(0x2, policy.mask)
policy.assign_controller() policy.assign_controller()
self.assertEquals(0x2, policy.mask) self.assertEqual(0x2, policy.mask)
policy.assign_controller() policy.assign_controller()
def test_assign_controller_3core(self): def test_assign_controller_3core(self):
# Small SMP gets 1.. % cpu_count # Small SMP gets 1.. % cpu_count
policy = self.klass(cpu_count=3) policy = self.klass(cpu_count=3)
policy.assign_controller() policy.assign_controller()
self.assertEquals(0x2, policy.mask) self.assertEqual(0x2, policy.mask)
policy.assign_controller() policy.assign_controller()
self.assertEquals(0x4, policy.mask) self.assertEqual(0x4, policy.mask)
policy.assign_controller() policy.assign_controller()
self.assertEquals(0x2, policy.mask) self.assertEqual(0x2, policy.mask)
policy.assign_controller() policy.assign_controller()
self.assertEquals(0x4, policy.mask) self.assertEqual(0x4, policy.mask)
policy.assign_controller() policy.assign_controller()
def test_assign_controller_4core(self): def test_assign_controller_4core(self):
# Big SMP gets a dedicated core. # Big SMP gets a dedicated core.
policy = self.klass(cpu_count=4) policy = self.klass(cpu_count=4)
policy.assign_controller() policy.assign_controller()
self.assertEquals(0x2, policy.mask) self.assertEqual(0x2, policy.mask)
policy.assign_controller() policy.assign_controller()
self.assertEquals(0x2, policy.mask) self.assertEqual(0x2, policy.mask)
def test_assign_muxprocess_1core(self): def test_assign_muxprocess_1core(self):
# Uniprocessor . # Uniprocessor .
policy = self.klass(cpu_count=1) policy = self.klass(cpu_count=1)
policy.assign_muxprocess(0) policy.assign_muxprocess(0)
self.assertEquals(0x1, policy.mask) self.assertEqual(0x1, policy.mask)
def test_assign_muxprocess_2core(self): def test_assign_muxprocess_2core(self):
# Small SMP gets dedicated core. # Small SMP gets dedicated core.
policy = self.klass(cpu_count=2) policy = self.klass(cpu_count=2)
policy.assign_muxprocess(0) policy.assign_muxprocess(0)
self.assertEquals(0x1, policy.mask) self.assertEqual(0x1, policy.mask)
policy.assign_muxprocess(0) policy.assign_muxprocess(0)
self.assertEquals(0x1, policy.mask) self.assertEqual(0x1, policy.mask)
policy.assign_muxprocess(0) policy.assign_muxprocess(0)
def test_assign_muxprocess_3core(self): def test_assign_muxprocess_3core(self):
# Small SMP gets a dedicated core. # Small SMP gets a dedicated core.
policy = self.klass(cpu_count=3) policy = self.klass(cpu_count=3)
policy.assign_muxprocess(0) policy.assign_muxprocess(0)
self.assertEquals(0x1, policy.mask) self.assertEqual(0x1, policy.mask)
policy.assign_muxprocess(0) policy.assign_muxprocess(0)
self.assertEquals(0x1, policy.mask) self.assertEqual(0x1, policy.mask)
def test_assign_muxprocess_4core(self): def test_assign_muxprocess_4core(self):
# Big SMP gets a dedicated core. # Big SMP gets a dedicated core.
policy = self.klass(cpu_count=4) policy = self.klass(cpu_count=4)
policy.assign_muxprocess(0) policy.assign_muxprocess(0)
self.assertEquals(0x1, policy.mask) self.assertEqual(0x1, policy.mask)
policy.assign_muxprocess(0) policy.assign_muxprocess(0)
self.assertEquals(0x1, policy.mask) self.assertEqual(0x1, policy.mask)
def test_assign_worker_1core(self): def test_assign_worker_1core(self):
# Balance n % 1 # Balance n % 1
policy = self.klass(cpu_count=1) policy = self.klass(cpu_count=1)
policy.assign_worker() policy.assign_worker()
self.assertEquals(0x1, policy.mask) self.assertEqual(0x1, policy.mask)
policy.assign_worker() policy.assign_worker()
self.assertEquals(0x1, policy.mask) self.assertEqual(0x1, policy.mask)
def test_assign_worker_2core(self): def test_assign_worker_2core(self):
# Balance n % 1 # Balance n % 1
policy = self.klass(cpu_count=2) policy = self.klass(cpu_count=2)
policy.assign_worker() policy.assign_worker()
self.assertEquals(0x2, policy.mask) self.assertEqual(0x2, policy.mask)
policy.assign_worker() policy.assign_worker()
self.assertEquals(0x2, policy.mask) self.assertEqual(0x2, policy.mask)
def test_assign_worker_3core(self): def test_assign_worker_3core(self):
# Balance n % 1 # Balance n % 1
policy = self.klass(cpu_count=3) policy = self.klass(cpu_count=3)
policy.assign_worker() policy.assign_worker()
self.assertEquals(0x2, policy.mask) self.assertEqual(0x2, policy.mask)
policy.assign_worker() policy.assign_worker()
self.assertEquals(0x4, policy.mask) self.assertEqual(0x4, policy.mask)
policy.assign_worker() policy.assign_worker()
self.assertEquals(0x2, policy.mask) self.assertEqual(0x2, policy.mask)
def test_assign_worker_4core(self): def test_assign_worker_4core(self):
# Balance n % 1 # Balance n % 1
policy = self.klass(cpu_count=4) policy = self.klass(cpu_count=4)
policy.assign_worker() policy.assign_worker()
self.assertEquals(4, policy.mask) self.assertEqual(4, policy.mask)
policy.assign_worker() policy.assign_worker()
self.assertEquals(8, policy.mask) self.assertEqual(8, policy.mask)
policy.assign_worker() policy.assign_worker()
self.assertEquals(4, policy.mask) self.assertEqual(4, policy.mask)
def test_assign_subprocess_1core(self): def test_assign_subprocess_1core(self):
# allow all except reserved. # allow all except reserved.
policy = self.klass(cpu_count=1) policy = self.klass(cpu_count=1)
policy.assign_subprocess() policy.assign_subprocess()
self.assertEquals(0x1, policy.mask) self.assertEqual(0x1, policy.mask)
policy.assign_subprocess() policy.assign_subprocess()
self.assertEquals(0x1, policy.mask) self.assertEqual(0x1, policy.mask)
def test_assign_subprocess_2core(self): def test_assign_subprocess_2core(self):
# allow all except reserved. # allow all except reserved.
policy = self.klass(cpu_count=2) policy = self.klass(cpu_count=2)
policy.assign_subprocess() policy.assign_subprocess()
self.assertEquals(0x2, policy.mask) self.assertEqual(0x2, policy.mask)
policy.assign_subprocess() policy.assign_subprocess()
self.assertEquals(0x2, policy.mask) self.assertEqual(0x2, policy.mask)
def test_assign_subprocess_3core(self): def test_assign_subprocess_3core(self):
# allow all except reserved. # allow all except reserved.
policy = self.klass(cpu_count=3) policy = self.klass(cpu_count=3)
policy.assign_subprocess() policy.assign_subprocess()
self.assertEquals(0x2 + 0x4, policy.mask) self.assertEqual(0x2 + 0x4, policy.mask)
policy.assign_subprocess() policy.assign_subprocess()
self.assertEquals(0x2 + 0x4, policy.mask) self.assertEqual(0x2 + 0x4, policy.mask)
def test_assign_subprocess_4core(self): def test_assign_subprocess_4core(self):
# allow all except reserved. # allow all except reserved.
policy = self.klass(cpu_count=4) policy = self.klass(cpu_count=4)
policy.assign_subprocess() policy.assign_subprocess()
self.assertEquals(0x4 + 0x8, policy.mask) self.assertEqual(0x4 + 0x8, policy.mask)
policy.assign_subprocess() policy.assign_subprocess()
self.assertEquals(0x4 + 0x8, policy.mask) self.assertEqual(0x4 + 0x8, policy.mask)
@unittest.skipIf( @unittest.skipIf(
@ -185,13 +185,13 @@ class LinuxPolicyTest(testlib.TestCase):
def test_set_cpu_mask(self): def test_set_cpu_mask(self):
self.policy._set_cpu_mask(0x1) self.policy._set_cpu_mask(0x1)
self.assertEquals(0x1, self._get_cpus()) self.assertEqual(0x1, self._get_cpus())
self.policy._set_cpu_mask(0x2) self.policy._set_cpu_mask(0x2)
self.assertEquals(0x2, self._get_cpus()) self.assertEqual(0x2, self._get_cpus())
self.policy._set_cpu_mask(0x3) self.policy._set_cpu_mask(0x3)
self.assertEquals(0x3, self._get_cpus()) self.assertEqual(0x3, self._get_cpus())
def test_clear_on_popen(self): def test_clear_on_popen(self):
tf = tempfile.NamedTemporaryFile() tf = tempfile.NamedTemporaryFile()

@ -91,20 +91,20 @@ class OptionalIntTest(testlib.TestCase):
func = staticmethod(ansible_mitogen.connection.optional_int) func = staticmethod(ansible_mitogen.connection.optional_int)
def test_already_int(self): def test_already_int(self):
self.assertEquals(0, self.func(0)) self.assertEqual(0, self.func(0))
self.assertEquals(1, self.func(1)) self.assertEqual(1, self.func(1))
self.assertEquals(-1, self.func(-1)) self.assertEqual(-1, self.func(-1))
def test_is_string(self): def test_is_string(self):
self.assertEquals(0, self.func("0")) self.assertEqual(0, self.func("0"))
self.assertEquals(1, self.func("1")) self.assertEqual(1, self.func("1"))
self.assertEquals(-1, self.func("-1")) self.assertEqual(-1, self.func("-1"))
def test_is_none(self): def test_is_none(self):
self.assertEquals(None, self.func(None)) self.assertEqual(None, self.func(None))
def test_is_junk(self): def test_is_junk(self):
self.assertEquals(None, self.func({1:2})) self.assertEqual(None, self.func({1:2}))
class FetchFileTest(ConnectionMixin, testlib.TestCase): class FetchFileTest(ConnectionMixin, testlib.TestCase):
@ -119,7 +119,7 @@ class FetchFileTest(ConnectionMixin, testlib.TestCase):
# transfer_file() uses os.rename rather than direct data # transfer_file() uses os.rename rather than direct data
# overwrite, so we must reopen. # overwrite, so we must reopen.
with open(ofp.name, 'rb') as fp: with open(ofp.name, 'rb') as fp:
self.assertEquals(ifp.read(), fp.read()) self.assertEqual(ifp.read(), fp.read())
class PutDataTest(ConnectionMixin, testlib.TestCase): class PutDataTest(ConnectionMixin, testlib.TestCase):
@ -129,7 +129,8 @@ class PutDataTest(ConnectionMixin, testlib.TestCase):
self.conn.put_data(path, contents) self.conn.put_data(path, contents)
self.wait_for_completion() self.wait_for_completion()
self.assertEquals(contents, open(path, 'rb').read()) with open(path, 'rb') as f:
self.assertEqual(contents, f.read())
os.unlink(path) os.unlink(path)
def test_mode(self): def test_mode(self):
@ -139,7 +140,7 @@ class PutDataTest(ConnectionMixin, testlib.TestCase):
self.conn.put_data(path, contents, mode=int('0123', 8)) self.conn.put_data(path, contents, mode=int('0123', 8))
self.wait_for_completion() self.wait_for_completion()
st = os.stat(path) st = os.stat(path)
self.assertEquals(int('0123', 8), st.st_mode & int('0777', 8)) self.assertEqual(int('0123', 8), st.st_mode & int('0777', 8))
os.unlink(path) os.unlink(path)
@ -163,17 +164,18 @@ class PutFileTest(ConnectionMixin, testlib.TestCase):
path = tempfile.mktemp(prefix='mitotest') path = tempfile.mktemp(prefix='mitotest')
self.conn.put_file(in_path=__file__, out_path=path) self.conn.put_file(in_path=__file__, out_path=path)
self.wait_for_completion() self.wait_for_completion()
self.assertEquals(open(path, 'rb').read(), with open(path, 'rb') as path_f:
open(__file__, 'rb').read()) with open(__file__, 'rb') as __file__f:
self.assertEqual(path_f.read(), __file__f.read())
os.unlink(path) os.unlink(path)
def test_out_path_big(self): def test_out_path_big(self):
path = tempfile.mktemp(prefix='mitotest') path = tempfile.mktemp(prefix='mitotest')
self.conn.put_file(in_path=self.big_path, out_path=path) self.conn.put_file(in_path=self.big_path, out_path=path)
self.wait_for_completion() self.wait_for_completion()
self.assertEquals(open(path, 'rb').read(), with open(path, 'rb') as path_f:
open(self.big_path, 'rb').read()) with open(self.big_path, 'rb') as big_path_f:
self.assertEqual(path_f.read(), big_path_f.read())
#self._compare_times_modes(path, __file__) #self._compare_times_modes(path, __file__)
os.unlink(path) os.unlink(path)

@ -61,10 +61,10 @@ class ApplyModeSpecTest(unittest.TestCase):
def test_simple(self): def test_simple(self):
spec = 'u+rwx,go=x' spec = 'u+rwx,go=x'
self.assertEquals(int('0711', 8), self.func(spec, 0)) self.assertEqual(int('0711', 8), self.func(spec, 0))
spec = 'g-rw' spec = 'g-rw'
self.assertEquals(int('0717', 8), self.func(spec, int('0777', 8))) self.assertEqual(int('0717', 8), self.func(spec, int('0777', 8)))
class IsGoodTempDirTest(unittest.TestCase): class IsGoodTempDirTest(unittest.TestCase):
@ -84,7 +84,8 @@ class IsGoodTempDirTest(unittest.TestCase):
fp.write('derp') fp.write('derp')
self.assertTrue(os.path.isfile(bleh)) self.assertTrue(os.path.isfile(bleh))
self.assertFalse(self.func(bleh)) self.assertFalse(self.func(bleh))
self.assertEquals(open(bleh).read(), 'derp') with open(bleh) as fp:
self.assertEqual(fp.read(), 'derp')
@unittest.skipIf( @unittest.skipIf(
os.geteuid() == 0, 'writes by root ignore directory permissions') os.geteuid() == 0, 'writes by root ignore directory permissions')

@ -1,7 +1,3 @@
import time
import threading
import mock import mock
import testlib import testlib
@ -18,7 +14,7 @@ class ShutdownTest(testlib.TestCase):
broker.poller.close = mock.Mock() broker.poller.close = mock.Mock()
broker.shutdown() broker.shutdown()
broker.join() broker.join()
self.assertEquals(1, len(broker.poller.close.mock_calls)) self.assertEqual(1, len(broker.poller.close.mock_calls))
actual_close() actual_close()
@ -30,7 +26,7 @@ class DeferTest(testlib.TestCase):
broker = self.klass() broker = self.klass()
try: try:
broker.defer(lambda: latch.put(123)) broker.defer(lambda: latch.put(123))
self.assertEquals(123, latch.get()) self.assertEqual(123, latch.get())
finally: finally:
broker.shutdown() broker.shutdown()
broker.join() broker.join()
@ -43,7 +39,7 @@ class DeferTest(testlib.TestCase):
e = self.assertRaises(mitogen.core.Error, e = self.assertRaises(mitogen.core.Error,
lambda: broker.defer(lambda: latch.put(123))) lambda: broker.defer(lambda: latch.put(123)))
self.assertEquals(e.args[0], mitogen.core.Waker.broker_shutdown_msg) self.assertEqual(e.args[0], mitogen.core.Waker.broker_shutdown_msg)
class DeferSyncTest(testlib.TestCase): class DeferSyncTest(testlib.TestCase):
@ -52,8 +48,8 @@ class DeferSyncTest(testlib.TestCase):
def test_okay(self): def test_okay(self):
broker = self.klass() broker = self.klass()
try: try:
th = broker.defer_sync(lambda: threading.currentThread()) th = broker.defer_sync(lambda: mitogen.core.threading__current_thread())
self.assertEquals(th, broker._thread) self.assertEqual(th, broker._thread)
finally: finally:
broker.shutdown() broker.shutdown()
broker.join() broker.join()

@ -15,8 +15,8 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
stream = self.router.stream_by_id(context.context_id) stream = self.router.stream_by_id(context.context_id)
argv = eval(context.call(os.getenv, 'ORIGINAL_ARGV')) argv = eval(context.call(os.getenv, 'ORIGINAL_ARGV'))
self.assertEquals(argv[0], buildah_path) self.assertEqual(argv[0], buildah_path)
self.assertEquals(argv[1], 'run') self.assertEqual(argv[1], 'run')
self.assertEquals(argv[2], '--') self.assertEqual(argv[2], '--')
self.assertEquals(argv[3], 'container_name') self.assertEqual(argv[3], 'container_name')
self.assertEquals(argv[4], stream.conn.options.python_path) self.assertEqual(argv[4], stream.conn.options.python_path)

@ -12,25 +12,25 @@ class ConstructorTest(testlib.TestCase):
def test_string_noargs(self): def test_string_noargs(self):
e = self.klass('%s%s') e = self.klass('%s%s')
self.assertEquals(e.args[0], '%s%s') self.assertEqual(e.args[0], '%s%s')
self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType)) self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType))
def test_string_args(self): def test_string_args(self):
e = self.klass('%s%s', 1, 1) e = self.klass('%s%s', 1, 1)
self.assertEquals(e.args[0], '11') self.assertEqual(e.args[0], '11')
self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType)) self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType))
def test_from_exc(self): def test_from_exc(self):
ve = plain_old_module.MyError('eek') ve = plain_old_module.MyError('eek')
e = self.klass(ve) e = self.klass(ve)
self.assertEquals(e.args[0], 'plain_old_module.MyError: eek') self.assertEqual(e.args[0], 'plain_old_module.MyError: eek')
self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType)) self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType))
def test_form_base_exc(self): def test_form_base_exc(self):
ve = SystemExit('eek') ve = SystemExit('eek')
e = self.klass(ve) e = self.klass(ve)
cls = ve.__class__ cls = ve.__class__
self.assertEquals(e.args[0], self.assertEqual(e.args[0],
# varies across 2/3. # varies across 2/3.
'%s.%s: eek' % (cls.__module__, cls.__name__)) '%s.%s: eek' % (cls.__module__, cls.__name__))
self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType)) self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType))
@ -48,14 +48,14 @@ class ConstructorTest(testlib.TestCase):
def test_bytestring_conversion(self): def test_bytestring_conversion(self):
e = self.klass(mitogen.core.b('bytes')) e = self.klass(mitogen.core.b('bytes'))
self.assertEquals(u'bytes', e.args[0]) self.assertEqual(u'bytes', e.args[0])
self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType)) self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType))
def test_reduce(self): def test_reduce(self):
e = self.klass('eek') e = self.klass('eek')
func, (arg,) = e.__reduce__() func, (arg,) = e.__reduce__()
self.assertTrue(func is mitogen.core._unpickle_call_error) self.assertTrue(func is mitogen.core._unpickle_call_error)
self.assertEquals(arg, e.args[0]) self.assertEqual(arg, e.args[0])
class UnpickleCallErrorTest(testlib.TestCase): class UnpickleCallErrorTest(testlib.TestCase):
@ -71,10 +71,10 @@ class UnpickleCallErrorTest(testlib.TestCase):
def test_reify(self): def test_reify(self):
e = self.func(u'some error') e = self.func(u'some error')
self.assertEquals(mitogen.core.CallError, e.__class__) self.assertEqual(mitogen.core.CallError, e.__class__)
self.assertEquals(1, len(e.args)) self.assertEqual(1, len(e.args))
self.assertEquals(mitogen.core.UnicodeType, type(e.args[0])) self.assertEqual(mitogen.core.UnicodeType, type(e.args[0]))
self.assertEquals(u'some error', e.args[0]) self.assertEqual(u'some error', e.args[0])
class PickleTest(testlib.TestCase): class PickleTest(testlib.TestCase):
@ -83,18 +83,18 @@ class PickleTest(testlib.TestCase):
def test_string_noargs(self): def test_string_noargs(self):
e = self.klass('%s%s') e = self.klass('%s%s')
e2 = pickle.loads(pickle.dumps(e)) e2 = pickle.loads(pickle.dumps(e))
self.assertEquals(e2.args[0], '%s%s') self.assertEqual(e2.args[0], '%s%s')
def test_string_args(self): def test_string_args(self):
e = self.klass('%s%s', 1, 1) e = self.klass('%s%s', 1, 1)
e2 = pickle.loads(pickle.dumps(e)) e2 = pickle.loads(pickle.dumps(e))
self.assertEquals(e2.args[0], '11') self.assertEqual(e2.args[0], '11')
def test_from_exc(self): def test_from_exc(self):
ve = plain_old_module.MyError('eek') ve = plain_old_module.MyError('eek')
e = self.klass(ve) e = self.klass(ve)
e2 = pickle.loads(pickle.dumps(e)) e2 = pickle.loads(pickle.dumps(e))
self.assertEquals(e2.args[0], 'plain_old_module.MyError: eek') self.assertEqual(e2.args[0], 'plain_old_module.MyError: eek')
def test_from_exc_tb(self): def test_from_exc_tb(self):
try: try:

@ -77,7 +77,7 @@ class CallFunctionTest(testlib.RouterMixin, testlib.TestCase):
def test_bad_return_value(self): def test_bad_return_value(self):
exc = self.assertRaises(mitogen.core.StreamError, exc = self.assertRaises(mitogen.core.StreamError,
lambda: self.local.call(func_with_bad_return_value)) lambda: self.local.call(func_with_bad_return_value))
self.assertEquals( self.assertEqual(
exc.args[0], exc.args[0],
"cannot unpickle '%s'/'CrazyType'" % (__name__,), "cannot unpickle '%s'/'CrazyType'" % (__name__,),
) )
@ -89,7 +89,7 @@ class CallFunctionTest(testlib.RouterMixin, testlib.TestCase):
self.broker.defer(stream.on_disconnect, self.broker) self.broker.defer(stream.on_disconnect, self.broker)
exc = self.assertRaises(mitogen.core.ChannelError, exc = self.assertRaises(mitogen.core.ChannelError,
lambda: recv.get()) lambda: recv.get())
self.assertEquals(exc.args[0], self.router.respondent_disconnect_msg) self.assertEqual(exc.args[0], self.router.respondent_disconnect_msg)
def test_aborted_on_local_broker_shutdown(self): def test_aborted_on_local_broker_shutdown(self):
stream = self.router._stream_by_id[self.local.context_id] stream = self.router._stream_by_id[self.local.context_id]
@ -99,7 +99,7 @@ class CallFunctionTest(testlib.RouterMixin, testlib.TestCase):
self.broker_shutdown = True self.broker_shutdown = True
exc = self.assertRaises(mitogen.core.ChannelError, exc = self.assertRaises(mitogen.core.ChannelError,
lambda: recv.get()) lambda: recv.get())
self.assertEquals(exc.args[0], self.router.respondent_disconnect_msg) self.assertEqual(exc.args[0], self.router.respondent_disconnect_msg)
def test_accepts_returns_context(self): def test_accepts_returns_context(self):
context = self.local.call(func_returns_arg, self.local) context = self.local.call(func_returns_arg, self.local)
@ -112,10 +112,10 @@ class CallFunctionTest(testlib.RouterMixin, testlib.TestCase):
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
sender = recv.to_sender() sender = recv.to_sender()
sender2 = self.local.call(func_accepts_returns_sender, sender) sender2 = self.local.call(func_accepts_returns_sender, sender)
self.assertEquals(sender.context.context_id, self.assertEqual(sender.context.context_id,
sender2.context.context_id) sender2.context.context_id)
self.assertEquals(sender.dst_handle, sender2.dst_handle) self.assertEqual(sender.dst_handle, sender2.dst_handle)
self.assertEquals(123, recv.get().unpickle()) self.assertEqual(123, recv.get().unpickle())
self.assertRaises(mitogen.core.ChannelError, self.assertRaises(mitogen.core.ChannelError,
lambda: recv.get().unpickle()) lambda: recv.get().unpickle())
@ -130,19 +130,19 @@ class CallChainTest(testlib.RouterMixin, testlib.TestCase):
def test_subsequent_calls_produce_same_error(self): def test_subsequent_calls_produce_same_error(self):
chain = self.klass(self.local, pipelined=True) chain = self.klass(self.local, pipelined=True)
self.assertEquals('xx', chain.call(func_returns_arg, 'xx')) self.assertEqual('xx', chain.call(func_returns_arg, 'xx'))
chain.call_no_reply(function_that_fails, 'x1') chain.call_no_reply(function_that_fails, 'x1')
e1 = self.assertRaises(mitogen.core.CallError, e1 = self.assertRaises(mitogen.core.CallError,
lambda: chain.call(function_that_fails, 'x2')) lambda: chain.call(function_that_fails, 'x2'))
e2 = self.assertRaises(mitogen.core.CallError, e2 = self.assertRaises(mitogen.core.CallError,
lambda: chain.call(func_returns_arg, 'x3')) lambda: chain.call(func_returns_arg, 'x3'))
self.assertEquals(str(e1), str(e2)) self.assertEqual(str(e1), str(e2))
def test_unrelated_overlapping_failed_chains(self): def test_unrelated_overlapping_failed_chains(self):
c1 = self.klass(self.local, pipelined=True) c1 = self.klass(self.local, pipelined=True)
c2 = self.klass(self.local, pipelined=True) c2 = self.klass(self.local, pipelined=True)
c1.call_no_reply(function_that_fails, 'c1') c1.call_no_reply(function_that_fails, 'c1')
self.assertEquals('yes', c2.call(func_returns_arg, 'yes')) self.assertEqual('yes', c2.call(func_returns_arg, 'yes'))
self.assertRaises(mitogen.core.CallError, self.assertRaises(mitogen.core.CallError,
lambda: c1.call(func_returns_arg, 'yes')) lambda: c1.call(func_returns_arg, 'yes'))
@ -152,7 +152,7 @@ class CallChainTest(testlib.RouterMixin, testlib.TestCase):
e1 = self.assertRaises(mitogen.core.CallError, e1 = self.assertRaises(mitogen.core.CallError,
lambda: c1.call(function_that_fails, 'x2')) lambda: c1.call(function_that_fails, 'x2'))
c1.reset() c1.reset()
self.assertEquals('x3', c1.call(func_returns_arg, 'x3')) self.assertEqual('x3', c1.call(func_returns_arg, 'x3'))
class UnsupportedCallablesTest(testlib.RouterMixin, testlib.TestCase): class UnsupportedCallablesTest(testlib.RouterMixin, testlib.TestCase):
@ -168,17 +168,17 @@ class UnsupportedCallablesTest(testlib.RouterMixin, testlib.TestCase):
closure = lambda: a closure = lambda: a
e = self.assertRaises(TypeError, e = self.assertRaises(TypeError,
lambda: self.local.call(closure)) lambda: self.local.call(closure))
self.assertEquals(e.args[0], self.klass.closures_msg) self.assertEqual(e.args[0], self.klass.closures_msg)
def test_lambda_unsupported(self): def test_lambda_unsupported(self):
lam = lambda: None lam = lambda: None
e = self.assertRaises(TypeError, e = self.assertRaises(TypeError,
lambda: self.local.call(lam)) lambda: self.local.call(lam))
self.assertEquals(e.args[0], self.klass.lambda_msg) self.assertEqual(e.args[0], self.klass.lambda_msg)
def test_instance_method_unsupported(self): def test_instance_method_unsupported(self):
class X: class X:
def x(): pass def x(): pass
e = self.assertRaises(TypeError, e = self.assertRaises(TypeError,
lambda: self.local.call(X().x)) lambda: self.local.call(X().x))
self.assertEquals(e.args[0], self.klass.method_msg) self.assertEqual(e.args[0], self.klass.method_msg)

@ -41,7 +41,7 @@ class ConnectionTest(testlib.RouterMixin, testlib.TestCase):
exc, = result exc, = result
self.assertTrue(isinstance(exc, mitogen.parent.CancelledError)) self.assertTrue(isinstance(exc, mitogen.parent.CancelledError))
self.assertEquals(mitogen.parent.BROKER_SHUTDOWN_MSG, exc.args[0]) self.assertEqual(mitogen.parent.BROKER_SHUTDOWN_MSG, exc.args[0])
@mitogen.core.takes_econtext @mitogen.core.takes_econtext

@ -20,13 +20,13 @@ class PickleTest(testlib.RouterMixin, testlib.TestCase):
r = mitogen.core.Receiver(self.router) r = mitogen.core.Receiver(self.router)
r.to_sender().send(c) r.to_sender().send(c)
c2 = r.get().unpickle() c2 = r.get().unpickle()
self.assertEquals(None, c2.router) self.assertEqual(None, c2.router)
self.assertEquals(c.context_id, c2.context_id) self.assertEqual(c.context_id, c2.context_id)
self.assertEquals(c.name, c2.name) self.assertEqual(c.name, c2.name)
def test_vanilla_roundtrip(self): def test_vanilla_roundtrip(self):
c = self.router.local() c = self.router.local()
c2 = pickle.loads(pickle.dumps(c)) c2 = pickle.loads(pickle.dumps(c))
self.assertEquals(None, c2.router) self.assertEqual(None, c2.router)
self.assertEquals(c.context_id, c2.context_id) self.assertEqual(c.context_id, c2.context_id)
self.assertEquals(c.name, c2.name) self.assertEqual(c.name, c2.name)

@ -97,8 +97,8 @@ class StdinSockMixin(object):
lambda proc: proc.stdin.send(b('TEST'))) lambda proc: proc.stdin.send(b('TEST')))
st = os.fstat(proc.stdin.fileno()) st = os.fstat(proc.stdin.fileno())
self.assertTrue(stat.S_ISSOCK(st.st_mode)) self.assertTrue(stat.S_ISSOCK(st.st_mode))
self.assertEquals(st.st_dev, info['st_dev']) self.assertEqual(st.st_dev, info['st_dev'])
self.assertEquals(st.st_mode, _osx_mode(info['st_mode'])) self.assertEqual(st.st_mode, _osx_mode(info['st_mode']))
flags = fcntl.fcntl(proc.stdin.fileno(), fcntl.F_GETFL) flags = fcntl.fcntl(proc.stdin.fileno(), fcntl.F_GETFL)
self.assertTrue(flags & os.O_RDWR) self.assertTrue(flags & os.O_RDWR)
self.assertTrue(info['buf'], 'TEST') self.assertTrue(info['buf'], 'TEST')
@ -111,8 +111,8 @@ class StdoutSockMixin(object):
lambda proc: wait_read(proc.stdout, 4)) lambda proc: wait_read(proc.stdout, 4))
st = os.fstat(proc.stdout.fileno()) st = os.fstat(proc.stdout.fileno())
self.assertTrue(stat.S_ISSOCK(st.st_mode)) self.assertTrue(stat.S_ISSOCK(st.st_mode))
self.assertEquals(st.st_dev, info['st_dev']) self.assertEqual(st.st_dev, info['st_dev'])
self.assertEquals(st.st_mode, _osx_mode(info['st_mode'])) self.assertEqual(st.st_mode, _osx_mode(info['st_mode']))
flags = fcntl.fcntl(proc.stdout.fileno(), fcntl.F_GETFL) flags = fcntl.fcntl(proc.stdout.fileno(), fcntl.F_GETFL)
self.assertTrue(flags & os.O_RDWR) self.assertTrue(flags & os.O_RDWR)
self.assertTrue(buf, 'TEST') self.assertTrue(buf, 'TEST')
@ -125,9 +125,9 @@ class CreateChildTest(StdinSockMixin, StdoutSockMixin, testlib.TestCase):
def test_stderr(self): def test_stderr(self):
proc, info, _ = run_fd_check(self.func, 2, 'write') proc, info, _ = run_fd_check(self.func, 2, 'write')
st = os.fstat(sys.stderr.fileno()) st = os.fstat(sys.stderr.fileno())
self.assertEquals(st.st_dev, info['st_dev']) self.assertEqual(st.st_dev, info['st_dev'])
self.assertEquals(st.st_mode, info['st_mode']) self.assertEqual(st.st_mode, info['st_mode'])
self.assertEquals(st.st_ino, info['st_ino']) self.assertEqual(st.st_ino, info['st_ino'])
class CreateChildMergedTest(StdinSockMixin, StdoutSockMixin, class CreateChildMergedTest(StdinSockMixin, StdoutSockMixin,
@ -139,7 +139,7 @@ class CreateChildMergedTest(StdinSockMixin, StdoutSockMixin,
def test_stderr(self): def test_stderr(self):
proc, info, buf = run_fd_check(self.func, 2, 'write', proc, info, buf = run_fd_check(self.func, 2, 'write',
lambda proc: wait_read(proc.stdout, 4)) lambda proc: wait_read(proc.stdout, 4))
self.assertEquals(None, proc.stderr) self.assertEqual(None, proc.stderr)
st = os.fstat(proc.stdout.fileno()) st = os.fstat(proc.stdout.fileno())
self.assertTrue(stat.S_ISSOCK(st.st_mode)) self.assertTrue(stat.S_ISSOCK(st.st_mode))
flags = fcntl.fcntl(proc.stdout.fileno(), fcntl.F_GETFL) flags = fcntl.fcntl(proc.stdout.fileno(), fcntl.F_GETFL)
@ -159,8 +159,8 @@ class CreateChildStderrPipeTest(StdinSockMixin, StdoutSockMixin,
lambda proc: wait_read(proc.stderr, 4)) lambda proc: wait_read(proc.stderr, 4))
st = os.fstat(proc.stderr.fileno()) st = os.fstat(proc.stderr.fileno())
self.assertTrue(stat.S_ISFIFO(st.st_mode)) self.assertTrue(stat.S_ISFIFO(st.st_mode))
self.assertEquals(st.st_dev, info['st_dev']) self.assertEqual(st.st_dev, info['st_dev'])
self.assertEquals(st.st_mode, info['st_mode']) self.assertEqual(st.st_mode, info['st_mode'])
flags = fcntl.fcntl(proc.stderr.fileno(), fcntl.F_GETFL) flags = fcntl.fcntl(proc.stderr.fileno(), fcntl.F_GETFL)
self.assertFalse(flags & os.O_WRONLY) self.assertFalse(flags & os.O_WRONLY)
self.assertFalse(flags & os.O_RDWR) self.assertFalse(flags & os.O_RDWR)
@ -188,11 +188,11 @@ class TtyCreateChildTest(testlib.TestCase):
]) ])
mitogen.core.set_block(proc.stdin.fileno()) mitogen.core.set_block(proc.stdin.fileno())
# read(3) below due to https://bugs.python.org/issue37696 # read(3) below due to https://bugs.python.org/issue37696
self.assertEquals(mitogen.core.b('hi\n'), proc.stdin.read(3)) self.assertEqual(mitogen.core.b('hi\n'), proc.stdin.read(3))
waited_pid, status = os.waitpid(proc.pid, 0) waited_pid, status = os.waitpid(proc.pid, 0)
self.assertEquals(proc.pid, waited_pid) self.assertEqual(proc.pid, waited_pid)
self.assertEquals(0, status) self.assertEqual(0, status)
self.assertEquals(mitogen.core.b(''), tf.read()) self.assertEqual(mitogen.core.b(''), tf.read())
proc.stdout.close() proc.stdout.close()
finally: finally:
tf.close() tf.close()
@ -268,11 +268,11 @@ class TtyCreateChildTest(testlib.TestCase):
proc = self.func([ proc = self.func([
'bash', '-c', 'exec 2>%s; echo hi > /dev/tty' % (tf.name,) 'bash', '-c', 'exec 2>%s; echo hi > /dev/tty' % (tf.name,)
]) ])
self.assertEquals(mitogen.core.b('hi\n'), wait_read(proc.stdout, 3)) self.assertEqual(mitogen.core.b('hi\n'), wait_read(proc.stdout, 3))
waited_pid, status = os.waitpid(proc.pid, 0) waited_pid, status = os.waitpid(proc.pid, 0)
self.assertEquals(proc.pid, waited_pid) self.assertEqual(proc.pid, waited_pid)
self.assertEquals(0, status) self.assertEqual(0, status)
self.assertEquals(mitogen.core.b(''), tf.read()) self.assertEqual(mitogen.core.b(''), tf.read())
proc.stdout.close() proc.stdout.close()
finally: finally:
tf.close() tf.close()
@ -316,8 +316,8 @@ if 0:
lambda proc: proc.transmit_side.write('TEST')) lambda proc: proc.transmit_side.write('TEST'))
st = os.fstat(proc.transmit_side.fd) st = os.fstat(proc.transmit_side.fd)
self.assertTrue(stat.S_ISFIFO(st.st_mode)) self.assertTrue(stat.S_ISFIFO(st.st_mode))
self.assertEquals(st.st_dev, info['st_dev']) self.assertEqual(st.st_dev, info['st_dev'])
self.assertEquals(st.st_mode, info['st_mode']) self.assertEqual(st.st_mode, info['st_mode'])
flags = fcntl.fcntl(proc.transmit_side.fd, fcntl.F_GETFL) flags = fcntl.fcntl(proc.transmit_side.fd, fcntl.F_GETFL)
self.assertTrue(flags & os.O_WRONLY) self.assertTrue(flags & os.O_WRONLY)
self.assertTrue(buf, 'TEST') self.assertTrue(buf, 'TEST')
@ -329,8 +329,8 @@ if 0:
lambda proc: wait_read(proc.receive_side, 4)) lambda proc: wait_read(proc.receive_side, 4))
st = os.fstat(proc.receive_side.fd) st = os.fstat(proc.receive_side.fd)
self.assertTrue(stat.S_ISFIFO(st.st_mode)) self.assertTrue(stat.S_ISFIFO(st.st_mode))
self.assertEquals(st.st_dev, info['st_dev']) self.assertEqual(st.st_dev, info['st_dev'])
self.assertEquals(st.st_mode, info['st_mode']) self.assertEqual(st.st_mode, info['st_mode'])
flags = fcntl.fcntl(proc.receive_side.fd, fcntl.F_GETFL) flags = fcntl.fcntl(proc.receive_side.fd, fcntl.F_GETFL)
self.assertFalse(flags & os.O_WRONLY) self.assertFalse(flags & os.O_WRONLY)
self.assertFalse(flags & os.O_RDWR) self.assertFalse(flags & os.O_RDWR)

@ -12,7 +12,8 @@ class MyError(Exception):
def get_sentinel_value(): def get_sentinel_value():
# Some proof we're even talking to the mitogen-test Docker image # Some proof we're even talking to the mitogen-test Docker image
return open('/etc/sentinel', 'rb').read().decode() with open('/etc/sentinel', 'rb') as f:
return f.read().decode()
def add(x, y): def add(x, y):

@ -17,13 +17,13 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
username='someuser', username='someuser',
) )
argv = eval(context.call(os.getenv, 'ORIGINAL_ARGV')) argv = eval(context.call(os.getenv, 'ORIGINAL_ARGV'))
self.assertEquals(argv[:4], [ self.assertEqual(argv[:4], [
self.doas_path, self.doas_path,
'-u', '-u',
'someuser', 'someuser',
'--', '--',
]) ])
self.assertEquals('1', context.call(os.getenv, 'THIS_IS_STUB_DOAS')) self.assertEqual('1', context.call(os.getenv, 'THIS_IS_STUB_DOAS'))
# TODO: https://github.com/dw/mitogen/issues/694 they are flaky on python 2.6 MODE=mitogen DISTROS=centos7 # TODO: https://github.com/dw/mitogen/issues/694 they are flaky on python 2.6 MODE=mitogen DISTROS=centos7
@ -57,4 +57,4 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
# password='has_sudo_password', # password='has_sudo_password',
# ) # )
# context = self.router.doas(via=ssh, password='has_sudo_password') # context = self.router.doas(via=ssh, password='has_sudo_password')
# self.assertEquals(0, context.call(os.getuid)) # self.assertEqual(0, context.call(os.getuid))

@ -15,8 +15,8 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
stream = self.router.stream_by_id(context.context_id) stream = self.router.stream_by_id(context.context_id)
argv = eval(context.call(os.getenv, 'ORIGINAL_ARGV')) argv = eval(context.call(os.getenv, 'ORIGINAL_ARGV'))
self.assertEquals(argv[0], docker_path) self.assertEqual(argv[0], docker_path)
self.assertEquals(argv[1], 'exec') self.assertEqual(argv[1], 'exec')
self.assertEquals(argv[2], '--interactive') self.assertEqual(argv[2], '--interactive')
self.assertEquals(argv[3], 'container_name') self.assertEqual(argv[3], 'container_name')
self.assertEquals(argv[4], stream.conn.options.python_path) self.assertEqual(argv[4], stream.conn.options.python_path)

@ -7,20 +7,20 @@ class ConstructorTest(testlib.TestCase):
def test_literal_no_format(self): def test_literal_no_format(self):
e = self.klass('error') e = self.klass('error')
self.assertEquals(e.args[0], 'error') self.assertEqual(e.args[0], 'error')
self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType)) self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType))
def test_literal_format_chars_present(self): def test_literal_format_chars_present(self):
e = self.klass('error%s') e = self.klass('error%s')
self.assertEquals(e.args[0], 'error%s') self.assertEqual(e.args[0], 'error%s')
self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType)) self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType))
def test_format(self): def test_format(self):
e = self.klass('error%s', 123) e = self.klass('error%s', 123)
self.assertEquals(e.args[0], 'error123') self.assertEqual(e.args[0], 'error123')
self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType)) self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType))
def test_bytes_to_unicode(self): def test_bytes_to_unicode(self):
e = self.klass(mitogen.core.b('error')) e = self.klass(mitogen.core.b('error'))
self.assertEquals(e.args[0], 'error') self.assertEqual(e.args[0], 'error')
self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType)) self.assertTrue(isinstance(e.args[0], mitogen.core.UnicodeType))

@ -50,8 +50,8 @@ class FetchTest(testlib.RouterMixin, testlib.TestCase):
def _validate_response(self, resp): def _validate_response(self, resp):
self.assertTrue(isinstance(resp, dict)) self.assertTrue(isinstance(resp, dict))
self.assertEquals('root', resp['owner']) self.assertEqual('root', resp['owner'])
self.assertEquals(self.ROOT_GROUP, resp['group']) self.assertEqual(self.ROOT_GROUP, resp['group'])
self.assertTrue(isinstance(resp['mode'], int)) self.assertTrue(isinstance(resp['mode'], int))
self.assertTrue(isinstance(resp['mtime'], float)) self.assertTrue(isinstance(resp['mtime'], float))
self.assertTrue(isinstance(resp['atime'], float)) self.assertTrue(isinstance(resp['atime'], float))

@ -37,8 +37,8 @@ class CommandLineTest(testlib.RouterMixin, testlib.TestCase):
stderr=subprocess.PIPE, stderr=subprocess.PIPE,
) )
stdout, stderr = proc.communicate() stdout, stderr = proc.communicate()
self.assertEquals(0, proc.returncode) self.assertEqual(0, proc.returncode)
self.assertEquals(stdout, self.assertEqual(stdout,
mitogen.parent.BootstrapProtocol.EC0_MARKER+b('\n')) mitogen.parent.BootstrapProtocol.EC0_MARKER+b('\n'))
self.assertIn(b("Error -5 while decompressing data"), stderr) self.assertIn(b("Error -5 while decompressing data"), stderr)
finally: finally:

@ -115,7 +115,7 @@ class ForkTest(testlib.RouterMixin, testlib.TestCase):
sender = mitogen.core.Sender(econtext.parent, recv.handle) sender = mitogen.core.Sender(econtext.parent, recv.handle)
sender.send(123) sender.send(123)
context = self.router.fork(on_start=on_start) context = self.router.fork(on_start=on_start)
self.assertEquals(123, recv.get().unpickle()) self.assertEqual(123, recv.get().unpickle())
ForkTest = skipIfUnsupported(ForkTest) ForkTest = skipIfUnsupported(ForkTest)
@ -134,7 +134,7 @@ class DoubleChildTest(testlib.RouterMixin, testlib.TestCase):
# successfully. In future, we need lots more tests. # successfully. In future, we need lots more tests.
c1 = self.router.fork() c1 = self.router.fork()
c2 = self.router.fork(via=c1) c2 = self.router.fork(via=c1)
self.assertEquals(123, c2.call(ping)) self.assertEqual(123, c2.call(ping))
def test_importer(self): def test_importer(self):
c1 = self.router.fork(name='c1') c1 = self.router.fork(name='c1')

@ -14,7 +14,7 @@ class SlaveTest(testlib.RouterMixin, testlib.TestCase):
def test_slave_allocates_id(self): def test_slave_allocates_id(self):
context = self.router.local() context = self.router.local()
# Master's allocator named the context 1. # Master's allocator named the context 1.
self.assertEquals(1, context.context_id) self.assertEqual(1, context.context_id)
# First call from slave allocates a block (2..1001) # First call from slave allocates a block (2..1001)
id_ = context.call(allocate_an_id) id_ = context.call(allocate_an_id)
@ -26,4 +26,4 @@ class SlaveTest(testlib.RouterMixin, testlib.TestCase):
# Subsequent master allocation does not collide # Subsequent master allocation does not collide
c2 = self.router.local() c2 = self.router.local()
self.assertEquals(1002, c2.context_id) self.assertEqual(1002, c2.context_id)

@ -68,7 +68,7 @@ class LoadModuleTest(ImporterMixin, testlib.TestCase):
def test_module_file_set(self): def test_module_file_set(self):
self.set_get_module_response(self.response) self.set_get_module_response(self.response)
mod = self.importer.load_module(self.modname) mod = self.importer.load_module(self.modname)
self.assertEquals(mod.__file__, 'master:' + self.path) self.assertEqual(mod.__file__, 'master:' + self.path)
def test_module_loader_set(self): def test_module_loader_set(self):
self.set_get_module_response(self.response) self.set_get_module_response(self.response)
@ -91,7 +91,7 @@ class LoadSubmoduleTest(ImporterMixin, testlib.TestCase):
def test_module_package_unset(self): def test_module_package_unset(self):
self.set_get_module_response(self.response) self.set_get_module_response(self.response)
mod = self.importer.load_module(self.modname) mod = self.importer.load_module(self.modname)
self.assertEquals(mod.__package__, 'mypkg') self.assertEqual(mod.__package__, 'mypkg')
class LoadModulePackageTest(ImporterMixin, testlib.TestCase): class LoadModulePackageTest(ImporterMixin, testlib.TestCase):
@ -104,19 +104,19 @@ class LoadModulePackageTest(ImporterMixin, testlib.TestCase):
def test_module_file_set(self): def test_module_file_set(self):
self.set_get_module_response(self.response) self.set_get_module_response(self.response)
mod = self.importer.load_module(self.modname) mod = self.importer.load_module(self.modname)
self.assertEquals(mod.__file__, 'master:' + self.path) self.assertEqual(mod.__file__, 'master:' + self.path)
def test_get_filename(self): def test_get_filename(self):
self.set_get_module_response(self.response) self.set_get_module_response(self.response)
mod = self.importer.load_module(self.modname) mod = self.importer.load_module(self.modname)
filename = mod.__loader__.get_filename(self.modname) filename = mod.__loader__.get_filename(self.modname)
self.assertEquals('master:fake_pkg/__init__.py', filename) self.assertEqual('master:fake_pkg/__init__.py', filename)
def test_get_source(self): def test_get_source(self):
self.set_get_module_response(self.response) self.set_get_module_response(self.response)
mod = self.importer.load_module(self.modname) mod = self.importer.load_module(self.modname)
source = mod.__loader__.get_source(self.modname) source = mod.__loader__.get_source(self.modname)
self.assertEquals(source, self.assertEqual(source,
mitogen.core.to_text(zlib.decompress(self.data))) mitogen.core.to_text(zlib.decompress(self.data)))
def test_module_loader_set(self): def test_module_loader_set(self):
@ -127,18 +127,18 @@ class LoadModulePackageTest(ImporterMixin, testlib.TestCase):
def test_module_path_present(self): def test_module_path_present(self):
self.set_get_module_response(self.response) self.set_get_module_response(self.response)
mod = self.importer.load_module(self.modname) mod = self.importer.load_module(self.modname)
self.assertEquals(mod.__path__, []) self.assertEqual(mod.__path__, [])
def test_module_package_set(self): def test_module_package_set(self):
self.set_get_module_response(self.response) self.set_get_module_response(self.response)
mod = self.importer.load_module(self.modname) mod = self.importer.load_module(self.modname)
self.assertEquals(mod.__package__, self.modname) self.assertEqual(mod.__package__, self.modname)
def test_module_data(self): def test_module_data(self):
self.set_get_module_response(self.response) self.set_get_module_response(self.response)
mod = self.importer.load_module(self.modname) mod = self.importer.load_module(self.modname)
self.assertIsInstance(mod.func, types.FunctionType) self.assertIsInstance(mod.func, types.FunctionType)
self.assertEquals(mod.func.__module__, self.modname) self.assertEqual(mod.func.__module__, self.modname)
class EmailParseAddrSysTest(testlib.RouterMixin, testlib.TestCase): class EmailParseAddrSysTest(testlib.RouterMixin, testlib.TestCase):
@ -218,5 +218,5 @@ class SelfReplacingModuleTest(testlib.RouterMixin, testlib.TestCase):
# issue #590 # issue #590
def test_importer_handles_self_replacement(self): def test_importer_handles_self_replacement(self):
c = self.router.local() c = self.router.local()
self.assertEquals(0, self.assertEqual(0,
c.call(simple_pkg.imports_replaces_self.subtract_one, 1)) c.call(simple_pkg.imports_replaces_self.subtract_one, 1))

@ -30,10 +30,10 @@ class RestartTest(object):
'yay', 'yay',
] ]
rc, disconnected = self.func(py24_mock_fix(m), 'input') rc, disconnected = self.func(py24_mock_fix(m), 'input')
self.assertEquals(rc, 'yay') self.assertEqual(rc, 'yay')
self.assertFalse(disconnected) self.assertFalse(disconnected)
self.assertEquals(4, m.call_count) self.assertEqual(4, m.call_count)
self.assertEquals(m.mock_calls, [ self.assertEqual(m.mock_calls, [
mock.call('input'), mock.call('input'),
mock.call('input'), mock.call('input'),
mock.call('input'), mock.call('input'),
@ -58,10 +58,10 @@ class DisconnectTest(object):
m = mock.Mock() m = mock.Mock()
m.side_effect = self.exception_class(self.errno) m.side_effect = self.exception_class(self.errno)
rc, disconnected = self.func(m, 'input') rc, disconnected = self.func(m, 'input')
self.assertEquals(rc, None) self.assertEqual(rc, None)
self.assertTrue(disconnected) self.assertTrue(disconnected)
self.assertEquals(1, m.call_count) self.assertEqual(1, m.call_count)
self.assertEquals(m.mock_calls, [ self.assertEqual(m.mock_calls, [
mock.call('input'), mock.call('input'),
]) ])
@ -106,9 +106,9 @@ class ExceptionTest(object):
m.side_effect = self.exception_class(self.errno) m.side_effect = self.exception_class(self.errno)
e = self.assertRaises(self.exception_class, e = self.assertRaises(self.exception_class,
lambda: self.func(m, 'input')) lambda: self.func(m, 'input'))
self.assertEquals(e, m.side_effect) self.assertEqual(e, m.side_effect)
self.assertEquals(1, m.call_count) self.assertEqual(1, m.call_count)
self.assertEquals(m.mock_calls, [ self.assertEqual(m.mock_calls, [
mock.call('input'), mock.call('input'),
]) ])

@ -21,38 +21,38 @@ class IterSplitTest(unittest.TestCase):
lst = [] lst = []
trailer, cont = self.func(buf='', delim='\n', func=lst.append) trailer, cont = self.func(buf='', delim='\n', func=lst.append)
self.assertTrue(cont) self.assertTrue(cont)
self.assertEquals('', trailer) self.assertEqual('', trailer)
self.assertEquals([], lst) self.assertEqual([], lst)
def test_empty_line(self): def test_empty_line(self):
lst = [] lst = []
trailer, cont = self.func(buf='\n', delim='\n', func=lst.append) trailer, cont = self.func(buf='\n', delim='\n', func=lst.append)
self.assertTrue(cont) self.assertTrue(cont)
self.assertEquals('', trailer) self.assertEqual('', trailer)
self.assertEquals([''], lst) self.assertEqual([''], lst)
def test_one_line(self): def test_one_line(self):
buf = 'xxxx\n' buf = 'xxxx\n'
lst = [] lst = []
trailer, cont = self.func(buf=buf, delim='\n', func=lst.append) trailer, cont = self.func(buf=buf, delim='\n', func=lst.append)
self.assertTrue(cont) self.assertTrue(cont)
self.assertEquals('', trailer) self.assertEqual('', trailer)
self.assertEquals(lst, ['xxxx']) self.assertEqual(lst, ['xxxx'])
def test_one_incomplete(self): def test_one_incomplete(self):
buf = 'xxxx\nyy' buf = 'xxxx\nyy'
lst = [] lst = []
trailer, cont = self.func(buf=buf, delim='\n', func=lst.append) trailer, cont = self.func(buf=buf, delim='\n', func=lst.append)
self.assertTrue(cont) self.assertTrue(cont)
self.assertEquals('yy', trailer) self.assertEqual('yy', trailer)
self.assertEquals(lst, ['xxxx']) self.assertEqual(lst, ['xxxx'])
def test_returns_false_immediately(self): def test_returns_false_immediately(self):
buf = 'xxxx\nyy' buf = 'xxxx\nyy'
func = lambda buf: False func = lambda buf: False
trailer, cont = self.func(buf=buf, delim='\n', func=func) trailer, cont = self.func(buf=buf, delim='\n', func=func)
self.assertFalse(cont) self.assertFalse(cont)
self.assertEquals('yy', trailer) self.assertEqual('yy', trailer)
def test_returns_false_second_call(self): def test_returns_false_second_call(self):
buf = 'xxxx\nyy\nzz' buf = 'xxxx\nyy\nzz'
@ -60,4 +60,4 @@ class IterSplitTest(unittest.TestCase):
func = lambda buf: next(it) func = lambda buf: next(it)
trailer, cont = self.func(buf=buf, delim='\n', func=func) trailer, cont = self.func(buf=buf, delim='\n', func=func)
self.assertFalse(cont) self.assertFalse(cont)
self.assertEquals('zz', trailer) self.assertEqual('zz', trailer)

@ -18,10 +18,10 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
stream = self.router.stream_by_id(context.context_id) stream = self.router.stream_by_id(context.context_id)
argv = eval(context.call(os.getenv, 'ORIGINAL_ARGV')) argv = eval(context.call(os.getenv, 'ORIGINAL_ARGV'))
self.assertEquals(argv[:4], [ self.assertEqual(argv[:4], [
self.jexec_path, self.jexec_path,
'somejail', 'somejail',
stream.conn.options.python_path, stream.conn.options.python_path,
'-c', '-c',
]) ])
self.assertEquals('1', context.call(os.getenv, 'THIS_IS_STUB_JEXEC')) self.assertEqual('1', context.call(os.getenv, 'THIS_IS_STUB_JEXEC'))

@ -17,7 +17,7 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
) )
argv = eval(context.call(os.getenv, 'ORIGINAL_ARGV')) argv = eval(context.call(os.getenv, 'ORIGINAL_ARGV'))
self.assertEquals(argv[0], self.kubectl_path) self.assertEqual(argv[0], self.kubectl_path)
self.assertEquals(argv[1], 'exec') self.assertEqual(argv[1], 'exec')
self.assertEquals(argv[2], '-it') self.assertEqual(argv[2], '-it')
self.assertEquals(argv[3], 'pod_name') self.assertEqual(argv[3], 'pod_name')

@ -45,19 +45,19 @@ class GetTest(testlib.TestCase):
obj = object() obj = object()
latch = self.klass() latch = self.klass()
latch.put(obj) latch.put(obj)
self.assertEquals(obj, latch.get()) self.assertEqual(obj, latch.get())
def test_nonempty_noblock(self): def test_nonempty_noblock(self):
obj = object() obj = object()
latch = self.klass() latch = self.klass()
latch.put(obj) latch.put(obj)
self.assertEquals(obj, latch.get(block=False)) self.assertEqual(obj, latch.get(block=False))
def test_nonempty_zero_timeout(self): def test_nonempty_zero_timeout(self):
obj = object() obj = object()
latch = self.klass() latch = self.klass()
latch.put(obj) latch.put(obj)
self.assertEquals(obj, latch.get(timeout=0)) self.assertEqual(obj, latch.get(timeout=0))
class ThreadedGetTest(testlib.TestCase): class ThreadedGetTest(testlib.TestCase):
@ -91,8 +91,8 @@ class ThreadedGetTest(testlib.TestCase):
self.start_one(lambda: latch.get(timeout=3.0)) self.start_one(lambda: latch.get(timeout=3.0))
latch.put('test') latch.put('test')
self.join() self.join()
self.assertEquals(self.results, ['test']) self.assertEqual(self.results, ['test'])
self.assertEquals(self.excs, []) self.assertEqual(self.excs, [])
def test_five_threads(self): def test_five_threads(self):
latch = self.klass() latch = self.klass()
@ -101,8 +101,8 @@ class ThreadedGetTest(testlib.TestCase):
for x in range(5): for x in range(5):
latch.put(x) latch.put(x)
self.join() self.join()
self.assertEquals(sorted(self.results), list(range(5))) self.assertEqual(sorted(self.results), list(range(5)))
self.assertEquals(self.excs, []) self.assertEqual(self.excs, [])
@ -112,7 +112,7 @@ class PutTest(testlib.TestCase):
def test_put(self): def test_put(self):
latch = self.klass() latch = self.klass()
latch.put(None) latch.put(None)
self.assertEquals(None, latch.get()) self.assertEqual(None, latch.get())
class CloseTest(testlib.TestCase): class CloseTest(testlib.TestCase):
@ -197,7 +197,7 @@ class ThreadedCloseTest(testlib.TestCase):
self.start_one(lambda: latch.get(timeout=3.0)) self.start_one(lambda: latch.get(timeout=3.0))
latch.close() latch.close()
self.join() self.join()
self.assertEquals(self.results, [None]) self.assertEqual(self.results, [None])
for exc in self.excs: for exc in self.excs:
self.assertTrue(isinstance(exc, mitogen.core.LatchError)) self.assertTrue(isinstance(exc, mitogen.core.LatchError))
@ -207,6 +207,6 @@ class ThreadedCloseTest(testlib.TestCase):
self.start_one(lambda: latch.get(timeout=3.0)) self.start_one(lambda: latch.get(timeout=3.0))
latch.close() latch.close()
self.join() self.join()
self.assertEquals(self.results, [None]*5) self.assertEqual(self.results, [None]*5)
for exc in self.excs: for exc in self.excs:
self.assertTrue(isinstance(exc, mitogen.core.LatchError)) self.assertTrue(isinstance(exc, mitogen.core.LatchError))

@ -21,18 +21,18 @@ class ConstructionTest(testlib.RouterMixin, testlib.TestCase):
def test_stream_name(self): def test_stream_name(self):
context = self.router.local() context = self.router.local()
pid = context.call(os.getpid) pid = context.call(os.getpid)
self.assertEquals('local.%d' % (pid,), context.name) self.assertEqual('local.%d' % (pid,), context.name)
def test_python_path_inherited(self): def test_python_path_inherited(self):
context = self.router.local() context = self.router.local()
self.assertEquals(sys.executable, context.call(get_sys_executable)) self.assertEqual(sys.executable, context.call(get_sys_executable))
def test_python_path_string(self): def test_python_path_string(self):
context = self.router.local( context = self.router.local(
python_path=self.stub_python_path, python_path=self.stub_python_path,
) )
env = context.call(get_os_environ) env = context.call(get_os_environ)
self.assertEquals('1', env['THIS_IS_STUB_PYTHON']) self.assertEqual('1', env['THIS_IS_STUB_PYTHON'])
def test_python_path_list(self): def test_python_path_list(self):
context = self.router.local( context = self.router.local(
@ -42,7 +42,7 @@ class ConstructionTest(testlib.RouterMixin, testlib.TestCase):
sys.executable sys.executable
] ]
) )
self.assertEquals(sys.executable, context.call(get_sys_executable)) self.assertEqual(sys.executable, context.call(get_sys_executable))
env = context.call(get_os_environ) env = context.call(get_os_environ)
self.assertEquals('magic_first_arg', env['STUB_PYTHON_FIRST_ARG']) self.assertEqual('magic_first_arg', env['STUB_PYTHON_FIRST_ARG'])
self.assertEquals('1', env['THIS_IS_STUB_PYTHON']) self.assertEqual('1', env['THIS_IS_STUB_PYTHON'])

@ -38,8 +38,8 @@ class BufferingTest(testlib.TestCase):
context, handler = self.build() context, handler = self.build()
rec = self.record() rec = self.record()
handler.emit(rec) handler.emit(rec)
self.assertEquals(0, context.send.call_count) self.assertEqual(0, context.send.call_count)
self.assertEquals(1, len(handler._buffer)) self.assertEqual(1, len(handler._buffer))
def test_uncork(self): def test_uncork(self):
context, handler = self.build() context, handler = self.build()
@ -47,14 +47,14 @@ class BufferingTest(testlib.TestCase):
handler.emit(rec) handler.emit(rec)
handler.uncork() handler.uncork()
self.assertEquals(1, context.send.call_count) self.assertEqual(1, context.send.call_count)
self.assertEquals(None, handler._buffer) self.assertEqual(None, handler._buffer)
_, args, _ = context.send.mock_calls[0] _, args, _ = context.send.mock_calls[0]
msg, = args msg, = args
self.assertEquals(mitogen.core.FORWARD_LOG, msg.handle) self.assertEqual(mitogen.core.FORWARD_LOG, msg.handle)
self.assertEquals(b('name\x0099\x00msg'), msg.data) self.assertEqual(b('name\x0099\x00msg'), msg.data)
class StartupTest(testlib.RouterMixin, testlib.TestCase): class StartupTest(testlib.RouterMixin, testlib.TestCase):

@ -25,7 +25,7 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
) )
argv = eval(context.call(os.getenv, 'ORIGINAL_ARGV')) argv = eval(context.call(os.getenv, 'ORIGINAL_ARGV'))
self.assertEquals(argv[0], self.lxc_attach_path) self.assertEqual(argv[0], self.lxc_attach_path)
self.assertTrue('--clear-env' in argv) self.assertTrue('--clear-env' in argv)
self.assertTrue(has_subseq(argv, ['--name', 'container_name'])) self.assertTrue(has_subseq(argv, ['--name', 'container_name']))

@ -16,10 +16,10 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
) )
argv = eval(context.call(os.getenv, 'ORIGINAL_ARGV')) argv = eval(context.call(os.getenv, 'ORIGINAL_ARGV'))
self.assertEquals(argv[0], lxc_path) self.assertEqual(argv[0], lxc_path)
self.assertEquals(argv[1], 'exec') self.assertEqual(argv[1], 'exec')
self.assertEquals(argv[2], '--mode=noninteractive') self.assertEqual(argv[2], '--mode=noninteractive')
self.assertEquals(argv[3], 'container_name') self.assertEqual(argv[3], 'container_name')
def test_eof(self): def test_eof(self):
e = self.assertRaises(mitogen.parent.EofError, e = self.assertRaises(mitogen.parent.EofError,

@ -22,5 +22,6 @@ class ScanCodeImportsTest(testlib.TestCase):
def test_simple(self): def test_simple(self):
source_path = inspect.getsourcefile(ScanCodeImportsTest) source_path = inspect.getsourcefile(ScanCodeImportsTest)
co = compile(open(source_path).read(), source_path, 'exec') with open(source_path) as f:
self.assertEquals(list(self.func(co)), self.SIMPLE_EXPECT) co = compile(f.read(), source_path, 'exec')
self.assertEqual(list(self.func(co)), self.SIMPLE_EXPECT)

@ -16,45 +16,45 @@ class ConstructorTest(testlib.TestCase):
klass = mitogen.core.Message klass = mitogen.core.Message
def test_dst_id_default(self): def test_dst_id_default(self):
self.assertEquals(self.klass().dst_id, None) self.assertEqual(self.klass().dst_id, None)
def test_dst_id_explicit(self): def test_dst_id_explicit(self):
self.assertEquals(self.klass(dst_id=1111).dst_id, 1111) self.assertEqual(self.klass(dst_id=1111).dst_id, 1111)
@mock.patch('mitogen.context_id', 1234) @mock.patch('mitogen.context_id', 1234)
def test_src_id_default(self): def test_src_id_default(self):
self.assertEquals(self.klass().src_id, 1234) self.assertEqual(self.klass().src_id, 1234)
def test_src_id_explicit(self): def test_src_id_explicit(self):
self.assertEquals(self.klass(src_id=4321).src_id, 4321) self.assertEqual(self.klass(src_id=4321).src_id, 4321)
@mock.patch('mitogen.context_id', 5555) @mock.patch('mitogen.context_id', 5555)
def test_auth_id_default(self): def test_auth_id_default(self):
self.assertEquals(self.klass().auth_id, 5555) self.assertEqual(self.klass().auth_id, 5555)
def test_auth_id_explicit(self): def test_auth_id_explicit(self):
self.assertEquals(self.klass(auth_id=2222).auth_id, 2222) self.assertEqual(self.klass(auth_id=2222).auth_id, 2222)
def test_handle_default(self): def test_handle_default(self):
self.assertEquals(self.klass().handle, None) self.assertEqual(self.klass().handle, None)
def test_handle_explicit(self): def test_handle_explicit(self):
self.assertEquals(self.klass(handle=1234).handle, 1234) self.assertEqual(self.klass(handle=1234).handle, 1234)
def test_reply_to_default(self): def test_reply_to_default(self):
self.assertEquals(self.klass().reply_to, None) self.assertEqual(self.klass().reply_to, None)
def test_reply_to_explicit(self): def test_reply_to_explicit(self):
self.assertEquals(self.klass(reply_to=8888).reply_to, 8888) self.assertEqual(self.klass(reply_to=8888).reply_to, 8888)
def test_data_default(self): def test_data_default(self):
m = self.klass() m = self.klass()
self.assertEquals(m.data, b('')) self.assertEqual(m.data, b(''))
self.assertTrue(isinstance(m.data, mitogen.core.BytesType)) self.assertTrue(isinstance(m.data, mitogen.core.BytesType))
def test_data_explicit(self): def test_data_explicit(self):
m = self.klass(data=b('asdf')) m = self.klass(data=b('asdf'))
self.assertEquals(m.data, b('asdf')) self.assertEqual(m.data, b('asdf'))
self.assertTrue(isinstance(m.data, mitogen.core.BytesType)) self.assertTrue(isinstance(m.data, mitogen.core.BytesType))
def test_data_hates_unicode(self): def test_data_hates_unicode(self):
@ -66,62 +66,62 @@ class PackTest(testlib.TestCase):
klass = mitogen.core.Message klass = mitogen.core.Message
def test_header_format_sanity(self): def test_header_format_sanity(self):
self.assertEquals(self.klass.HEADER_LEN, self.assertEqual(self.klass.HEADER_LEN,
struct.calcsize(self.klass.HEADER_FMT)) struct.calcsize(self.klass.HEADER_FMT))
def test_header_length_correct(self): def test_header_length_correct(self):
s = self.klass(dst_id=123, handle=123).pack() s = self.klass(dst_id=123, handle=123).pack()
self.assertEquals(len(s), self.klass.HEADER_LEN) self.assertEqual(len(s), self.klass.HEADER_LEN)
def test_magic(self): def test_magic(self):
s = self.klass(dst_id=123, handle=123).pack() s = self.klass(dst_id=123, handle=123).pack()
magic, = struct.unpack('>h', s[:2]) magic, = struct.unpack('>h', s[:2])
self.assertEquals(self.klass.HEADER_MAGIC, magic) self.assertEqual(self.klass.HEADER_MAGIC, magic)
def test_dst_id(self): def test_dst_id(self):
s = self.klass(dst_id=123, handle=123).pack() s = self.klass(dst_id=123, handle=123).pack()
dst_id, = struct.unpack('>L', s[2:6]) dst_id, = struct.unpack('>L', s[2:6])
self.assertEquals(123, dst_id) self.assertEqual(123, dst_id)
def test_src_id(self): def test_src_id(self):
s = self.klass(src_id=5432, dst_id=123, handle=123).pack() s = self.klass(src_id=5432, dst_id=123, handle=123).pack()
src_id, = struct.unpack('>L', s[6:10]) src_id, = struct.unpack('>L', s[6:10])
self.assertEquals(5432, src_id) self.assertEqual(5432, src_id)
def test_auth_id(self): def test_auth_id(self):
s = self.klass(auth_id=1919, src_id=5432, dst_id=123, handle=123).pack() s = self.klass(auth_id=1919, src_id=5432, dst_id=123, handle=123).pack()
auth_id, = struct.unpack('>L', s[10:14]) auth_id, = struct.unpack('>L', s[10:14])
self.assertEquals(1919, auth_id) self.assertEqual(1919, auth_id)
def test_handle(self): def test_handle(self):
s = self.klass(dst_id=123, handle=9999).pack() s = self.klass(dst_id=123, handle=9999).pack()
handle, = struct.unpack('>L', s[14:18]) handle, = struct.unpack('>L', s[14:18])
self.assertEquals(9999, handle) self.assertEqual(9999, handle)
def test_reply_to(self): def test_reply_to(self):
s = self.klass(dst_id=1231, handle=7777, reply_to=9132).pack() s = self.klass(dst_id=1231, handle=7777, reply_to=9132).pack()
reply_to, = struct.unpack('>L', s[18:22]) reply_to, = struct.unpack('>L', s[18:22])
self.assertEquals(9132, reply_to) self.assertEqual(9132, reply_to)
def test_data_length_empty(self): def test_data_length_empty(self):
s = self.klass(dst_id=1231, handle=7777).pack() s = self.klass(dst_id=1231, handle=7777).pack()
data_length, = struct.unpack('>L', s[22:26]) data_length, = struct.unpack('>L', s[22:26])
self.assertEquals(0, data_length) self.assertEqual(0, data_length)
def test_data_length_present(self): def test_data_length_present(self):
s = self.klass(dst_id=1231, handle=7777, data=b('hello')).pack() s = self.klass(dst_id=1231, handle=7777, data=b('hello')).pack()
data_length, = struct.unpack('>L', s[22:26]) data_length, = struct.unpack('>L', s[22:26])
self.assertEquals(5, data_length) self.assertEqual(5, data_length)
def test_data_empty(self): def test_data_empty(self):
s = self.klass(dst_id=1231, handle=7777).pack() s = self.klass(dst_id=1231, handle=7777).pack()
data = s[26:] data = s[26:]
self.assertEquals(b(''), data) self.assertEqual(b(''), data)
def test_data_present(self): def test_data_present(self):
s = self.klass(dst_id=11, handle=77, data=b('hello')).pack() s = self.klass(dst_id=11, handle=77, data=b('hello')).pack()
data = s[26:] data = s[26:]
self.assertEquals(b('hello'), data) self.assertEqual(b('hello'), data)
class IsDeadTest(testlib.TestCase): class IsDeadTest(testlib.TestCase):
@ -141,15 +141,15 @@ class DeadTest(testlib.TestCase):
def test_no_reason(self): def test_no_reason(self):
msg = self.klass.dead() msg = self.klass.dead()
self.assertEquals(msg.reply_to, mitogen.core.IS_DEAD) self.assertEqual(msg.reply_to, mitogen.core.IS_DEAD)
self.assertTrue(msg.is_dead) self.assertTrue(msg.is_dead)
self.assertEquals(msg.data, b('')) self.assertEqual(msg.data, b(''))
def test_with_reason(self): def test_with_reason(self):
msg = self.klass.dead(reason=u'oh no') msg = self.klass.dead(reason=u'oh no')
self.assertEquals(msg.reply_to, mitogen.core.IS_DEAD) self.assertEqual(msg.reply_to, mitogen.core.IS_DEAD)
self.assertTrue(msg.is_dead) self.assertTrue(msg.is_dead)
self.assertEquals(msg.data, b('oh no')) self.assertEqual(msg.data, b('oh no'))
class EvilObject(object): class EvilObject(object):
@ -168,7 +168,7 @@ class PickledTest(testlib.TestCase):
def test_bool(self): def test_bool(self):
for b in True, False: for b in True, False:
self.assertEquals(b, self.roundtrip(b)) self.assertEqual(b, self.roundtrip(b))
@unittest.skipIf(condition=sys.version_info < (2, 6), @unittest.skipIf(condition=sys.version_info < (2, 6),
reason='bytearray missing on <2.6') reason='bytearray missing on <2.6')
@ -180,24 +180,24 @@ class PickledTest(testlib.TestCase):
def test_bytes(self): def test_bytes(self):
by = b('123') by = b('123')
self.assertEquals(by, self.roundtrip(by)) self.assertEqual(by, self.roundtrip(by))
def test_dict(self): def test_dict(self):
d = {1: 2, u'a': 3, b('b'): 4, 'c': {}} d = {1: 2, u'a': 3, b('b'): 4, 'c': {}}
roundtrip = self.roundtrip(d) roundtrip = self.roundtrip(d)
self.assertEquals(d, roundtrip) self.assertEqual(d, roundtrip)
self.assertTrue(isinstance(roundtrip, dict)) self.assertTrue(isinstance(roundtrip, dict))
for k in d: for k in d:
self.assertTrue(isinstance(roundtrip[k], type(d[k]))) self.assertTrue(isinstance(roundtrip[k], type(d[k])))
def test_int(self): def test_int(self):
self.assertEquals(123, self.klass.pickled(123).unpickle()) self.assertEqual(123, self.klass.pickled(123).unpickle())
def test_list(self): def test_list(self):
l = [1, u'b', b('c')] l = [1, u'b', b('c')]
roundtrip = self.roundtrip(l) roundtrip = self.roundtrip(l)
self.assertTrue(isinstance(roundtrip, list)) self.assertTrue(isinstance(roundtrip, list))
self.assertEquals(l, roundtrip) self.assertEqual(l, roundtrip)
for k in range(len(l)): for k in range(len(l)):
self.assertTrue(isinstance(roundtrip[k], type(l[k]))) self.assertTrue(isinstance(roundtrip[k], type(l[k])))
@ -206,13 +206,13 @@ class PickledTest(testlib.TestCase):
def test_long(self): def test_long(self):
l = long(0xffffffffffff) l = long(0xffffffffffff)
roundtrip = self.roundtrip(l) roundtrip = self.roundtrip(l)
self.assertEquals(l, roundtrip) self.assertEqual(l, roundtrip)
self.assertTrue(isinstance(roundtrip, long)) self.assertTrue(isinstance(roundtrip, long))
def test_tuple(self): def test_tuple(self):
l = (1, u'b', b('c')) l = (1, u'b', b('c'))
roundtrip = self.roundtrip(l) roundtrip = self.roundtrip(l)
self.assertEquals(l, roundtrip) self.assertEqual(l, roundtrip)
self.assertTrue(isinstance(roundtrip, tuple)) self.assertTrue(isinstance(roundtrip, tuple))
for k in range(len(l)): for k in range(len(l)):
self.assertTrue(isinstance(roundtrip[k], type(l[k]))) self.assertTrue(isinstance(roundtrip[k], type(l[k])))
@ -220,7 +220,7 @@ class PickledTest(testlib.TestCase):
def test_unicode(self): def test_unicode(self):
u = u'abcd' u = u'abcd'
roundtrip = self.roundtrip(u) roundtrip = self.roundtrip(u)
self.assertEquals(u, roundtrip) self.assertEqual(u, roundtrip)
self.assertTrue(isinstance(roundtrip, mitogen.core.UnicodeType)) self.assertTrue(isinstance(roundtrip, mitogen.core.UnicodeType))
#### custom types. see also: types_test.py, call_error_test.py #### custom types. see also: types_test.py, call_error_test.py
@ -233,31 +233,31 @@ class PickledTest(testlib.TestCase):
v = mitogen.core.Blob(b('dave')) v = mitogen.core.Blob(b('dave'))
roundtrip = self.roundtrip(v) roundtrip = self.roundtrip(v)
self.assertTrue(isinstance(roundtrip, mitogen.core.Blob)) self.assertTrue(isinstance(roundtrip, mitogen.core.Blob))
self.assertEquals(b('dave'), roundtrip) self.assertEqual(b('dave'), roundtrip)
def test_blob_empty(self): def test_blob_empty(self):
v = mitogen.core.Blob(b('')) v = mitogen.core.Blob(b(''))
roundtrip = self.roundtrip(v) roundtrip = self.roundtrip(v)
self.assertTrue(isinstance(roundtrip, mitogen.core.Blob)) self.assertTrue(isinstance(roundtrip, mitogen.core.Blob))
self.assertEquals(b(''), v) self.assertEqual(b(''), v)
def test_secret_nonempty(self): def test_secret_nonempty(self):
s = mitogen.core.Secret(u'dave') s = mitogen.core.Secret(u'dave')
roundtrip = self.roundtrip(s) roundtrip = self.roundtrip(s)
self.assertTrue(isinstance(roundtrip, mitogen.core.Secret)) self.assertTrue(isinstance(roundtrip, mitogen.core.Secret))
self.assertEquals(u'dave', roundtrip) self.assertEqual(u'dave', roundtrip)
def test_secret_empty(self): def test_secret_empty(self):
s = mitogen.core.Secret(u'') s = mitogen.core.Secret(u'')
roundtrip = self.roundtrip(s) roundtrip = self.roundtrip(s)
self.assertTrue(isinstance(roundtrip, mitogen.core.Secret)) self.assertTrue(isinstance(roundtrip, mitogen.core.Secret))
self.assertEquals(u'', roundtrip) self.assertEqual(u'', roundtrip)
def test_call_error(self): def test_call_error(self):
ce = mitogen.core.CallError('nope') ce = mitogen.core.CallError('nope')
ce2 = self.assertRaises(mitogen.core.CallError, ce2 = self.assertRaises(mitogen.core.CallError,
lambda: self.roundtrip(ce)) lambda: self.roundtrip(ce))
self.assertEquals(ce.args[0], ce2.args[0]) self.assertEqual(ce.args[0], ce2.args[0])
def test_context(self): def test_context(self):
router = mitogen.master.Router() router = mitogen.master.Router()
@ -265,7 +265,7 @@ class PickledTest(testlib.TestCase):
c = router.context_by_id(1234) c = router.context_by_id(1234)
roundtrip = self.roundtrip(c) roundtrip = self.roundtrip(c)
self.assertTrue(isinstance(roundtrip, mitogen.core.Context)) self.assertTrue(isinstance(roundtrip, mitogen.core.Context))
self.assertEquals(c.context_id, 1234) self.assertEqual(c.context_id, 1234)
finally: finally:
router.broker.shutdown() router.broker.shutdown()
router.broker.join() router.broker.join()
@ -277,8 +277,8 @@ class PickledTest(testlib.TestCase):
sender = recv.to_sender() sender = recv.to_sender()
roundtrip = self.roundtrip(sender, router=router) roundtrip = self.roundtrip(sender, router=router)
self.assertTrue(isinstance(roundtrip, mitogen.core.Sender)) self.assertTrue(isinstance(roundtrip, mitogen.core.Sender))
self.assertEquals(roundtrip.context.context_id, mitogen.context_id) self.assertEqual(roundtrip.context.context_id, mitogen.context_id)
self.assertEquals(roundtrip.dst_handle, sender.dst_handle) self.assertEqual(roundtrip.dst_handle, sender.dst_handle)
finally: finally:
router.broker.shutdown() router.broker.shutdown()
router.broker.join() router.broker.join()
@ -299,15 +299,15 @@ class ReplyTest(testlib.TestCase):
msg = self.klass(src_id=1234, reply_to=9191) msg = self.klass(src_id=1234, reply_to=9191)
router = mock.Mock() router = mock.Mock()
msg.reply(123, router=router) msg.reply(123, router=router)
self.assertEquals(1, router.route.call_count) self.assertEqual(1, router.route.call_count)
def test_reply_pickles_object(self): def test_reply_pickles_object(self):
msg = self.klass(src_id=1234, reply_to=9191) msg = self.klass(src_id=1234, reply_to=9191)
router = mock.Mock() router = mock.Mock()
msg.reply(123, router=router) msg.reply(123, router=router)
_, (reply,), _ = router.route.mock_calls[0] _, (reply,), _ = router.route.mock_calls[0]
self.assertEquals(reply.dst_id, 1234) self.assertEqual(reply.dst_id, 1234)
self.assertEquals(reply.unpickle(), 123) self.assertEqual(reply.unpickle(), 123)
def test_reply_uses_preformatted_message(self): def test_reply_uses_preformatted_message(self):
msg = self.klass(src_id=1234, reply_to=9191) msg = self.klass(src_id=1234, reply_to=9191)
@ -316,22 +316,22 @@ class ReplyTest(testlib.TestCase):
msg.reply(my_reply, router=router) msg.reply(my_reply, router=router)
_, (reply,), _ = router.route.mock_calls[0] _, (reply,), _ = router.route.mock_calls[0]
self.assertTrue(my_reply is reply) self.assertTrue(my_reply is reply)
self.assertEquals(reply.dst_id, 1234) self.assertEqual(reply.dst_id, 1234)
self.assertEquals(reply.unpickle(), 4444) self.assertEqual(reply.unpickle(), 4444)
def test_reply_sets_dst_id(self): def test_reply_sets_dst_id(self):
msg = self.klass(src_id=1234, reply_to=9191) msg = self.klass(src_id=1234, reply_to=9191)
router = mock.Mock() router = mock.Mock()
msg.reply(123, router=router) msg.reply(123, router=router)
_, (reply,), _ = router.route.mock_calls[0] _, (reply,), _ = router.route.mock_calls[0]
self.assertEquals(reply.dst_id, 1234) self.assertEqual(reply.dst_id, 1234)
def test_reply_sets_handle(self): def test_reply_sets_handle(self):
msg = self.klass(src_id=1234, reply_to=9191) msg = self.klass(src_id=1234, reply_to=9191)
router = mock.Mock() router = mock.Mock()
msg.reply(123, router=router) msg.reply(123, router=router)
_, (reply,), _ = router.route.mock_calls[0] _, (reply,), _ = router.route.mock_calls[0]
self.assertEquals(reply.handle, 9191) self.assertEqual(reply.handle, 9191)
class UnpickleTest(testlib.TestCase): class UnpickleTest(testlib.TestCase):
@ -343,13 +343,13 @@ class UnpickleTest(testlib.TestCase):
m = self.klass.pickled(ce) m = self.klass.pickled(ce)
ce2 = self.assertRaises(mitogen.core.CallError, ce2 = self.assertRaises(mitogen.core.CallError,
lambda: m.unpickle()) lambda: m.unpickle())
self.assertEquals(ce.args[0], ce2.args[0]) self.assertEqual(ce.args[0], ce2.args[0])
def test_no_throw(self): def test_no_throw(self):
ce = mitogen.core.CallError('nope') ce = mitogen.core.CallError('nope')
m = self.klass.pickled(ce) m = self.klass.pickled(ce)
ce2 = m.unpickle(throw=False) ce2 = m.unpickle(throw=False)
self.assertEquals(ce.args[0], ce2.args[0]) self.assertEqual(ce.args[0], ce2.args[0])
def test_throw_dead(self): def test_throw_dead(self):
m = self.klass.pickled('derp', reply_to=mitogen.core.IS_DEAD) m = self.klass.pickled('derp', reply_to=mitogen.core.IS_DEAD)
@ -358,7 +358,7 @@ class UnpickleTest(testlib.TestCase):
def test_no_throw_dead(self): def test_no_throw_dead(self):
m = self.klass.pickled('derp', reply_to=mitogen.core.IS_DEAD) m = self.klass.pickled('derp', reply_to=mitogen.core.IS_DEAD)
self.assertEquals('derp', m.unpickle(throw_dead=False)) self.assertEqual('derp', m.unpickle(throw_dead=False))
class UnpickleCompatTest(testlib.TestCase): class UnpickleCompatTest(testlib.TestCase):

@ -69,7 +69,7 @@ class MitogenCoreTest(testlib.TestCase):
compile(minified, name, 'exec') compile(minified, name, 'exec')
def _test_line_counts_match(self, original, minified): def _test_line_counts_match(self, original, minified):
self.assertEquals(original.count('\n'), self.assertEqual(original.count('\n'),
minified.count('\n')) minified.count('\n'))
def _test_non_blank_lines_match(self, name, original, minified): def _test_non_blank_lines_match(self, name, original, minified):

@ -24,6 +24,6 @@ class ReceiveOneTest(testlib.TestCase):
protocol.on_receive(broker, junk) protocol.on_receive(broker, junk)
capture.stop() capture.stop()
self.assertEquals(1, stream.on_disconnect.call_count) self.assertEqual(1, stream.on_disconnect.call_count)
expect = self.klass.corrupt_msg % (stream.name, junk) expect = self.klass.corrupt_msg % (stream.name, junk)
self.assertTrue(expect in capture.raw()) self.assertTrue(expect in capture.raw())

@ -21,7 +21,7 @@ class ReprTest(testlib.TestCase):
klass = mitogen.master.ModuleFinder klass = mitogen.master.ModuleFinder
def test_simple(self): def test_simple(self):
self.assertEquals('ModuleFinder()', repr(self.klass())) self.assertEqual('ModuleFinder()', repr(self.klass()))
class IsStdlibNameTest(testlib.TestCase): class IsStdlibNameTest(testlib.TestCase):
@ -58,10 +58,10 @@ class GetMainModuleDefectivePython3x(testlib.TestCase):
return self.klass().find(fullname) return self.klass().find(fullname)
def test_builtin(self): def test_builtin(self):
self.assertEquals(None, self.call('sys')) self.assertEqual(None, self.call('sys'))
def test_not_main(self): def test_not_main(self):
self.assertEquals(None, self.call('mitogen')) self.assertEqual(None, self.call('mitogen'))
def test_main(self): def test_main(self):
import __main__ import __main__
@ -69,10 +69,10 @@ class GetMainModuleDefectivePython3x(testlib.TestCase):
path, source, is_pkg = self.call('__main__') path, source, is_pkg = self.call('__main__')
self.assertTrue(path is not None) self.assertTrue(path is not None)
self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.exists(path))
self.assertEquals(path, __main__.__file__) self.assertEqual(path, __main__.__file__)
fp = open(path, 'rb') fp = open(path, 'rb')
try: try:
self.assertEquals(source, fp.read()) self.assertEqual(source, fp.read())
finally: finally:
fp.close() fp.close()
self.assertFalse(is_pkg) self.assertFalse(is_pkg)
@ -86,24 +86,24 @@ class PkgutilMethodTest(testlib.TestCase):
def test_empty_source_pkg(self): def test_empty_source_pkg(self):
path, src, is_pkg = self.call('module_finder_testmod') path, src, is_pkg = self.call('module_finder_testmod')
self.assertEquals(path, self.assertEqual(path,
os.path.join(MODS_DIR, 'module_finder_testmod/__init__.py')) os.path.join(MODS_DIR, 'module_finder_testmod/__init__.py'))
self.assertEquals(mitogen.core.b(''), src) self.assertEqual(mitogen.core.b(''), src)
self.assertTrue(is_pkg) self.assertTrue(is_pkg)
def test_empty_source_module(self): def test_empty_source_module(self):
path, src, is_pkg = self.call('module_finder_testmod.empty_mod') path, src, is_pkg = self.call('module_finder_testmod.empty_mod')
self.assertEquals(path, self.assertEqual(path,
os.path.join(MODS_DIR, 'module_finder_testmod/empty_mod.py')) os.path.join(MODS_DIR, 'module_finder_testmod/empty_mod.py'))
self.assertEquals(mitogen.core.b(''), src) self.assertEqual(mitogen.core.b(''), src)
self.assertFalse(is_pkg) self.assertFalse(is_pkg)
def test_regular_mod(self): def test_regular_mod(self):
from module_finder_testmod import regular_mod from module_finder_testmod import regular_mod
path, src, is_pkg = self.call('module_finder_testmod.regular_mod') path, src, is_pkg = self.call('module_finder_testmod.regular_mod')
self.assertEquals(path, self.assertEqual(path,
os.path.join(MODS_DIR, 'module_finder_testmod/regular_mod.py')) os.path.join(MODS_DIR, 'module_finder_testmod/regular_mod.py'))
self.assertEquals(mitogen.core.to_text(src), self.assertEqual(mitogen.core.to_text(src),
inspect.getsource(regular_mod)) inspect.getsource(regular_mod))
self.assertFalse(is_pkg) self.assertFalse(is_pkg)
@ -117,14 +117,15 @@ class SysModulesMethodTest(testlib.TestCase):
def test_main(self): def test_main(self):
import __main__ import __main__
path, src, is_pkg = self.call('__main__') path, src, is_pkg = self.call('__main__')
self.assertEquals(path, __main__.__file__) self.assertEqual(path, __main__.__file__)
# linecache adds a line ending to the final line if one is missing. # linecache adds a line ending to the final line if one is missing.
actual_src = open(path, 'rb').read() with open(path, 'rb') as f:
actual_src = f.read()
if actual_src[-1:] != b('\n'): if actual_src[-1:] != b('\n'):
actual_src += b('\n') actual_src += b('\n')
self.assertEquals(src, actual_src) self.assertEqual(src, actual_src)
self.assertFalse(is_pkg) self.assertFalse(is_pkg)
def test_dylib_fails(self): def test_dylib_fails(self):
@ -165,16 +166,17 @@ class GetModuleViaParentEnumerationTest(testlib.TestCase):
import pkg_like_plumbum.colors import pkg_like_plumbum.colors
path, src, is_pkg = self.call('pkg_like_plumbum.colors') path, src, is_pkg = self.call('pkg_like_plumbum.colors')
modpath = os.path.join(MODS_DIR, 'pkg_like_plumbum/colors.py') modpath = os.path.join(MODS_DIR, 'pkg_like_plumbum/colors.py')
self.assertEquals(path, modpath) self.assertEqual(path, modpath)
self.assertEquals(src, open(modpath, 'rb').read()) with open(modpath, 'rb') as f:
self.assertEqual(src, f.read())
self.assertFalse(is_pkg) self.assertFalse(is_pkg)
def test_ansible_module_utils_distro_succeeds(self): def test_ansible_module_utils_distro_succeeds(self):
# #590: a package that turns itself into a module. # #590: a package that turns itself into a module.
import pkg_like_ansible.module_utils.distro as d import pkg_like_ansible.module_utils.distro as d
self.assertEquals(d.I_AM, "the module that replaced the package") self.assertEqual(d.I_AM, "the module that replaced the package")
self.assertEquals( self.assertEqual(
sys.modules['pkg_like_ansible.module_utils.distro'].__name__, sys.modules['pkg_like_ansible.module_utils.distro'].__name__,
'pkg_like_ansible.module_utils.distro._distro' 'pkg_like_ansible.module_utils.distro._distro'
) )
@ -183,9 +185,10 @@ class GetModuleViaParentEnumerationTest(testlib.TestCase):
path, src, is_pkg = self.call('pkg_like_ansible.module_utils.distro') path, src, is_pkg = self.call('pkg_like_ansible.module_utils.distro')
modpath = os.path.join(MODS_DIR, modpath = os.path.join(MODS_DIR,
'pkg_like_ansible/module_utils/distro/__init__.py') 'pkg_like_ansible/module_utils/distro/__init__.py')
self.assertEquals(path, modpath) self.assertEqual(path, modpath)
self.assertEquals(src, open(modpath, 'rb').read()) with open(modpath, 'rb') as f:
self.assertEquals(is_pkg, True) self.assertEqual(src, f.read())
self.assertEqual(is_pkg, True)
# ensure we can resolve a child of the subpackage. # ensure we can resolve a child of the subpackage.
path, src, is_pkg = self.call( path, src, is_pkg = self.call(
@ -193,16 +196,17 @@ class GetModuleViaParentEnumerationTest(testlib.TestCase):
) )
modpath = os.path.join(MODS_DIR, modpath = os.path.join(MODS_DIR,
'pkg_like_ansible/module_utils/distro/_distro.py') 'pkg_like_ansible/module_utils/distro/_distro.py')
self.assertEquals(path, modpath) self.assertEqual(path, modpath)
self.assertEquals(src, open(modpath, 'rb').read()) with open(modpath, 'rb') as f:
self.assertEquals(is_pkg, False) self.assertEqual(src, f.read())
self.assertEqual(is_pkg, False)
def test_ansible_module_utils_system_distro_succeeds(self): def test_ansible_module_utils_system_distro_succeeds(self):
# #590: a package that turns itself into a module. # #590: a package that turns itself into a module.
# #590: a package that turns itself into a module. # #590: a package that turns itself into a module.
import pkg_like_ansible.module_utils.sys_distro as d import pkg_like_ansible.module_utils.sys_distro as d
self.assertEquals(d.I_AM, "the system module that replaced the subpackage") self.assertEqual(d.I_AM, "the system module that replaced the subpackage")
self.assertEquals( self.assertEqual(
sys.modules['pkg_like_ansible.module_utils.sys_distro'].__name__, sys.modules['pkg_like_ansible.module_utils.sys_distro'].__name__,
'system_distro' 'system_distro'
) )
@ -211,9 +215,10 @@ class GetModuleViaParentEnumerationTest(testlib.TestCase):
path, src, is_pkg = self.call('pkg_like_ansible.module_utils.sys_distro') path, src, is_pkg = self.call('pkg_like_ansible.module_utils.sys_distro')
modpath = os.path.join(MODS_DIR, modpath = os.path.join(MODS_DIR,
'pkg_like_ansible/module_utils/sys_distro/__init__.py') 'pkg_like_ansible/module_utils/sys_distro/__init__.py')
self.assertEquals(path, modpath) self.assertEqual(path, modpath)
self.assertEquals(src, open(modpath, 'rb').read()) with open(modpath, 'rb') as f:
self.assertEquals(is_pkg, True) self.assertEqual(src, f.read())
self.assertEqual(is_pkg, True)
# ensure we can resolve a child of the subpackage. # ensure we can resolve a child of the subpackage.
path, src, is_pkg = self.call( path, src, is_pkg = self.call(
@ -221,9 +226,10 @@ class GetModuleViaParentEnumerationTest(testlib.TestCase):
) )
modpath = os.path.join(MODS_DIR, modpath = os.path.join(MODS_DIR,
'pkg_like_ansible/module_utils/sys_distro/_distro.py') 'pkg_like_ansible/module_utils/sys_distro/_distro.py')
self.assertEquals(path, modpath) self.assertEqual(path, modpath)
self.assertEquals(src, open(modpath, 'rb').read()) with open(modpath, 'rb') as f:
self.assertEquals(is_pkg, False) self.assertEqual(src, f.read())
self.assertEqual(is_pkg, False)
class ResolveRelPathTest(testlib.TestCase): class ResolveRelPathTest(testlib.TestCase):
@ -233,21 +239,21 @@ class ResolveRelPathTest(testlib.TestCase):
return self.klass().resolve_relpath(fullname, level) return self.klass().resolve_relpath(fullname, level)
def test_empty(self): def test_empty(self):
self.assertEquals('', self.call('', 0)) self.assertEqual('', self.call('', 0))
self.assertEquals('', self.call('', 1)) self.assertEqual('', self.call('', 1))
self.assertEquals('', self.call('', 2)) self.assertEqual('', self.call('', 2))
def test_absolute(self): def test_absolute(self):
self.assertEquals('', self.call('email.utils', 0)) self.assertEqual('', self.call('email.utils', 0))
def test_rel1(self): def test_rel1(self):
self.assertEquals('email.', self.call('email.utils', 1)) self.assertEqual('email.', self.call('email.utils', 1))
def test_rel2(self): def test_rel2(self):
self.assertEquals('', self.call('email.utils', 2)) self.assertEqual('', self.call('email.utils', 2))
def test_rel_overflow(self): def test_rel_overflow(self):
self.assertEquals('', self.call('email.utils', 3)) self.assertEqual('', self.call('email.utils', 3))
class FakeSshTest(testlib.TestCase): class FakeSshTest(testlib.TestCase):
@ -259,7 +265,7 @@ class FakeSshTest(testlib.TestCase):
def test_simple(self): def test_simple(self):
import mitogen.fakessh import mitogen.fakessh
related = self.call('mitogen.fakessh') related = self.call('mitogen.fakessh')
self.assertEquals(related, [ self.assertEqual(related, [
'mitogen', 'mitogen',
'mitogen.core', 'mitogen.core',
'mitogen.master', 'mitogen.master',
@ -291,7 +297,7 @@ class FindRelatedTest(testlib.TestCase):
def test_simple(self): def test_simple(self):
import mitogen.fakessh import mitogen.fakessh
related = self.call('mitogen.fakessh') related = self.call('mitogen.fakessh')
self.assertEquals(set(related), self.SIMPLE_EXPECT) self.assertEqual(set(related), self.SIMPLE_EXPECT)
if sys.version_info > (2, 6): if sys.version_info > (2, 6):
@ -332,7 +338,7 @@ if sys.version_info > (2, 6):
def test_django_db(self): def test_django_db(self):
import django.db import django.db
related = self.call('django.db') related = self.call('django.db')
self.assertEquals(related, [ self.assertEqual(related, [
'django', 'django',
'django.core', 'django.core',
'django.core.signals', 'django.core.signals',
@ -344,7 +350,7 @@ if sys.version_info > (2, 6):
import django.db.models import django.db.models
related = self.call('django.db.models') related = self.call('django.db.models')
self.maxDiff=None self.maxDiff=None
self.assertEquals(related, [ self.assertEqual(related, [
u'django', u'django',
u'django.core.exceptions', u'django.core.exceptions',
u'django.db', u'django.db',
@ -374,7 +380,7 @@ if sys.version_info > (2, 6):
def test_django_db(self): def test_django_db(self):
import django.db import django.db
related = self.call('django.db') related = self.call('django.db')
self.assertEquals(related, [ self.assertEqual(related, [
u'django', u'django',
u'django.conf', u'django.conf',
u'django.conf.global_settings', u'django.conf.global_settings',
@ -401,7 +407,7 @@ if sys.version_info > (2, 6):
def test_django_db_models(self): def test_django_db_models(self):
import django.db.models import django.db.models
related = self.call('django.db.models') related = self.call('django.db.models')
self.assertEquals(related, [ self.assertEqual(related, [
u'django', u'django',
u'django.conf', u'django.conf',
u'django.conf.global_settings', u'django.conf.global_settings',

@ -13,7 +13,7 @@ class CorkTest(testlib.RouterMixin, testlib.TestCase):
def test_cork_broker(self): def test_cork_broker(self):
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
self.broker.defer(self.ping, latch) self.broker.defer(self.ping, latch)
self.assertEquals('pong', latch.get()) self.assertEqual('pong', latch.get())
corker = self.klass(brokers=(self.broker,)) corker = self.klass(brokers=(self.broker,))
corker.cork() corker.cork()
@ -23,14 +23,14 @@ class CorkTest(testlib.RouterMixin, testlib.TestCase):
self.assertRaises(mitogen.core.TimeoutError, self.assertRaises(mitogen.core.TimeoutError,
lambda: latch.get(timeout=0.5)) lambda: latch.get(timeout=0.5))
corker.uncork() corker.uncork()
self.assertEquals('pong', latch.get()) self.assertEqual('pong', latch.get())
def test_cork_pool(self): def test_cork_pool(self):
pool = mitogen.service.Pool(self.router, services=(), size=4) pool = mitogen.service.Pool(self.router, services=(), size=4)
try: try:
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
pool.defer(self.ping, latch) pool.defer(self.ping, latch)
self.assertEquals('pong', latch.get()) self.assertEqual('pong', latch.get())
corker = self.klass(pools=(pool,)) corker = self.klass(pools=(pool,))
corker.cork() corker.cork()
@ -40,6 +40,6 @@ class CorkTest(testlib.RouterMixin, testlib.TestCase):
self.assertRaises(mitogen.core.TimeoutError, self.assertRaises(mitogen.core.TimeoutError,
lambda: latch.get(timeout=0.5)) lambda: latch.get(timeout=0.5))
corker.uncork() corker.uncork()
self.assertEquals('pong', latch.get()) self.assertEqual('pong', latch.get())
finally: finally:
pool.stop(join=True) pool.stop(join=True)

@ -69,20 +69,20 @@ class GetDefaultRemoteNameTest(testlib.TestCase):
mock_gethostname.return_value = 'box' mock_gethostname.return_value = 'box'
mock_getuser.return_value = 'ECORP\\Administrator' mock_getuser.return_value = 'ECORP\\Administrator'
mock_getpid.return_value = 123 mock_getpid.return_value = 123
self.assertEquals("ECORP_Administrator@box:123", self.func()) self.assertEqual("ECORP_Administrator@box:123", self.func())
class ReturncodeToStrTest(testlib.TestCase): class ReturncodeToStrTest(testlib.TestCase):
func = staticmethod(mitogen.parent.returncode_to_str) func = staticmethod(mitogen.parent.returncode_to_str)
def test_return_zero(self): def test_return_zero(self):
self.assertEquals(self.func(0), 'exited with return code 0') self.assertEqual(self.func(0), 'exited with return code 0')
def test_return_one(self): def test_return_one(self):
self.assertEquals(self.func(1), 'exited with return code 1') self.assertEqual(self.func(1), 'exited with return code 1')
def test_sigkill(self): def test_sigkill(self):
self.assertEquals(self.func(-signal.SIGKILL), self.assertEqual(self.func(-signal.SIGKILL),
'exited due to signal %s (SIGKILL)' % (int(signal.SIGKILL),) 'exited due to signal %s (SIGKILL)' % (int(signal.SIGKILL),)
) )
@ -107,7 +107,7 @@ class ReapChildTest(testlib.RouterMixin, testlib.TestCase):
e = self.assertRaises(OSError, e = self.assertRaises(OSError,
lambda: os.kill(conn.proc.pid, 0) lambda: os.kill(conn.proc.pid, 0)
) )
self.assertEquals(e.args[0], errno.ESRCH) self.assertEqual(e.args[0], errno.ESRCH)
class StreamErrorTest(testlib.RouterMixin, testlib.TestCase): class StreamErrorTest(testlib.RouterMixin, testlib.TestCase):
@ -186,7 +186,7 @@ class OpenPtyTest(testlib.TestCase):
e = self.assertRaises(mitogen.core.StreamError, e = self.assertRaises(mitogen.core.StreamError,
lambda: self.func()) lambda: self.func())
msg = mitogen.parent.OPENPTY_MSG % (openpty.side_effect,) msg = mitogen.parent.OPENPTY_MSG % (openpty.side_effect,)
self.assertEquals(e.args[0], msg) self.assertEqual(e.args[0], msg)
@unittest.skipIf(condition=(os.uname()[0] != 'Linux'), @unittest.skipIf(condition=(os.uname()[0] != 'Linux'),
reason='Fallback only supported on Linux') reason='Fallback only supported on Linux')
@ -196,12 +196,12 @@ class OpenPtyTest(testlib.TestCase):
master_fp, slave_fp = self.func() master_fp, slave_fp = self.func()
try: try:
st = os.fstat(master_fp.fileno()) st = os.fstat(master_fp.fileno())
self.assertEquals(5, os.major(st.st_rdev)) self.assertEqual(5, os.major(st.st_rdev))
flags = fcntl.fcntl(master_fp.fileno(), fcntl.F_GETFL) flags = fcntl.fcntl(master_fp.fileno(), fcntl.F_GETFL)
self.assertTrue(flags & os.O_RDWR) self.assertTrue(flags & os.O_RDWR)
st = os.fstat(slave_fp.fileno()) st = os.fstat(slave_fp.fileno())
self.assertEquals(136, os.major(st.st_rdev)) self.assertEqual(136, os.major(st.st_rdev))
flags = fcntl.fcntl(slave_fp.fileno(), fcntl.F_GETFL) flags = fcntl.fcntl(slave_fp.fileno(), fcntl.F_GETFL)
self.assertTrue(flags & os.O_RDWR) self.assertTrue(flags & os.O_RDWR)
finally: finally:
@ -218,7 +218,7 @@ class DisconnectTest(testlib.RouterMixin, testlib.TestCase):
c1.shutdown(wait=True) c1.shutdown(wait=True)
e = self.assertRaises(mitogen.core.ChannelError, e = self.assertRaises(mitogen.core.ChannelError,
lambda: recv.get()) lambda: recv.get())
self.assertEquals(e.args[0], self.router.respondent_disconnect_msg) self.assertEqual(e.args[0], self.router.respondent_disconnect_msg)
def test_indirect_child_disconnected(self): def test_indirect_child_disconnected(self):
# Achievement unlocked: process notices an indirectly connected child # Achievement unlocked: process notices an indirectly connected child
@ -229,7 +229,7 @@ class DisconnectTest(testlib.RouterMixin, testlib.TestCase):
c2.shutdown(wait=True) c2.shutdown(wait=True)
e = self.assertRaises(mitogen.core.ChannelError, e = self.assertRaises(mitogen.core.ChannelError,
lambda: recv.get()) lambda: recv.get())
self.assertEquals(e.args[0], self.router.respondent_disconnect_msg) self.assertEqual(e.args[0], self.router.respondent_disconnect_msg)
def test_indirect_child_intermediary_disconnected(self): def test_indirect_child_intermediary_disconnected(self):
# Battlefield promotion: process notices indirect child disconnected # Battlefield promotion: process notices indirect child disconnected
@ -240,7 +240,7 @@ class DisconnectTest(testlib.RouterMixin, testlib.TestCase):
c1.shutdown(wait=True) c1.shutdown(wait=True)
e = self.assertRaises(mitogen.core.ChannelError, e = self.assertRaises(mitogen.core.ChannelError,
lambda: recv.get()) lambda: recv.get())
self.assertEquals(e.args[0], self.router.respondent_disconnect_msg) self.assertEqual(e.args[0], self.router.respondent_disconnect_msg)
def test_near_sibling_disconnected(self): def test_near_sibling_disconnected(self):
# Hard mode: child notices sibling connected to same parent has # Hard mode: child notices sibling connected to same parent has

@ -24,7 +24,7 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
'container_name', 'container_name',
stream.conn.options.python_path stream.conn.options.python_path
] ]
self.assertEquals(argv[:len(expected_call)], expected_call) self.assertEqual(argv[:len(expected_call)], expected_call)
context = self.router.podman( context = self.router.podman(
container='container_name', container='container_name',
@ -43,4 +43,4 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
'container_name', 'container_name',
stream.conn.options.python_path stream.conn.options.python_path
] ]
self.assertEquals(argv[:len(expected_call)], expected_call) self.assertEqual(argv[:len(expected_call)], expected_call)

@ -86,69 +86,69 @@ class PollerMixin(object):
class ReceiveStateMixin(PollerMixin, SockMixin): class ReceiveStateMixin(PollerMixin, SockMixin):
def test_start_receive_adds_reader(self): def test_start_receive_adds_reader(self):
self.p.start_receive(self.l1) self.p.start_receive(self.l1)
self.assertEquals([(self.l1, self.l1)], self.p.readers) self.assertEqual([(self.l1, self.l1)], self.p.readers)
self.assertEquals([], self.p.writers) self.assertEqual([], self.p.writers)
def test_start_receive_adds_reader_data(self): def test_start_receive_adds_reader_data(self):
data = object() data = object()
self.p.start_receive(self.l1, data=data) self.p.start_receive(self.l1, data=data)
self.assertEquals([(self.l1, data)], self.p.readers) self.assertEqual([(self.l1, data)], self.p.readers)
self.assertEquals([], self.p.writers) self.assertEqual([], self.p.writers)
def test_stop_receive(self): def test_stop_receive(self):
self.p.start_receive(self.l1) self.p.start_receive(self.l1)
self.p.stop_receive(self.l1) self.p.stop_receive(self.l1)
self.assertEquals([], self.p.readers) self.assertEqual([], self.p.readers)
self.assertEquals([], self.p.writers) self.assertEqual([], self.p.writers)
def test_stop_receive_dup(self): def test_stop_receive_dup(self):
self.p.start_receive(self.l1) self.p.start_receive(self.l1)
self.p.stop_receive(self.l1) self.p.stop_receive(self.l1)
self.assertEquals([], self.p.readers) self.assertEqual([], self.p.readers)
self.assertEquals([], self.p.writers) self.assertEqual([], self.p.writers)
self.p.stop_receive(self.l1) self.p.stop_receive(self.l1)
self.assertEquals([], self.p.readers) self.assertEqual([], self.p.readers)
self.assertEquals([], self.p.writers) self.assertEqual([], self.p.writers)
def test_stop_receive_noexist(self): def test_stop_receive_noexist(self):
p = self.klass() p = self.klass()
p.stop_receive(123) # should not fail p.stop_receive(123) # should not fail
self.assertEquals([], p.readers) self.assertEqual([], p.readers)
self.assertEquals([], self.p.writers) self.assertEqual([], self.p.writers)
class TransmitStateMixin(PollerMixin, SockMixin): class TransmitStateMixin(PollerMixin, SockMixin):
def test_start_transmit_adds_writer(self): def test_start_transmit_adds_writer(self):
self.p.start_transmit(self.r1) self.p.start_transmit(self.r1)
self.assertEquals([], self.p.readers) self.assertEqual([], self.p.readers)
self.assertEquals([(self.r1, self.r1)], self.p.writers) self.assertEqual([(self.r1, self.r1)], self.p.writers)
def test_start_transmit_adds_writer_data(self): def test_start_transmit_adds_writer_data(self):
data = object() data = object()
self.p.start_transmit(self.r1, data=data) self.p.start_transmit(self.r1, data=data)
self.assertEquals([], self.p.readers) self.assertEqual([], self.p.readers)
self.assertEquals([(self.r1, data)], self.p.writers) self.assertEqual([(self.r1, data)], self.p.writers)
def test_stop_transmit(self): def test_stop_transmit(self):
self.p.start_transmit(self.r1) self.p.start_transmit(self.r1)
self.p.stop_transmit(self.r1) self.p.stop_transmit(self.r1)
self.assertEquals([], self.p.readers) self.assertEqual([], self.p.readers)
self.assertEquals([], self.p.writers) self.assertEqual([], self.p.writers)
def test_stop_transmit_dup(self): def test_stop_transmit_dup(self):
self.p.start_transmit(self.r1) self.p.start_transmit(self.r1)
self.p.stop_transmit(self.r1) self.p.stop_transmit(self.r1)
self.assertEquals([], self.p.readers) self.assertEqual([], self.p.readers)
self.assertEquals([], self.p.writers) self.assertEqual([], self.p.writers)
self.p.stop_transmit(self.r1) self.p.stop_transmit(self.r1)
self.assertEquals([], self.p.readers) self.assertEqual([], self.p.readers)
self.assertEquals([], self.p.writers) self.assertEqual([], self.p.writers)
def test_stop_transmit_noexist(self): def test_stop_transmit_noexist(self):
p = self.klass() p = self.klass()
p.stop_receive(123) # should not fail p.stop_receive(123) # should not fail
self.assertEquals([], p.readers) self.assertEqual([], p.readers)
self.assertEquals([], self.p.writers) self.assertEqual([], self.p.writers)
class CloseMixin(PollerMixin): class CloseMixin(PollerMixin):
@ -163,42 +163,42 @@ class CloseMixin(PollerMixin):
class PollMixin(PollerMixin): class PollMixin(PollerMixin):
def test_empty_zero_timeout(self): def test_empty_zero_timeout(self):
t0 = mitogen.core.now() t0 = mitogen.core.now()
self.assertEquals([], list(self.p.poll(0))) self.assertEqual([], list(self.p.poll(0)))
self.assertTrue((mitogen.core.now() - t0) < .1) # vaguely reasonable self.assertTrue((mitogen.core.now() - t0) < .1) # vaguely reasonable
def test_empty_small_timeout(self): def test_empty_small_timeout(self):
t0 = mitogen.core.now() t0 = mitogen.core.now()
self.assertEquals([], list(self.p.poll(.2))) self.assertEqual([], list(self.p.poll(.2)))
self.assertTrue((mitogen.core.now() - t0) >= .2) self.assertTrue((mitogen.core.now() - t0) >= .2)
class ReadableMixin(PollerMixin, SockMixin): class ReadableMixin(PollerMixin, SockMixin):
def test_unreadable(self): def test_unreadable(self):
self.p.start_receive(self.l1) self.p.start_receive(self.l1)
self.assertEquals([], list(self.p.poll(0))) self.assertEqual([], list(self.p.poll(0)))
def test_readable_before_add(self): def test_readable_before_add(self):
self.fill(self.r1) self.fill(self.r1)
self.p.start_receive(self.l1) self.p.start_receive(self.l1)
self.assertEquals([self.l1], list(self.p.poll(0))) self.assertEqual([self.l1], list(self.p.poll(0)))
def test_readable_after_add(self): def test_readable_after_add(self):
self.p.start_receive(self.l1) self.p.start_receive(self.l1)
self.fill(self.r1) self.fill(self.r1)
self.assertEquals([self.l1], list(self.p.poll(0))) self.assertEqual([self.l1], list(self.p.poll(0)))
def test_readable_then_unreadable(self): def test_readable_then_unreadable(self):
self.fill(self.r1) self.fill(self.r1)
self.p.start_receive(self.l1) self.p.start_receive(self.l1)
self.assertEquals([self.l1], list(self.p.poll(0))) self.assertEqual([self.l1], list(self.p.poll(0)))
self.drain(self.l1) self.drain(self.l1)
self.assertEquals([], list(self.p.poll(0))) self.assertEqual([], list(self.p.poll(0)))
def test_readable_data(self): def test_readable_data(self):
data = object() data = object()
self.fill(self.r1) self.fill(self.r1)
self.p.start_receive(self.l1, data=data) self.p.start_receive(self.l1, data=data)
self.assertEquals([data], list(self.p.poll(0))) self.assertEqual([data], list(self.p.poll(0)))
def test_double_readable_data(self): def test_double_readable_data(self):
data1 = object() data1 = object()
@ -207,35 +207,35 @@ class ReadableMixin(PollerMixin, SockMixin):
self.p.start_receive(self.l1, data=data1) self.p.start_receive(self.l1, data=data1)
self.fill(self.r2) self.fill(self.r2)
self.p.start_receive(self.l2, data=data2) self.p.start_receive(self.l2, data=data2)
self.assertEquals(set([data1, data2]), set(self.p.poll(0))) self.assertEqual(set([data1, data2]), set(self.p.poll(0)))
class WriteableMixin(PollerMixin, SockMixin): class WriteableMixin(PollerMixin, SockMixin):
def test_writeable(self): def test_writeable(self):
self.p.start_transmit(self.r1) self.p.start_transmit(self.r1)
self.assertEquals([self.r1], list(self.p.poll(0))) self.assertEqual([self.r1], list(self.p.poll(0)))
def test_writeable_data(self): def test_writeable_data(self):
data = object() data = object()
self.p.start_transmit(self.r1, data=data) self.p.start_transmit(self.r1, data=data)
self.assertEquals([data], list(self.p.poll(0))) self.assertEqual([data], list(self.p.poll(0)))
def test_unwriteable_before_add(self): def test_unwriteable_before_add(self):
self.fill(self.r1) self.fill(self.r1)
self.p.start_transmit(self.r1) self.p.start_transmit(self.r1)
self.assertEquals([], list(self.p.poll(0))) self.assertEqual([], list(self.p.poll(0)))
def test_unwriteable_after_add(self): def test_unwriteable_after_add(self):
self.p.start_transmit(self.r1) self.p.start_transmit(self.r1)
self.fill(self.r1) self.fill(self.r1)
self.assertEquals([], list(self.p.poll(0))) self.assertEqual([], list(self.p.poll(0)))
def test_unwriteable_then_writeable(self): def test_unwriteable_then_writeable(self):
self.fill(self.r1) self.fill(self.r1)
self.p.start_transmit(self.r1) self.p.start_transmit(self.r1)
self.assertEquals([], list(self.p.poll(0))) self.assertEqual([], list(self.p.poll(0)))
self.drain(self.l1) self.drain(self.l1)
self.assertEquals([self.r1], list(self.p.poll(0))) self.assertEqual([self.r1], list(self.p.poll(0)))
def test_double_unwriteable_then_Writeable(self): def test_double_unwriteable_then_Writeable(self):
self.fill(self.r1) self.fill(self.r1)
@ -244,13 +244,13 @@ class WriteableMixin(PollerMixin, SockMixin):
self.fill(self.r2) self.fill(self.r2)
self.p.start_transmit(self.r2) self.p.start_transmit(self.r2)
self.assertEquals([], list(self.p.poll(0))) self.assertEqual([], list(self.p.poll(0)))
self.drain(self.l1) self.drain(self.l1)
self.assertEquals([self.r1], list(self.p.poll(0))) self.assertEqual([self.r1], list(self.p.poll(0)))
self.drain(self.l2) self.drain(self.l2)
self.assertEquals(set([self.r1, self.r2]), set(self.p.poll(0))) self.assertEqual(set([self.r1, self.r2]), set(self.p.poll(0)))
class MutateDuringYieldMixin(PollerMixin, SockMixin): class MutateDuringYieldMixin(PollerMixin, SockMixin):
@ -262,13 +262,13 @@ class MutateDuringYieldMixin(PollerMixin, SockMixin):
self.p.start_receive(self.r1) self.p.start_receive(self.r1)
p = self.p.poll(0) p = self.p.poll(0)
self.p.stop_receive(self.r1) self.p.stop_receive(self.r1)
self.assertEquals([], list(p)) self.assertEqual([], list(p))
def test_one_writeable_removed_before_yield(self): def test_one_writeable_removed_before_yield(self):
self.p.start_transmit(self.r1) self.p.start_transmit(self.r1)
p = self.p.poll(0) p = self.p.poll(0)
self.p.stop_transmit(self.r1) self.p.stop_transmit(self.r1)
self.assertEquals([], list(p)) self.assertEqual([], list(p))
def test_one_readable_readded_before_yield(self): def test_one_readable_readded_before_yield(self):
# fd removed, closed, another fd opened, gets same fd number, re-added. # fd removed, closed, another fd opened, gets same fd number, re-added.
@ -278,7 +278,7 @@ class MutateDuringYieldMixin(PollerMixin, SockMixin):
p = self.p.poll(0) p = self.p.poll(0)
self.p.stop_receive(self.r1) self.p.stop_receive(self.r1)
self.p.start_receive(self.r1) self.p.start_receive(self.r1)
self.assertEquals([], list(p)) self.assertEqual([], list(p))
def test_one_readable_readded_during_yield(self): def test_one_readable_readded_during_yield(self):
self.fill(self.l1) self.fill(self.l1)
@ -299,7 +299,7 @@ class MutateDuringYieldMixin(PollerMixin, SockMixin):
# the start_receive() may be for a totally new underlying file object, # the start_receive() may be for a totally new underlying file object,
# the live loop iteration must not yield any buffered readiness event. # the live loop iteration must not yield any buffered readiness event.
self.assertEquals([], list(p)) self.assertEqual([], list(p))
class FileClosedMixin(PollerMixin, SockMixin): class FileClosedMixin(PollerMixin, SockMixin):
@ -308,10 +308,10 @@ class FileClosedMixin(PollerMixin, SockMixin):
def test_writeable_then_closed(self): def test_writeable_then_closed(self):
self.p.start_transmit(self.r1) self.p.start_transmit(self.r1)
self.assertEquals([self.r1], list(self.p.poll(0))) self.assertEqual([self.r1], list(self.p.poll(0)))
self.close_socks() self.close_socks()
try: try:
self.assertEquals([], list(self.p.poll(0))) self.assertEqual([], list(self.p.poll(0)))
except select.error: except select.error:
# a crash is also reasonable here. # a crash is also reasonable here.
pass pass
@ -321,7 +321,7 @@ class FileClosedMixin(PollerMixin, SockMixin):
p = self.p.poll(0) p = self.p.poll(0)
self.close_socks() self.close_socks()
try: try:
self.assertEquals([], list(p)) self.assertEqual([], list(p))
except select.error: except select.error:
# a crash is also reasonable here. # a crash is also reasonable here.
pass pass
@ -329,10 +329,10 @@ class FileClosedMixin(PollerMixin, SockMixin):
def test_readable_then_closed(self): def test_readable_then_closed(self):
self.fill(self.l1) self.fill(self.l1)
self.p.start_receive(self.r1) self.p.start_receive(self.r1)
self.assertEquals([self.r1], list(self.p.poll(0))) self.assertEqual([self.r1], list(self.p.poll(0)))
self.close_socks() self.close_socks()
try: try:
self.assertEquals([], list(self.p.poll(0))) self.assertEqual([], list(self.p.poll(0)))
except select.error: except select.error:
# a crash is also reasonable here. # a crash is also reasonable here.
pass pass
@ -343,7 +343,7 @@ class FileClosedMixin(PollerMixin, SockMixin):
p = self.p.poll(0) p = self.p.poll(0)
self.close_socks() self.close_socks()
try: try:
self.assertEquals([], list(p)) self.assertEqual([], list(p))
except select.error: except select.error:
# a crash is also reasonable here. # a crash is also reasonable here.
pass pass
@ -355,10 +355,10 @@ class TtyHangupMixin(PollerMixin):
master_fp, slave_fp = mitogen.parent.openpty() master_fp, slave_fp = mitogen.parent.openpty()
try: try:
self.p.start_receive(master_fp.fileno()) self.p.start_receive(master_fp.fileno())
self.assertEquals([], list(self.p.poll(0))) self.assertEqual([], list(self.p.poll(0)))
slave_fp.close() slave_fp.close()
slave_fp = None slave_fp = None
self.assertEquals([master_fp.fileno()], list(self.p.poll(0))) self.assertEqual([master_fp.fileno()], list(self.p.poll(0)))
finally: finally:
if slave_fp is not None: if slave_fp is not None:
slave_fp.close() slave_fp.close()
@ -375,9 +375,9 @@ class DistinctDataMixin(PollerMixin, SockMixin):
self.p.start_receive(self.r1, data=rdata) self.p.start_receive(self.r1, data=rdata)
self.p.start_transmit(self.r1, data=wdata) self.p.start_transmit(self.r1, data=wdata)
self.assertEquals([wdata], list(self.p.poll(0))) self.assertEqual([wdata], list(self.p.poll(0)))
self.fill(self.l1) # r1 is now readable and writeable. self.fill(self.l1) # r1 is now readable and writeable.
self.assertEquals(set([rdata, wdata]), set(self.p.poll(0))) self.assertEqual(set([rdata, wdata]), set(self.p.poll(0)))
class AllMixin(ReceiveStateMixin, class AllMixin(ReceiveStateMixin,

@ -13,27 +13,27 @@ class BytesPartitionTest(testlib.TestCase):
self.assertTrue(isinstance(left, mitogen.core.BytesType)) self.assertTrue(isinstance(left, mitogen.core.BytesType))
self.assertTrue(isinstance(sep, mitogen.core.BytesType)) self.assertTrue(isinstance(sep, mitogen.core.BytesType))
self.assertTrue(isinstance(right, mitogen.core.BytesType)) self.assertTrue(isinstance(right, mitogen.core.BytesType))
self.assertEquals(left, b('dave')) self.assertEqual(left, b('dave'))
self.assertEquals(sep, b('')) self.assertEqual(sep, b(''))
self.assertEquals(right, b('')) self.assertEqual(right, b(''))
def test_one_sep(self): def test_one_sep(self):
left, sep, right = self.func(b('davexdave'), b('x')) left, sep, right = self.func(b('davexdave'), b('x'))
self.assertTrue(isinstance(left, mitogen.core.BytesType)) self.assertTrue(isinstance(left, mitogen.core.BytesType))
self.assertTrue(isinstance(sep, mitogen.core.BytesType)) self.assertTrue(isinstance(sep, mitogen.core.BytesType))
self.assertTrue(isinstance(right, mitogen.core.BytesType)) self.assertTrue(isinstance(right, mitogen.core.BytesType))
self.assertEquals(left, b('dave')) self.assertEqual(left, b('dave'))
self.assertEquals(sep, b('x')) self.assertEqual(sep, b('x'))
self.assertEquals(right, b('dave')) self.assertEqual(right, b('dave'))
def test_two_seps(self): def test_two_seps(self):
left, sep, right = self.func(b('davexdavexdave'), b('x')) left, sep, right = self.func(b('davexdavexdave'), b('x'))
self.assertTrue(isinstance(left, mitogen.core.BytesType)) self.assertTrue(isinstance(left, mitogen.core.BytesType))
self.assertTrue(isinstance(sep, mitogen.core.BytesType)) self.assertTrue(isinstance(sep, mitogen.core.BytesType))
self.assertTrue(isinstance(right, mitogen.core.BytesType)) self.assertTrue(isinstance(right, mitogen.core.BytesType))
self.assertEquals(left, b('dave')) self.assertEqual(left, b('dave'))
self.assertEquals(sep, b('x')) self.assertEqual(sep, b('x'))
self.assertEquals(right, b('davexdave')) self.assertEqual(right, b('davexdave'))
class StrPartitionTest(testlib.TestCase): class StrPartitionTest(testlib.TestCase):
@ -44,27 +44,27 @@ class StrPartitionTest(testlib.TestCase):
self.assertTrue(isinstance(left, mitogen.core.UnicodeType)) self.assertTrue(isinstance(left, mitogen.core.UnicodeType))
self.assertTrue(isinstance(sep, mitogen.core.UnicodeType)) self.assertTrue(isinstance(sep, mitogen.core.UnicodeType))
self.assertTrue(isinstance(right, mitogen.core.UnicodeType)) self.assertTrue(isinstance(right, mitogen.core.UnicodeType))
self.assertEquals(left, u'dave') self.assertEqual(left, u'dave')
self.assertEquals(sep, u'') self.assertEqual(sep, u'')
self.assertEquals(right, u'') self.assertEqual(right, u'')
def test_one_sep(self): def test_one_sep(self):
left, sep, right = self.func(u'davexdave', u'x') left, sep, right = self.func(u'davexdave', u'x')
self.assertTrue(isinstance(left, mitogen.core.UnicodeType)) self.assertTrue(isinstance(left, mitogen.core.UnicodeType))
self.assertTrue(isinstance(sep, mitogen.core.UnicodeType)) self.assertTrue(isinstance(sep, mitogen.core.UnicodeType))
self.assertTrue(isinstance(right, mitogen.core.UnicodeType)) self.assertTrue(isinstance(right, mitogen.core.UnicodeType))
self.assertEquals(left, u'dave') self.assertEqual(left, u'dave')
self.assertEquals(sep, u'x') self.assertEqual(sep, u'x')
self.assertEquals(right, u'dave') self.assertEqual(right, u'dave')
def test_two_seps(self): def test_two_seps(self):
left, sep, right = self.func(u'davexdavexdave', u'x') left, sep, right = self.func(u'davexdavexdave', u'x')
self.assertTrue(isinstance(left, mitogen.core.UnicodeType)) self.assertTrue(isinstance(left, mitogen.core.UnicodeType))
self.assertTrue(isinstance(sep, mitogen.core.UnicodeType)) self.assertTrue(isinstance(sep, mitogen.core.UnicodeType))
self.assertTrue(isinstance(right, mitogen.core.UnicodeType)) self.assertTrue(isinstance(right, mitogen.core.UnicodeType))
self.assertEquals(left, u'dave') self.assertEqual(left, u'dave')
self.assertEquals(sep, u'x') self.assertEqual(sep, u'x')
self.assertEquals(right, u'davexdave') self.assertEqual(right, u'davexdave')
class StrRpartitionTest(testlib.TestCase): class StrRpartitionTest(testlib.TestCase):
@ -75,24 +75,24 @@ class StrRpartitionTest(testlib.TestCase):
self.assertTrue(isinstance(left, mitogen.core.UnicodeType)) self.assertTrue(isinstance(left, mitogen.core.UnicodeType))
self.assertTrue(isinstance(sep, mitogen.core.UnicodeType)) self.assertTrue(isinstance(sep, mitogen.core.UnicodeType))
self.assertTrue(isinstance(right, mitogen.core.UnicodeType)) self.assertTrue(isinstance(right, mitogen.core.UnicodeType))
self.assertEquals(left, u'') self.assertEqual(left, u'')
self.assertEquals(sep, u'') self.assertEqual(sep, u'')
self.assertEquals(right, u'dave') self.assertEqual(right, u'dave')
def test_one_sep(self): def test_one_sep(self):
left, sep, right = self.func(u'davexdave', u'x') left, sep, right = self.func(u'davexdave', u'x')
self.assertTrue(isinstance(left, mitogen.core.UnicodeType)) self.assertTrue(isinstance(left, mitogen.core.UnicodeType))
self.assertTrue(isinstance(sep, mitogen.core.UnicodeType)) self.assertTrue(isinstance(sep, mitogen.core.UnicodeType))
self.assertTrue(isinstance(right, mitogen.core.UnicodeType)) self.assertTrue(isinstance(right, mitogen.core.UnicodeType))
self.assertEquals(left, u'dave') self.assertEqual(left, u'dave')
self.assertEquals(sep, u'x') self.assertEqual(sep, u'x')
self.assertEquals(right, u'dave') self.assertEqual(right, u'dave')
def test_two_seps(self): def test_two_seps(self):
left, sep, right = self.func(u'davexdavexdave', u'x') left, sep, right = self.func(u'davexdavexdave', u'x')
self.assertTrue(isinstance(left, mitogen.core.UnicodeType)) self.assertTrue(isinstance(left, mitogen.core.UnicodeType))
self.assertTrue(isinstance(sep, mitogen.core.UnicodeType)) self.assertTrue(isinstance(sep, mitogen.core.UnicodeType))
self.assertTrue(isinstance(right, mitogen.core.UnicodeType)) self.assertTrue(isinstance(right, mitogen.core.UnicodeType))
self.assertEquals(left, u'davexdave') self.assertEqual(left, u'davexdave')
self.assertEquals(sep, u'x') self.assertEqual(sep, u'x')
self.assertEquals(right, u'dave') self.assertEqual(right, u'dave')

@ -43,9 +43,9 @@ class PropagateToTest(testlib.RouterMixin, testlib.TestCase):
service.propagate_to(context=c2, path=path) service.propagate_to(context=c2, path=path)
s = c1.call(wait_for_file, path=path) s = c1.call(wait_for_file, path=path)
self.assertEquals(b('test'), s) self.assertEqual(b('test'), s)
s = c2.call(wait_for_file, path=path) s = c2.call(wait_for_file, path=path)
self.assertEquals(b('test'), s) self.assertEqual(b('test'), s)
finally: finally:
tf.close() tf.close()

@ -14,13 +14,13 @@ class ReaperTest(testlib.TestCase):
proc = mock.Mock() proc = mock.Mock()
proc.poll.return_value = None proc.poll.return_value = None
reaper = mitogen.parent.Reaper(broker, proc, True, True) reaper = mitogen.parent.Reaper(broker, proc, True, True)
self.assertEquals(50, int(1000 * reaper._calc_delay(0))) self.assertEqual(50, int(1000 * reaper._calc_delay(0)))
self.assertEquals(86, int(1000 * reaper._calc_delay(1))) self.assertEqual(86, int(1000 * reaper._calc_delay(1)))
self.assertEquals(147, int(1000 * reaper._calc_delay(2))) self.assertEqual(147, int(1000 * reaper._calc_delay(2)))
self.assertEquals(254, int(1000 * reaper._calc_delay(3))) self.assertEqual(254, int(1000 * reaper._calc_delay(3)))
self.assertEquals(437, int(1000 * reaper._calc_delay(4))) self.assertEqual(437, int(1000 * reaper._calc_delay(4)))
self.assertEquals(752, int(1000 * reaper._calc_delay(5))) self.assertEqual(752, int(1000 * reaper._calc_delay(5)))
self.assertEquals(1294, int(1000 * reaper._calc_delay(6))) self.assertEqual(1294, int(1000 * reaper._calc_delay(6)))
@mock.patch('os.kill') @mock.patch('os.kill')
def test_reap_calls(self, kill): def test_reap_calls(self, kill):
@ -31,20 +31,20 @@ class ReaperTest(testlib.TestCase):
reaper = mitogen.parent.Reaper(broker, proc, True, True) reaper = mitogen.parent.Reaper(broker, proc, True, True)
reaper.reap() reaper.reap()
self.assertEquals(0, kill.call_count) self.assertEqual(0, kill.call_count)
reaper.reap() reaper.reap()
self.assertEquals(1, kill.call_count) self.assertEqual(1, kill.call_count)
reaper.reap() reaper.reap()
reaper.reap() reaper.reap()
reaper.reap() reaper.reap()
self.assertEquals(1, kill.call_count) self.assertEqual(1, kill.call_count)
reaper.reap() reaper.reap()
self.assertEquals(2, kill.call_count) self.assertEqual(2, kill.call_count)
self.assertEquals(kill.mock_calls, [ self.assertEqual(kill.mock_calls, [
mock.call(proc.pid, signal.SIGTERM), mock.call(proc.pid, signal.SIGTERM),
mock.call(proc.pid, signal.SIGKILL), mock.call(proc.pid, signal.SIGKILL),
]) ])

@ -26,7 +26,7 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
handle=recv.handle, handle=recv.handle,
) )
) )
self.assertEquals('hi', recv.get().unpickle()) self.assertEqual('hi', recv.get().unpickle())
class IterationTest(testlib.RouterMixin, testlib.TestCase): class IterationTest(testlib.RouterMixin, testlib.TestCase):
@ -34,8 +34,8 @@ class IterationTest(testlib.RouterMixin, testlib.TestCase):
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
fork = self.router.local() fork = self.router.local()
ret = fork.call_async(yield_stuff_then_die, recv.to_sender()) ret = fork.call_async(yield_stuff_then_die, recv.to_sender())
self.assertEquals(list(range(5)), list(m.unpickle() for m in recv)) self.assertEqual(list(range(5)), list(m.unpickle() for m in recv))
self.assertEquals(10, ret.get().unpickle()) self.assertEqual(10, ret.get().unpickle())
def iter_and_put(self, recv, latch): def iter_and_put(self, recv, latch):
try: try:
@ -76,7 +76,7 @@ class CloseTest(testlib.RouterMixin, testlib.TestCase):
raise latch.get() raise latch.get()
t.join() t.join()
e = self.assertRaises(mitogen.core.ChannelError, throw) e = self.assertRaises(mitogen.core.ChannelError, throw)
self.assertEquals(e.args[0], mitogen.core.Receiver.closed_msg) self.assertEqual(e.args[0], mitogen.core.Receiver.closed_msg)
def test_closes_all(self): def test_closes_all(self):
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
@ -92,7 +92,7 @@ class CloseTest(testlib.RouterMixin, testlib.TestCase):
raise latch.get() raise latch.get()
for x in range(5): for x in range(5):
e = self.assertRaises(mitogen.core.ChannelError, throw) e = self.assertRaises(mitogen.core.ChannelError, throw)
self.assertEquals(e.args[0], mitogen.core.Receiver.closed_msg) self.assertEqual(e.args[0], mitogen.core.Receiver.closed_msg)
for t in ts: for t in ts:
t.join() t.join()
@ -118,7 +118,7 @@ class OnReceiveTest(testlib.RouterMixin, testlib.TestCase):
raise latch.get() raise latch.get()
t.join() t.join()
e = self.assertRaises(mitogen.core.ChannelError, throw) e = self.assertRaises(mitogen.core.ChannelError, throw)
self.assertEquals(e.args[0], sender.explicit_close_msg) self.assertEqual(e.args[0], sender.explicit_close_msg)
@unittest.skip(reason=( @unittest.skip(reason=(
'Unclear if a asingle dead message received from remote should ' 'Unclear if a asingle dead message received from remote should '
@ -139,7 +139,7 @@ class OnReceiveTest(testlib.RouterMixin, testlib.TestCase):
raise latch.get() raise latch.get()
for x in range(5): for x in range(5):
e = self.assertRaises(mitogen.core.ChannelError, throw) e = self.assertRaises(mitogen.core.ChannelError, throw)
self.assertEquals(e.args[0], mitogen.core.Receiver.closed_msg) self.assertEqual(e.args[0], mitogen.core.Receiver.closed_msg)
for t in ts: for t in ts:
t.join() t.join()
@ -152,4 +152,4 @@ class ToSenderTest(testlib.RouterMixin, testlib.TestCase):
def test_returned_context(self): def test_returned_context(self):
myself = self.router.myself() myself = self.router.myself()
recv = self.klass(self.router) recv = self.klass(self.router)
self.assertEquals(myself, recv.to_sender().context) self.assertEqual(myself, recv.to_sender().context)

@ -24,7 +24,7 @@ class NeutralizeMainTest(testlib.RouterMixin, testlib.TestCase):
args = [sys.executable, path] args = [sys.executable, path]
proc = subprocess.Popen(args, stderr=subprocess.PIPE) proc = subprocess.Popen(args, stderr=subprocess.PIPE)
_, stderr = proc.communicate() _, stderr = proc.communicate()
self.assertEquals(1, proc.returncode) self.assertEqual(1, proc.returncode)
expect = self.klass.main_guard_msg % (path,) expect = self.klass.main_guard_msg % (path,)
self.assertTrue(expect in stderr.decode()) self.assertTrue(expect in stderr.decode())
@ -43,7 +43,7 @@ class NeutralizeMainTest(testlib.RouterMixin, testlib.TestCase):
def test_mitogen_main(self): def test_mitogen_main(self):
untouched = self.call("derp.py", self.HAS_MITOGEN_MAIN) untouched = self.call("derp.py", self.HAS_MITOGEN_MAIN)
self.assertEquals(untouched, self.HAS_MITOGEN_MAIN) self.assertEqual(untouched, self.HAS_MITOGEN_MAIN)
HAS_EXEC_GUARD = mitogen.core.b( HAS_EXEC_GUARD = mitogen.core.b(
textwrap.dedent(""" textwrap.dedent("""
@ -63,7 +63,7 @@ class NeutralizeMainTest(testlib.RouterMixin, testlib.TestCase):
def test_exec_guard(self): def test_exec_guard(self):
touched = self.call("derp.py", self.HAS_EXEC_GUARD) touched = self.call("derp.py", self.HAS_EXEC_GUARD)
bits = touched.decode().split() bits = touched.decode().split()
self.assertEquals(bits[-3:], ['def', 'main():', 'pass']) self.assertEqual(bits[-3:], ['def', 'main():', 'pass'])
class GoodModulesTest(testlib.RouterMixin, testlib.TestCase): class GoodModulesTest(testlib.RouterMixin, testlib.TestCase):
@ -72,22 +72,22 @@ class GoodModulesTest(testlib.RouterMixin, testlib.TestCase):
# package machinery damage. # package machinery damage.
context = self.router.local() context = self.router.local()
self.assertEquals(256, context.call(plain_old_module.pow, 2, 8)) self.assertEqual(256, context.call(plain_old_module.pow, 2, 8))
os_fork = int(sys.version_info < (2, 6)) # mitogen.os_fork os_fork = int(sys.version_info < (2, 6)) # mitogen.os_fork
self.assertEquals(1+os_fork, self.router.responder.get_module_count) self.assertEqual(1+os_fork, self.router.responder.get_module_count)
self.assertEquals(1+os_fork, self.router.responder.good_load_module_count) self.assertEqual(1+os_fork, self.router.responder.good_load_module_count)
self.assertLess(300, self.router.responder.good_load_module_size) self.assertLess(300, self.router.responder.good_load_module_size)
def test_simple_pkg(self): def test_simple_pkg(self):
# Ensure success of a simple package containing two submodules, one of # Ensure success of a simple package containing two submodules, one of
# which imports the other. # which imports the other.
context = self.router.local() context = self.router.local()
self.assertEquals(3, self.assertEqual(3,
context.call(simple_pkg.a.subtract_one_add_two, 2)) context.call(simple_pkg.a.subtract_one_add_two, 2))
os_fork = int(sys.version_info < (2, 6)) # mitogen.os_fork os_fork = int(sys.version_info < (2, 6)) # mitogen.os_fork
self.assertEquals(2+os_fork, self.router.responder.get_module_count) self.assertEqual(2+os_fork, self.router.responder.get_module_count)
self.assertEquals(3+os_fork, self.router.responder.good_load_module_count) self.assertEqual(3+os_fork, self.router.responder.good_load_module_count)
self.assertEquals(0, self.router.responder.bad_load_module_count) self.assertEqual(0, self.router.responder.bad_load_module_count)
self.assertLess(450, self.router.responder.good_load_module_size) self.assertLess(450, self.router.responder.good_load_module_size)
def test_self_contained_program(self): def test_self_contained_program(self):
@ -95,7 +95,7 @@ class GoodModulesTest(testlib.RouterMixin, testlib.TestCase):
# successfully. # successfully.
args = [sys.executable, testlib.data_path('self_contained_program.py')] args = [sys.executable, testlib.data_path('self_contained_program.py')]
output = testlib.subprocess__check_output(args).decode() output = testlib.subprocess__check_output(args).decode()
self.assertEquals(output, "['__main__', 50]\n") self.assertEqual(output, "['__main__', 50]\n")
class BrokenModulesTest(testlib.TestCase): class BrokenModulesTest(testlib.TestCase):
@ -116,17 +116,17 @@ class BrokenModulesTest(testlib.TestCase):
responder = mitogen.master.ModuleResponder(router) responder = mitogen.master.ModuleResponder(router)
responder._on_get_module(msg) responder._on_get_module(msg)
self.assertEquals(1, len(router._async_route.mock_calls)) self.assertEqual(1, len(router._async_route.mock_calls))
self.assertEquals(1, responder.get_module_count) self.assertEqual(1, responder.get_module_count)
self.assertEquals(0, responder.good_load_module_count) self.assertEqual(0, responder.good_load_module_count)
self.assertEquals(0, responder.good_load_module_size) self.assertEqual(0, responder.good_load_module_size)
self.assertEquals(1, responder.bad_load_module_count) self.assertEqual(1, responder.bad_load_module_count)
call = router._async_route.mock_calls[0] call = router._async_route.mock_calls[0]
msg, = call[1] msg, = call[1]
self.assertEquals(mitogen.core.LOAD_MODULE, msg.handle) self.assertEqual(mitogen.core.LOAD_MODULE, msg.handle)
self.assertEquals(('non_existent_module', None, None, None, ()), self.assertEqual(('non_existent_module', None, None, None, ()),
msg.unpickle()) msg.unpickle())
@unittest.skipIf( @unittest.skipIf(
@ -154,15 +154,15 @@ class BrokenModulesTest(testlib.TestCase):
responder = mitogen.master.ModuleResponder(router) responder = mitogen.master.ModuleResponder(router)
responder._on_get_module(msg) responder._on_get_module(msg)
self.assertEquals(1, len(router._async_route.mock_calls)) self.assertEqual(1, len(router._async_route.mock_calls))
self.assertEquals(1, responder.get_module_count) self.assertEqual(1, responder.get_module_count)
self.assertEquals(1, responder.good_load_module_count) self.assertEqual(1, responder.good_load_module_count)
self.assertEquals(0, responder.bad_load_module_count) self.assertEqual(0, responder.bad_load_module_count)
call = router._async_route.mock_calls[0] call = router._async_route.mock_calls[0]
msg, = call[1] msg, = call[1]
self.assertEquals(mitogen.core.LOAD_MODULE, msg.handle) self.assertEqual(mitogen.core.LOAD_MODULE, msg.handle)
tup = msg.unpickle() tup = msg.unpickle()
self.assertIsInstance(tup, tuple) self.assertIsInstance(tup, tuple)
@ -188,9 +188,9 @@ class ForwardTest(testlib.RouterMixin, testlib.TestCase):
c2 = self.router.local(via=c1) c2 = self.router.local(via=c1)
os_fork = int(sys.version_info < (2, 6)) os_fork = int(sys.version_info < (2, 6))
self.assertEquals(256, c2.call(plain_old_module.pow, 2, 8)) self.assertEqual(256, c2.call(plain_old_module.pow, 2, 8))
self.assertEquals(2+os_fork, self.router.responder.get_module_count) self.assertEqual(2+os_fork, self.router.responder.get_module_count)
self.assertEquals(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)

@ -97,7 +97,7 @@ class SourceVerifyTest(testlib.RouterMixin, testlib.TestCase):
e = self.assertRaises(mitogen.core.ChannelError, e = self.assertRaises(mitogen.core.ChannelError,
lambda: recv.get().unpickle() lambda: recv.get().unpickle()
) )
self.assertEquals(e.args[0], self.router.no_route_msg % ( self.assertEqual(e.args[0], self.router.no_route_msg % (
1234, 1234,
c1.context_id, c1.context_id,
)) ))
@ -136,7 +136,7 @@ class PolicyTest(testlib.RouterMixin, testlib.TestCase):
recv.to_sender().send(123) recv.to_sender().send(123)
self.sync_with_broker() self.sync_with_broker()
self.assertFalse(recv.empty()) self.assertFalse(recv.empty())
self.assertEquals(123, recv.get().unpickle()) self.assertEqual(123, recv.get().unpickle())
def test_refuse_all(self): def test_refuse_all(self):
# Deliver a message locally from child2 with the correct auth_id, but # Deliver a message locally from child2 with the correct auth_id, but
@ -174,7 +174,7 @@ class PolicyTest(testlib.RouterMixin, testlib.TestCase):
# Verify CallError received by reply_to target. # Verify CallError received by reply_to target.
e = self.assertRaises(mitogen.core.ChannelError, e = self.assertRaises(mitogen.core.ChannelError,
lambda: reply_target.get().unpickle()) lambda: reply_target.get().unpickle())
self.assertEquals(e.args[0], self.router.refused_msg) self.assertEqual(e.args[0], self.router.refused_msg)
class CrashTest(testlib.BrokerMixin, testlib.TestCase): class CrashTest(testlib.BrokerMixin, testlib.TestCase):
@ -225,7 +225,7 @@ class AddHandlerTest(testlib.TestCase):
router.add_handler((lambda: None), handle=1234) router.add_handler((lambda: None), handle=1234)
e = self.assertRaises(mitogen.core.Error, e = self.assertRaises(mitogen.core.Error,
lambda: router.add_handler((lambda: None), handle=1234)) lambda: router.add_handler((lambda: None), handle=1234))
self.assertEquals(router.duplicate_handle_msg, e.args[0]) self.assertEqual(router.duplicate_handle_msg, e.args[0])
router.del_handler(1234) router.del_handler(1234)
finally: finally:
router.broker.shutdown() router.broker.shutdown()
@ -246,9 +246,9 @@ class AddHandlerTest(testlib.TestCase):
class MyselfTest(testlib.RouterMixin, testlib.TestCase): class MyselfTest(testlib.RouterMixin, testlib.TestCase):
def test_myself(self): def test_myself(self):
myself = self.router.myself() myself = self.router.myself()
self.assertEquals(myself.context_id, mitogen.context_id) self.assertEqual(myself.context_id, mitogen.context_id)
# TODO: context should know its own name too. # TODO: context should know its own name too.
self.assertEquals(myself.name, 'self') self.assertEqual(myself.name, 'self')
class MessageSizeTest(testlib.BrokerMixin, testlib.TestCase): class MessageSizeTest(testlib.BrokerMixin, testlib.TestCase):
@ -281,7 +281,7 @@ class MessageSizeTest(testlib.BrokerMixin, testlib.TestCase):
child = router.local() child = router.local()
e = self.assertRaises(mitogen.core.ChannelError, e = self.assertRaises(mitogen.core.ChannelError,
lambda: child.call(zlib.crc32, ' '*8192)) lambda: child.call(zlib.crc32, ' '*8192))
self.assertEquals(e.args[0], expect) self.assertEqual(e.args[0], expect)
self.assertTrue(expect in logs.stop()) self.assertTrue(expect in logs.stop())
@ -300,20 +300,20 @@ class MessageSizeTest(testlib.BrokerMixin, testlib.TestCase):
lambda: recv.get().unpickle() lambda: recv.get().unpickle()
) )
expect = router.too_large_msg % (4096,) expect = router.too_large_msg % (4096,)
self.assertEquals(e.args[0], expect) self.assertEqual(e.args[0], expect)
def test_remote_configured(self): def test_remote_configured(self):
router = self.klass(broker=self.broker, max_message_size=64*1024) router = self.klass(broker=self.broker, max_message_size=64*1024)
remote = router.local() remote = router.local()
size = remote.call(return_router_max_message_size) size = remote.call(return_router_max_message_size)
self.assertEquals(size, 64*1024) self.assertEqual(size, 64*1024)
def test_remote_of_remote_configured(self): def test_remote_of_remote_configured(self):
router = self.klass(broker=self.broker, max_message_size=64*1024) router = self.klass(broker=self.broker, max_message_size=64*1024)
remote = router.local() remote = router.local()
remote2 = router.local(via=remote) remote2 = router.local(via=remote)
size = remote2.call(return_router_max_message_size) size = remote2.call(return_router_max_message_size)
self.assertEquals(size, 64*1024) self.assertEqual(size, 64*1024)
def test_remote_exceeded(self): def test_remote_exceeded(self):
# Ensure new contexts receive a router with the same value. # Ensure new contexts receive a router with the same value.
@ -336,14 +336,14 @@ class NoRouteTest(testlib.RouterMixin, testlib.TestCase):
l1 = self.router.local() l1 = self.router.local()
recv = l1.send_async(mitogen.core.Message(handle=999)) recv = l1.send_async(mitogen.core.Message(handle=999))
msg = recv.get(throw_dead=False) msg = recv.get(throw_dead=False)
self.assertEquals(msg.is_dead, True) self.assertEqual(msg.is_dead, True)
self.assertEquals(msg.src_id, l1.context_id) self.assertEqual(msg.src_id, l1.context_id)
self.assertEquals(msg.data, self.router.invalid_handle_msg.encode()) self.assertEqual(msg.data, self.router.invalid_handle_msg.encode())
recv = l1.send_async(mitogen.core.Message(handle=999)) recv = l1.send_async(mitogen.core.Message(handle=999))
e = self.assertRaises(mitogen.core.ChannelError, e = self.assertRaises(mitogen.core.ChannelError,
lambda: recv.get()) lambda: recv.get())
self.assertEquals(e.args[0], self.router.invalid_handle_msg) self.assertEqual(e.args[0], self.router.invalid_handle_msg)
def test_totally_invalid_context_returns_dead(self): def test_totally_invalid_context_returns_dead(self):
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
@ -354,9 +354,9 @@ class NoRouteTest(testlib.RouterMixin, testlib.TestCase):
) )
self.router.route(msg) self.router.route(msg)
rmsg = recv.get(throw_dead=False) rmsg = recv.get(throw_dead=False)
self.assertEquals(rmsg.is_dead, True) self.assertEqual(rmsg.is_dead, True)
self.assertEquals(rmsg.src_id, mitogen.context_id) self.assertEqual(rmsg.src_id, mitogen.context_id)
self.assertEquals(rmsg.data, (self.router.no_route_msg % ( self.assertEqual(rmsg.data, (self.router.no_route_msg % (
1234, 1234,
mitogen.context_id, mitogen.context_id,
)).encode()) )).encode())
@ -364,7 +364,7 @@ class NoRouteTest(testlib.RouterMixin, testlib.TestCase):
self.router.route(msg) self.router.route(msg)
e = self.assertRaises(mitogen.core.ChannelError, e = self.assertRaises(mitogen.core.ChannelError,
lambda: recv.get()) lambda: recv.get())
self.assertEquals(e.args[0], (self.router.no_route_msg % ( self.assertEqual(e.args[0], (self.router.no_route_msg % (
1234, 1234,
mitogen.context_id, mitogen.context_id,
))) )))
@ -380,9 +380,9 @@ class NoRouteTest(testlib.RouterMixin, testlib.TestCase):
) )
self.router.route(msg) self.router.route(msg)
rmsg = recv.get(throw_dead=False) rmsg = recv.get(throw_dead=False)
self.assertEquals(rmsg.is_dead, True) self.assertEqual(rmsg.is_dead, True)
self.assertEquals(rmsg.src_id, mitogen.context_id) self.assertEqual(rmsg.src_id, mitogen.context_id)
self.assertEquals(rmsg.data, (self.router.no_route_msg % ( self.assertEqual(rmsg.data, (self.router.no_route_msg % (
l1.context_id, l1.context_id,
mitogen.context_id, mitogen.context_id,
)).encode()) )).encode())
@ -390,7 +390,7 @@ class NoRouteTest(testlib.RouterMixin, testlib.TestCase):
self.router.route(msg) self.router.route(msg)
e = self.assertRaises(mitogen.core.ChannelError, e = self.assertRaises(mitogen.core.ChannelError,
lambda: recv.get()) lambda: recv.get())
self.assertEquals(e.args[0], self.router.no_route_msg % ( self.assertEqual(e.args[0], self.router.no_route_msg % (
l1.context_id, l1.context_id,
mitogen.context_id, mitogen.context_id,
)) ))
@ -465,7 +465,7 @@ class EgressIdsTest(testlib.RouterMixin, testlib.TestCase):
# causes messages to be sent. # causes messages to be sent.
pass pass
self.assertEquals(c1s.protocol.egress_ids, set([ self.assertEqual(c1s.protocol.egress_ids, set([
mitogen.context_id, mitogen.context_id,
c2.context_id, c2.context_id,
])) ]))
@ -496,11 +496,11 @@ class ShutdownTest(testlib.RouterMixin, testlib.TestCase):
e = self.assertRaises(OSError, e = self.assertRaises(OSError,
lambda: os.waitpid(pid, 0)) lambda: os.waitpid(pid, 0))
self.assertEquals(e.args[0], errno.ECHILD) self.assertEqual(e.args[0], errno.ECHILD)
e = self.assertRaises(mitogen.core.ChannelError, e = self.assertRaises(mitogen.core.ChannelError,
lambda: l1.call(os.getpid)) lambda: l1.call(os.getpid))
self.assertEquals(e.args[0], mitogen.core.Router.no_route_msg % ( self.assertEqual(e.args[0], mitogen.core.Router.no_route_msg % (
l1.context_id, l1.context_id,
mitogen.context_id, mitogen.context_id,
)) ))
@ -518,11 +518,11 @@ class ShutdownTest(testlib.RouterMixin, testlib.TestCase):
e = self.assertRaises(OSError, e = self.assertRaises(OSError,
lambda: os.waitpid(pid, 0)) lambda: os.waitpid(pid, 0))
self.assertEquals(e.args[0], errno.ECHILD) self.assertEqual(e.args[0], errno.ECHILD)
e = self.assertRaises(mitogen.core.ChannelError, e = self.assertRaises(mitogen.core.ChannelError,
lambda: l1.call(os.getpid)) lambda: l1.call(os.getpid))
self.assertEquals(e.args[0], mitogen.core.Router.no_route_msg % ( self.assertEqual(e.args[0], mitogen.core.Router.no_route_msg % (
l1.context_id, l1.context_id,
mitogen.context_id, mitogen.context_id,
)) ))
@ -545,11 +545,11 @@ class ShutdownTest(testlib.RouterMixin, testlib.TestCase):
e = self.assertRaises(OSError, e = self.assertRaises(OSError,
lambda: os.waitpid(pid, 0)) lambda: os.waitpid(pid, 0))
self.assertEquals(e.args[0], errno.ECHILD) self.assertEqual(e.args[0], errno.ECHILD)
e = self.assertRaises(mitogen.core.ChannelError, e = self.assertRaises(mitogen.core.ChannelError,
lambda: l1.call(os.getpid)) lambda: l1.call(os.getpid))
self.assertEquals(e.args[0], mitogen.core.Router.no_route_msg % ( self.assertEqual(e.args[0], mitogen.core.Router.no_route_msg % (
l1.context_id, l1.context_id,
mitogen.context_id, mitogen.context_id,
)) ))
@ -572,12 +572,12 @@ class ShutdownTest(testlib.RouterMixin, testlib.TestCase):
for pid in pids: for pid in pids:
e = self.assertRaises(OSError, e = self.assertRaises(OSError,
lambda: os.waitpid(pid, 0)) lambda: os.waitpid(pid, 0))
self.assertEquals(e.args[0], errno.ECHILD) self.assertEqual(e.args[0], errno.ECHILD)
for ctx in l1, l2: for ctx in l1, l2:
e = self.assertRaises(mitogen.core.ChannelError, e = self.assertRaises(mitogen.core.ChannelError,
lambda: ctx.call(os.getpid)) lambda: ctx.call(os.getpid))
self.assertEquals(e.args[0], mitogen.core.Router.no_route_msg % ( self.assertEqual(e.args[0], mitogen.core.Router.no_route_msg % (
ctx.context_id, ctx.context_id,
mitogen.context_id, mitogen.context_id,
)) ))

@ -15,7 +15,7 @@ class BoolTest(testlib.RouterMixin, testlib.TestCase):
latch.put(123) latch.put(123)
self.assertTrue(select) self.assertTrue(select)
self.assertEquals(123, select.get()) self.assertEqual(123, select.get())
self.assertFalse(select) self.assertFalse(select)
def test_receiver(self): def test_receiver(self):
@ -27,7 +27,7 @@ class BoolTest(testlib.RouterMixin, testlib.TestCase):
recv._on_receive(mitogen.core.Message.pickled('123')) recv._on_receive(mitogen.core.Message.pickled('123'))
self.assertTrue(select) self.assertTrue(select)
self.assertEquals('123', select.get().unpickle()) self.assertEqual('123', select.get().unpickle())
self.assertFalse(select) self.assertFalse(select)
@ -38,34 +38,34 @@ class AddTest(testlib.RouterMixin, testlib.TestCase):
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
select = self.klass() select = self.klass()
select.add(latch) select.add(latch)
self.assertEquals(1, len(select._receivers)) self.assertEqual(1, len(select._receivers))
self.assertEquals(latch, select._receivers[0]) self.assertEqual(latch, select._receivers[0])
self.assertEquals(select._put, latch.notify) self.assertEqual(select._put, latch.notify)
def test_receiver(self): def test_receiver(self):
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
select = self.klass() select = self.klass()
select.add(recv) select.add(recv)
self.assertEquals(1, len(select._receivers)) self.assertEqual(1, len(select._receivers))
self.assertEquals(recv, select._receivers[0]) self.assertEqual(recv, select._receivers[0])
self.assertEquals(select._put, recv.notify) self.assertEqual(select._put, recv.notify)
def test_channel(self): def test_channel(self):
context = self.router.local() context = self.router.local()
chan = mitogen.core.Channel(self.router, context, 1234) chan = mitogen.core.Channel(self.router, context, 1234)
select = self.klass() select = self.klass()
select.add(chan) select.add(chan)
self.assertEquals(1, len(select._receivers)) self.assertEqual(1, len(select._receivers))
self.assertEquals(chan, select._receivers[0]) self.assertEqual(chan, select._receivers[0])
self.assertEquals(select._put, chan.notify) self.assertEqual(select._put, chan.notify)
def test_subselect_empty(self): def test_subselect_empty(self):
select = self.klass() select = self.klass()
subselect = self.klass() subselect = self.klass()
select.add(subselect) select.add(subselect)
self.assertEquals(1, len(select._receivers)) self.assertEqual(1, len(select._receivers))
self.assertEquals(subselect, select._receivers[0]) self.assertEqual(subselect, select._receivers[0])
self.assertEquals(select._put, subselect.notify) self.assertEqual(select._put, subselect.notify)
def test_subselect_nonempty(self): def test_subselect_nonempty(self):
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
@ -74,15 +74,15 @@ class AddTest(testlib.RouterMixin, testlib.TestCase):
subselect.add(recv) subselect.add(recv)
select.add(subselect) select.add(subselect)
self.assertEquals(1, len(select._receivers)) self.assertEqual(1, len(select._receivers))
self.assertEquals(subselect, select._receivers[0]) self.assertEqual(subselect, select._receivers[0])
self.assertEquals(select._put, subselect.notify) self.assertEqual(select._put, subselect.notify)
def test_subselect_loop_direct(self): def test_subselect_loop_direct(self):
select = self.klass() select = self.klass()
exc = self.assertRaises(mitogen.select.Error, exc = self.assertRaises(mitogen.select.Error,
lambda: select.add(select)) lambda: select.add(select))
self.assertEquals(str(exc), self.klass.loop_msg) self.assertEqual(str(exc), self.klass.loop_msg)
def test_subselect_loop_indirect(self): def test_subselect_loop_indirect(self):
s0 = self.klass() s0 = self.klass()
@ -93,7 +93,7 @@ class AddTest(testlib.RouterMixin, testlib.TestCase):
s1.add(s2) s1.add(s2)
exc = self.assertRaises(mitogen.select.Error, exc = self.assertRaises(mitogen.select.Error,
lambda: s2.add(s0)) lambda: s2.add(s0))
self.assertEquals(str(exc), self.klass.loop_msg) self.assertEqual(str(exc), self.klass.loop_msg)
def test_double_add_receiver(self): def test_double_add_receiver(self):
select = self.klass() select = self.klass()
@ -101,7 +101,7 @@ class AddTest(testlib.RouterMixin, testlib.TestCase):
select.add(recv) select.add(recv)
exc = self.assertRaises(mitogen.select.Error, exc = self.assertRaises(mitogen.select.Error,
lambda: select.add(recv)) lambda: select.add(recv))
self.assertEquals(str(exc), self.klass.owned_msg) self.assertEqual(str(exc), self.klass.owned_msg)
def test_double_add_subselect(self): def test_double_add_subselect(self):
select = self.klass() select = self.klass()
@ -109,7 +109,7 @@ class AddTest(testlib.RouterMixin, testlib.TestCase):
select.add(select2) select.add(select2)
exc = self.assertRaises(mitogen.select.Error, exc = self.assertRaises(mitogen.select.Error,
lambda: select.add(select2)) lambda: select.add(select2))
self.assertEquals(str(exc), self.klass.owned_msg) self.assertEqual(str(exc), self.klass.owned_msg)
class RemoveTest(testlib.RouterMixin, testlib.TestCase): class RemoveTest(testlib.RouterMixin, testlib.TestCase):
@ -120,7 +120,7 @@ class RemoveTest(testlib.RouterMixin, testlib.TestCase):
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
exc = self.assertRaises(mitogen.select.Error, exc = self.assertRaises(mitogen.select.Error,
lambda: select.remove(recv)) lambda: select.remove(recv))
self.assertEquals(str(exc), self.klass.not_present_msg) self.assertEqual(str(exc), self.klass.not_present_msg)
def test_receiver_absent(self): def test_receiver_absent(self):
select = self.klass() select = self.klass()
@ -129,22 +129,22 @@ class RemoveTest(testlib.RouterMixin, testlib.TestCase):
select.add(recv2) select.add(recv2)
exc = self.assertRaises(mitogen.select.Error, exc = self.assertRaises(mitogen.select.Error,
lambda: select.remove(recv)) lambda: select.remove(recv))
self.assertEquals(str(exc), self.klass.not_present_msg) self.assertEqual(str(exc), self.klass.not_present_msg)
def test_receiver_present(self): def test_receiver_present(self):
select = self.klass() select = self.klass()
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
select.add(recv) select.add(recv)
select.remove(recv) select.remove(recv)
self.assertEquals(0, len(select._receivers)) self.assertEqual(0, len(select._receivers))
self.assertEquals(None, recv.notify) self.assertEqual(None, recv.notify)
def test_latch_empty(self): def test_latch_empty(self):
select = self.klass() select = self.klass()
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
exc = self.assertRaises(mitogen.select.Error, exc = self.assertRaises(mitogen.select.Error,
lambda: select.remove(latch)) lambda: select.remove(latch))
self.assertEquals(str(exc), self.klass.not_present_msg) self.assertEqual(str(exc), self.klass.not_present_msg)
def test_latch_absent(self): def test_latch_absent(self):
select = self.klass() select = self.klass()
@ -153,15 +153,15 @@ class RemoveTest(testlib.RouterMixin, testlib.TestCase):
select.add(latch2) select.add(latch2)
exc = self.assertRaises(mitogen.select.Error, exc = self.assertRaises(mitogen.select.Error,
lambda: select.remove(latch)) lambda: select.remove(latch))
self.assertEquals(str(exc), self.klass.not_present_msg) self.assertEqual(str(exc), self.klass.not_present_msg)
def test_latch_present(self): def test_latch_present(self):
select = self.klass() select = self.klass()
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
select.add(latch) select.add(latch)
select.remove(latch) select.remove(latch)
self.assertEquals(0, len(select._receivers)) self.assertEqual(0, len(select._receivers))
self.assertEquals(None, latch.notify) self.assertEqual(None, latch.notify)
class CloseTest(testlib.RouterMixin, testlib.TestCase): class CloseTest(testlib.RouterMixin, testlib.TestCase):
@ -176,24 +176,24 @@ class CloseTest(testlib.RouterMixin, testlib.TestCase):
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
select.add(latch) select.add(latch)
self.assertEquals(1, len(select._receivers)) self.assertEqual(1, len(select._receivers))
self.assertEquals(select._put, latch.notify) self.assertEqual(select._put, latch.notify)
select.close() select.close()
self.assertEquals(0, len(select._receivers)) self.assertEqual(0, len(select._receivers))
self.assertEquals(None, latch.notify) self.assertEqual(None, latch.notify)
def test_one_receiver(self): def test_one_receiver(self):
select = self.klass() select = self.klass()
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
select.add(recv) select.add(recv)
self.assertEquals(1, len(select._receivers)) self.assertEqual(1, len(select._receivers))
self.assertEquals(select._put, recv.notify) self.assertEqual(select._put, recv.notify)
select.close() select.close()
self.assertEquals(0, len(select._receivers)) self.assertEqual(0, len(select._receivers))
self.assertEquals(None, recv.notify) self.assertEqual(None, recv.notify)
def test_one_subselect(self): def test_one_subselect(self):
select = self.klass() select = self.klass()
@ -203,16 +203,16 @@ class CloseTest(testlib.RouterMixin, testlib.TestCase):
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
subselect.add(recv) subselect.add(recv)
self.assertEquals(1, len(select._receivers)) self.assertEqual(1, len(select._receivers))
self.assertEquals(subselect._put, recv.notify) self.assertEqual(subselect._put, recv.notify)
select.close() select.close()
self.assertEquals(0, len(select._receivers)) self.assertEqual(0, len(select._receivers))
self.assertEquals(subselect._put, recv.notify) self.assertEqual(subselect._put, recv.notify)
subselect.close() subselect.close()
self.assertEquals(None, recv.notify) self.assertEqual(None, recv.notify)
class EmptyTest(testlib.RouterMixin, testlib.TestCase): class EmptyTest(testlib.RouterMixin, testlib.TestCase):
@ -262,20 +262,20 @@ class IterTest(testlib.RouterMixin, testlib.TestCase):
def test_empty(self): def test_empty(self):
select = self.klass() select = self.klass()
self.assertEquals([], list(select)) self.assertEqual([], list(select))
def test_nonempty_receiver(self): def test_nonempty_receiver(self):
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
select = self.klass([recv]) select = self.klass([recv])
msg = mitogen.core.Message.pickled('123') msg = mitogen.core.Message.pickled('123')
recv._on_receive(msg) recv._on_receive(msg)
self.assertEquals([msg], list(select)) self.assertEqual([msg], list(select))
def test_nonempty_latch(self): def test_nonempty_latch(self):
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
select = self.klass([latch]) select = self.klass([latch])
latch.put(123) latch.put(123)
self.assertEquals([123], list(select)) self.assertEqual([123], list(select))
class OneShotTest(testlib.RouterMixin, testlib.TestCase): class OneShotTest(testlib.RouterMixin, testlib.TestCase):
@ -287,9 +287,9 @@ class OneShotTest(testlib.RouterMixin, testlib.TestCase):
msg = mitogen.core.Message.pickled('123') msg = mitogen.core.Message.pickled('123')
recv._on_receive(msg) recv._on_receive(msg)
msg_ = select.get() msg_ = select.get()
self.assertEquals(msg, msg_) self.assertEqual(msg, msg_)
self.assertEquals(0, len(select._receivers)) self.assertEqual(0, len(select._receivers))
self.assertEquals(None, recv.notify) self.assertEqual(None, recv.notify)
def test_false_receiver_persists_after_get(self): def test_false_receiver_persists_after_get(self):
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
@ -297,28 +297,28 @@ class OneShotTest(testlib.RouterMixin, testlib.TestCase):
msg = mitogen.core.Message.pickled('123') msg = mitogen.core.Message.pickled('123')
recv._on_receive(msg) recv._on_receive(msg)
self.assertEquals(msg, select.get()) self.assertEqual(msg, select.get())
self.assertEquals(1, len(select._receivers)) self.assertEqual(1, len(select._receivers))
self.assertEquals(recv, select._receivers[0]) self.assertEqual(recv, select._receivers[0])
self.assertEquals(select._put, recv.notify) self.assertEqual(select._put, recv.notify)
def test_true_latch_removed_after_get(self): def test_true_latch_removed_after_get(self):
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
select = self.klass([latch]) select = self.klass([latch])
latch.put(123) latch.put(123)
self.assertEquals(123, select.get()) self.assertEqual(123, select.get())
self.assertEquals(0, len(select._receivers)) self.assertEqual(0, len(select._receivers))
self.assertEquals(None, latch.notify) self.assertEqual(None, latch.notify)
def test_false_latch_persists_after_get(self): def test_false_latch_persists_after_get(self):
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
select = self.klass([latch], oneshot=False) select = self.klass([latch], oneshot=False)
latch.put(123) latch.put(123)
self.assertEquals(123, select.get()) self.assertEqual(123, select.get())
self.assertEquals(1, len(select._receivers)) self.assertEqual(1, len(select._receivers))
self.assertEquals(latch, select._receivers[0]) self.assertEqual(latch, select._receivers[0])
self.assertEquals(select._put, latch.notify) self.assertEqual(select._put, latch.notify)
class GetReceiverTest(testlib.RouterMixin, testlib.TestCase): class GetReceiverTest(testlib.RouterMixin, testlib.TestCase):
@ -328,13 +328,13 @@ class GetReceiverTest(testlib.RouterMixin, testlib.TestCase):
select = self.klass() select = self.klass()
exc = self.assertRaises(mitogen.select.Error, exc = self.assertRaises(mitogen.select.Error,
lambda: select.get()) lambda: select.get())
self.assertEquals(str(exc), self.klass.empty_msg) self.assertEqual(str(exc), self.klass.empty_msg)
def test_timeout_no_receivers(self): def test_timeout_no_receivers(self):
select = self.klass() select = self.klass()
exc = self.assertRaises(mitogen.select.Error, exc = self.assertRaises(mitogen.select.Error,
lambda: select.get(timeout=1.0)) lambda: select.get(timeout=1.0))
self.assertEquals(str(exc), self.klass.empty_msg) self.assertEqual(str(exc), self.klass.empty_msg)
def test_zero_timeout(self): def test_zero_timeout(self):
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
@ -353,7 +353,7 @@ class GetReceiverTest(testlib.RouterMixin, testlib.TestCase):
recv._on_receive(mitogen.core.Message.pickled('123')) recv._on_receive(mitogen.core.Message.pickled('123'))
select = self.klass([recv]) select = self.klass([recv])
msg = select.get() msg = select.get()
self.assertEquals('123', msg.unpickle()) self.assertEqual('123', msg.unpickle())
def test_nonempty_multiple_items_before_add(self): def test_nonempty_multiple_items_before_add(self):
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
@ -361,9 +361,9 @@ class GetReceiverTest(testlib.RouterMixin, testlib.TestCase):
recv._on_receive(mitogen.core.Message.pickled('234')) recv._on_receive(mitogen.core.Message.pickled('234'))
select = self.klass([recv], oneshot=False) select = self.klass([recv], oneshot=False)
msg = select.get() msg = select.get()
self.assertEquals('123', msg.unpickle()) self.assertEqual('123', msg.unpickle())
msg = select.get() msg = select.get()
self.assertEquals('234', msg.unpickle()) self.assertEqual('234', msg.unpickle())
self.assertRaises(mitogen.core.TimeoutError, self.assertRaises(mitogen.core.TimeoutError,
lambda: select.get(block=False)) lambda: select.get(block=False))
@ -372,21 +372,21 @@ class GetReceiverTest(testlib.RouterMixin, testlib.TestCase):
select = self.klass([recv]) select = self.klass([recv])
recv._on_receive(mitogen.core.Message.pickled('123')) recv._on_receive(mitogen.core.Message.pickled('123'))
msg = select.get() msg = select.get()
self.assertEquals('123', msg.unpickle()) self.assertEqual('123', msg.unpickle())
def test_nonempty_receiver_attr_set(self): def test_nonempty_receiver_attr_set(self):
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
select = self.klass([recv]) select = self.klass([recv])
recv._on_receive(mitogen.core.Message.pickled('123')) recv._on_receive(mitogen.core.Message.pickled('123'))
msg = select.get() msg = select.get()
self.assertEquals(msg.receiver, recv) self.assertEqual(msg.receiver, recv)
def test_drained_by_other_thread(self): def test_drained_by_other_thread(self):
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
recv._on_receive(mitogen.core.Message.pickled('123')) recv._on_receive(mitogen.core.Message.pickled('123'))
select = self.klass([recv]) select = self.klass([recv])
msg = recv.get() msg = recv.get()
self.assertEquals('123', msg.unpickle()) self.assertEqual('123', msg.unpickle())
self.assertRaises(mitogen.core.TimeoutError, self.assertRaises(mitogen.core.TimeoutError,
lambda: select.get(timeout=0.0)) lambda: select.get(timeout=0.0))
@ -398,13 +398,13 @@ class GetLatchTest(testlib.RouterMixin, testlib.TestCase):
select = self.klass() select = self.klass()
exc = self.assertRaises(mitogen.select.Error, exc = self.assertRaises(mitogen.select.Error,
lambda: select.get()) lambda: select.get())
self.assertEquals(str(exc), self.klass.empty_msg) self.assertEqual(str(exc), self.klass.empty_msg)
def test_timeout_no_receivers(self): def test_timeout_no_receivers(self):
select = self.klass() select = self.klass()
exc = self.assertRaises(mitogen.select.Error, exc = self.assertRaises(mitogen.select.Error,
lambda: select.get(timeout=1.0)) lambda: select.get(timeout=1.0))
self.assertEquals(str(exc), self.klass.empty_msg) self.assertEqual(str(exc), self.klass.empty_msg)
def test_zero_timeout(self): def test_zero_timeout(self):
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
@ -422,15 +422,15 @@ class GetLatchTest(testlib.RouterMixin, testlib.TestCase):
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
latch.put(123) latch.put(123)
select = self.klass([latch]) select = self.klass([latch])
self.assertEquals(123, select.get()) self.assertEqual(123, select.get())
def test_nonempty_multiple_items_before_add(self): def test_nonempty_multiple_items_before_add(self):
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
latch.put(123) latch.put(123)
latch.put(234) latch.put(234)
select = self.klass([latch], oneshot=False) select = self.klass([latch], oneshot=False)
self.assertEquals(123, select.get()) self.assertEqual(123, select.get())
self.assertEquals(234, select.get()) self.assertEqual(234, select.get())
self.assertRaises(mitogen.core.TimeoutError, self.assertRaises(mitogen.core.TimeoutError,
lambda: select.get(block=False)) lambda: select.get(block=False))
@ -438,13 +438,13 @@ class GetLatchTest(testlib.RouterMixin, testlib.TestCase):
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
select = self.klass([latch]) select = self.klass([latch])
latch.put(123) latch.put(123)
self.assertEquals(123, latch.get()) self.assertEqual(123, latch.get())
def test_drained_by_other_thread(self): def test_drained_by_other_thread(self):
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
latch.put(123) latch.put(123)
select = self.klass([latch]) select = self.klass([latch])
self.assertEquals(123, latch.get()) self.assertEqual(123, latch.get())
self.assertRaises(mitogen.core.TimeoutError, self.assertRaises(mitogen.core.TimeoutError,
lambda: select.get(timeout=0.0)) lambda: select.get(timeout=0.0))
@ -456,20 +456,20 @@ class GetEventTest(testlib.RouterMixin, testlib.TestCase):
select = self.klass() select = self.klass()
exc = self.assertRaises(mitogen.select.Error, exc = self.assertRaises(mitogen.select.Error,
lambda: select.get()) lambda: select.get())
self.assertEquals(str(exc), self.klass.empty_msg) self.assertEqual(str(exc), self.klass.empty_msg)
def test_latch(self): def test_latch(self):
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
latch.put(123) latch.put(123)
select = self.klass([latch]) select = self.klass([latch])
event = select.get_event() event = select.get_event()
self.assertEquals(latch, event.source) self.assertEqual(latch, event.source)
self.assertEquals(123, event.data) self.assertEqual(123, event.data)
def test_receiver(self): def test_receiver(self):
recv = mitogen.core.Receiver(self.router) recv = mitogen.core.Receiver(self.router)
recv._on_receive(mitogen.core.Message.pickled('123')) recv._on_receive(mitogen.core.Message.pickled('123'))
select = self.klass([recv]) select = self.klass([recv])
event = select.get_event() event = select.get_event()
self.assertEquals(recv, event.source) self.assertEqual(recv, event.source)
self.assertEquals('123', event.data.unpickle()) self.assertEqual('123', event.data.unpickle())

@ -43,7 +43,7 @@ def call_service_in(context, service_name, method_name):
class CallTest(testlib.RouterMixin, testlib.TestCase): class CallTest(testlib.RouterMixin, testlib.TestCase):
def test_local(self): def test_local(self):
pool = mitogen.service.get_or_create_pool(router=self.router) pool = mitogen.service.get_or_create_pool(router=self.router)
self.assertEquals( self.assertEqual(
'privileged!', 'privileged!',
mitogen.service.call(MyService, 'privileged_op') mitogen.service.call(MyService, 'privileged_op')
) )
@ -63,7 +63,7 @@ class CallTest(testlib.RouterMixin, testlib.TestCase):
def test_local_unicode(self): def test_local_unicode(self):
pool = mitogen.service.get_or_create_pool(router=self.router) pool = mitogen.service.get_or_create_pool(router=self.router)
self.assertEquals( self.assertEqual(
'privileged!', 'privileged!',
mitogen.service.call(MyService.name(), 'privileged_op') mitogen.service.call(MyService.name(), 'privileged_op')
) )
@ -71,7 +71,7 @@ class CallTest(testlib.RouterMixin, testlib.TestCase):
def test_remote(self): def test_remote(self):
c1 = self.router.local() c1 = self.router.local()
self.assertEquals( self.assertEqual(
'privileged!', 'privileged!',
mitogen.service.call(MyService, 'privileged_op', mitogen.service.call(MyService, 'privileged_op',
call_context=c1) call_context=c1)
@ -82,7 +82,7 @@ class ActivationTest(testlib.RouterMixin, testlib.TestCase):
def test_parent_can_activate(self): def test_parent_can_activate(self):
l1 = self.router.local() l1 = self.router.local()
counter, id_ = l1.call_service(MyService, 'get_id') counter, id_ = l1.call_service(MyService, 'get_id')
self.assertEquals(1, counter) self.assertEqual(1, counter)
self.assertTrue(isinstance(id_, int)) self.assertTrue(isinstance(id_, int))
def test_sibling_cannot_activate_framework(self): def test_sibling_cannot_activate_framework(self):
@ -110,9 +110,9 @@ class ActivationTest(testlib.RouterMixin, testlib.TestCase):
l1 = self.router.local() l1 = self.router.local()
counter, id_ = l1.call_service(MyService, 'get_id') counter, id_ = l1.call_service(MyService, 'get_id')
counter2, id_2 = l1.call_service(MyService, 'get_id') counter2, id_2 = l1.call_service(MyService, 'get_id')
self.assertEquals(1, counter) self.assertEqual(1, counter)
self.assertEquals(2, counter2) self.assertEqual(2, counter2)
self.assertEquals(id_, id_2) self.assertEqual(id_, id_2)
class PermissionTest(testlib.RouterMixin, testlib.TestCase): class PermissionTest(testlib.RouterMixin, testlib.TestCase):
@ -120,7 +120,7 @@ class PermissionTest(testlib.RouterMixin, testlib.TestCase):
l1 = self.router.local() l1 = self.router.local()
l1.call_service(MyService, 'get_id') l1.call_service(MyService, 'get_id')
l2 = self.router.local() l2 = self.router.local()
self.assertEquals('unprivileged!', self.assertEqual('unprivileged!',
l2.call(call_service_in, l1, MyService.name(), 'unprivileged_op')) l2.call(call_service_in, l1, MyService.name(), 'unprivileged_op'))
def test_sibling_privileged_bad(self): def test_sibling_privileged_bad(self):
@ -147,8 +147,8 @@ class CloseTest(testlib.RouterMixin, testlib.TestCase):
def test_receiver_closed(self): def test_receiver_closed(self):
pool = self.klass(router=self.router, services=[]) pool = self.klass(router=self.router, services=[])
pool.stop() pool.stop()
self.assertEquals(None, pool._receiver.handle) self.assertEqual(None, pool._receiver.handle)
e = self.assertRaises(mitogen.core.ChannelError, e = self.assertRaises(mitogen.core.ChannelError,
lambda: self.router.myself().call_service(MyService, 'foobar')) lambda: self.router.myself().call_service(MyService, 'foobar'))
self.assertEquals(e.args[0], self.router.invalid_handle_msg) self.assertEqual(e.args[0], self.router.invalid_handle_msg)

@ -30,7 +30,7 @@ import testlib
# via=root, # via=root,
# ) # )
# self.assertEquals( # self.assertEqual(
# via_ssh.call(socket.gethostname), # via_ssh.call(socket.gethostname),
# via_setns.call(socket.gethostname), # via_setns.call(socket.gethostname),
# ) # )

@ -15,7 +15,7 @@ class ListenFireTest(testlib.TestCase):
lambda: latch.put('event fired')) lambda: latch.put('event fired'))
mitogen.core.fire(thing, 'event') mitogen.core.fire(thing, 'event')
self.assertEquals('event fired', latch.get()) self.assertEqual('event fired', latch.get())
self.assertTrue(latch.empty()) self.assertTrue(latch.empty())
def test_with_args(self): def test_with_args(self):
@ -23,7 +23,7 @@ class ListenFireTest(testlib.TestCase):
latch = mitogen.core.Latch() latch = mitogen.core.Latch()
mitogen.core.listen(thing, 'event', latch.put) mitogen.core.listen(thing, 'event', latch.put)
mitogen.core.fire(thing, 'event', 'event fired') mitogen.core.fire(thing, 'event', 'event fired')
self.assertEquals('event fired', latch.get()) self.assertEqual('event fired', latch.get())
self.assertTrue(latch.empty()) self.assertTrue(latch.empty())
def test_two_listeners(self): def test_two_listeners(self):
@ -33,7 +33,7 @@ class ListenFireTest(testlib.TestCase):
mitogen.core.listen(thing, 'event', latch.put) mitogen.core.listen(thing, 'event', latch.put)
mitogen.core.listen(thing, 'event', latch2.put) mitogen.core.listen(thing, 'event', latch2.put)
mitogen.core.fire(thing, 'event', 'event fired') mitogen.core.fire(thing, 'event', 'event fired')
self.assertEquals('event fired', latch.get()) self.assertEqual('event fired', latch.get())
self.assertEquals('event fired', latch2.get()) self.assertEqual('event fired', latch2.get())
self.assertTrue(latch.empty()) self.assertTrue(latch.empty())
self.assertTrue(latch2.empty()) self.assertTrue(latch2.empty())

@ -36,7 +36,7 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
) )
#context.call(mitogen.utils.log_to_file, '/tmp/log') #context.call(mitogen.utils.log_to_file, '/tmp/log')
#context.call(mitogen.utils.disable_site_packages) #context.call(mitogen.utils.disable_site_packages)
self.assertEquals(3, context.call(plain_old_module.add, 1, 2)) self.assertEqual(3, context.call(plain_old_module.add, 1, 2))
class SshTest(testlib.DockerMixin, testlib.TestCase): class SshTest(testlib.DockerMixin, testlib.TestCase):
@ -73,7 +73,7 @@ class SshTest(testlib.DockerMixin, testlib.TestCase):
self.dockerized_ssh.get_host(), self.dockerized_ssh.get_host(),
self.dockerized_ssh.port, self.dockerized_ssh.port,
) )
self.assertEquals(name, context.name) self.assertEqual(name, context.name)
def test_via_stream_name(self): def test_via_stream_name(self):
context = self.docker_ssh( context = self.docker_ssh(
@ -86,7 +86,7 @@ class SshTest(testlib.DockerMixin, testlib.TestCase):
self.dockerized_ssh.host, self.dockerized_ssh.host,
self.dockerized_ssh.port, self.dockerized_ssh.port,
) )
self.assertEquals(name, sudo.name) self.assertEqual(name, sudo.name)
def test_password_required(self): def test_password_required(self):
e = self.assertRaises(mitogen.ssh.PasswordError, e = self.assertRaises(mitogen.ssh.PasswordError,
@ -145,7 +145,7 @@ class SshTest(testlib.DockerMixin, testlib.TestCase):
check_host_keys='enforce', check_host_keys='enforce',
) )
) )
self.assertEquals(e.args[0], mitogen.ssh.hostkey_failed_msg) self.assertEqual(e.args[0], mitogen.ssh.hostkey_failed_msg)
finally: finally:
fp.close() fp.close()
@ -189,7 +189,7 @@ class BannerTest(testlib.DockerMixin, testlib.TestCase):
self.dockerized_ssh.get_host(), self.dockerized_ssh.get_host(),
self.dockerized_ssh.port, self.dockerized_ssh.port,
) )
self.assertEquals(name, context.name) self.assertEqual(name, context.name)
class StubPermissionDeniedTest(StubSshMixin, testlib.TestCase): class StubPermissionDeniedTest(StubSshMixin, testlib.TestCase):
@ -206,19 +206,19 @@ class StubCheckHostKeysTest(StubSshMixin, testlib.TestCase):
def test_check_host_keys_accept(self): def test_check_host_keys_accept(self):
# required=true, host_key_checking=accept # required=true, host_key_checking=accept
context = self.stub_ssh(STUBSSH_MODE='ask', check_host_keys='accept') context = self.stub_ssh(STUBSSH_MODE='ask', check_host_keys='accept')
self.assertEquals('1', context.call(os.getenv, 'STDERR_WAS_TTY')) self.assertEqual('1', context.call(os.getenv, 'STDERR_WAS_TTY'))
def test_check_host_keys_enforce(self): def test_check_host_keys_enforce(self):
# required=false, host_key_checking=enforce # required=false, host_key_checking=enforce
context = self.stub_ssh(check_host_keys='enforce') context = self.stub_ssh(check_host_keys='enforce')
self.assertEquals(None, context.call(os.getenv, 'STDERR_WAS_TTY')) self.assertEqual(None, context.call(os.getenv, 'STDERR_WAS_TTY'))
def test_check_host_keys_ignore(self): def test_check_host_keys_ignore(self):
# required=false, host_key_checking=ignore # required=false, host_key_checking=ignore
context = self.stub_ssh(check_host_keys='ignore') context = self.stub_ssh(check_host_keys='ignore')
self.assertEquals(None, context.call(os.getenv, 'STDERR_WAS_TTY')) self.assertEqual(None, context.call(os.getenv, 'STDERR_WAS_TTY'))
def test_password_present(self): def test_password_present(self):
# required=true, password is not None # required=true, password is not None
context = self.stub_ssh(check_host_keys='ignore', password='willick') context = self.stub_ssh(check_host_keys='ignore', password='willick')
self.assertEquals('1', context.call(os.getenv, 'STDERR_WAS_TTY')) self.assertEqual('1', context.call(os.getenv, 'STDERR_WAS_TTY'))

@ -20,8 +20,8 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
def test_basic(self): def test_basic(self):
context, argv = self.run_su() context, argv = self.run_su()
self.assertEquals(argv[1], 'root') self.assertEqual(argv[1], 'root')
self.assertEquals(argv[2], '-c') self.assertEqual(argv[2], '-c')
class SuTest(testlib.DockerMixin, testlib.TestCase): class SuTest(testlib.DockerMixin, testlib.TestCase):
@ -64,4 +64,4 @@ class SuTest(testlib.DockerMixin, testlib.TestCase):
password='has_sudo_password', password='has_sudo_password',
) )
context = self.router.su(via=ssh, password='rootpassword') context = self.router.su(via=ssh, password='rootpassword')
self.assertEquals(0, context.call(os.getuid)) self.assertEqual(0, context.call(os.getuid))

@ -21,7 +21,7 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
def test_basic(self): def test_basic(self):
context, argv = self.run_sudo() context, argv = self.run_sudo()
self.assertEquals(argv[:4], [ self.assertEqual(argv[:4], [
self.sudo_path, self.sudo_path,
'-u', 'root', '-u', 'root',
'--' '--'
@ -32,7 +32,7 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
selinux_type='setype', selinux_type='setype',
selinux_role='serole', selinux_role='serole',
) )
self.assertEquals(argv[:8], [ self.assertEqual(argv[:8], [
self.sudo_path, self.sudo_path,
'-u', 'root', '-u', 'root',
'-r', 'serole', '-r', 'serole',
@ -44,7 +44,7 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
context, argv = self.run_sudo( context, argv = self.run_sudo(
sudo_args=['--type', 'setype', '--role', 'serole', '--user', 'user'] sudo_args=['--type', 'setype', '--role', 'serole', '--user', 'user']
) )
self.assertEquals(argv[:8], [ self.assertEqual(argv[:8], [
self.sudo_path, self.sudo_path,
'-u', 'user', '-u', 'user',
'-r', 'serole', '-r', 'serole',
@ -57,7 +57,7 @@ class ConstructorTest(testlib.RouterMixin, testlib.TestCase):
os.environ['PREHISTORIC_SUDO'] = '1' os.environ['PREHISTORIC_SUDO'] = '1'
try: try:
context, argv = self.run_sudo() context, argv = self.run_sudo()
self.assertEquals('1', context.call(os.getenv, 'PREHISTORIC_SUDO')) self.assertEqual('1', context.call(os.getenv, 'PREHISTORIC_SUDO'))
finally: finally:
del os.environ['PREHISTORIC_SUDO'] del os.environ['PREHISTORIC_SUDO']

@ -116,6 +116,13 @@ def threading__thread_is_alive(thread):
return thread.isAlive() return thread.isAlive()
def threading_thread_name(thread):
try:
return thread.name # Available in Python 2.6+
except AttributeError:
return thread.getName() # Deprecated in Python 3.10+
def wait_for_port( def wait_for_port(
host, host,
port, port,
@ -349,7 +356,7 @@ class TestCase(unittest.TestCase):
def _teardown_check_threads(self): def _teardown_check_threads(self):
counts = {} counts = {}
for thread in threading.enumerate(): for thread in threading.enumerate():
name = thread.getName() name = threading_thread_name(thread)
# Python 2.4: enumerate() may return stopped threads. # Python 2.4: enumerate() may return stopped threads.
assert \ assert \
not threading__thread_is_alive(thread) \ not threading__thread_is_alive(thread) \
@ -367,9 +374,15 @@ class TestCase(unittest.TestCase):
mitogen.core.Latch._on_fork() mitogen.core.Latch._on_fork()
if get_fd_count() != self._fd_count_before: if get_fd_count() != self._fd_count_before:
if sys.platform == 'linux': if sys.platform == 'linux':
os.system('lsof +E -w -p %i | grep -vw mem' % (os.getpid(),)) subprocess.check_call(
'lsof +E -w -p %i | grep -vw mem' % (os.getpid(),),
shell=True,
)
else: else:
os.system('lsof -w -p %i | grep -vw mem' % (os.getpid(),)) subprocess.check_call(
'lsof -w -p %i | grep -vw mem' % (os.getpid(),),
shell=True,
)
assert 0, "%s leaked FDs. Count before: %s, after: %s" % ( assert 0, "%s leaked FDs. Count before: %s, after: %s" % (
self, self._fd_count_before, get_fd_count(), self, self._fd_count_before, get_fd_count(),
) )
@ -403,12 +416,18 @@ class TestCase(unittest.TestCase):
return return
print('Leaked children of unit test process:') print('Leaked children of unit test process:')
os.system('ps -o "user,pid,%%cpu,%%mem,vsz,rss,tty,stat,start,time,command" -ww -p %s' subprocess.check_call(
% (','.join(str(p.pid) for p in children_leaked),)) ['ps', '-o', 'user,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,command', '-ww', '-p',
','.join(str(p.pid) for p in children_leaked),
],
)
if self._children_before: if self._children_before:
print('Pre-existing children of unit test process:') print('Pre-existing children of unit test process:')
os.system('ps -o "user,pid,%%cpu,%%mem,vsz,rss,tty,stat,start,time,command" -ww -p %s' subprocess.check_call(
% (','.join(str(p.pid) for p in self._children_before),)) ['ps', '-o', 'user,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,command', '-ww', '-p',
','.join(str(p.pid) for p in self._children_before),
],
)
assert 0, "%s leaked still-running subprocesses." % (self,) assert 0, "%s leaked still-running subprocesses." % (self,)
def tearDown(self): def tearDown(self):

@ -18,49 +18,49 @@ class TimerListMixin(object):
class GetTimeoutTest(TimerListMixin, testlib.TestCase): class GetTimeoutTest(TimerListMixin, testlib.TestCase):
def test_empty(self): def test_empty(self):
self.assertEquals(None, self.list.get_timeout()) self.assertEqual(None, self.list.get_timeout())
def test_one_event(self): def test_one_event(self):
self.list.schedule(2, lambda: None) self.list.schedule(2, lambda: None)
self.list._now = lambda: 1 self.list._now = lambda: 1
self.assertEquals(1, self.list.get_timeout()) self.assertEqual(1, self.list.get_timeout())
def test_two_events_same_moment(self): def test_two_events_same_moment(self):
self.list.schedule(2, lambda: None) self.list.schedule(2, lambda: None)
self.list.schedule(2, lambda: None) self.list.schedule(2, lambda: None)
self.list._now = lambda: 1 self.list._now = lambda: 1
self.assertEquals(1, self.list.get_timeout()) self.assertEqual(1, self.list.get_timeout())
def test_two_events(self): def test_two_events(self):
self.list.schedule(2, lambda: None) self.list.schedule(2, lambda: None)
self.list.schedule(3, lambda: None) self.list.schedule(3, lambda: None)
self.list._now = lambda: 1 self.list._now = lambda: 1
self.assertEquals(1, self.list.get_timeout()) self.assertEqual(1, self.list.get_timeout())
def test_two_events_expired(self): def test_two_events_expired(self):
self.list.schedule(2, lambda: None) self.list.schedule(2, lambda: None)
self.list.schedule(3, lambda: None) self.list.schedule(3, lambda: None)
self.list._now = lambda: 3 self.list._now = lambda: 3
self.assertEquals(0, self.list.get_timeout()) self.assertEqual(0, self.list.get_timeout())
def test_two_events_in_past(self): def test_two_events_in_past(self):
self.list.schedule(2, lambda: None) self.list.schedule(2, lambda: None)
self.list.schedule(3, lambda: None) self.list.schedule(3, lambda: None)
self.list._now = lambda: 30 self.list._now = lambda: 30
self.assertEquals(0, self.list.get_timeout()) self.assertEqual(0, self.list.get_timeout())
def test_two_events_in_past(self): def test_two_events_in_past(self):
self.list.schedule(2, lambda: None) self.list.schedule(2, lambda: None)
self.list.schedule(3, lambda: None) self.list.schedule(3, lambda: None)
self.list._now = lambda: 30 self.list._now = lambda: 30
self.assertEquals(0, self.list.get_timeout()) self.assertEqual(0, self.list.get_timeout())
def test_one_cancelled(self): def test_one_cancelled(self):
t1 = self.list.schedule(2, lambda: None) t1 = self.list.schedule(2, lambda: None)
t2 = self.list.schedule(3, lambda: None) t2 = self.list.schedule(3, lambda: None)
self.list._now = lambda: 0 self.list._now = lambda: 0
t1.cancel() t1.cancel()
self.assertEquals(3, self.list.get_timeout()) self.assertEqual(3, self.list.get_timeout())
def test_two_cancelled(self): def test_two_cancelled(self):
t1 = self.list.schedule(2, lambda: None) t1 = self.list.schedule(2, lambda: None)
@ -68,30 +68,30 @@ class GetTimeoutTest(TimerListMixin, testlib.TestCase):
self.list._now = lambda: 0 self.list._now = lambda: 0
t1.cancel() t1.cancel()
t2.cancel() t2.cancel()
self.assertEquals(None, self.list.get_timeout()) self.assertEqual(None, self.list.get_timeout())
class ScheduleTest(TimerListMixin, testlib.TestCase): class ScheduleTest(TimerListMixin, testlib.TestCase):
def test_in_past(self): def test_in_past(self):
self.list._now = lambda: 30 self.list._now = lambda: 30
timer = self.list.schedule(29, lambda: None) timer = self.list.schedule(29, lambda: None)
self.assertEquals(29, timer.when) self.assertEqual(29, timer.when)
self.assertEquals(0, self.list.get_timeout()) self.assertEqual(0, self.list.get_timeout())
def test_in_future(self): def test_in_future(self):
self.list._now = lambda: 30 self.list._now = lambda: 30
timer = self.list.schedule(31, lambda: None) timer = self.list.schedule(31, lambda: None)
self.assertEquals(31, timer.when) self.assertEqual(31, timer.when)
self.assertEquals(1, self.list.get_timeout()) self.assertEqual(1, self.list.get_timeout())
def test_same_moment(self): def test_same_moment(self):
self.list._now = lambda: 30 self.list._now = lambda: 30
timer = self.list.schedule(31, lambda: None) timer = self.list.schedule(31, lambda: None)
timer2 = self.list.schedule(31, lambda: None) timer2 = self.list.schedule(31, lambda: None)
self.assertEquals(31, timer.when) self.assertEqual(31, timer.when)
self.assertEquals(31, timer2.when) self.assertEqual(31, timer2.when)
self.assertTrue(timer is not timer2) self.assertTrue(timer is not timer2)
self.assertEquals(1, self.list.get_timeout()) self.assertEqual(1, self.list.get_timeout())
class ExpireTest(TimerListMixin, testlib.TestCase): class ExpireTest(TimerListMixin, testlib.TestCase):
@ -100,7 +100,7 @@ class ExpireTest(TimerListMixin, testlib.TestCase):
self.assertTrue(timer.active) self.assertTrue(timer.active)
self.list._now = lambda: 30 self.list._now = lambda: 30
self.list.expire() self.list.expire()
self.assertEquals(1, len(timer.func.mock_calls)) self.assertEqual(1, len(timer.func.mock_calls))
self.assertFalse(timer.active) self.assertFalse(timer.active)
def test_in_future(self): def test_in_future(self):
@ -108,7 +108,7 @@ class ExpireTest(TimerListMixin, testlib.TestCase):
self.assertTrue(timer.active) self.assertTrue(timer.active)
self.list._now = lambda: 28 self.list._now = lambda: 28
self.list.expire() self.list.expire()
self.assertEquals(0, len(timer.func.mock_calls)) self.assertEqual(0, len(timer.func.mock_calls))
self.assertTrue(timer.active) self.assertTrue(timer.active)
def test_same_moment(self): def test_same_moment(self):
@ -118,8 +118,8 @@ class ExpireTest(TimerListMixin, testlib.TestCase):
self.assertTrue(timer2.active) self.assertTrue(timer2.active)
self.list._now = lambda: 29 self.list._now = lambda: 29
self.list.expire() self.list.expire()
self.assertEquals(1, len(timer.func.mock_calls)) self.assertEqual(1, len(timer.func.mock_calls))
self.assertEquals(1, len(timer2.func.mock_calls)) self.assertEqual(1, len(timer2.func.mock_calls))
self.assertFalse(timer.active) self.assertFalse(timer.active)
self.assertFalse(timer2.active) self.assertFalse(timer2.active)
@ -127,11 +127,11 @@ class ExpireTest(TimerListMixin, testlib.TestCase):
self.list._now = lambda: 29 self.list._now = lambda: 29
timer = self.list.schedule(29, mock.Mock()) timer = self.list.schedule(29, mock.Mock())
timer.cancel() timer.cancel()
self.assertEquals(None, self.list.get_timeout()) self.assertEqual(None, self.list.get_timeout())
self.list._now = lambda: 29 self.list._now = lambda: 29
self.list.expire() self.list.expire()
self.assertEquals(0, len(timer.func.mock_calls)) self.assertEqual(0, len(timer.func.mock_calls))
self.assertEquals(None, self.list.get_timeout()) self.assertEqual(None, self.list.get_timeout())
class CancelTest(TimerListMixin, testlib.TestCase): class CancelTest(TimerListMixin, testlib.TestCase):
@ -142,7 +142,7 @@ class CancelTest(TimerListMixin, testlib.TestCase):
timer.cancel() timer.cancel()
self.assertFalse(timer.active) self.assertFalse(timer.active)
self.list.expire() self.list.expire()
self.assertEquals(0, len(timer.func.mock_calls)) self.assertEqual(0, len(timer.func.mock_calls))
def test_double_cancel(self): def test_double_cancel(self):
self.list._now = lambda: 29 self.list._now = lambda: 29
@ -152,7 +152,7 @@ class CancelTest(TimerListMixin, testlib.TestCase):
timer.cancel() timer.cancel()
self.assertFalse(timer.active) self.assertFalse(timer.active)
self.list.expire() self.list.expire()
self.assertEquals(0, len(timer.func.mock_calls)) self.assertEqual(0, len(timer.func.mock_calls))
@mitogen.core.takes_econtext @mitogen.core.takes_econtext

@ -19,5 +19,5 @@ class TwoThreeCompatTest(testlib.RouterMixin, testlib.TestCase):
target = self.router.local(python_path=self.python_path) target = self.router.local(python_path=self.python_path)
spare2, = target.call(simple_pkg.ping.ping, spare) spare2, = target.call(simple_pkg.ping.ping, spare)
self.assertEquals(spare.context_id, spare2.context_id) self.assertEqual(spare.context_id, spare2.context_id)
self.assertEquals(spare.name, spare2.name) self.assertEqual(spare.name, spare2.name)

@ -29,26 +29,26 @@ class BlobTest(testlib.TestCase):
def test_repr(self): def test_repr(self):
blob = self.make() blob = self.make()
self.assertEquals('[blob: 128 bytes]', repr(blob)) self.assertEqual('[blob: 128 bytes]', repr(blob))
def test_decays_on_constructor(self): def test_decays_on_constructor(self):
blob = self.make() blob = self.make()
self.assertEquals(b('x') * 128, mitogen.core.BytesType(blob)) self.assertEqual(b('x') * 128, mitogen.core.BytesType(blob))
def test_decays_on_write(self): def test_decays_on_write(self):
blob = self.make() blob = self.make()
io = BytesIO() io = BytesIO()
io.write(blob) io.write(blob)
self.assertEquals(128, io.tell()) self.assertEqual(128, io.tell())
self.assertEquals(b('x') * 128, io.getvalue()) self.assertEqual(b('x') * 128, io.getvalue())
def test_message_roundtrip(self): def test_message_roundtrip(self):
blob = self.make() blob = self.make()
msg = mitogen.core.Message.pickled(blob) msg = mitogen.core.Message.pickled(blob)
blob2 = msg.unpickle() blob2 = msg.unpickle()
self.assertEquals(type(blob), type(blob2)) self.assertEqual(type(blob), type(blob2))
self.assertEquals(repr(blob), repr(blob2)) self.assertEqual(repr(blob), repr(blob2))
self.assertEquals(mitogen.core.BytesType(blob), self.assertEqual(mitogen.core.BytesType(blob),
mitogen.core.BytesType(blob2)) mitogen.core.BytesType(blob2))
@ -60,26 +60,26 @@ class SecretTest(testlib.TestCase):
def test_repr(self): def test_repr(self):
secret = self.make() secret = self.make()
self.assertEquals('[secret]', repr(secret)) self.assertEqual('[secret]', repr(secret))
def test_decays_on_constructor(self): def test_decays_on_constructor(self):
secret = self.make() secret = self.make()
self.assertEquals('password', mitogen.core.UnicodeType(secret)) self.assertEqual('password', mitogen.core.UnicodeType(secret))
def test_decays_on_write(self): def test_decays_on_write(self):
secret = self.make() secret = self.make()
io = StringIO() io = StringIO()
io.write(secret) io.write(secret)
self.assertEquals(8, io.tell()) self.assertEqual(8, io.tell())
self.assertEquals('password', io.getvalue()) self.assertEqual('password', io.getvalue())
def test_message_roundtrip(self): def test_message_roundtrip(self):
secret = self.make() secret = self.make()
msg = mitogen.core.Message.pickled(secret) msg = mitogen.core.Message.pickled(secret)
secret2 = msg.unpickle() secret2 = msg.unpickle()
self.assertEquals(type(secret), type(secret2)) self.assertEqual(type(secret), type(secret2))
self.assertEquals(repr(secret), repr(secret2)) self.assertEqual(repr(secret), repr(secret2))
self.assertEquals(mitogen.core.b(secret), self.assertEqual(mitogen.core.b(secret),
mitogen.core.b(secret2)) mitogen.core.b(secret2))
@ -88,30 +88,30 @@ class KwargsTest(testlib.TestCase):
def test_empty(self): def test_empty(self):
kw = self.klass({}) kw = self.klass({})
self.assertEquals({}, kw) self.assertEqual({}, kw)
self.assertEquals('Kwargs({})', repr(kw)) self.assertEqual('Kwargs({})', repr(kw))
klass, (dct,) = kw.__reduce__() klass, (dct,) = kw.__reduce__()
self.assertTrue(klass is self.klass) self.assertTrue(klass is self.klass)
self.assertTrue(type(dct) is dict) self.assertTrue(type(dct) is dict)
self.assertEquals({}, dct) self.assertEqual({}, dct)
@unittest.skipIf(condition=(sys.version_info >= (2, 6)), @unittest.skipIf(condition=(sys.version_info >= (2, 6)),
reason='py<2.6 only') reason='py<2.6 only')
def test_bytes_conversion(self): def test_bytes_conversion(self):
kw = self.klass({u'key': 123}) kw = self.klass({u'key': 123})
self.assertEquals({'key': 123}, kw) self.assertEqual({'key': 123}, kw)
self.assertEquals("Kwargs({'key': 123})", repr(kw)) self.assertEqual("Kwargs({'key': 123})", repr(kw))
@unittest.skipIf(condition=not mitogen.core.PY3, @unittest.skipIf(condition=not mitogen.core.PY3,
reason='py3 only') reason='py3 only')
def test_unicode_conversion(self): def test_unicode_conversion(self):
kw = self.klass({mitogen.core.b('key'): 123}) kw = self.klass({mitogen.core.b('key'): 123})
self.assertEquals({u'key': 123}, kw) self.assertEqual({u'key': 123}, kw)
self.assertEquals("Kwargs({'key': 123})", repr(kw)) self.assertEqual("Kwargs({'key': 123})", repr(kw))
klass, (dct,) = kw.__reduce__() klass, (dct,) = kw.__reduce__()
self.assertTrue(klass is self.klass) self.assertTrue(klass is self.klass)
self.assertTrue(type(dct) is dict) self.assertTrue(type(dct) is dict)
self.assertEquals({u'key': 123}, dct) self.assertEqual({u'key': 123}, dct)
key, = dct key, = dct
self.assertTrue(type(key) is mitogen.core.UnicodeType) self.assertTrue(type(key) is mitogen.core.UnicodeType)
@ -125,20 +125,20 @@ class ToTextTest(testlib.TestCase):
def test_bytes(self): def test_bytes(self):
s = self.func(mitogen.core.b('bytes')) s = self.func(mitogen.core.b('bytes'))
self.assertEquals(mitogen.core.UnicodeType, type(s)) self.assertEqual(mitogen.core.UnicodeType, type(s))
self.assertEquals(s, u'bytes') self.assertEqual(s, u'bytes')
def test_unicode(self): def test_unicode(self):
s = self.func(u'text') s = self.func(u'text')
self.assertEquals(mitogen.core.UnicodeType, type(s)) self.assertEqual(mitogen.core.UnicodeType, type(s))
self.assertEquals(s, u'text') self.assertEqual(s, u'text')
def test_adorned_unicode(self): def test_adorned_unicode(self):
s = self.func(AdornedUnicode(u'text')) s = self.func(AdornedUnicode(u'text'))
self.assertEquals(mitogen.core.UnicodeType, type(s)) self.assertEqual(mitogen.core.UnicodeType, type(s))
self.assertEquals(s, u'text') self.assertEqual(s, u'text')
def test_integer(self): def test_integer(self):
s = self.func(123) s = self.func(123)
self.assertEquals(mitogen.core.UnicodeType, type(s)) self.assertEqual(mitogen.core.UnicodeType, type(s))
self.assertEquals(s, u'123') self.assertEqual(s, u'123')

@ -96,12 +96,12 @@ class ClientTest(testlib.TestCase):
def _test_simple_client(self, path): def _test_simple_client(self, path):
router, context = self._try_connect(path) router, context = self._try_connect(path)
try: try:
self.assertEquals(0, context.context_id) self.assertEqual(0, context.context_id)
self.assertEquals(1, mitogen.context_id) self.assertEqual(1, mitogen.context_id)
self.assertEquals(0, mitogen.parent_id) self.assertEqual(0, mitogen.parent_id)
resp = context.call_service(service_name=MyService, method_name='ping') resp = context.call_service(service_name=MyService, method_name='ping')
self.assertEquals(mitogen.context_id, resp['src_id']) self.assertEqual(mitogen.context_id, resp['src_id'])
self.assertEquals(0, resp['auth_id']) self.assertEqual(0, resp['auth_id'])
finally: finally:
router.broker.shutdown() router.broker.shutdown()
router.broker.join() router.broker.join()

Loading…
Cancel
Save