gwcelery/tests/test_tasks_external_triggers.py:: test_handle_create_grb_event access network, triggers SocketBlockedError
A test in test_tasks_external_triggers
is attempting to access the network. Network access in tests disabled or limited by pytest-socket. Tests should generally access mocked data sources and not use the actual network.
The relevant part of the error message (reproduced in its entirety below) is:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'pytest_socket.disable_socket.<locals>.GuardedSocket'>
family = <AddressFamily.AF_INET: 2>, type = <SocketKind.SOCK_STREAM: 1>
proto = 6, fileno = None
def __new__(cls, family=-1, type=-1, proto=-1, fileno=None):
if _is_unix_socket(family) and allow_unix_socket:
return super().__new__(cls, family, type, proto, fileno)
> raise SocketBlockedError()
E pytest_socket.SocketBlockedError: A test tried to use socket.socket.
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/pytest_socket.py:89: SocketBlockedError
There is some chatter from pytest about TypeError: File.close() missing 1 required positional argument: 'self'
, but that's a red herring.
gwcelery/tests/test_tasks_external_triggers.py F
=================================== FAILURES ===================================
____________ test_handle_create_grb_event[Fermi-fermi_grb_gcn.xml] _____________
mock_create_event = <MagicMock name='run' id='140706869802832'>
mock_upload = <MagicMock name='run' id='140706921939984'>
mock_json = <MagicMock name='dqr_json' id='140706922443088'>
mock_get_upload_external_skymap = <MagicMock name='run' id='140706869808336'>
mock_create_upload_external_skymap = <MagicMock name='run' id='140706922434704'>
pipeline = 'Fermi', path = 'fermi_grb_gcn.xml'
@pytest.mark.parametrize('pipeline, path',
[['Fermi', 'fermi_grb_gcn.xml'],
['INTEGRAL', 'integral_grb_gcn.xml'],
['INTEGRAL_MDC', 'integral_mdc_gcn.xml']])
@patch('gwcelery.tasks.external_skymaps.create_upload_external_skymap.run')
@patch('gwcelery.tasks.external_skymaps.get_upload_external_skymap.run')
@patch('gwcelery.tasks.detchar.dqr_json', return_value='dqrjson')
@patch('gwcelery.tasks.gracedb.upload.run')
@patch('gwcelery.tasks.gracedb.create_event.run', return_value={
'graceid': 'E1', 'gpstime': 1, 'instruments': '', 'pipeline': 'Fermi',
'search': 'GRB',
'extra_attributes': {'GRB': {'trigger_duration': 1, 'trigger_id': 123,
'ra': 0., 'dec': 0., 'error_radius': 10.}},
'links': {'self': 'https://gracedb.ligo.org/events/E356793/'}})
def test_handle_create_grb_event(mock_create_event,
mock_upload, mock_json,
mock_get_upload_external_skymap,
mock_create_upload_external_skymap,
pipeline, path):
if pipeline == 'INTEGRAL':
with resources.as_file(resources.files(data).joinpath(path)) as fname:
root = etree.parse(fname)
root.find("./What/Param[@name='TrigID']").attrib['value'] = \
'123456'.encode()
text = etree.tostring(root, xml_declaration=True, encoding="UTF-8")
else:
text = read_binary(data, path)
> external_triggers.handle_grb_gcn(payload=text)
gwcelery/tests/test_tasks_external_triggers.py:40:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/local.py:182: in __call__
return self._get_current_object()(*a, **kw)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/task.py:411: in __call__
return self.run(*args, **kwargs)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/autoretry.py:38: in run
return task._orig_run(*args, **kwargs)
gwcelery/tasks/external_triggers.py:202: in handle_grb_gcn
).delay()
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/canvas.py:353: in delay
return self.apply_async(partial_args, partial_kwargs)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/canvas.py:1034: in apply_async
return self.apply(args, kwargs, **options)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/canvas.py:1271: in apply
res = task.clone(fargs, fkwargs).apply(
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/canvas.py:367: in apply
return self.type.apply(args, kwargs, **options)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/task.py:819: in apply
ret = tracer(task_id, args, kwargs, request)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/trace.py:494: in trace_task
I, R, state, retval = on_error(task_request, exc)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/trace.py:477: in trace_task
R = retval = fun(*args, **kwargs)
gwcelery/tasks/external_triggers.py:719: in _create_replace_external_event_and_skymap
).delay()
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/canvas.py:353: in delay
return self.apply_async(partial_args, partial_kwargs)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/canvas.py:1034: in apply_async
return self.apply(args, kwargs, **options)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/canvas.py:1271: in apply
res = task.clone(fargs, fkwargs).apply(
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/canvas.py:1625: in apply
return app.GroupResult(group_id, [
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/canvas.py:1626: in <listcomp>
sig.apply(args=args, kwargs=kwargs, **options) for sig, _, _ in tasks
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/canvas.py:367: in apply
return self.type.apply(args, kwargs, **options)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/task.py:819: in apply
ret = tracer(task_id, args, kwargs, request)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/trace.py:494: in trace_task
I, R, state, retval = on_error(task_request, exc)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/trace.py:477: in trace_task
R = retval = fun(*args, **kwargs)
gwcelery/tasks/external_triggers.py:579: in _launch_external_detchar
detchar.check_vectors.si(event, event['graceid'], start, end).delay()
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/canvas.py:353: in delay
return self.apply_async(partial_args, partial_kwargs)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/canvas.py:400: in apply_async
return _apply(args, kwargs, **options)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/task.py:591: in apply_async
return self.apply(args, kwargs, task_id=task_id or uuid(),
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/task.py:819: in apply
ret = tracer(task_id, args, kwargs, request)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/trace.py:494: in trace_task
I, R, state, retval = on_error(task_request, exc)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/trace.py:477: in trace_task
R = retval = fun(*args, **kwargs)
gwcelery/tasks/detchar.py:467: in check_vectors
caches = {ifo: create_cache(ifo, start, end) for ifo in ifos}
gwcelery/tasks/detchar.py:467: in <dictcomp>
caches = {ifo: create_cache(ifo, start, end) for ifo in ifos}
gwcelery/tasks/detchar.py:91: in create_cache
urls = find_urls(ifo[0], high_latency, start, end)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/gwdatafind/ui.py:706: in find_urls
urls = _get_urls(qurl, session=session, **request_kw)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/gwdatafind/ui.py:451: in _get_urls
urls = get_json(qurl, **kwargs)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/gwdatafind/ui.py:147: in get_json
response = get(*args, **kwargs)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/gwdatafind/ui.py:125: in get
return _get(url, *args, **kwargs)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/igwn_auth_utils/requests.py:643: in _request_wrapper
return request(method, url, *args, session=session, **kwargs)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/igwn_auth_utils/requests.py:607: in request
return session.request(method, url, *args, **kwargs)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/igwn_auth_utils/requests.py:541: in request
return super().request(
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/requests/sessions.py:589: in request
resp = self.send(prep, **send_kwargs)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/requests/sessions.py:703: in send
r = adapter.send(request, **kwargs)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/requests/adapters.py:589: in send
resp = conn.urlopen(
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/urllib3/connectionpool.py:789: in urlopen
response = self._make_request(
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/urllib3/connectionpool.py:495: in _make_request
conn.request(
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/urllib3/connection.py:398: in request
self.endheaders()
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/http/client.py:1298: in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/http/client.py:1058: in _send_output
self.send(msg)
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/http/client.py:996: in send
self.connect()
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/urllib3/connection.py:236: in connect
self.sock = self._new_conn()
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/urllib3/connection.py:196: in _new_conn
sock = connection.create_connection(
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/urllib3/util/connection.py:64: in create_connection
sock = socket.socket(af, socktype, proto)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'pytest_socket.disable_socket.<locals>.GuardedSocket'>
family = <AddressFamily.AF_INET: 2>, type = <SocketKind.SOCK_STREAM: 1>
proto = 6, fileno = None
def __new__(cls, family=-1, type=-1, proto=-1, fileno=None):
if _is_unix_socket(family) and allow_unix_socket:
return super().__new__(cls, family, type, proto, fileno)
> raise SocketBlockedError()
E pytest_socket.SocketBlockedError: A test tried to use socket.socket.
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/pytest_socket.py:89: SocketBlockedError
=============================== warnings summary ===============================
../../../home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/astropy/io/fits/card.py:271
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/astropy/io/fits/card.py:271: VerifyWarning: Keyword name 'instruments' is greater than 8 characters or contains characters not allowed by the FITS standard; a HIERARCH card will be created.
warnings.warn(
../../../home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/flask_caching/__init__.py:153
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/flask_caching/__init__.py:153: DeprecationWarning: Using the initialization functions in flask_caching.backend is deprecated. Use the a full path to backend classes directly.
warnings.warn(
gwcelery/tests/test_tasks_detchar.py: 12 warnings
gwcelery/tests/test_tasks_external_triggers.py: 300 warnings
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/glue/lal.py:419: DeprecationWarning: glue.lal.CacheEntry is deprecated, use lal.utils.CacheEntry instead
warnings.warn("glue.lal.CacheEntry is deprecated, use lal.utils.CacheEntry instead", DeprecationWarning)
gwcelery/tests/test_tasks_detchar.py::test_make_omegascan_worked
gwcelery/tests/test_tasks_detchar.py::test_make_omegascan_worked
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/gwpy/signal/qtransform.py:124: UserWarning: upper frequency of 4096.00 is too high for the given Q range, resetting to 645.53
warnings.warn('upper frequency of %.2f is too high for the given '
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_flat[False-Fermi]
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_flat[False-None]
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_flat_negative_values
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_moc[False-Fermi]
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_moc[False-None]
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/ligo/skymap/distance.py:696: RuntimeWarning: invalid value encountered in parameters_to_moments
distmean, diststd, _ = parameters_to_moments(distmu, distsigma)
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_flat[False-Fermi]
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_flat[False-None]
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_flat_negative_values
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_moc[False-Fermi]
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_moc[False-None]
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/ligo/skymap/distance.py:697: RuntimeWarning: invalid value encountered in multiply
rbar = (prob * distmean).sum()
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_flat[False-Fermi]
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_flat[False-None]
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_flat_negative_values
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_moc[False-Fermi]
gwcelery/tests/test_tasks_external_skymaps.py::test_create_combined_skymap_moc_moc[False-None]
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/ligo/skymap/distance.py:698: RuntimeWarning: invalid value encountered in multiply
r2bar = (prob * (np.square(diststd) + np.square(distmean))).sum()
gwcelery/tests/test_tasks_external_skymaps.py::test_get_external_skymap[GRB]
gwcelery/tests/test_tasks_external_skymaps.py::test_get_external_skymap[SubGRB]
gwcelery/tests/test_tasks_external_skymaps.py::test_get_external_skymap[FromURL]
gwcelery/tests/test_tasks_external_skymaps.py::test_get_external_skymap_403[GRB]
gwcelery/tests/test_tasks_external_skymaps.py::test_get_external_skymap_403[SubGRB]
gwcelery/tests/test_tasks_external_skymaps.py::test_get_external_skymap_403[FromURL]
gwcelery/tests/test_tasks_external_skymaps.py::test_get_external_skymap_404[GRB]
gwcelery/tests/test_tasks_external_skymaps.py::test_get_external_skymap_404[SubGRB]
gwcelery/tests/test_tasks_external_skymaps.py::test_get_external_skymap_404[FromURL]
/local/leo.singer/gwcelery/gwcelery/tasks/external_skymaps.py:424: DeprecationWarning: ssl.OP_NO_SSL*/ssl.OP_NO_TLS* options are deprecated
context.options |= ssl.OP_NO_TLSv1_3
gwcelery/tests/test_tasks_external_skymaps.py::test_get_external_skymap_403[GRB]
gwcelery/tests/test_tasks_external_skymaps.py::test_get_external_skymap_403[SubGRB]
gwcelery/tests/test_tasks_external_skymaps.py::test_get_external_skymap_403[FromURL]
gwcelery/tests/test_tasks_external_skymaps.py::test_get_upload_external_skymap[GRB]
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/_pytest/unraisableexception.py:80: PytestUnraisableExceptionWarning: Exception ignored in: <function _TemporaryFileCloser.__del__ at 0x7ff933836700>
Traceback (most recent call last):
File "/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/tempfile.py", line 467, in __del__
self.close()
File "/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/tempfile.py", line 460, in close
self.file.close()
TypeError: File.close() missing 1 required positional argument: 'self'
warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))
gwcelery/tests/test_tasks_external_skymaps.py::test_get_external_skymap_404[FromURL]
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/_pytest/unraisableexception.py:80: PytestUnraisableExceptionWarning: Exception ignored in: <function _TemporaryFileCloser.__del__ at 0x7ff933836700>
Traceback (most recent call last):
File "/local/leo.singer/gwcelery/gwcelery/tasks/external_skymaps.py", line 429, in get_external_skymap
return response.read()
^^^^^^^^^^^^^^^
File "/local/leo.singer/gwcelery/gwcelery/tests/test_tasks_external_skymaps.py", line 293, in read
raise HTTPError('', 404, '', '', File)
urllib.error.HTTPError: HTTP Error 404:
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/local/leo.singer/gwcelery/gwcelery/tests/test_tasks_external_skymaps.py", line 311, in test_get_external_skymap_404
external_skymaps.get_external_skymap(true_heasarc_link, search)
File "/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/local.py", line 182, in __call__
return self._get_current_object()(*a, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/task.py", line 411, in __call__
return self.run(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/autoretry.py", line 60, in run
ret = task.retry(exc=exc, **retry_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/task.py", line 720, in retry
raise_with_context(exc or Retry('Task can be retried', None))
File "/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/celery/app/autoretry.py", line 38, in run
return task._orig_run(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/local/leo.singer/gwcelery/gwcelery/tasks/external_skymaps.py", line 432, in get_external_skymap
raise gracedb.RetryableHTTPError("Failed to download the sky map."
gwcelery.tasks.gracedb.RetryableHTTPError: Failed to download the sky map.Retrying...
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/tempfile.py", line 467, in __del__
self.close()
File "/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/tempfile.py", line 460, in close
self.file.close()
TypeError: File.close() missing 1 required positional argument: 'self'
warnings.warn(pytest.PytestUnraisableExceptionWarning(msg))
gwcelery/tests/test_tasks_external_triggers.py::test_handle_create_grb_event[Fermi-fermi_grb_gcn.xml]
/home/leo.singer/.conda/envs/gwcelery/lib/python3.11/site-packages/igwn_auth_utils/x509.py:98: CryptographyDeprecationWarning: Properties that return a naïve datetime object have been deprecated. Please switch to not_valid_after_utc.
return (cert.not_valid_after - datetime.utcnow()).total_seconds()
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED gwcelery/tests/test_tasks_external_triggers.py::test_handle_create_grb_event[Fermi-fermi_grb_gcn.xml] - pytest_socket.SocketBlockedError: A test tried to use socket.socket.
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
================= 1 failed, 95 passed, 346 warnings in 35.37s ==================