[
https://issues.apache.org/jira/browse/HADOOP-9361?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14051191#comment-14051191
]
Steve Loughran commented on HADOOP-9361:
----------------------------------------
Andew: thanks, will merge in today
Juan: thanks for the testing. The entire Swift test suite is skipped if there's
no auth-keys file -though we could migrate that to the
contract-test-options.xml file. The reason for that policy is that
# some of the junit 3 test suites that are subclassed for hadoop-common-test
aren't skippable (junit 3, see) -this is why in Hadoop common the s3 & ftp
tests don't start with Test*. While the contract tests are designed to be
self-skipping -and so logged in test reports, I left the junit 3 stuff with a
Test profile -you can't really test the swift client without the settings,
except for some minor unit tests
Jay: tighter exceptions provide more information to clients, and lets you
explicitly catch by type in your code, e.g. {{catch(EOFException e}}. general
IOExceptions with text have to be caught as IOE and then tested -and are
incredibly brittle to changes in text. That's why I didn't rename text messages
from exceptions in the common filesystems, even when I tightened their class:
we don't know what callers are searching for the text.
Whenever you can, use explicit types. I also recommend using constants for
text, constants that tests can look for -and in those tests use
{{Exception.toString().contains()}} as the check -not equality, so that if more
details are added the test still works.
> Strictly define the expected behavior of filesystem APIs and write tests to
> verify compliance
> ---------------------------------------------------------------------------------------------
>
> Key: HADOOP-9361
> URL: https://issues.apache.org/jira/browse/HADOOP-9361
> Project: Hadoop Common
> Issue Type: Improvement
> Components: fs, test
> Affects Versions: 3.0.0, 2.4.0
> Reporter: Steve Loughran
> Assignee: Steve Loughran
> Priority: Blocker
> Attachments: HADOOP-9361-001.patch, HADOOP-9361-002.patch,
> HADOOP-9361-003.patch, HADOOP-9361-004.patch, HADOOP-9361-005.patch,
> HADOOP-9361-006.patch, HADOOP-9361-007.patch, HADOOP-9361-008.patch,
> HADOOP-9361-009.patch, HADOOP-9361-011.patch, HADOOP-9361-012.patch,
> HADOOP-9361-013.patch, HADOOP-9361-014.patch, HADOOP-9361-015.patch,
> HADOOP-9361-016.patch, HADOOP-9361-017.patch, HADOOP-9361-018.patch,
> HADOOP-9361.awang-addendum.patch
>
>
> {{FileSystem}} and {{FileContract}} aren't tested rigorously enough -while
> HDFS gets tested downstream, other filesystems, such as blobstore bindings,
> don't.
> The only tests that are common are those of {{FileSystemContractTestBase}},
> which HADOOP-9258 shows is incomplete.
> I propose
> # writing more tests which clarify expected behavior
> # testing operations in the interface being in their own JUnit4 test classes,
> instead of one big test suite.
> # Having each FS declare via a properties file what behaviors they offer,
> such as atomic-rename, atomic-delete, umask, immediate-consistency -test
> methods can downgrade to skipped test cases if a feature is missing.
--
This message was sent by Atlassian JIRA
(v6.2#6252)