Skip to content

Non-deterministic test failures in vo.samp #2064

@mdboom

Description

@mdboom

@astrofrog: You've probably seen some errors of this type already, but I thought it might be worth documenting them in an issue.

_________________ TestStandardProfileHTTPSHubClient.test_main __________________

self = <astropy.vo.samp.tests.test_standard_profile.TestStandardProfileHTTPSHubClient object at 0xf0969d0>

�[1m    def test_main(self):�[0m
�[1m    �[0m
�[1m        self.client1_id = self.client1.get_public_id()�[0m
�[1m        self.client2_id = self.client2.get_public_id()�[0m
�[1m    �[0m
�[1m        self.metadata1 = {"samp.name": "Client 1",�[0m
�[1m                          "samp.description.text": "Client 1 Description",�[0m
�[1m                          "client.version": "1.1"}�[0m
�[1m    �[0m
�[1m        self.metadata2 = {"samp.name": "Client 2",�[0m
�[1m                          "samp.description.text": "Client 2 Description",�[0m
�[1m                          "client.version": "1.2"}�[0m
�[1m    �[0m
�[1m        # Check that the clients are connected�[0m
�[1m    �[0m
�[1m        assert self.client1.is_connected�[0m
�[1m        assert self.client2.is_connected�[0m
�[1m    �[0m
�[1m        # Check that ping works�[0m
�[1m    �[0m
�[1m        self.client1.ping()�[0m
�[1m        self.client2.ping()�[0m
�[1m    �[0m
�[1m        # Check that get_registered_clients works as expected.�[0m
�[1m    �[0m
�[1m        assert self.client1_id not in self.client1.get_registered_clients()�[0m
�[1m        assert self.client2_id in self.client1.get_registered_clients()�[0m
�[1m        assert self.client1_id in self.client2.get_registered_clients()�[0m
�[1m        assert self.client2_id not in self.client2.get_registered_clients()�[0m
�[1m    �[0m
�[1m        # Check that get_metadata works as expected�[0m
�[1m    �[0m
�[1m        assert self.client1.get_metadata(self.client1_id) == {}�[0m
�[1m        assert self.client1.get_metadata(self.client2_id) == {}�[0m
�[1m        assert self.client2.get_metadata(self.client1_id) == {}�[0m
�[1m        assert self.client2.get_metadata(self.client2_id) == {}�[0m
�[1m    �[0m
�[1m        self.client1.declare_metadata(self.metadata1)�[0m
�[1m    �[0m
�[1m        assert self.client1.get_metadata(self.client1_id) == self.metadata1�[0m
�[1m        assert self.client2.get_metadata(self.client1_id) == self.metadata1�[0m
�[1m        assert self.client1.get_metadata(self.client2_id) == {}�[0m
�[1m        assert self.client2.get_metadata(self.client2_id) == {}�[0m
�[1m    �[0m
�[1m        self.client2.declare_metadata(self.metadata2)�[0m
�[1m    �[0m
�[1m        assert self.client1.get_metadata(self.client1_id) == self.metadata1�[0m
�[1m        assert self.client2.get_metadata(self.client1_id) == self.metadata1�[0m
�[1m        assert self.client1.get_metadata(self.client2_id) == self.metadata2�[0m
�[1m        assert self.client2.get_metadata(self.client2_id) == self.metadata2�[0m
�[1m    �[0m
�[1m        # Check that, without subscriptions, sending a notification from one�[0m
�[1m        # client to another raises an error.�[0m
�[1m    �[0m
�[1m        message = {}�[0m
�[1m        message['samp.mtype'] = "table.load.votable"�[0m
�[1m        message['samp.params'] = {}�[0m
�[1m    �[0m
�[1m        with pytest.raises(SAMPProxyError):�[0m
�[1m            self.client1.notify(self.client2_id, message)�[0m
�[1m    �[0m
�[1m        # Check that there are no currently active subscriptions�[0m
�[1m    �[0m
�[1m        assert self.client1.get_subscribed_clients('table.load.votable') == {}�[0m
�[1m        assert self.client2.get_subscribed_clients('table.load.votable') == {}�[0m
�[1m    �[0m
�[1m        # We now test notifications and calls�[0m
�[1m    �[0m
�[1m        rec1 = Receiver(self.client1)�[0m
�[1m        rec2 = Receiver(self.client2)�[0m
�[1m    �[0m
�[1m        self.client2.bind_receive_notification('table.load.votable',�[0m
�[1m                                               rec2.receive_notification)�[0m
�[1m    �[0m
�[1m        self.client2.bind_receive_call('table.load.votable',�[0m
�[1m                                       rec2.receive_call)�[0m
�[1m    �[0m
�[1m        self.client1.bind_receive_response('test-tag', rec1.receive_response)�[0m
�[1m    �[0m
�[1m        # Check resulting subscriptions�[0m
�[1m    �[0m
�[1m        assert self.client1.get_subscribed_clients('table.load.votable') == {self.client2_id: {}}�[0m
�[1m        assert self.client2.get_subscribed_clients('table.load.votable') == {}�[0m
�[1m    �[0m
�[1m        assert 'table.load.votable' in self.client1.get_subscriptions(self.client2_id)�[0m
�[1m        assert 'table.load.votable' in self.client2.get_subscriptions(self.client2_id)�[0m
�[1m    �[0m
�[1m        # Once we have finished with the calls and notifications, we will�[0m
�[1m        # check the data got across correctly.�[0m
�[1m    �[0m
�[1m        # Test notify�[0m
�[1m    �[0m
�[1m        params = random_params(self.tmpdir)�[0m
�[1m        self.client1.notify(self.client2.get_public_id(),�[0m
�[1m                            {'samp.mtype':'table.load.votable',�[0m
�[1m                             'samp.params':params})�[0m
�[1m    �[0m
�[1m        assert_output('table.load.votable', self.client2.get_private_key(),�[0m
�[1m                      self.client1_id, params, timeout=60)�[0m
�[1m    �[0m
�[1m        params = random_params(self.tmpdir)�[0m
�[1m        self.client1.enotify(self.client2.get_public_id(),�[0m
�[1m                             "table.load.votable", **params)�[0m
�[1m    �[0m
�[1m        assert_output('table.load.votable', self.client2.get_private_key(),�[0m
�[1m                      self.client1_id, params, timeout=60)�[0m
�[1m    �[0m
�[1m        # Test notify_all�[0m
�[1m    �[0m
�[1m        params = random_params(self.tmpdir)�[0m
�[1m        self.client1.notify_all({'samp.mtype':'table.load.votable',�[0m
�[1m                                 'samp.params':params})�[0m
�[1m    �[0m
�[1m        assert_output('table.load.votable', self.client2.get_private_key(),�[0m
�[1m                      self.client1_id, params, timeout=60)�[0m
�[1m    �[0m
�[1m        params = random_params(self.tmpdir)�[0m
�[1m        self.client1.enotify_all("table.load.votable", **params)�[0m
�[1m    �[0m
�[1m        assert_output('table.load.votable', self.client2.get_private_key(),�[0m
�[1m                      self.client1_id, params, timeout=60)�[0m
�[1m    �[0m
�[1m        # Test call�[0m
�[1m    �[0m
�[1m        params = random_params(self.tmpdir)�[0m
�[1m        self.client1.call(self.client2.get_public_id(), 'test-tag',�[0m
�[1m                            {'samp.mtype':'table.load.votable',�[0m
�[1m                             'samp.params':params})�[0m
�[1m    �[0m
�[1m        assert_output('table.load.votable', self.client2.get_private_key(),�[0m
�[1m                      self.client1_id, params, timeout=60)�[0m
�[1m    �[0m
�[1m        params = random_params(self.tmpdir)�[0m
�[1m        self.client1.ecall(self.client2.get_public_id(), 'test-tag',�[0m
�[1m                           "table.load.votable", **params)�[0m
�[1m    �[0m
�[1m        assert_output('table.load.votable', self.client2.get_private_key(),�[0m
�[1m>                     self.client1_id, params, timeout=60)�[0m

astropy/vo/samp/tests/test_standard_profile.py:207: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

mtype = 'table.load.votable'
private_key = '3beab3d6-903e-11e3-a1ca-9fe19912b5cc', sender_id = 'cli#1'
params = {'parameter1': 'abcde', 'parameter2': 1331, 'verification_file': '/tmp/tmpys6o59/PTNlY581naU4djoi'}
timeout = 60

�[1m    def assert_output(mtype, private_key, sender_id, params, timeout=None):�[0m
�[1m        filename = params['verification_file']�[0m
�[1m        start = time.time()�[0m
�[1m        while True:�[0m
�[1m            try:�[0m
�[1m                with open(filename, 'rb') as f:�[0m
�[1m                    rec_mtype = pickle.load(f)�[0m
�[1m                    rec_private_key = pickle.load(f)�[0m
�[1m                    rec_sender_id = pickle.load(f)�[0m
�[1m                    rec_params = pickle.load(f)�[0m
�[1m                break�[0m
�[1m            except (IOError, EOFError):�[0m
�[1m                if timeout is not None and time.time() - start > timeout:�[0m
�[1m>                   raise Exception("Timeout while waiting for file: {0}".format(filename))�[0m
�[1m�[31mE                   Exception: Timeout while waiting for file: /tmp/tmpys6o59/PTNlY581naU4djoi�[0m

astropy/vo/samp/tests/test_helpers.py:36: Exception
------------------------------- Captured stdout --------------------------------
INFO: Hub set for using SSL. [astropy.vo.samp.hub]
INFO: Hub started [astropy.vo.samp.hub]
�[1m�[31m======= 1 failed, 5060 passed, 86 skipped, 10 xfailed in 417.32 seconds ========�[0m

https://travis-ci.org/astropy/astropy/jobs/18432543

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions