Merge lp:~noise/tanuki-agent/test_tarball2 into lp:tanuki-agent

Proposed by Bret Barker
Status: Merged
Approved by: Bret Barker
Approved revision: 170
Merged at revision: 170
Proposed branch: lp:~noise/tanuki-agent/test_tarball2
Merge into: lp:tanuki-agent
Diff against target: 96 lines (+73/-1)
2 files modified
Makefile (+2/-1)
rpi2-sample-provkit/test_tarball_content/test2 (+71/-0)
To merge this branch: bzr merge lp:~noise/tanuki-agent/test_tarball2
Reviewer Review Type Date Requested Status
Bret Barker (community) Approve
Review via email: mp+278625@code.launchpad.net

Commit message

working GM test with provkit and test_tarball2

Description of the change

The tutorial still needs work, but I just did a successful run with --local-test using a hacked up test_opp.json!

To post a comment you must log in.
Revision history for this message
Bret Barker (noise) wrote :

self-approving as it's trivial.

review: Approve
Revision history for this message
Tanuki Bot (tanuki-bot) wrote :
Download full text (3.2 KiB)

The attempt to merge lp:~noise/tanuki-agent/test_tarball2 into lp:tanuki-agent failed. Below is the output from the failed tests.

rm -rf env logs
rm -f version_info.py
find . -name '*.pyc' -delete
find . -name '*.~*' -delete
virtualenv -p python3 env
Using base prefix '/usr'
New python executable in env/bin/python3
Also creating executable in env/bin/python
Installing setuptools, pip...done.
Running virtualenv with interpreter /usr/bin/python3
bzr version-info -r "-1" --format=custom --template="revno = '{revno}'\n" > "version_info.py" || echo "revno = 'UNKNOWN'" > "version_info.py"
rm -rf /tmp/pip-cache
bzr branch lp:~tanuki/tanuki-agent/pip-cache /tmp/pip-cache
env/bin/pip install --no-index --find-links=/tmp/pip-cache -r requirements.txt
Ignoring indexes: https://pypi.python.org/simple/
Downloading/unpacking docopt==0.6.2 (from -r requirements.txt (line 1))
Downloading/unpacking requests==2.7.0 (from -r requirements.txt (line 2))
Downloading/unpacking requests-oauthlib==0.5.0 (from -r requirements.txt (line 3))
Downloading/unpacking oauthlib==1.0.3 (from -r requirements.txt (line 4))
Installing collected packages: docopt, requests, requests-oauthlib, oauthlib
Successfully installed docopt requests requests-oauthlib oauthlib
Cleaning up...
env/bin/pip install --no-index --find-links=/tmp/pip-cache -r test_requirements.txt
Ignoring indexes: https://pypi.python.org/simple/
Downloading/unpacking flake8==2.4.1 (from -r test_requirements.txt (line 1))
Downloading/unpacking pytest==2.7.2 (from -r test_requirements.txt (line 2))
Downloading/unpacking pytest-capturelog==0.7 (from -r test_requirements.txt (line 3))
Downloading/unpacking Markdown==2.6.2 (from -r test_requirements.txt (line 4))
Downloading/unpacking pep8>=1.5.7,!=1.6.0,!=1.6.1,!=1.6.2 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking pyflakes>=0.8.1,<0.9 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking mccabe>=0.2.1,<0.4 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking py>=1.4.29 (from pytest==2.7.2->-r test_requirements.txt (line 2))
Installing collected packages: flake8, pytest, pytest-capturelog, Markdown, pep8, pyflakes, mccabe, py
Successfully installed flake8 pytest pytest-capturelog Markdown pep8 pyflakes mccabe py
Cleaning up...
rm -rf logs
env/bin/py.test agent.py test_agent.py
============================= test session starts ==============================
platform linux -- Python 3.4.3 -- py-1.4.30 -- pytest-2.7.2
rootdir: /tmp/tarmac/branch.XQZoeI, inifile:
plugins: capturelog
collected 49 items

test_agent.py .................................................

