Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

scriptworker_client: properly handle signals in run_command #1030

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

scriptworker_client: properly handle signals in run_command

b7b4dd0
Select commit
Loading
Failed to load commit list.
Open

scriptworker_client: properly handle signals in run_command #1030

scriptworker_client: properly handle signals in run_command
b7b4dd0
Select commit
Loading
Failed to load commit list.
firefoxci-taskcluster / tox-balrogscript-python311 succeeded Jun 20, 2024 in 2m 30s

FirefoxCI (pull_request)

balrogscript tox-py311

Details

View task in Taskcluster
View logs in Taskcluster


[taskcluster 2024-06-20 08:21:58.211Z] Task ID: Fc80zJkVT0-ElR1Zn2t8qw
[taskcluster 2024-06-20 08:21:58.211Z] Worker ID: 1625139121655535750
[taskcluster 2024-06-20 08:21:58.211Z] Worker Group: us-central1-f
[taskcluster 2024-06-20 08:21:58.211Z] Worker Node Type: projects/887720501152/machineTypes/n2-standard-4
[taskcluster 2024-06-20 08:21:58.211Z] Worker Pool: scriptworker-1/b-linux-gcp
[taskcluster 2024-06-20 08:21:58.211Z] Worker Version: 38.0.5
[taskcluster 2024-06-20 08:21:58.211Z] Public IP: 34.46.112.178
[taskcluster 2024-06-20 08:21:58.211Z] Hostname: scriptworker-1-b-linux-gcp-aut1bfdnrcyj4upuxajcya
[taskcluster 2024-06-20 08:21:58.211Z] using cache "scriptworker-level-1-checkouts-v3-7afeb851dd97df8f3607-DBS6rkORSV2FBLVFGWbQHA" -> /builds/worker/checkouts

