]>
git-server-git.apps.pok.os.sepia.ceph.com Git - s3-tests.git/log
Andrew Gaul [Tue, 12 Aug 2014 19:25:56 +0000 (12:25 -0700)]
Test half-open range requests
Yehuda Sadeh [Fri, 18 Jul 2014 20:51:22 +0000 (13:51 -0700)]
test_s3: add bucket listing tests
Test prefix, delimiter, common prefixes, max_keys.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Yehuda Sadeh [Wed, 16 Jul 2014 20:22:38 +0000 (13:22 -0700)]
rgw: add more multipart upload tests
Check for issue #8846.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Tue, 3 Jun 2014 23:14:59 +0000 (16:14 -0700)]
s3tests: extende multipart upload test
Test for issue #8452
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Yehuda Sadeh [Tue, 1 Apr 2014 19:20:24 +0000 (12:20 -0700)]
test_s3: add some debug prints for multi region test
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Tue, 1 Apr 2014 19:20:16 +0000 (12:20 -0700)]
test_s3: extend multipart test
Make test use a multipart upload with different part sizes, to exercise
code that triggered #7935.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Tue, 1 Apr 2014 19:20:08 +0000 (12:20 -0700)]
test_s3: extend multi-delete test
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Sandon Van Ness [Fri, 10 Jan 2014 03:09:39 +0000 (19:09 -0800)]
Added pip 1.5 workaround.
Setuptools needs to be upgraded with --no-use-wheel. A change we
already were using in other projects.
Signed-off-by: Sandon Van Ness <sandon@inktank.com>
Yehuda Sadeh [Sat, 7 Sep 2013 04:54:46 +0000 (21:54 -0700)]
Merge branch 'next'
Yehuda Sadeh [Sat, 7 Sep 2013 04:54:25 +0000 (21:54 -0700)]
Merge branch 'wip-6078' into next
Yehuda Sadeh [Wed, 4 Sep 2013 23:45:00 +0000 (16:45 -0700)]
rgw: extend cors tests
Checks all sort of issues related to #6078.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Joe Buck [Sat, 31 Aug 2013 06:38:04 +0000 (23:38 -0700)]
fix nuke_buckets for non-region tests
Signed-off-by: Joe Buck <jbbuck@gmail.com>
Joe Buck [Thu, 29 Aug 2013 22:37:15 +0000 (15:37 -0700)]
Moving region_sync to utils
Since other classes need to do syncs,
let's move it to the utils file.
Signed-off-by: Joe Buck <jbbuck@gmail.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Joe Buck [Thu, 29 Aug 2013 22:48:09 +0000 (15:48 -0700)]
Rework nuke_buckets
Nuke all buckets on the master, sync, and then
nuke any remaining buckets on non-master regions.
Signed-off-by: Joe Buck <jbbuck@gmail.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Joe Buck [Wed, 28 Aug 2013 16:36:42 +0000 (09:36 -0700)]
Improve post-test cleanup
The multi-region tests were not being diligent
about cleaning up their buckets / keys
and making sure that those deletes were synced.
This was causing the nuke_prefixed_buckets()
method to run into errors.
This patch adds more cleanup code and
validation of that cleanup within
the pertinent tests.
Signed-off-by: Joe Buck <jbbuck@gmail.com>
Joe Buck [Wed, 21 Aug 2013 22:47:04 +0000 (15:47 -0700)]
Add support for default_region
Changes to actually use the
'default_region' setting in the
S3TEST_CONF file.
Previously, the first connection set
was assumed to be the default.
This means that the parse order
of the S3TEST_CONF file was dictating
how the tests behaved, resulting in
failures in some cases.
Signed-off-by: Joe Buck <jbbuck@gmail.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Yehuda Sadeh [Wed, 28 Aug 2013 02:47:07 +0000 (19:47 -0700)]
rgw: more extensive CORS testing
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Joe Buck [Mon, 26 Aug 2013 20:58:59 +0000 (13:58 -0700)]
readwrite: add missing traceback object
An error code path was missing the traceback
object and was causing a key error when
that path was executed.
Signed-off-by: Joe Buck <jbbuck@gmail.com>
Yehuda Sadeh [Fri, 16 Aug 2013 17:55:54 +0000 (10:55 -0700)]
Merge branch 'next'
Conflicts:
s3tests/functional/test_s3.py
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Joe Buck [Fri, 9 Aug 2013 04:47:34 +0000 (21:47 -0700)]
readwrite: error propagation code
This is my attempt at enabling errors
in the readwrite.py to propate up
to the calling teuthology task.
Signed-off-by: Joe Buck <jbbuck@gmail.com>
Joe Buck [Fri, 2 Aug 2013 23:49:20 +0000 (16:49 -0700)]
readwrite.py: adding parameters
Add an optional parameter to trigger deterministic
file name creation (for separate write/read tasks).
Also, change the behavior when zero writers
are specified to actually generate no data.
Signed-off-by: Joe Buck <jbbuck@gmail.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Yehuda Sadeh [Mon, 5 Aug 2013 20:55:22 +0000 (13:55 -0700)]
rename 'partial' metadata sync to 'incremental'
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Thu, 1 Aug 2013 20:24:28 +0000 (13:24 -0700)]
s3tests: improve cors test to cover more functionality
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Thu, 6 Jun 2013 18:19:05 +0000 (11:19 -0700)]
test_s3: basic cors test
related to issue #5261
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Mon, 29 Jul 2013 20:17:46 +0000 (13:17 -0700)]
s3tests: only tun multiregion tests if configured
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Sat, 27 Jul 2013 05:19:36 +0000 (22:19 -0700)]
s3tests: modify cross region copy, sync triggering
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Sat, 27 Jul 2013 03:33:48 +0000 (20:33 -0700)]
s3tests: improve cross region copy, sync meta
Can now configure sync agent rest address in order to force
a sync operation. Another option is to set a waiting time for
meta sync.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Sat, 27 Jul 2013 01:07:52 +0000 (18:07 -0700)]
s3tests: basic test to copy object between regions
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Fri, 26 Jul 2013 18:16:36 +0000 (11:16 -0700)]
s3tests: test_region_bucket_create_secondary_access_master
first multi-region test
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Fri, 26 Jul 2013 17:46:56 +0000 (10:46 -0700)]
s3tests: some more multiregion changes
Now creating a connection per region for each user, can access
master and secondaries, and set a default region.
No longer using a specific region per user, as it doesn't
make sense.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Mon, 17 Jun 2013 18:44:01 +0000 (11:44 -0700)]
s3_test: add test for listing objects with special prefix
Check for ceph issue #5362. Prefix starts with underscore.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Thu, 6 Jun 2013 18:19:05 +0000 (11:19 -0700)]
test_s3: basic cors test
related to issue #5261
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Wed, 24 Jul 2013 18:51:26 +0000 (11:51 -0700)]
requirements.txt: work around pip 1.4 issue
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Thu, 25 Jul 2013 23:44:41 +0000 (16:44 -0700)]
set the region is_master field
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Thu, 25 Jul 2013 23:43:19 +0000 (16:43 -0700)]
rearrange regions info container
Now able to easily get the master and secondaries
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Thu, 25 Jul 2013 21:13:34 +0000 (14:13 -0700)]
add flexible multi-region configuration
can now create a region-specific configuration:
[region foo]
api_name = ...
host = ...
port = ...
and set that region to be used for specific connection:
[s3 main]
region = foo
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Wed, 24 Jul 2013 20:23:24 +0000 (13:23 -0700)]
support region configuration
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Wed, 24 Jul 2013 18:51:26 +0000 (11:51 -0700)]
requirements.txt: work around pip 1.4 issue
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Josh Durgin [Wed, 24 Jul 2013 18:10:36 +0000 (11:10 -0700)]
Oops, wrong version of previous commit forgot a space
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
Josh Durgin [Wed, 10 Jul 2013 01:15:25 +0000 (18:15 -0700)]
Fix package detection on centos in bootstrap
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
Yehuda Sadeh [Mon, 3 Jun 2013 19:18:05 +0000 (12:18 -0700)]
Merge pull request #7 from wyllys66/issue6
Fixed contentlength_negative tests to ignore the error_code
Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
Wyllys Ingersoll [Mon, 3 Jun 2013 19:07:21 +0000 (15:07 -0400)]
Fixed contentlength_negative tests to ignore the error_code
Sage Weil [Tue, 7 May 2013 04:36:43 +0000 (21:36 -0700)]
Merge remote-tracking branch 'gh/next'
Yehuda Sadeh [Fri, 1 Mar 2013 23:54:04 +0000 (15:54 -0800)]
Merge pull request #5 from ceph/wip-migrate-test1
generate_objects: use rewind=True in upload_objects
Matthew Wodrich [Thu, 28 Feb 2013 04:02:25 +0000 (20:02 -0800)]
generate_objects: use rewind=True in upload_objects
Use the rewind=True argument when uploading objects to make
realistic.py's use of upload_objects compatible with boto>=2.4.1, which
will try to seek to the end of the fp if rewind is not True.
Yehuda Sadeh [Wed, 20 Feb 2013 21:55:35 +0000 (13:55 -0800)]
test_s3: reduce multipart tests sizes
Tests were dominating run time
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
caleb miles [Wed, 31 Oct 2012 19:32:03 +0000 (15:32 -0400)]
test_s3: test multi-part uploads using boto provided functionality.
Tests the implementation of multi-part upload and verifies written
object.
Signed-off-by: caleb miles <caleb.miles@inktank.com>
caleb miles [Thu, 7 Feb 2013 20:58:32 +0000 (15:58 -0500)]
test_s3: Add test of ACL grants through HTTP headers.
Signed-off-by: caleb miles <caleb.miles@inktank.com>
Yehuda Sadeh [Wed, 20 Feb 2013 01:58:54 +0000 (17:58 -0800)]
test_s3: fix test_list_multipart_upload
test wasn't really testing what it should have
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
caleb miles [Fri, 1 Feb 2013 21:01:31 +0000 (16:01 -0500)]
test_s3: Add tests for additional canned acl support.
Corresponds to tracker issue 3667.
Signed-off-by: caleb miles <caleb.miles@inktank.com>
Yehuda Sadeh [Wed, 6 Feb 2013 18:31:19 +0000 (10:31 -0800)]
test_s3: check stats correct after multipart upload
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Tue, 29 Jan 2013 21:04:43 +0000 (13:04 -0800)]
requirements.txt: change requests package requirement
Specifying a specific version number (0.14.0). Newer version (1.1.0)
does not handle POST redirect correctly.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Wed, 23 Jan 2013 18:41:38 +0000 (10:41 -0800)]
rgw: fix post tests to include tcp port
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Fri, 18 Jan 2013 18:35:31 +0000 (10:35 -0800)]
rgw: remove more fails_on_dho tags
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Fri, 18 Jan 2013 18:23:09 +0000 (10:23 -0800)]
rgw: remove fails_on_dho tags
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Wed, 16 Jan 2013 22:39:25 +0000 (14:39 -0800)]
test_s3: add test_object_copy_canned_acl
test copy object with canned acl modification
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Fri, 18 Jan 2013 17:57:01 +0000 (09:57 -0800)]
rgw: add missing fails_on_dho to post tests
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Mon, 15 Oct 2012 22:57:42 +0000 (15:57 -0700)]
s3tests: fix post tests
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
caleb miles [Mon, 15 Oct 2012 17:59:10 +0000 (13:59 -0400)]
test_s3: Add tests of post object.
Tests the implementation of browser based uploads via a POST request.
Signed-off-by: caleb miles <caleb.miles@inktank.com>
caleb miles [Thu, 9 Aug 2012 22:51:07 +0000 (15:51 -0700)]
test_s3: Add a test of multi-object delete.
Tests the implementation of the multi-object delete function call.
Signed-off-by: caleb miles <caleb.miles@inktank.com>
Yehuda Sadeh [Fri, 6 Jul 2012 22:17:18 +0000 (15:17 -0700)]
test_s3: add a test for response header modification
Testing response header fields modification by specified params.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Fri, 6 Jul 2012 21:44:22 +0000 (14:44 -0700)]
test_s3: remove extra code block
Code was duplicated by mistake. Removing it.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Kyle Bader [Tue, 3 Jul 2012 23:28:59 +0000 (16:28 -0700)]
Add strict RFC2616 attributes to metadata tests
Some proxies/load balancers may sanitize input and may remove
headers that are not RFC 2616 complaint. This allows several
tests to be skipped if you are putting one of these products
in front of an S3 compatible API.
Yehuda Sadeh [Fri, 15 Jun 2012 01:58:17 +0000 (18:58 -0700)]
annotate tests with fails_on_dho
Should be reverted once fixes are pushed to the dho branch.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Fri, 15 Jun 2012 00:07:46 +0000 (17:07 -0700)]
test two cases in copying object to itself
- should fail when not trying to change metadata
- should succeed when changing metadata; also verify metadata
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Thu, 14 Jun 2012 20:56:45 +0000 (13:56 -0700)]
set boto version for 2.4.1
2.5.x has an issue when a 400 response is returned.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Wed, 23 May 2012 19:35:56 +0000 (12:35 -0700)]
boto: bump required version to 2.1
We now pass rewind param to key.set_contents_from_file,
which requires >= 2.1
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Wed, 16 May 2012 23:34:18 +0000 (16:34 -0700)]
realistic.py: update seek() implementation
seek() requires whence param. Missing it broke readwrite test with
boto 2.4.0.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Wed, 16 May 2012 20:32:33 +0000 (13:32 -0700)]
test_s3: key.set_contents_from_file() rewind on dual write
This fixes a failure with boto 2.4.0.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Wed, 16 May 2012 20:30:39 +0000 (13:30 -0700)]
test_s3: fix FakeFile.seek(): handles whence param
beforehand we didn't accept the seek() whence param, which
failed with boto 2.4.0.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Yehuda Sadeh [Thu, 19 Apr 2012 20:33:08 +0000 (13:33 -0700)]
add functional tests for bucket HEAD
Signed-off-by: Yehuda Sadeh <yehuda.sadeh@dreamhost.com>
Yehuda Sadeh [Mon, 2 Apr 2012 21:38:39 +0000 (14:38 -0700)]
functional: test that bucket recreation doesn't override index
This resolves issue #1853.
Signed-off-by: Yehuda Sadeh <yehuda.sadeh@dreamhost.com>
Yehuda Sadeh [Wed, 15 Feb 2012 20:45:31 +0000 (12:45 -0800)]
fix atomic_write test, don't resuse same key handle for read and write
Yehuda Sadeh [Sat, 11 Feb 2012 05:19:23 +0000 (21:19 -0800)]
set fails_on_dho on test_bucket_create_special_key_names
Yehuda Sadeh [Sat, 11 Feb 2012 00:53:06 +0000 (16:53 -0800)]
test '%' as a valid char for object name
Yehuda Sadeh [Tue, 7 Feb 2012 01:04:24 +0000 (17:04 -0800)]
add test_bucket_create_special_key_names
Yehuda Sadeh [Tue, 7 Feb 2012 00:38:42 +0000 (16:38 -0800)]
add test_object_copy_zero_size
Steven Berler [Fri, 30 Dec 2011 19:05:12 +0000 (19:05 +0000)]
precompute files in readwrite tool
Makes the readwrite tool precompute a set of files and reuse them
when writing objects rather than generating each file on the fly.
Mark Kampe [Thu, 22 Dec 2011 21:08:03 +0000 (13:08 -0800)]
RGW test-case annotation for inventory.
Annotated S3 functional and error-detection test cases
with resource/method/operation/assertion properties to
enable automatic test case inventory generation.
Signed-off-by: Mark Kampe <mark.kampe@dreamhost.com>
Mark Kampe [Thu, 22 Dec 2011 21:04:30 +0000 (13:04 -0800)]
Added descriptions of what the fuzzer is and does.
Signed-off-by: Mark Kampe <mark.kampe@dreamhost.com>
Steven Berler [Thu, 22 Dec 2011 23:21:58 +0000 (23:21 +0000)]
improve random file generation performance
Makes the random file generator not generate more data
than the size of the file. Previously it would generate
1 MB of data even if the file was much smaller.
Steven Berler [Sat, 17 Dec 2011 01:54:59 +0000 (01:54 +0000)]
readwrite analysis tool
Adds a tool to analyze the output from the readwrite and roundtrip tools.
The output format is similar to the output from siege.
Yehuda Sadeh [Tue, 22 Nov 2011 22:46:53 +0000 (14:46 -0800)]
test_bucket_create_bad_contentlength_empty should use its own connection
since it can leave the connection in a wierd state
Yehuda Sadeh [Tue, 22 Nov 2011 21:25:42 +0000 (13:25 -0800)]
add bucket header tests
Matthew Wodrich [Fri, 4 Nov 2011 23:29:54 +0000 (16:29 -0700)]
Mark tests that fail with subdomain calling format
Add @attr('fails_with_subdomain') on all tests that should fail when
subdomain calling format is used, because they break DNS rules.
Matthew Wodrich [Thu, 3 Nov 2011 17:22:23 +0000 (10:22 -0700)]
add calling_format switch in functional and common
Add calling_format switch with options ordinary, subdomain, and vhost to
s3tests/functional/__init__.py and /s3tests/common.py to allow the use
of OrdinaryCallingFormat, SubdomainCallingFormat, and VHostCallingFormat
in the config files for the nosetests and the tools using the common
parser.
Stephon Striplin [Fri, 28 Oct 2011 19:46:12 +0000 (12:46 -0700)]
add fails_on_dho on a failing test
It turns out that the e-mail comments were legitimate. The reason the
tests were passing was because the specific users now had e-mail
addresses, but this not the default case.
Kyle Marsh [Wed, 19 Oct 2011 21:01:55 +0000 (14:01 -0700)]
Update docstring for generate_objects
Tommi Virtanen [Thu, 13 Oct 2011 20:35:56 +0000 (13:35 -0700)]
Let nose run s3tests in parallel.
This decreases the run time significantly.
Unfortunately, there seem to be cleanup-related bugs
in parallel runs for now. It's not safe to actually
run with --processes=N >1 yet, but at least the right
magic incantation is now recorded.
Tommi Virtanen [Thu, 13 Oct 2011 20:34:23 +0000 (13:34 -0700)]
Move fuzzer under s3tests/fuzz.
This way, its unit tests are separate from s3tests/functional,
and s3tests/functional is the thing that actually talks to an
S3 implementation over the wire.
To actually run the fuzzer, use ./virtualenv/bin/s3tests-fuzz-headers
Tommi Virtanen [Wed, 12 Oct 2011 22:47:28 +0000 (15:47 -0700)]
Merge remote branch 'github/fuzz_headers'
Stephon Striplin [Thu, 6 Oct 2011 23:19:43 +0000 (16:19 -0700)]
remove fails_on_{dho,rgw} on passing tests
Sage Weil [Wed, 5 Oct 2011 23:04:20 +0000 (16:04 -0700)]
add s3tests.functional.test_s3.test_bucket_list_distinct
Sage Weil [Mon, 26 Sep 2011 20:37:16 +0000 (13:37 -0700)]
add fails_on_dho to test_object_create_bad_authorization_unreadable
Stephon Striplin [Fri, 23 Sep 2011 22:14:26 +0000 (15:14 -0700)]
add fail_on_rgw on test_object_create_bad_authorization_unreadable
Stephon Striplin [Thu, 22 Sep 2011 20:07:02 +0000 (13:07 -0700)]
Rename object acl test
Stephon Striplin [Thu, 22 Sep 2011 19:50:13 +0000 (12:50 -0700)]
add no Content-Length PUT object acl test
Kyle Marsh [Mon, 12 Sep 2011 19:35:10 +0000 (12:35 -0700)]
S3 Fuzzer: httplib error handling
Sometimes httplib will through a BadStatusLine error that the fuzzer should
catch and register as a failure.
Kyle Marsh [Fri, 9 Sep 2011 15:36:51 +0000 (08:36 -0700)]
S3-Fuzzer: add objects to decision graph
Add objects to the fuzzer's attack surface description
Kyle Marsh [Wed, 24 Aug 2011 19:39:12 +0000 (12:39 -0700)]
S3 Fuzzer: changed output and failure catching.