Replies: 17 comments 35 replies
-
|
ChrysaliszstashTesting stepsSee test improvements at #393. We can follow the new test README at https://github.com/E3SM-Project/zstash/blob/main/tests/README.md. Remember, cd ~/ez/zstash
git status
# branch: issue-385-blocking-test
# nothing to commit
git fetch upstream main
# https://github.com/E3SM-Project/zstash/commits/main
# Bump to 1.5.0rc3 => ce18814aa6b91af4eee09bb883c03141c2a355bd
# e3sm_unified_1_12_0rc2
git checkout -b test_unified_1.12.0rc2_chrysalis ce18814aa6b91af4eee09bb883c03141c2a355bd
git log
# Good, last commit: Bump to 1.5.0rc3 (#394)
source /lcrc/soft/climate/e3sm-unified/test_e3sm_unified_1.12.0rc2_chrysalis.sh
# Begin following directions from README:
pytest tests/unit/test_*.py
# 1 passed in 3.18s
python -m unittest tests/integration/python_tests/group_by_command/test_*.py # Will skip hsi tests
# Ran 69 tests in 56.870s
# OK (skipped=32)
python -m unittest tests/integration/python_tests/group_by_workflow/test_*.py
# Ran 4 tests in 3.510s
# OK
cd tests/integration/bash_tests/run_from_chrysalis/
time ./globus_auth.bash 15 # try_num=15
# real 2m27.691s
# No errors
time ./database_corruption.bash 15 # try_num=15
# Success count: 25
# Fail count: 0
# real 6m45.018s
time ./symlinks.sh
# real 0m1.679s
# No errorsSuccess |
Beta Was this translation helpful? Give feedback.
-
|
Compy (rc2)zstashTesting stepsSee test improvements at #393. We can follow the new test README at https://github.com/E3SM-Project/zstash/blob/main/tests/README.md. Remember, cd ~/ez/zstash
git status
# branch: main
# nothing to commit
git fetch upstream main
# https://github.com/E3SM-Project/zstash/commits/main
# Bump to 1.5.0rc3 => ce18814aa6b91af4eee09bb883c03141c2a355bd
# e3sm_unified_1_12_0rc2
git checkout -b test_unified_1.12.0rc2_compy ce18814aa6b91af4eee09bb883c03141c2a355bd
git log
# Good, last commit: Bump to 1.5.0rc3 (#394)
source /share/apps/E3SM/conda_envs/test_e3sm_unified_1.12.0rc2_compy.sh
# Begin following directions from README:
pytest tests/unit/test_*.py
# 1 passed in 1.18s
python -m unittest tests/integration/python_tests/group_by_command/test_*.py # # Will skip hsi tests
# Ran 69 tests in 140.506s
# OK (skipped=32)
python -m unittest tests/integration/python_tests/group_by_workflow/test_*.py
# Ran 4 tests in 7.469s
# OKSuccess |
Beta Was this translation helpful? Give feedback.
-
|
Perlmutter (rc2)zstashTesting stepsSee test improvements at #393. We can follow the new test README at https://github.com/E3SM-Project/zstash/blob/main/tests/README.md. Remember, cd ~/ez/zstash
git status
# branch: main
# nothing to commit
git fetch upstream main
# https://github.com/E3SM-Project/zstash/commits/main
# Bump to 1.5.0rc3 => ce18814aa6b91af4eee09bb883c03141c2a355bd
# e3sm_unified_1_12_0rc2
git checkout -b test_unified_1.12.0rc2_perlmutter ce18814aa6b91af4eee09bb883c03141c2a355bd
git log
# Good, last commit: Bump to 1.5.0rc3 (#394)
source /global/common/software/e3sm/anaconda_envs/test_e3sm_unified_1.12.0rc2_pm-cpu.sh
# Begin following directions from README:
pytest tests/unit/test_*.py
# 1 passed in 0.49s
python -m unittest tests/integration/python_tests/group_by_command/test_*.py
# Ran 69 tests in 297.714s
# OK
python -m unittest tests/integration/python_tests/group_by_workflow/test_*.py
# Ran 4 tests in 2.547s
# OK
cd tests/integration/bash_tests/run_from_perlmutter/
time ./follow_symlinks.sh
# real 0m27.438s
# Good, no errors
time ./test_update_non_empty_hpss.bash
# real 0m8.740s
# Good, no errors
# Log into globus.org
# Log into endpoints (NERSC Perlmutter, Globus Tutorial Collection 1) at globus.org: File Manager > Add the endpoints in the "Collection" fields
time ./test_ls_globus.bash
# raise self.error_class(r)
# globus_sdk.services.auth.errors.AuthAPIError: ('POST', 'https://auth.globus.org/v2/oauth2/token', None, 400, 'Error', 'Bad Request')
# Expected grep 'INFO: Adding 000000.tar' not found in create.log. Test failed.
#
# real 0m1.160s
# user 0m0.167s
# sys 0m0.182s
(Note that the issue didn't occur on Chrysalis or Compy because |
Beta Was this translation helpful? Give feedback.
-
|
ChrysaliszstashTesting stepsSee test improvements at #393. We can follow the new test README at https://github.com/E3SM-Project/zstash/blob/main/tests/README.md. Remember, cd ~/ez/zstash
git status
# branch main
# nothing to commit
git fetch upstream main
# https://github.com/E3SM-Project/zstash/commits/main
# Bump to 1.5.0rc4 => e7a1e2253a00a9d0898ae799245df8216fe4a286
git checkout -b test_unified_1.12.0rc3_chrysalis e7a1e2253a00a9d0898ae799245df8216fe4a286
git log
# Good, last commit: Bump to 1.5.0rc4 (#399)
source /lcrc/soft/climate/e3sm-unified/test_e3sm_unified_1.12.0rc3_chrysalis.sh
# Begin following directions from README:
pytest tests/unit/test_*.py
# 1 passed in 2.31s
python -m unittest tests/integration/python_tests/group_by_command/test_*.py # Will skip hsi tests
# Ran 69 tests in 55.914s
# OK (skipped=32)
python -m unittest tests/integration/python_tests/group_by_workflow/test_*.py
# Ran 4 tests in 3.511s
# OK
cd tests/integration/bash_tests/run_from_any/
# Use try_num parameter as a more descriptive unique id: test_unified_1.12.0rc3_chrysalis
# Reminder 1:
# When NERSC asks for password it means without the MFA token. It will ask for that later.
# Compy, however, wants them combined.
# Reminder 2:
# If a test hangs, check if https://app.globus.org/activity reports any errors on your transfers.
./globus_auth.bash test_unified_1.12.0rc3_chrysalis chrysalis /home/ac.forsyth2/ez/zstash /home/ac.forsyth2/zstash_tests /global/homes/f/forsyth/zstash_tests /home/f/forsyth/zstash_tests /compyfs/fors729/zstash_tests
# All globus_auth tests completed successfully.
cd ~/ez/zstash/tests/integration/bash_tests/run_from_chrysalis/
# Reset completely:
# Revoke consents: https://auth.globus.org/v2/web/consents > Globus Endpoint Performance Monitoring > rescind all
# Run the following lines to set up the database_corruption test
# Alternative option: Rerun the `test_single_auth_code ${path_to_repo} NERSC_PERLMUTTER_ENDPOINT ${perlmutter_dst_dir}` line from `globus_auth.bash`
rm ~/.zstash_globus_tokens.json
mkdir zstash_demo; echo 'file0 stuff' > zstash_demo/file0.txt
# NERSC_PERLMUTTER_ENDPOINT=6bdc7956-fc0f-4ad2-989c-7aa5ee643a79
zstash create --hpss=globus://6bdc7956-fc0f-4ad2-989c-7aa5ee643a79//global/homes/f/forsyth/zstash/tests/test_database_corruption_setup23 zstash_demo
# You'll have to paste an auth code here, but NOT during the database_corruption test.
rm -rf zstash_demo/
# Use try_num parameter as a more descriptive unique id: test_unified_1.12.0rc3_chrysalis
time ./database_corruption.bash test_unified_1.12.0rc3_chrysalis
# Success count: 25
# Fail count: 0
# real 9m46.528s
time ./symlinks.sh
# real 0m1.629s
# No errorsSuccess |
Beta Was this translation helpful? Give feedback.
-
|
CompyzstashTesting stepsSee test improvements at #393. We can follow the new test README at https://github.com/E3SM-Project/zstash/blob/main/tests/README.md. Remember, cd ~/ez/zstash
git status
# branch update-authentications
# nothing to commit
git fetch upstream main
# https://github.com/E3SM-Project/zstash/commits/main
# Bump to 1.5.0rc4 => e7a1e2253a00a9d0898ae799245df8216fe4a286
git checkout -b test_unified_1.12.0rc3_chrysalis e7a1e2253a00a9d0898ae799245df8216fe4a286
git log
# Good, last commit: Bump to 1.5.0rc4 (#399)
source /share/apps/E3SM/conda_envs/test_e3sm_unified_1.12.0rc3_compy.sh
# Begin following directions from README:
pytest tests/unit/test_*.py
# 1 passed in 1.28s
python -m unittest tests/integration/python_tests/group_by_command/test_*.py # # Will skip hsi tests
# Ran 69 tests in 149.817s
# OK (skipped=32)
python -m unittest tests/integration/python_tests/group_by_workflow/test_*.py
# Ran 4 tests in 7.383s
# OK
cd tests/integration/bash_tests/run_from_any/
# Skip ./globus_auth.bash test on Compy, because the transfer node uses a different file system/storage area than my workspace.Success |
Beta Was this translation helpful? Give feedback.
-
|
PerlmutterzstashTesting stepsSee test improvements at #393. We can follow the new test README at https://github.com/E3SM-Project/zstash/blob/main/tests/README.md. Remember, cd ~/ez/zstash
git status
# branch update-authentications
# nothing to commit
git fetch upstream main
# https://github.com/E3SM-Project/zstash/commits/main
# Bump to 1.5.0rc4 => e7a1e2253a00a9d0898ae799245df8216fe4a286
git checkout -b test_unified_1.12.0rc3_perlmutter e7a1e2253a00a9d0898ae799245df8216fe4a286
git log
# Good, last commit: Bump to 1.5.0rc4 (#399)
source /global/common/software/e3sm/anaconda_envs/test_e3sm_unified_1.12.0rc3_pm-cpu.sh
# Begin following directions from README:
pytest tests/unit/test_*.py
# 1 passed in 0.54s
python -m unittest tests/integration/python_tests/group_by_command/test_*.py
# Ran 69 tests in 312.958s
# OK
python -m unittest tests/integration/python_tests/group_by_workflow/test_*.py
# Ran 4 tests in 2.360s
# OK
cd tests/integration/bash_tests/run_from_any/
# Use try_num parameter as a more descriptive unique id: test_unified_1.12.0rc3_pm-cpu
# Reminder 1:
# When NERSC asks for password it means without the MFA token. It will ask for that later.
# Compy, however, wants them combined.
# Reminder 2:
# If a test hangs, check if https://app.globus.org/activity reports any errors on your transfers.
./globus_auth.bash test_unified_1.12.0rc3_pm-cpu perlmutter /global/homes/f/forsyth/ez/zstash /home/ac.forsyth2/zstash_tests /global/homes/f/forsyth/zstash_tests /home/f/forsyth/zstash_tests /compyfs/fors729/zstash_tests
# Expected grep 'file_empty.txt' not found in run1_ls.log. Test failed.
#
# ERROR: ('POST', 'https://transfer.api.globus.org/v0.10/transfer', 'Bearer', 502, 'ExternalError', "Error validating login to endpoint 'NERSC Perlmutter (6bdc7956-fc0f-4ad2-989c-7aa5ee643a79)', Error (connect)\nEndpoint: NERSC Perlmutter (6bdc7956-fc0f-4ad2-989c-7aa5ee643a79)\nServer: 128.55.64.33:443\nMessage: The operation timed out\n",
# run2 completed successfully. Checking run2.log now.
#
# Try again?
rm -rf ../../../utils/globus_auth/
./globus_auth.bash _test_unified_1.12.0rc3_perlmutter perlmutter /global/homes/f/forsyth/ez/zstash /home/ac.forsyth2/zstash_tests /global/homes/f/forsyth/zstash_tests /home/f/forsyth/zstash_tests /compyfs/fors729/zstash_tests
# Expected grep 'file_empty.txt' not found in run1_ls.log. Test failed.
#
# globus_sdk.services.transfer.errors.TransferAPIError: ('GET', 'https://transfer.api.globus.org/v0.10/operation/endpoint/6bdc7956-fc0f-4ad2-989c-7aa5ee643a79/ls?path=%2F%2Fglobal%2Fhomes%2Ff%2Fforsyth%2Fzstash_tests%2Ftest_globus_auth_try_test_unified_1.12.0rc3_perlmutter%2Frun1', 'Bearer', 404, 'ClientError.NotFound', "Directory '//global/homes/f/forsyth/zstash_tests/test_globus_auth_try_test_unified_1.12.0rc3_perlmutter/run1' not found on endpoint '6bdc7956-fc0f-4ad2-989c-7aa5ee643a79'",
ls /global/homes/f/forsyth/zstash_tests/test_globus_auth_try_test_unified_1.12.0rc3_perlmutter/
# run2
#
# So, it's correct that there is no run1 subdir.
# Let's come back to this tomorrow. Maybe something is wrong on the Globus side?
# Coming back to this
cd ~/ez/zstash
git status
# branch test_unified_1.12.0rc3_perlmutter
source /global/common/software/e3sm/anaconda_envs/test_e3sm_unified_1.12.0rc3_pm-cpu.sh
cd tests/integration/bash_tests/run_from_any/
rm -rf ../../../utils/globus_auth/
./globus_auth.bash _test_unified_1.12.0rc3_pm-cpu_try3 perlmutter /global/homes/f/forsyth/ez/zstash /home/ac.forsyth2/zstash_tests /global/homes/f/forsyth/zstash_tests /home/f/forsyth/zstash_tests /compyfs/fors729/zstash_tests
# ERROR: ('POST', 'https://transfer.api.globus.org/v0.10/transfer', 'Bearer', 502, 'ExternalError', 'Error validating login to endpoint \'NERSC Perlmutter (6bdc7956-fc0f-4ad2-989c-7aa5ee643a79)
# Make edits
rm -rf ../../../utils/globus_auth/
./globus_auth.bash test_unified_1.12.0rc3_pm-cpu_try4 perlmutter /global/homes/f/forsyth/ez/zstash /home/ac.forsyth2/zstash_tests /global/homes/f/forsyth/zstash_tests /home/f/forsyth/zstash_tests /compyfs/fors729/zstash_tests
# All globus_auth tests completed successfully.
cd ~/ez/zstash/tests/integration/bash_tests/run_from_perlmutter/
time ./follow_symlinks.sh # NOTE: you will have to change out paths for your username
# real 0m30.815s
# No errors
time ./test_update_non_empty_hpss.bash
# real 0m9.352s
# No errors
# Log into globus.org
# Log into endpoints (NERSC Perlmutter, Globus Tutorial Collection 1) at globus.org: File Manager > Add the endpoints in the "Collection" fields
time ./test_ls_globus.bash # NOTE: You may be asked to paste an auth-code
# real 0m56.596s
# No errors
# Push changes
cd ~/ez/zstash
nersc_conda # Activate conda
rm -rf build
conda clean --all --y
conda env create -f conda/dev.yml -n zstash_dev_20251031
conda activate zstash_dev_20251031
pre-commit run --all-files
python -m pip install .
git add -A
git commit -m "Test updates for zstash rc5"
git branch -m test-updates-for-rc5
git push upstream test-updates-for-rc5Success. #400 makes some minor improvements to the tests. |
Beta Was this translation helpful? Give feedback.
-
|
@TonyB9000 Once you've completed the long-running tests for Expected behavior:
A couple things to note:
|
Beta Was this translation helpful? Give feedback.
-
|
@forsyth2 My base environment has no zstash, and my dev and production environments give zstash 1.4.4. I don't usually employ "E3SM Unified anything". How should I activate? I vaguely recall the last time I used "Unified" and it altered my terminal setting so I could no longer bring up "vi/vim" without clobbering my terminal scroll-back (it would overwrite anything I'd had on the screen, which would not return after exiting vi/vim). |
Beta Was this translation helpful? Give feedback.
-
|
@forsyth2 I just eliminated 180T of my local archive storage (e3sm2 now lists 360 TB free space). I'll share my "zstash check" command (and anticipated volume) as soon as I craft and launch it. I will wipe my tokens file, just to ensure a fresh start. I've only used "globus web" the past few months, and I've only exercised (NERSC <--> Chrysalis) and (Chrysalis<-->Eagle) during that time. |
Beta Was this translation helpful? Give feedback.
-
|
@forsyth2 Consider that I want to fetch the following archives: The first one is 70TB. The other 5 sum to 95TB. |
Beta Was this translation helpful? Give feedback.
-
|
@forsyth2 @xylar Probably harmless, but: Before and after "source /lcrc/soft/climate/e3sm-unified/test_e3sm_unified_1.12.0rc3_chrysalis.sh" My ".viminfo" just lost 500 bytes. Can we make these codes NOT change the user's viminfo files? Proceeding with testing: I'll provide a blow-by-blow trace of what I do and what I see. |
Beta Was this translation helpful? Give feedback.
-
|
@forsyth2 ASIDE: I asked the great AI for some guidance regarding python subprocess in this scenario: ME: THE AI: ME: THE AI: I think I should work on launching this from a python parent, rather than a bash script, to more closely emulate how I will need to do it from the "process wrappers" I will use in production. |
Beta Was this translation helpful? Give feedback.
-
|
@forsyth2 Regarding Claude's solution: If during a long run, credentials (or token) expire and require an interactive shell to supply input, we would need a way to bring the background job to the foreground (first, I believe, because otherwise its prompt will get bogus input (EOF). A solution might be to NEVER place the processing in the background, and simply detach/reattach the "screen" employed for that job. Upon re-attach, that prompt should be waiting there for input. |
Beta Was this translation helpful? Give feedback.
-
|
ChrysaliszstashTesting stepsFollowing the test README at https://github.com/E3SM-Project/zstash/blob/main/tests/README.md. cd ~/ez/zstash
git status
# branch test_unified_1.12.0rc3_chrysalis
# nothing to commit
git fetch upstream main
# https://github.com/E3SM-Project/zstash/commits/main
# Test updates for zstash rc5 (#400)
# Bump to 1.5.0rc4 (#399)
# #400 only changed files in `tests/` so we can include thatas well
git checkout -b test_unified_1.12.0rc4_chrysalis upstream/main
git log
# Good, commits match
source /lcrc/soft/climate/e3sm-unified/test_e3sm_unified_1.12.0rc4_chrysalis.sh
pytest tests/unit/test_*.py
# 1 passed in 2.19s
python -m unittest tests/integration/python_tests/group_by_command/test_*.py
# Ran 69 tests in 56.885s
# OK (skipped=32)
python -m unittest tests/integration/python_tests/group_by_workflow/test_*.py
# Ran 4 tests in 3.258s
# OK
cd tests/integration/bash_tests/run_from_any/
# Review the directions at the bottom of globus_auth.bash
# Run `./globus_auth.bash` with the appropriate parameters:
./globus_auth.bash test_unified_1.12.0rc4_chrysalis chrysalis /home/ac.forsyth2/ez/zstash /home/ac.forsyth2/zstash_tests /global/homes/f/forsyth/zstash_tests /home/f/forsyth/zstash_tests /compyfs/fors729/zstash_tests
# All globus_auth tests completed successfully.
cd ~/ez/zstash
cd tests/integration/bash_tests/run_from_chrysalis/
# Reset completely:
# Revoke consents: https://auth.globus.org/v2/web/consents > Globus Endpoint Performance Monitoring > rescind all
# Run the following lines to set up the database_corruption test
rm ~/.zstash_globus_tokens.json
mkdir zstash_demo; echo 'file0 stuff' > zstash_demo/file0.txt
# NERSC_PERLMUTTER_ENDPOINT=6bdc7956-fc0f-4ad2-989c-7aa5ee643a79
zstash create --hpss=globus://6bdc7956-fc0f-4ad2-989c-7aa5ee643a79//global/homes/f/forsyth/zstash/tests/test_database_corruption_setup23 zstash_demo
# You'll have to paste an auth code here, but NOT during the database_corruption test.
rm -rf zstash_demo/
time ./database_corruption.bash database_corruption_test_unified_1.12.0rc4_chrysalis
# Success count: 25
# Fail count: 0
# real 6m37.189s
time ./symlinks.sh
# real 0m5.459s
# No errorsSuccess |
Beta Was this translation helpful? Give feedback.
-
|
PerlmutterzstashTesting stepsFollowing the test README at https://github.com/E3SM-Project/zstash/blob/main/tests/README.md. cd ~/ez/zstash
git status
# branch test-updates-for-rc5
# nothing to commit
git fetch upstream main
# https://github.com/E3SM-Project/zstash/commits/main
# Test updates for zstash rc5 (#400)
# Bump to 1.5.0rc4 (#399)
# #400 only changed files in `tests/` so we can include thatas well
git checkout -b test_unified_1.12.0rc4_perlmutter upstream/main
git log
# Good, commits match
source /global/common/software/e3sm/anaconda_envs/test_e3sm_unified_1.12.0rc4_pm-cpu.sh
pytest tests/unit/test_*.py
# 1 passed in 0.54s
python -m unittest tests/integration/python_tests/group_by_command/test_*.py
# Ran 69 tests in 302.179s
# OK
python -m unittest tests/integration/python_tests/group_by_workflow/test_*.py
# Ran 4 tests in 2.301s
# OK
cd tests/integration/bash_tests/run_from_any/
# Review the directions at the bottom of globus_auth.bash
# Run `./globus_auth.bash` with the appropriate parameters:
./globus_auth.bash globus_auth_test_unified_1.12.0rc4_pm perlmutter /global/homes/f/forsyth/ez/zstash /home/ac.forsyth2/zstash_tests /global/homes/f/forsyth/zstash_tests /home/f/forsyth/zstash_tests /compyfs/fors729/zstash_tests
# All globus_auth tests completed successfully.
cd ~/ez/zstash
cd tests/integration/bash_tests/run_from_perlmutter/
time ./follow_symlinks.sh
# real 0m28.343s
# No errors
time ./test_update_non_empty_hpss.bash
# real 0m8.961s
# No errors
# Log into globus.org
# Log into endpoints (NERSC Perlmutter, Globus Tutorial Collection 1) at globus.org: File Manager > Add the endpoints in the "Collection" fields
time ./test_ls_globus.bash
# Paste auth code
# real 0m40.364s
# No errorsSuccess |
Beta Was this translation helpful? Give feedback.
-
|
CompyzstashTesting stepsFollowing the test README at https://github.com/E3SM-Project/zstash/blob/main/tests/README.md. cd ~/ez/zstash
git status
# branch test_unified_1.12.0rc3_chrysalis # Mislabeled
# nothing to commit
# REMINDER: `git fetch upstream main` is NOT guaranteed to work on Compy!
# Checking out a branch from upstream/main might not actually
# base it on ALL the most recent commits!
# Not specifying a branch at all seems to be the best method:
git fetch upstream
# https://github.com/E3SM-Project/zstash/commits/main
# Test updates for zstash rc5 (#400)
# Bump to 1.5.0rc4 (#399)
# #400 only changed files in `tests/` so we can include thatas well
git checkout -b test_unified_1.12.0rc4_compy upstream/main
git log
# Good, commits match
source /share/apps/E3SM/conda_envs/test_e3sm_unified_1.12.0rc4_compy.sh
pytest tests/unit/test_*.py
# 1 passed in 1.07s
python -m unittest tests/integration/python_tests/group_by_command/test_*.py
# Ran 69 tests in 136.090s
# OK (skipped=32)
python -m unittest tests/integration/python_tests/group_by_workflow/test_*.py
# Ran 4 tests in 6.662s
# OKSuccess |
Beta Was this translation helpful? Give feedback.
-
|
@forsyth2 When I made a recent try, I was prompted to apply the URL and submit the code, I did so, and is was "accepted" (tokens file updated or something), but then immediately issues a series of exceptions, the final element of which reads: When I tried again, it did not even prompt me with a URL - it used the "cashed tokens" and threw the same exceptions. I wanted to capture all of it, but have difficulty (loss of scrollback) so I asked AI: The AI replied: SO ... I will try again with "script" THE RESULT: (e3sm_unified_1.12.0rc3_login) [ac.bartoletti1@chrlogin2 1_DataAcquisition]$ script -c "./run_zstash_test.sh" OUTPUT.TXT (more OUTPUT.TXT) Suggestions? Are there files I should purge for a fresh start? |
Beta Was this translation helpful? Give feedback.


Uh oh!
There was an error while loading. Please reload this page.
-
Chrysalis
Unit tests pass.
Testing steps
Possible additional tests to run (some can only be run on certain machines): see list at #385 (comment).
Beta Was this translation helpful? Give feedback.
All reactions