[taskcluster 2024-06-20 08:22:00.590Z] Downloading artifact "public/image.tar.zst" from task ID: DBS6rkORSV2FBLVFGWbQHA.
[taskcluster 2024-06-20 08:22:05.462Z] Downloaded artifact successfully.
[taskcluster 2024-06-20 08:22:05.463Z] Downloaded 285.440 mb
[taskcluster 2024-06-20 08:22:05.464Z] Decompressing downloaded image
[taskcluster 2024-06-20 08:22:07.933Z] Loading docker image from downloaded archive.
[taskcluster 2024-06-20 08:22:23.733Z] Image 'public/image.tar.zst' from task 'DBS6rkORSV2FBLVFGWbQHA' loaded.  Using image ID sha256:60321cf0c7e2778eeb1d676e892d746ab5a5a30e6c1b723690dc85fd99995106.
[taskcluster 2024-06-20 08:22:23.909Z] === Task Starting ===
[setup 2024-06-20T08:22:26.249Z] run-task started in /
[setup 2024-06-20T08:22:26.249Z] Invoked by command: --scriptworker-checkout=/builds/worker/checkouts/vcs/ --task-cwd /builds/worker/checkouts/vcs -- sh -lxce tox -e balrogscript-py311
[setup 2024-06-20T08:22:26.249Z] Python version: 3.11.9
[cache 2024-06-20T08:22:26.251Z] cache /builds/worker/checkouts is empty; writing requirements: gid=1000 uid=1000 version=1
[volume 2024-06-20T08:22:26.251Z] changing ownership of volume /builds/worker/.cache to 1000:1000
[volume 2024-06-20T08:22:26.251Z] volume /builds/worker/checkouts is a cache
[setup 2024-06-20T08:22:26.251Z] running as worker:worker
[vcs 2024-06-20T08:22:26.251Z] executing ['git', 'config', '--global', '--add', 'safe.directory', '/builds/worker/checkouts/vcs']
[vcs 2024-06-20T08:22:26.255Z] executing ['git', 'clone', 'https://github.com/mozilla-releng/scriptworker-scripts', '/builds/worker/checkouts/vcs']
[vcs 2024-06-20T08:22:26.256Z] Cloning into '/builds/worker/checkouts/vcs'...
[vcs 2024-06-20T08:22:30.219Z] executing ['git', 'fetch', '--no-tags', 'https://github.com/jcristau/scriptworker-scripts', 'run_command-signals']
[vcs 2024-06-20T08:22:30.528Z] From https://github.com/jcristau/scriptworker-scripts
[vcs 2024-06-20T08:22:30.528Z]  * branch              run_command-signals -> FETCH_HEAD
[vcs 2024-06-20T08:22:30.529Z] executing ['git', 'checkout', '-f', '-B', 'run_command-signals', 'b7b4dd093472168dc4caf77c65abfd556813afa0']
[vcs 2024-06-20T08:22:31.313Z] Switched to a new branch 'run_command-signals'
[vcs 2024-06-20T08:22:31.314Z] cleaning git checkout...
[vcs 2024-06-20T08:22:31.314Z] executing ['git', 'clean', '-nxdff']
[vcs 2024-06-20T08:22:31.324Z] removing []
[vcs 2024-06-20T08:22:31.324Z] successfully cleaned git checkout!
[vcs 2024-06-20T08:22:31.326Z] TinderboxPrint:<a href='https://github.com/jcristau/scriptworker-scripts/commit/b7b4dd093472168dc4caf77c65abfd556813afa0' title='Built from scriptworker-scripts commit b7b4dd093472168dc4caf77c65abfd556813afa0'>b7b4dd093472168dc4caf77c65abfd556813afa0</a>
[task 2024-06-20T08:22:31.326Z] executing ['sh', '-lxce', 'tox -e balrogscript-py311']
[task 2024-06-20T08:22:31.327Z] + id -u
[task 2024-06-20T08:22:31.327Z] + [ 1000 -eq 0 ]
[task 2024-06-20T08:22:31.327Z] + PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
[task 2024-06-20T08:22:31.327Z] + export PATH
[task 2024-06-20T08:22:31.327Z] + [ $  ]
[task 2024-06-20T08:22:31.327Z] + [  ]
[task 2024-06-20T08:22:31.328Z] + id -u
[task 2024-06-20T08:22:31.328Z] + [ 1000 -eq 0 ]
[task 2024-06-20T08:22:31.328Z] + PS1=$ 
[task 2024-06-20T08:22:31.328Z] + [ -d /etc/profile.d ]
[task 2024-06-20T08:22:31.328Z] + [ -r /etc/profile.d/*.sh ]
[task 2024-06-20T08:22:31.329Z] + unset i
[task 2024-06-20T08:22:31.329Z] + [ -n  ]
[task 2024-06-20T08:22:31.329Z] + [ -d /builds/worker/bin ]
[task 2024-06-20T08:22:31.329Z] + [ -d /builds/worker/.local/bin ]
[task 2024-06-20T08:22:31.329Z] + tox -e balrogscript-py311
[task 2024-06-20T08:22:31.790Z] balrogscript-py311: install_deps> python -I -m pip install pyparsing tox
[task 2024-06-20T08:22:35.558Z] balrogscript-py311: commands[0] /builds/worker/checkouts/vcs/balrogscript> tox -e py311
[task 2024-06-20T08:22:35.938Z] py311: install_deps> python -I -m pip install -e /builds/worker/checkouts/vcs/scriptworker_client -r requirements/test.in
[task 2024-06-20T08:22:53.672Z] .pkg: install_requires> python -I -m pip install 'setuptools>=40.8.0' wheel
[task 2024-06-20T08:22:54.676Z] .pkg: _optional_hooks> python /builds/worker/checkouts/vcs/.tox/balrogscript-py311/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
[task 2024-06-20T08:22:54.952Z] .pkg: get_requires_for_build_editable> python /builds/worker/checkouts/vcs/.tox/balrogscript-py311/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
[task 2024-06-20T08:22:55.169Z] .pkg: install_requires_for_build_editable> python -I -m pip install wheel
[task 2024-06-20T08:22:55.553Z] .pkg: build_editable> python /builds/worker/checkouts/vcs/.tox/balrogscript-py311/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
[task 2024-06-20T08:22:55.838Z] py311: install_package_deps> python -I -m pip install 'balrogclient>=1.2' deepmerge idna ipaddress mar pyasn1 python-dateutil redo requests scriptworker scriptworker-client taskcluster
[task 2024-06-20T08:22:56.807Z] py311: install_package> python -I -m pip install --force-reinstall --no-deps /builds/worker/checkouts/vcs/.tox/.tmp/package/1/balrogscript-6.0.3-0.editable-py3-none-any.whl
[task 2024-06-20T08:22:57.232Z] py311: commands[0]> py.test --cov-config=tox.ini --cov-append --cov=/builds/worker/checkouts/vcs/balrogscript/src/balrogscript --cov-report term-missing tests --pdb
[task 2024-06-20T08:22:57.652Z] ============================= test session starts ==============================
[task 2024-06-20T08:22:57.652Z] platform linux -- Python 3.11.9, pytest-8.2.2, pluggy-1.5.0 -- /builds/worker/checkouts/vcs/.tox/py311/bin/python
[task 2024-06-20T08:22:57.652Z] cachedir: /builds/worker/checkouts/vcs/.tox/py311/.pytest_cache
[task 2024-06-20T08:22:57.652Z] rootdir: /builds/worker/checkouts/vcs/balrogscript
[task 2024-06-20T08:22:57.652Z] configfile: tox.ini
[task 2024-06-20T08:22:57.652Z] plugins: asyncio-0.23.7, mock-3.14.0, cov-5.0.0
[task 2024-06-20T08:22:57.652Z] asyncio: mode=Mode.STRICT
[task 2024-06-20T08:22:58.041Z] collecting ... collected 65 items
[task 2024-06-20T08:22:58.041Z] 
[task 2024-06-20T08:22:58.085Z] tests/test_config.py::test_config PASSED
[task 2024-06-20T08:22:58.088Z] tests/test_script.py::test_create_locale_submitter_nightly_style PASSED
[task 2024-06-20T08:22:58.091Z] tests/test_script.py::test_create_locale_submitter_release_style PASSED
[task 2024-06-20T08:22:58.092Z] tests/test_script.py::test_create_locale_submitter_nightly_metadata PASSED
[task 2024-06-20T08:22:58.094Z] tests/test_script.py::test_create_locale_submitter_nightly_creates_valid_submitter PASSED
[task 2024-06-20T08:22:58.099Z] tests/test_script.py::test_submit_locale PASSED
[task 2024-06-20T08:22:58.101Z] tests/test_script.py::test_create_scheduler PASSED
[task 2024-06-20T08:22:58.104Z] tests/test_script.py::test_schedule[task0-expected0] PASSED
[task 2024-06-20T08:22:58.107Z] tests/test_script.py::test_schedule[task1-expected1] PASSED
[task 2024-06-20T08:22:58.109Z] tests/test_script.py::test_create_creator PASSED
[task 2024-06-20T08:22:58.110Z] tests/test_script.py::test_create_pusher PASSED
[task 2024-06-20T08:22:58.114Z] tests/test_script.py::test_submit_toplevel[task0-creator_expected0-pusher_expected0] PASSED
[task 2024-06-20T08:22:58.119Z] tests/test_script.py::test_submit_toplevel[task1-creator_expected1-pusher_expected1] PASSED
[task 2024-06-20T08:22:58.124Z] tests/test_script.py::test_submit_toplevel[task2-creator_expected2-pusher_expected2] PASSED
[task 2024-06-20T08:22:58.129Z] tests/test_script.py::test_submit_toplevel[task3-creator_expected3-pusher_expected3] PASSED
[task 2024-06-20T08:22:58.145Z] tests/test_script.py::test_validate_task_schema PASSED
[task 2024-06-20T08:22:58.162Z] tests/test_script.py::test_verify_task_schema_missing_cert[defn0] PASSED
[task 2024-06-20T08:22:58.177Z] tests/test_script.py::test_verify_task_schema_missing_cert[defn1] PASSED
[task 2024-06-20T08:22:58.195Z] tests/test_script.py::test_verify_task_schema_missing_cert[defn2] PASSED
[task 2024-06-20T08:22:58.198Z] tests/test_script.py::test_get_task_server[defn0] PASSED
[task 2024-06-20T08:22:58.199Z] tests/test_script.py::test_get_task_server[defn1] PASSED
[task 2024-06-20T08:22:58.202Z] tests/test_script.py::test_get_task_server[defn2] PASSED
[task 2024-06-20T08:22:58.203Z] tests/test_script.py::test_get_task_server[defn3] PASSED
[task 2024-06-20T08:22:58.204Z] tests/test_script.py::test_load_config PASSED
[task 2024-06-20T08:22:58.210Z] Usage: only-one-arg CONFIG_FILE
[task 2024-06-20T08:22:58.211Z] tests/test_script.py::test_create_state_updater PASSED
[task 2024-06-20T08:22:58.211Z] tests/test_script.py::test_set_readonly PASSED
[task 2024-06-20T08:22:58.225Z] tests/test_script.py::test_invalid_args PASSED
[task 2024-06-20T08:22:58.227Z] tests/test_script.py::test_get_default_config PASSED
[task 2024-06-20T08:22:58.247Z] tests/test_script.py::test_async_main_submit_locale[submit-locale] PASSED
[task 2024-06-20T08:22:58.251Z] tests/test_script.py::test_async_main_submit_locale[submit-toplevel] PASSED
[task 2024-06-20T08:22:58.266Z] tests/test_script.py::test_async_main_submit_locale[schedule] PASSED
[task 2024-06-20T08:22:58.277Z] tests/test_script.py::test_async_main_submit_locale[set-readonly] PASSED
[task 2024-06-20T08:22:58.287Z] tests/test_script.py::test_async_main_submit_locale[v2-submit-locale] PASSED
[task 2024-06-20T08:22:58.294Z] tests/test_script.py::test_async_main_submit_locale[v2-submit-toplevel] PASSED
[task 2024-06-20T08:22:58.298Z] tests/test_script.py::test_main PASSED
[task 2024-06-20T08:22:58.301Z] tests/test_submitter_cli.py::TestNightlySubmitterBase::test_replace_canocical_url PASSED
[task 2024-06-20T08:22:58.303Z] tests/test_submitter_cli.py::TestNightlySubmitterV4::test_canonical_ur_replacement PASSED
[task 2024-06-20T08:22:58.304Z] tests/test_submitter_cli.py::TestNightlySubmitterV4::test_no_canonical_ur_replacement PASSED
[task 2024-06-20T08:22:58.308Z] tests/test_submitter_cli.py::TestUpdateIdempotency::test_new_data PASSED
[task 2024-06-20T08:22:58.313Z] tests/test_submitter_cli.py::TestUpdateIdempotency::test_same_dated_data PASSED
[task 2024-06-20T08:22:58.322Z] tests/test_submitter_cli.py::TestUpdateIdempotency::test_same_latest_data PASSED
[task 2024-06-20T08:22:58.327Z] tests/test_submitter_cli.py::TestReleaseCreatorFileUrlsMixin::test_http_default PASSED
[task 2024-06-20T08:22:58.327Z] tests/test_submitter_cli.py::TestReleaseCreatorFileUrlsMixin::test_https_RC_on_beta PASSED
[task 2024-06-20T08:22:58.328Z] tests/test_submitter_cli.py::TestReleaseCreatorFileUrlsMixin::test_https_beta PASSED
[task 2024-06-20T08:22:58.328Z] tests/test_submitter_cli.py::TestReleaseCreatorFileUrlsMixin::test_https_devedition PASSED
[task 2024-06-20T08:22:58.328Z] tests/test_submitter_cli.py::TestPinnable::test_pinnable_parsing PASSED
[task 2024-06-20T08:22:58.329Z] tests/test_submitter_updates.py::TestCandidatesDir::test_base PASSED
[task 2024-06-20T08:22:58.335Z] tests/test_submitter_updates.py::TestCandidatesDir::test_fennec PASSED
[task 2024-06-20T08:22:58.342Z] tests/test_submitter_updates.py::TestCandidatesDir::test_ftp_root PASSED
[task 2024-06-20T08:22:58.342Z] tests/test_submitter_updates.py::TestCandidatesDir::test_remote PASSED
[task 2024-06-20T08:22:58.347Z] tests/test_task.py::test_get_task_server[scopes0-None-True] PASSED
[task 2024-06-20T08:22:58.347Z] tests/test_task.py::test_get_task_server[scopes1-None-True] PASSED
[task 2024-06-20T08:22:58.347Z] tests/test_task.py::test_get_task_server[scopes2-None-True] PASSED
[task 2024-06-20T08:22:58.354Z] tests/test_task.py::test_get_task_server[scopes3-dep-False] PASSED
[task 2024-06-20T08:22:58.354Z] tests/test_task.py::test_get_upstream_artifacts[expected0] PASSED
[task 2024-06-20T08:22:58.354Z] tests/test_task.py::test_nightly_get_manifest[expected_manifest0] PASSED
[task 2024-06-20T08:22:58.355Z] tests/test_task.py::test_release_get_manifest PASSED
[task 2024-06-20T08:22:58.359Z] tests/test_task.py::test_get_task_behavior[task0-submit-locale-False] PASSED
[task 2024-06-20T08:22:58.359Z] tests/test_task.py::test_get_task_behavior[task1-submit-toplevel-False] PASSED
[task 2024-06-20T08:22:58.361Z] tests/test_task.py::test_get_task_behavior[task2-schedule-False] PASSED
[task 2024-06-20T08:22:58.363Z] tests/test_task.py::test_get_task_behavior[task3-schedule-False] PASSED
[task 2024-06-20T08:22:58.364Z] tests/test_task.py::test_get_task_behavior[task4-None-True] PASSED
[task 2024-06-20T08:22:58.365Z] tests/test_task.py::test_get_task_behavior[task5-None-True] PASSED
[task 2024-06-20T08:22:58.367Z] tests/test_task.py::test_get_task_behavior[task6-None-True] PASSED
[task 2024-06-20T08:22:58.502Z] tests/test_task.py::test_get_task_behavior[task7-submit-locale-False] PASSED
[task 2024-06-20T08:22:58.502Z] 
[task 2024-06-20T08:22:58.502Z] ---------- coverage: platform linux, python 3.11.9-final-0 -----------
[task 2024-06-20T08:22:58.502Z] Name                                     Stmts   Miss Branch BrPart  Cover   Missing
[task 2024-06-20T08:22:58.502Z] ------------------------------------------------------------------------------------
[task 2024-06-20T08:22:58.502Z] src/balrogscript/__init__.py                 0      0      0      0   100%
[task 2024-06-20T08:22:58.502Z] src/balrogscript/constants.py                2      0      0      0   100%
[task 2024-06-20T08:22:58.502Z] src/balrogscript/script.py                 107      5     40      1    96%   88-91, 278
[task 2024-06-20T08:22:58.502Z] src/balrogscript/submitter/__init__.py       0      0      0      0   100%
[task 2024-06-20T08:22:58.502Z] src/balrogscript/submitter/cli.py          359    176    132     17    48%   21, 27, 35, 84, 91, 138, 144-164, 169-205, 222->228, 223->222, 232, 248, 251, 259, 325-388, 395->405, 399, 427-448, 457, 462-487, 496, 499-513, 522, 525-566, 575-576, 581-583, 586-614
[task 2024-06-20T08:22:58.502Z] src/balrogscript/submitter/release.py       29      7      4      0    79%   6, 10-13, 91, 95
[task 2024-06-20T08:22:58.502Z] src/balrogscript/submitter/util.py           8      6      4      0    17%   6-12
[task 2024-06-20T08:22:58.503Z] src/balrogscript/task.py                    55      0     22      0   100%
[task 2024-06-20T08:22:58.503Z] ------------------------------------------------------------------------------------
[task 2024-06-20T08:22:58.503Z] TOTAL                                      560    194    202     18    64%
[task 2024-06-20T08:22:58.503Z] 
[task 2024-06-20T08:22:58.503Z] 
[task 2024-06-20T08:22:58.503Z] ============================== 65 passed in 0.86s ==============================
[task 2024-06-20T08:22:58.592Z]   py311: OK (22.75=setup[21.40]+cmd[1.36] seconds)
[task 2024-06-20T08:22:58.592Z]   congratulations :) (22.90 seconds)
[task 2024-06-20T08:22:58.629Z] balrogscript-py311: commands[1] /builds/worker/checkouts/vcs/balrogscript> tox -e coveralls
[task 2024-06-20T08:22:59.002Z] coveralls: install_deps> python -I -m pip install coverage coveralls -e /builds/worker/checkouts/vcs/scriptworker_client
[task 2024-06-20T08:23:05.283Z] .pkg: _optional_hooks> python /builds/worker/checkouts/vcs/.tox/balrogscript-py311/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
[task 2024-06-20T08:23:05.458Z] .pkg: get_requires_for_build_editable> python /builds/worker/checkouts/vcs/.tox/balrogscript-py311/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
[task 2024-06-20T08:23:05.659Z] .pkg: build_editable> python /builds/worker/checkouts/vcs/.tox/balrogscript-py311/lib/python3.11/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
[task 2024-06-20T08:23:05.907Z] coveralls: install_package_deps> python -I -m pip install 'balrogclient>=1.2' deepmerge idna ipaddress mar pyasn1 python-dateutil redo requests scriptworker scriptworker-client taskcluster
[task 2024-06-20T08:23:09.366Z] coveralls: install_package> python -I -m pip install --force-reinstall --no-deps /builds/worker/checkouts/vcs/.tox/.tmp/package/2/balrogscript-6.0.3-0.editable-py3-none-any.whl
[task 2024-06-20T08:23:09.837Z] coveralls: commands[0]> coveralls
[task 2024-06-20T08:23:10.043Z] Error running coveralls: Not on TravisCI. You have to provide either repo_token in .coveralls.yml or set the COVERALLS_REPO_TOKEN env var.
[task 2024-06-20T08:23:10.043Z] Traceback (most recent call last):
[task 2024-06-20T08:23:10.043Z]   File "/builds/worker/checkouts/vcs/.tox/coveralls/lib/python3.11/site-packages/coveralls/cli.py", line 65, in main
[task 2024-06-20T08:23:10.043Z]     coverallz = Coveralls(
[task 2024-06-20T08:23:10.043Z]                 ^^^^^^^^^^
[task 2024-06-20T08:23:10.043Z]   File "/builds/worker/checkouts/vcs/.tox/coveralls/lib/python3.11/site-packages/coveralls/api.py", line 47, in __init__
[task 2024-06-20T08:23:10.043Z]     self.ensure_token()
[task 2024-06-20T08:23:10.043Z]   File "/builds/worker/checkouts/vcs/.tox/coveralls/lib/python3.11/site-packages/coveralls/api.py", line 60, in ensure_token
[task 2024-06-20T08:23:10.043Z]     raise CoverallsException(
[task 2024-06-20T08:23:10.043Z] coveralls.exception.CoverallsException: Not on TravisCI. You have to provide either repo_token in .coveralls.yml or set the COVERALLS_REPO_TOKEN env var.
[task 2024-06-20T08:23:10.072Z] coveralls: exit 1 (0.23 seconds) /builds/worker/checkouts/vcs/balrogscript> coveralls pid=383
[task 2024-06-20T08:23:10.073Z]   coveralls: FAIL code 1 (11.17=setup[10.94]+cmd[0.23] seconds)
[task 2024-06-20T08:23:10.074Z]   evaluation failed :( (11.27 seconds)
[task 2024-06-20T08:23:10.110Z] balrogscript-py311: exit 1 (11.48 seconds) /builds/worker/checkouts/vcs/balrogscript> tox -e coveralls pid=334
[task 2024-06-20T08:23:10.110Z] balrogscript-py311: command failed but is marked ignore outcome so handling it as success
[task 2024-06-20T08:23:10.111Z]   balrogscript-py311: OK (38.58=setup[4.02]+cmd[23.07,11.48] seconds)
[task 2024-06-20T08:23:10.111Z]   congratulations :) (38.65 seconds)
[taskcluster 2024-06-20 08:23:10.749Z] === Task Finished ===
[taskcluster 2024-06-20 08:23:10.749Z] Successful task run with exit code: 0 completed in 72.539 seconds