Commit Graph

551 Commits

Author SHA1 Message Date
Andrew Gaul bd5b6853ee Replace uses of ByteArrayPayload
Prefer ByteSourcePayload which offers a superset of its functionality.
Note that ByteArrayPayload implicitly set the contentLength while
users of ByteSourcePayload must do so explicitly.
2014-09-07 07:43:14 -07:00
Andrew Gaul 0b89b1fd10 Ensure that Content-MD5 has 128 bits
Update many tests Content-MD5 headers and ETag responses.
2014-09-04 16:57:48 -07:00
Andrew Gaul 34cfdbe266 Enforce Override annotation via Checkstyle
Also remove bogus inheritDoc on base and static methods.
2014-08-31 19:37:50 -07:00
Andrew Gaul 550018a68d Use randomByteSource to generate test data
This avoids buffering the entire bolus of data in-memory.
2014-08-27 15:59:36 -07:00
Andrew Gaul 60e3763999 Throw ContainerNotFoundException from removeBlob
This makes removeBlob consistent with all other user-facing methods.
2014-08-21 16:18:12 -07:00
Jeremy Daggett e711275fb1 Prefer isEmpty() for collections rather than size() 2014-08-20 11:07:48 -07:00
John Walker e5283df995 JCLOUDS-676: Fix reflection warnings / Clojure
JCLOUDS-676: Fix reflection warnings / Clojure

Also fixed a typo in a doc string
2014-08-17 12:03:30 -07:00
Andrew Gaul 20bc145284 JCLOUDS-650: ContainerNotFoundException on putBlob
Found with Ceph s3-tests and s3proxy.
2014-08-09 00:25:10 -07:00
Andrew Phillips e3d9851216 Up to 2.0.0-SNAPSHOT after the 1.8.0 release 2014-08-05 09:10:24 +02:00
Andrew Gaul 9c82ded343 Correct comment 2014-07-27 21:25:35 -07:00
Andrew Gaul 7f31cd6051 Handle possibly null message from IOException 2014-07-27 19:41:45 -07:00
Andrew Gaul 1e1eb5a092 Add deleteContainerIfEmpty to BlobStore
This matches how most blobstores operate: delete container is a single
operation, not a compound operation which recursively deletes blobs.
Azure is the only provider which allows deleting a non-empty
container.
2014-07-25 23:02:39 -07:00
Andrew Phillips 5732bdcd94 Escaping regex special chars (esp. '\') in delimiter matching
Uncovered by 370194b
2014-07-22 13:35:52 -04:00
Andrew Gaul f17c876d8d Replace const.txt file input with synthetic inputs
This commit replaces file resource-based test inputs with in-memory
equivalents.  This is more consistent and efficient than the previous
approach.  Also resized some test inputs to be partSize + 1 instead of
2 * partSize.  Tested against aws-s3, blobstore, core, cloudfiles-us,
and filesystem.
2014-07-19 18:35:25 -07:00
Andrew Gaul dd3dc9790e Close streams in integration tests
Also remove bogus delete workaround.  Previously unclosed
FileInputStream caused test failures on Windows which cannot delete
open files.  Found with Kohsuke's file-leak-detector.
2014-07-19 05:25:20 -07:00
Andrew Gaul fb60d76704 JCLOUDS-622: Remove most vestiges of InputSupplier
Guava 16 deprecated InputSupplier and a future release will remove it.
2014-07-16 16:07:59 -07:00
Andrew Gaul a8b106c2bb JCLOUDS-622: remove calls to InputSupplier methods
Guava 16 deprecated these methods and Guava 18 will remove them.
2014-07-15 03:09:58 -07:00
Andrew Gaul 75928795f3 Address Checkstyle violations 2014-07-15 03:07:29 -07:00
Andrew Gaul bdb5cbcbe7 Improve use of ByteSource with test resources
This commit ensures proper resource cleanup, simplifies
initialization, and paves the way for purely synthetic inputs in a
subsequent commit.
2014-07-11 09:10:51 -07:00
Andrew Gaul cf830af4d2 Remove unneeded InputSupplier helper
Also convert byte[] to HashCode.
2014-07-10 22:36:32 -07:00
Andrew Gaul f4eca0422d Enforce correct MD5 for local blobstores
Matches behavior of real blobstores.
2014-07-10 22:19:42 -07:00
Andrew Gaul 66dab8d96e JCLOUDS-410: Remove InputStreamSupplierPayload
ByteSourcePayload replaces this.  jclouds 1.7 deprecated
InputStreamSupplierPayload and Guava 16 deprecated InputSupplier
itself.
2014-07-10 20:43:08 -07:00
Andrew Gaul 8fa209b15e Use more specific testng asserts where possible
These asserts yield more informative error messages.  Found with:

grep -rI 'assertTrue(.* =='
grep -rI 'assertTrue(.* !='
grep -rI 'assertTrue(.*\.equals('
2014-06-24 13:54:01 -07:00
Chris Custine 309c053c77 JCLOUDS-584: HP Cloud Object Storage Fixes for 13.5 2014-06-24 12:01:51 -07:00
Andrew Gaul e799a7409c JCLOUDS-597: HashCode methods for Content-MD5
This works more naturally with Guava Hashing methods and immutability
provides better safety guarantees.  Also deprecate existing byte[]
methods.
2014-06-12 15:29:17 -07:00
Andrew Gaul 9cdd53b0b7 JCLOUDS-546: Remove Javadoc @author annotations
Annotations removed with:

find -name \*.java | xargs sed -i /@author/d

Empty Javadoc removed with multiple iterations of:

find -name \*.java | xargs sed -i -z 's/ \*\n \*\// \*\//'
find -name \*.java | xargs sed -i -z 's/ \* \n \*\// \*\//'
find -name \*.java | xargs sed -i -z 's/\/\*\*\n \*\/\n//'
2014-06-07 21:44:54 -07:00
Andrew Gaul da8517f295 Increase timeouts for signed URL tests
Clock skew between the client and blobstore can cause these tests to
spuriously fail.  This commit allows 5 seconds skew in either
direction.
2014-05-30 14:58:40 -07:00
Andrew Gaul 2342abd3c5 Address Checkstyle violations 2014-05-30 11:10:14 -07:00
Andrew Gaul 186f052022 Remove BlobBuilder and Payloads.calculateMD5
Callers should instead explicitly set contentMD5, usually with the
results from Guava Hashing.md5(). This narrows the API and removes a
strange IOException from callers.  Further it removes a dangerous
rebuffering of arbitrarily-large non-repeatable Payloads.
2014-05-28 12:54:18 -07:00
Andrew Gaul c6d4e6645c JCLOUDS-402: Allow Guava MediaType Content-Type
This promotes type-safety.  Keep the String interface for unknown
content types.
2014-05-28 11:45:00 -07:00
Andrew Gaul 70cf3e1f7c Make constants final classes instead of interfaces
This commit prohibits implementation of the empty interface and
instantiation of the class.  Refer to _Effective Java_ item 19 for
more background.
2014-05-16 09:45:52 -07:00
Andrew Gaul 8d51ad6f87 Prefer Guava HttpHeaders over JAX-RS
jclouds code contains more instances of the former and Guava has
additional constants like CONTENT_MD5.
2014-05-15 01:55:51 -07:00
Andrew Gaul 7f28dcef07 Remove deprecation from getConsistencyModel
This method informs callers of the expected blobstore behavior,
avoiding unnecessary work for providers which support strict
consistency (Azure, mock blobstores).
2014-05-09 13:20:42 -07:00
Andrew Gaul 2d88f5164e Enforce that all commas have trailing whitespace 2014-05-08 18:28:08 -07:00
Andrew Gaul a45124c51a JCLOUDS-505: Remove unused ObjectMD5
The only users of this seem to be
org.jclouds.atmos.blobstore.strategy.FindMD5InUserMetadata and
org.jclouds.azureblob.blobstore.strategy.FindMD5InBlobProperties which
are themselves unused.
2014-05-07 10:16:18 +02:00
Shri Javadekar c6cb169dee Creating a separate function to delete directories
Small refactoring to reuse some code.
2014-04-22 11:22:13 +02:00
Andrew Gaul d0bd30cc15 Address several Guava InputSupplier deprecations
Many remain due to Payload implementing InputSupplier<InputStream>.  Guava 18
will remove InputSupplier.
2014-04-12 12:02:26 -07:00
Shri Javadekar 655aa444d7 JCLOUDS-510 Delete objects in a container efficiently.
The existing approach for deleting objects in a container suffers
from a head-of-line blocking problem. This commit implements a better
scheme which does not have that problem. This scheme uses a counting
semaphore for making sure that a certain number of futures are
issued in parallel. As each of these futures is completed, one
permit of the semaphore is released.

Added unit tests for testing this new scheme.
2014-03-26 13:48:28 -07:00
Andrew Gaul d7e0b3b10c Remove WriteTo
Guava helpers capture this functionality in a more idiomatic way.
2014-02-21 17:13:31 -08:00
Andrew Gaul 9a1aae8cfc JCLOUDS-410: Remove StreamingPayload
Only two tests use this class.  Callers should use ByteSourcePayload
or InputStreamPayload instead.
2014-02-19 21:27:31 -08:00
Andrew Gaul f5c9a72243 Add ByteSource Payload support for Clojure 2014-02-19 21:09:55 -08:00
Andrew Gaul 266d7f847b Prefer ByteSource over deprecated InputSupplier 2014-02-18 22:35:10 -08:00
Andrew Gaul 9416416ff4 Address Checkstyle violations 2014-01-19 20:51:51 -08:00
Andrew Gaul c7b0f66544 Replace calls to Closeables.closeQuietly
Guava 16 removes this API.  Replace with Closeables2.closeQuietly.
References JCLOUDS-413 and JCLOUDS-415.
2013-12-21 12:30:59 -08:00
Andrew Bayer c1ee11d9bd Updating to 1.8.0-SNAPSHOT 2013-12-17 11:31:56 -08:00
Andrew Gaul d25e972344 JCLOUDS-401. Make BlobName Function type-safe 2013-12-16 15:04:14 -08:00
Andrew Gaul ac06e32e72 JCLOUDS-399: Deprecate BlobBuilder.calculateMD5
Callers should instead call BlobBuilder.contentMD5, usually with the
results from Guava Hashing.md5().  This narrows the API and removes a
strange IOException from callers.
2013-12-16 13:40:38 -08:00
Andrew Gaul e48d4985ea JCLOUDS-410. Add support for ByteSource Payloads
Also deprecate byte[], File, InputSupplier<InputStream>, and String
Payloads.  Callers should instead provide a ByteSource via
ByteSource.wrap(byte[]) and Files.asByteSource(File)
2013-12-16 13:06:30 -08:00
Andrew Gaul ac1f05ffac Remove unneeded calls to ByteSources.asByteSource 2013-12-15 22:57:32 -08:00
Andrew Gaul 828d8790c2 Enforce no unused imports via Checkstyle
Removed with:

mvn checkstyle:checkstyle --quiet -Dcheckstyle.output.file=/dev/stdout -Dcheckstyle.output.format=plain | tac | while read i; do echo $i | sed -n 's/\([^:]*\):\([^:]*\):.*/sed -i \2d \1/p' | bash; done
2013-12-11 17:27:43 -08:00
Andrew Gaul 4cef85d1cd Address Checkstyle violations in tests 2013-12-09 14:40:07 -08:00
Andrew Gaul 6c5effcdb1 Address error-prone empty statement warnings 2013-11-05 16:22:44 -08:00
Zack Shoylev cb9a6b9413 Reduces parallelism to make test work better with slower connections Adjusts test timing to work properly and reliably 2013-10-30 10:33:15 -05:00
Andrew Phillips f196ee3b6b Move Expect: 100 stripping after asserts against the request
Follow-up to e30f86521
2013-10-19 20:05:42 -07:00
Andrew Gaul e30f865215 Work around CloudFiles test failures
Java helpfully interprets Expect: 100-continue instead of returning
the response code.  This commit reverts
100afba1d8.
2013-10-17 13:08:02 -07:00
Zack Shoylev 7593935380 JCLOUDS-332 Skips tests broken on windows 2013-10-08 15:07:35 -05:00
Andrew Gaul 7d20658b02 JCLOUDS-334. Return URI only if container created
This allows us to honor the BlobStore.createContainerInLocation
interface and gives consistency with other providers.
2013-10-08 13:03:55 -07:00
Andrew Gaul f1fc63ab76 Add whitespace around keywords and braces 2013-09-30 09:39:29 -07:00
Andrew Gaul 5f8961723f Remove BlobStore Map abstractions
These provide little end-user benefit and make evolving the core API
more difficult.  We deprecated these in 1.6.0.
2013-09-25 20:46:31 -07:00
Andrew Gaul 94452a97cd Skip unimplemented test with transient blobstore 2013-09-16 02:48:57 -07:00
Andrew Gaul 6cc8e36f43 Add test for correct and incorrect contentMD5
Tested against atmos (skipped), aws-s3, azureblob, cloudfiles-us, and
filesystem (skipped).
2013-09-11 16:10:45 -07:00
Andrew Gaul 8bdded3222 Delete containers after integration tests
Also return newly allocated containers to the pool.
2013-09-09 16:47:40 -07:00
Andrew Gaul 0d6ef06076 Reduce testFileGetParallel input size to ~160 KB
Previously this test downloaded 45 MB in 30 seconds which failed on
slower connections, causing spurious test failures.  The larger input
size provides no benefit.
2013-09-04 19:49:46 -07:00
Andrew Gaul 3ad6b275d4 Run some filesystem integration tests
Previously no integration tests ran, now we see:

Tests run: 43, Failures: 0, Errors: 0, Skipped: 8
2013-09-04 13:26:46 -07:00
Andrew Gaul e27ae6117c Reduce testPutFileParallel input size to ~160 KB
Previously this test uploaded ~10 MB in 30 seconds which failed on
slower connections, causing spurious test failures.  The larger input
size provides no benefit.
2013-09-02 19:33:15 -07:00
Andrew Gaul 607b178c6b Simplify testPutFileParallel
Create only one temporary file and use explicit delete instead
finalization to remove it.
2013-08-27 23:06:18 -07:00
Andrew Gaul 4ca531aa98 Allocate new container name using prefix
Before we used the previous container name, which kept appending and
hit S3 limits during integration tests like:

Caused by: java.lang.IllegalArgumentException: Object 'gaul-blobstore27-4348532805015069992-1155797412711190448-1465016400636204031' doesn't match S3 bucket virtual host naming convention. Reason: Can't be null or empty. Length must be 3 to 63 symbols.. For more info, please refer to http://docs.amazonwebservices.com/AmazonS3/latest/index.html?BucketRestrictions.html
2013-08-27 23:02:55 -07:00
Andrew Gaul d387a25113 Enforce a non-negative content length 2013-08-26 20:20:49 -04:00
Francis Devereux d60d2681d1 JCLOUDS-251: Swift: Delete chunks when deleting a multipart blob
Also:
- Make SwiftBlobIntegrationLiveTest.testMultipartChunkedFileStream more realistic by uploading a file large enough to be split into parts.
- JavaDoc fixes for SwiftBlobStore: don't reference nonexistent methods.
2013-08-25 10:20:22 -05:00
Andrew Gaul 1a6be0eb67 Do not repeat array type in initializers 2013-06-18 21:02:50 -07:00
Andrew Gaul 86147cd961 Remove AsyncBlobStore from DeleteAllKeysInList
We deprecated AsyncBlobStore in 1.6.0.  Subsequent commits will
require the caller to provide an ExecutorService.
2013-06-05 10:41:55 -07:00
Andrew Gaul 64e9a4e4c6 Remove Strings2.replaceAll(String, char, String)
String.replace(String, String) serves this purpose better.
2013-06-03 14:41:18 -07:00
adriancole ed2f18a1af JCLOUDS-31. updated to ASF headers via mvn com.mycila.maven-license-plugin:maven-license-plugin:format 2013-05-16 21:30:37 -07:00
adriancole fa10fc4838 JCLOUDS-31. remove malformed, duplicate, or unnecessary headers 2013-05-16 21:30:32 -07:00
Andrew Bayer 7923009eb5 JCLOUDS-37. Fix RAT violations in incubator-jclouds, master branch 2013-05-13 19:17:50 -07:00
Andrew Bayer 446ac67884 JCLOUDS-30. Switch to 2 space indents for POM files. 2013-05-13 12:04:43 -07:00
Andrew Bayer 259b04ff1c JCLOUDS-16. Switch groupId to org.apache.jclouds, change parent POM, remove old distributionManagement content, add ASF repos. 2013-05-13 12:04:42 -07:00
Andrew Gaul 04fad88fd3 Remove duplicate Utils getters
Rename callers as required.
2013-04-12 16:24:37 -07:00
adriancole fbe9f945e7 rename bindMappedApi -> bindSyncToAsyncApi 2013-04-10 08:57:32 -07:00
adriancole 61067d3683 Deprecated remaining code related to RestContext, RestApiMetadata, and RestClientModule for ApiContext, HttpApiMetadata, HttpApiModule 2013-04-09 22:07:43 -07:00
adriancole f56da43db1 deprecated blobstore interfaces that imply complex internal code 2013-04-09 14:37:34 -07:00
Andrew Gaul 648e6c2a8a Remove InputSuppliers.of(InputStream)
This method breaks the contract of an InputSupplier since every call
to getInput returns the same InputStream instance.  This is
particularly dangerous when one of the callers mutates or closes the
InputStream which causes all others callers to fail.
2013-04-03 13:19:42 -07:00
Andrew Gaul 15f4d041b4 Parameterize max errors for clear container
Also use setter injection for max request time.
2013-03-29 13:36:57 -07:00
Andrew Gaul 371db8d18f Address Xlint warnings 2013-03-13 22:23:19 -07:00
Adrian Cole fb69ae0fa9 bump master to 1.7.0-SNAPSHOT 2013-03-08 23:02:40 -08:00
adriancole c31145e42e [maven-release-plugin] prepare for next development iteration 2013-03-04 06:13:59 -08:00
adriancole 0eb3ee8091 [maven-release-plugin] prepare release jclouds-1.6.0-alpha.4 2013-03-04 06:13:57 -08:00
Adrian Cole 941612ad09 add name to blobs in BlobMap tests 2013-03-02 09:16:26 -08:00
Andrew Gaul faf6b2f39e Prohibit null and empty blob names in BlobBuilder 2013-02-27 11:36:29 -08:00
Andrew Gaul ec4cdfda05 Address FindBugs complaints 2013-02-22 09:29:22 -08:00
Andrew Gaul b51ce5994a Expose resource creation date 2013-02-18 11:26:44 -08:00
Andrew Gaul 3734fe8100 Replace unneeded Function with imperative approach
The latter is more concise, faster, and compact.  .class size in bytes
before:

LocalAsyncBlobStore$5.class      1883
LocalAsyncBlobStore.class       20743

and after:

LocalAsyncBlobStore.class       21041
2013-02-05 10:20:24 -08:00
adriancole 89fda8ee28 [maven-release-plugin] prepare for next development iteration 2013-02-04 17:30:46 -08:00
adriancole 2b0ad28f26 [maven-release-plugin] prepare release jclouds-1.6.0-alpha.2 2013-02-04 17:30:44 -08:00
adriancole 267069755e [maven-release-plugin] prepare for next development iteration 2013-02-02 08:41:53 -08:00
adriancole 7c924b312f [maven-release-plugin] prepare release jclouds-1.6.0-alpha.1 2013-02-02 08:41:51 -08:00
adriancole 40d9f8bfe7 changes that facilitate synchronous fallbacks and http invocation 2013-01-29 04:09:45 -08:00
Andrew Gaul 60a7d1b4f8 Call BlobUtils.clearContainer directly
BaseAsyncBlobStore.clearContainer returns a Future which we previously
did not manage correctly, hanging when deleting non-existent
containers.  Call BlobUtils.clearContainer directly to address this.
2013-01-23 22:27:18 -08:00
Andrew Gaul bd7300ad92 Dynamically generate base blobstore input
This removes a single large image from the source tree.
2013-01-22 10:57:14 -08:00
Andrew Gaul af963df92d Use Map.entrySet where possible
Improves run-time efficiency and addresses FindBugs warnings.
2013-01-21 23:59:42 -08:00