========================== 49 passed in 0.35 seconds ===========================
env/bin/flake8 *.py scripts/*.py --max-line-length=99
env/bin/flake8 rpi2-sample-provkit/setup rpi2-sample-provkit/provision rpi2-sample-provkit/provision2 rpi2-sample-provkit/runtest rpi2-sample-provkit/sshrobot rpi2-sample-provkit/utils.py --max-line-length=99 --builtins=raw_input
env/bin/flake8 rpi2-sample-provkit/test_tarball_content/test* --max-line-length=99
rpi2-sample-provkit/test_tarball_content/test2:47:1: W293 blank line contains whitespace...

Read more...

Revision history for this message
Tanuki Bot (tanuki-bot) wrote :
Download full text (3.2 KiB)

The attempt to merge lp:~noise/tanuki-agent/test_tarball2 into lp:tanuki-agent failed. Below is the output from the failed tests.

rm -rf env logs
rm -f version_info.py
find . -name '*.pyc' -delete
find . -name '*.~*' -delete
virtualenv -p python3 env
Using base prefix '/usr'
New python executable in env/bin/python3
Also creating executable in env/bin/python
Installing setuptools, pip...done.
Running virtualenv with interpreter /usr/bin/python3
bzr version-info -r "-1" --format=custom --template="revno = '{revno}'\n" > "version_info.py" || echo "revno = 'UNKNOWN'" > "version_info.py"
rm -rf /tmp/pip-cache
bzr branch lp:~tanuki/tanuki-agent/pip-cache /tmp/pip-cache
env/bin/pip install --no-index --find-links=/tmp/pip-cache -r requirements.txt
Ignoring indexes: https://pypi.python.org/simple/
Downloading/unpacking docopt==0.6.2 (from -r requirements.txt (line 1))
Downloading/unpacking requests==2.7.0 (from -r requirements.txt (line 2))
Downloading/unpacking requests-oauthlib==0.5.0 (from -r requirements.txt (line 3))
Downloading/unpacking oauthlib==1.0.3 (from -r requirements.txt (line 4))
Installing collected packages: docopt, requests, requests-oauthlib, oauthlib
Successfully installed docopt requests requests-oauthlib oauthlib
Cleaning up...
env/bin/pip install --no-index --find-links=/tmp/pip-cache -r test_requirements.txt
Ignoring indexes: https://pypi.python.org/simple/
Downloading/unpacking flake8==2.4.1 (from -r test_requirements.txt (line 1))
Downloading/unpacking pytest==2.7.2 (from -r test_requirements.txt (line 2))
Downloading/unpacking pytest-capturelog==0.7 (from -r test_requirements.txt (line 3))
Downloading/unpacking Markdown==2.6.2 (from -r test_requirements.txt (line 4))
Downloading/unpacking mccabe>=0.2.1,<0.4 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking pep8>=1.5.7,!=1.6.0,!=1.6.1,!=1.6.2 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking pyflakes>=0.8.1,<0.9 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking py>=1.4.29 (from pytest==2.7.2->-r test_requirements.txt (line 2))
Installing collected packages: flake8, pytest, pytest-capturelog, Markdown, mccabe, pep8, pyflakes, py
Successfully installed flake8 pytest pytest-capturelog Markdown mccabe pep8 pyflakes py
Cleaning up...
rm -rf logs
env/bin/py.test agent.py test_agent.py
============================= test session starts ==============================
platform linux -- Python 3.4.3 -- py-1.4.30 -- pytest-2.7.2
rootdir: /tmp/tarmac/branch.lxaHmG, inifile:
plugins: capturelog
collected 49 items

test_agent.py .................................................

========================== 49 passed in 0.40 seconds ===========================
env/bin/flake8 *.py scripts/*.py --max-line-length=99
env/bin/flake8 rpi2-sample-provkit/setup rpi2-sample-provkit/provision rpi2-sample-provkit/provision2 rpi2-sample-provkit/runtest rpi2-sample-provkit/sshrobot rpi2-sample-provkit/utils.py --max-line-length=99 --builtins=raw_input
env/bin/flake8 rpi2-sample-provkit/test_tarball_content/test* --max-line-length=99
rpi2-sample-provkit/test_tarball_content/test2:47:1: W293 blank line contains whitespace...

Read more...

Revision history for this message
Tanuki Bot (tanuki-bot) wrote :
Download full text (3.2 KiB)

The attempt to merge lp:~noise/tanuki-agent/test_tarball2 into lp:tanuki-agent failed. Below is the output from the failed tests.

rm -rf env logs
rm -f version_info.py
find . -name '*.pyc' -delete
find . -name '*.~*' -delete
virtualenv -p python3 env
Using base prefix '/usr'
New python executable in env/bin/python3
Also creating executable in env/bin/python
Installing setuptools, pip...done.
Running virtualenv with interpreter /usr/bin/python3
bzr version-info -r "-1" --format=custom --template="revno = '{revno}'\n" > "version_info.py" || echo "revno = 'UNKNOWN'" > "version_info.py"
rm -rf /tmp/pip-cache
bzr branch lp:~tanuki/tanuki-agent/pip-cache /tmp/pip-cache
env/bin/pip install --no-index --find-links=/tmp/pip-cache -r requirements.txt
Ignoring indexes: https://pypi.python.org/simple/
Downloading/unpacking docopt==0.6.2 (from -r requirements.txt (line 1))
Downloading/unpacking requests==2.7.0 (from -r requirements.txt (line 2))
Downloading/unpacking requests-oauthlib==0.5.0 (from -r requirements.txt (line 3))
Downloading/unpacking oauthlib==1.0.3 (from -r requirements.txt (line 4))
Installing collected packages: docopt, requests, requests-oauthlib, oauthlib
Successfully installed docopt requests requests-oauthlib oauthlib
Cleaning up...
env/bin/pip install --no-index --find-links=/tmp/pip-cache -r test_requirements.txt
Ignoring indexes: https://pypi.python.org/simple/
Downloading/unpacking flake8==2.4.1 (from -r test_requirements.txt (line 1))
Downloading/unpacking pytest==2.7.2 (from -r test_requirements.txt (line 2))
Downloading/unpacking pytest-capturelog==0.7 (from -r test_requirements.txt (line 3))
Downloading/unpacking Markdown==2.6.2 (from -r test_requirements.txt (line 4))
Downloading/unpacking pyflakes>=0.8.1,<0.9 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking pep8>=1.5.7,!=1.6.0,!=1.6.1,!=1.6.2 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking mccabe>=0.2.1,<0.4 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking py>=1.4.29 (from pytest==2.7.2->-r test_requirements.txt (line 2))
Installing collected packages: flake8, pytest, pytest-capturelog, Markdown, pyflakes, pep8, mccabe, py
Successfully installed flake8 pytest pytest-capturelog Markdown pyflakes pep8 mccabe py
Cleaning up...
rm -rf logs
env/bin/py.test agent.py test_agent.py
============================= test session starts ==============================
platform linux -- Python 3.4.3 -- py-1.4.30 -- pytest-2.7.2
rootdir: /tmp/tarmac/branch.M0RnFR, inifile:
plugins: capturelog
collected 49 items

test_agent.py .................................................

========================== 49 passed in 0.40 seconds ===========================
env/bin/flake8 *.py scripts/*.py --max-line-length=99
env/bin/flake8 rpi2-sample-provkit/setup rpi2-sample-provkit/provision rpi2-sample-provkit/provision2 rpi2-sample-provkit/runtest rpi2-sample-provkit/sshrobot rpi2-sample-provkit/utils.py --max-line-length=99 --builtins=raw_input
env/bin/flake8 rpi2-sample-provkit/test_tarball_content/test* --max-line-length=99
rpi2-sample-provkit/test_tarball_content/test2:47:1: W293 blank line contains whitespace...

Read more...

Revision history for this message
Tanuki Bot (tanuki-bot) wrote :
Download full text (3.2 KiB)

The attempt to merge lp:~noise/tanuki-agent/test_tarball2 into lp:tanuki-agent failed. Below is the output from the failed tests.

rm -rf env logs
rm -f version_info.py
find . -name '*.pyc' -delete
find . -name '*.~*' -delete
virtualenv -p python3 env
Using base prefix '/usr'
New python executable in env/bin/python3
Also creating executable in env/bin/python
Installing setuptools, pip...done.
Running virtualenv with interpreter /usr/bin/python3
bzr version-info -r "-1" --format=custom --template="revno = '{revno}'\n" > "version_info.py" || echo "revno = 'UNKNOWN'" > "version_info.py"
rm -rf /tmp/pip-cache
bzr branch lp:~tanuki/tanuki-agent/pip-cache /tmp/pip-cache
env/bin/pip install --no-index --find-links=/tmp/pip-cache -r requirements.txt
Ignoring indexes: https://pypi.python.org/simple/
Downloading/unpacking docopt==0.6.2 (from -r requirements.txt (line 1))
Downloading/unpacking requests==2.7.0 (from -r requirements.txt (line 2))
Downloading/unpacking requests-oauthlib==0.5.0 (from -r requirements.txt (line 3))
Downloading/unpacking oauthlib==1.0.3 (from -r requirements.txt (line 4))
Installing collected packages: docopt, requests, requests-oauthlib, oauthlib
Successfully installed docopt requests requests-oauthlib oauthlib
Cleaning up...
env/bin/pip install --no-index --find-links=/tmp/pip-cache -r test_requirements.txt
Ignoring indexes: https://pypi.python.org/simple/
Downloading/unpacking flake8==2.4.1 (from -r test_requirements.txt (line 1))
Downloading/unpacking pytest==2.7.2 (from -r test_requirements.txt (line 2))
Downloading/unpacking pytest-capturelog==0.7 (from -r test_requirements.txt (line 3))
Downloading/unpacking Markdown==2.6.2 (from -r test_requirements.txt (line 4))
Downloading/unpacking pyflakes>=0.8.1,<0.9 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking pep8>=1.5.7,!=1.6.0,!=1.6.1,!=1.6.2 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking mccabe>=0.2.1,<0.4 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking py>=1.4.29 (from pytest==2.7.2->-r test_requirements.txt (line 2))
Installing collected packages: flake8, pytest, pytest-capturelog, Markdown, pyflakes, pep8, mccabe, py
Successfully installed flake8 pytest pytest-capturelog Markdown pyflakes pep8 mccabe py
Cleaning up...
rm -rf logs
env/bin/py.test agent.py test_agent.py
============================= test session starts ==============================
platform linux -- Python 3.4.3 -- py-1.4.30 -- pytest-2.7.2
rootdir: /tmp/tarmac/branch.xQL4ik, inifile:
plugins: capturelog
collected 49 items

test_agent.py .................................................

========================== 49 passed in 0.61 seconds ===========================
env/bin/flake8 *.py scripts/*.py --max-line-length=99
env/bin/flake8 rpi2-sample-provkit/setup rpi2-sample-provkit/provision rpi2-sample-provkit/provision2 rpi2-sample-provkit/runtest rpi2-sample-provkit/sshrobot rpi2-sample-provkit/utils.py --max-line-length=99 --builtins=raw_input
env/bin/flake8 rpi2-sample-provkit/test_tarball_content/test* --max-line-length=99
rpi2-sample-provkit/test_tarball_content/test2:47:1: W293 blank line contains whitespace...

Read more...

Revision history for this message
Tanuki Bot (tanuki-bot) wrote :
Download full text (3.2 KiB)

The attempt to merge lp:~noise/tanuki-agent/test_tarball2 into lp:tanuki-agent failed. Below is the output from the failed tests.

rm -rf env logs
rm -f version_info.py
find . -name '*.pyc' -delete
find . -name '*.~*' -delete
virtualenv -p python3 env
Using base prefix '/usr'
New python executable in env/bin/python3
Also creating executable in env/bin/python
Installing setuptools, pip...done.
Running virtualenv with interpreter /usr/bin/python3
bzr version-info -r "-1" --format=custom --template="revno = '{revno}'\n" > "version_info.py" || echo "revno = 'UNKNOWN'" > "version_info.py"
rm -rf /tmp/pip-cache
bzr branch lp:~tanuki/tanuki-agent/pip-cache /tmp/pip-cache
env/bin/pip install --no-index --find-links=/tmp/pip-cache -r requirements.txt
Ignoring indexes: https://pypi.python.org/simple/
Downloading/unpacking docopt==0.6.2 (from -r requirements.txt (line 1))
Downloading/unpacking requests==2.7.0 (from -r requirements.txt (line 2))
Downloading/unpacking requests-oauthlib==0.5.0 (from -r requirements.txt (line 3))
Downloading/unpacking oauthlib==1.0.3 (from -r requirements.txt (line 4))
Installing collected packages: docopt, requests, requests-oauthlib, oauthlib
Successfully installed docopt requests requests-oauthlib oauthlib
Cleaning up...
env/bin/pip install --no-index --find-links=/tmp/pip-cache -r test_requirements.txt
Ignoring indexes: https://pypi.python.org/simple/
Downloading/unpacking flake8==2.4.1 (from -r test_requirements.txt (line 1))
Downloading/unpacking pytest==2.7.2 (from -r test_requirements.txt (line 2))
Downloading/unpacking pytest-capturelog==0.7 (from -r test_requirements.txt (line 3))
Downloading/unpacking Markdown==2.6.2 (from -r test_requirements.txt (line 4))
Downloading/unpacking pyflakes>=0.8.1,<0.9 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking mccabe>=0.2.1,<0.4 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking pep8>=1.5.7,!=1.6.0,!=1.6.1,!=1.6.2 (from flake8==2.4.1->-r test_requirements.txt (line 1))
Downloading/unpacking py>=1.4.29 (from pytest==2.7.2->-r test_requirements.txt (line 2))
Installing collected packages: flake8, pytest, pytest-capturelog, Markdown, pyflakes, mccabe, pep8, py
Successfully installed flake8 pytest pytest-capturelog Markdown pyflakes mccabe pep8 py
Cleaning up...
rm -rf logs
env/bin/py.test agent.py test_agent.py
============================= test session starts ==============================
platform linux -- Python 3.4.3 -- py-1.4.30 -- pytest-2.7.2
rootdir: /tmp/tarmac/branch.wFQGO8, inifile:
plugins: capturelog
collected 49 items

test_agent.py .................................................

========================== 49 passed in 0.62 seconds ===========================
env/bin/flake8 *.py scripts/*.py --max-line-length=99
env/bin/flake8 rpi2-sample-provkit/setup rpi2-sample-provkit/provision rpi2-sample-provkit/provision2 rpi2-sample-provkit/runtest rpi2-sample-provkit/sshrobot rpi2-sample-provkit/utils.py --max-line-length=99 --builtins=raw_input
env/bin/flake8 rpi2-sample-provkit/test_tarball_content/test* --max-line-length=99
rpi2-sample-provkit/test_tarball_content/test2:47:1: W293 blank line contains whitespace...

Read more...

lp:~noise/tanuki-agent/test_tarball2 updated
170. By Bret Barker

lint

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'Makefile'
--- Makefile 2015-11-23 20:17:52 +0000
+++ Makefile 2015-11-25 20:26:07 +0000
@@ -20,7 +20,7 @@
20raw-lint:20raw-lint:
21 env/bin/flake8 *.py scripts/*.py --max-line-length=9921 env/bin/flake8 *.py scripts/*.py --max-line-length=99
22 env/bin/flake8 rpi2-sample-provkit/setup rpi2-sample-provkit/provision rpi2-sample-provkit/provision2 rpi2-sample-provkit/runtest rpi2-sample-provkit/sshrobot rpi2-sample-provkit/utils.py --max-line-length=99 --builtins=raw_input22 env/bin/flake8 rpi2-sample-provkit/setup rpi2-sample-provkit/provision rpi2-sample-provkit/provision2 rpi2-sample-provkit/runtest rpi2-sample-provkit/sshrobot rpi2-sample-provkit/utils.py --max-line-length=99 --builtins=raw_input
23 env/bin/flake8 rpi2-sample-provkit/test_tarball_content/test --max-line-length=9923 env/bin/flake8 rpi2-sample-provkit/test_tarball_content/test* --max-line-length=99
2424
25raw-test:25raw-test:
26 rm -rf logs26 rm -rf logs
@@ -57,6 +57,7 @@
5757
58test_tarball:58test_tarball:
59 tar czvf test_tarball.tar.gz -C rpi2-sample-provkit/test_tarball_content test59 tar czvf test_tarball.tar.gz -C rpi2-sample-provkit/test_tarball_content test
60 tar czvf test_tarball2.tar.gz -C rpi2-sample-provkit/test_tarball_content test2
6061
61version:62version:
62 bzr version-info -r $(REVNO) --format=custom --template="revno = '{revno}'\n" > $(VERSION_FILENAME) || echo "revno = 'UNKNOWN'" > $(VERSION_FILENAME)63 bzr version-info -r $(REVNO) --format=custom --template="revno = '{revno}'\n" > $(VERSION_FILENAME) || echo "revno = 'UNKNOWN'" > $(VERSION_FILENAME)
6364
=== added file 'rpi2-sample-provkit/test_tarball_content/test2'
--- rpi2-sample-provkit/test_tarball_content/test2 1970-01-01 00:00:00 +0000
+++ rpi2-sample-provkit/test_tarball_content/test2 2015-11-25 20:26:07 +0000
@@ -0,0 +1,71 @@
1#!/usr/bin/python2
2
3from __future__ import print_function
4
5import codecs
6import json
7import os
8import subprocess
9
10
11def check_test_snap(address, port):
12 """Get the version of the test snap."""
13 cmd = ['ssh', '-o' 'StrictHostKeyChecking=no',
14 '-o', 'UserKnownHostsFile=/dev/null', '-l', 'ubuntu',
15 '-p', port, address, '/apps/bin/test-snap.test-snap -v']
16 output = subprocess.check_output(cmd)
17 return output.decode('utf8').strip()
18
19
20CHECKABLES = [
21 ('test-snap', check_test_snap),
22]
23RESULT_JSON = "../spi_test_result.json"
24
25
26def main():
27 """Main entry point."""
28 rpi2_address = os.environ['RPI2_IP']
29 rpi2_ssh_port = os.environ['RPI2_SSH_PORT']
30 test_opp_path = os.environ['TEST_OPPORTUNITY']
31 with codecs.open(test_opp_path, 'rt', encoding='utf8') as fh:
32 test_opp = json.load(fh)
33
34 # find snap(s) to check version
35 snaps = {}
36 for snap_entry in test_opp['base_snaps']:
37 snaps[snap_entry['name']] = snap_entry['sequence']
38 # strip origin to handle test-snap from any myapps user
39 if 'test-snap' in snap_entry['name']:
40 snaps['test-snap'] = snap_entry['sequence']
41
42 for snap_name, snap_revno in test_opp['extra_snaps']:
43 snaps[snap_name] = snap_revno
44 # strip origin to handle test-snap from any myapps user
45 if 'test-snap' in snap_name:
46 snaps['test-snap'] = snap_revno
47
48 # for each snap, get version executing it inside the raspi, and compare
49 for snap_name, check_function in CHECKABLES:
50 real_revno = check_function(rpi2_address, rpi2_ssh_port)
51 print('got installed test-snap sequence: ' + real_revno)
52 expected = str(snaps[snap_name])
53 assert real_revno == expected, "real={!r} != expected={!r}".format(real_revno, expected)
54 if os.path.exists(RESULT_JSON):
55 load = True
56 mode = "r+t"
57 else:
58 load = False
59 mode = "wt"
60 with codecs.open(RESULT_JSON, mode, encoding="utf8") as fh:
61 if load:
62 res = json.load(fh)
63 else:
64 res = {}
65 res['result'] = 'OK'
66 fh.seek(0)
67 json.dump(res, fh)
68
69
70if __name__ == '__main__':
71 main()

Subscribers

People subscribed via source and target branches

to all changes: