* Made getLocalReference() and getFileSha1Base36() respect latest wrt to cache.
* Made Made getLocalReference() and getFileSha1Base36() normalize the paths for cache.
* Avoid misleading (suggesting cache misses) getFileSha1Base36() profile calls for Swift.
Change-Id: I192a4f00c123029cfa338ec74cd08a355e29896b
* Added swiftCDNTTL to let the cache TTL be configurable
* Also added swiftCDNPurgable option to disable purges
Change-Id: Ic8e779c20f7501a5a55f4a49fc612923d0dc268c
* Also tweaked timestamp tolerance in tests, intended for Swift
* Also made a few tweaks to speed up tests a bit
Change-Id: Ibdee36d3bf86089b027dc74bb2582acc1ab4b96b
* FS backends work via popen() and basic shell commands.
* Swift backends use the custom SwiftCloudFiles async features.
* Refactored storagePathsRead()/storagePathsChanged() to normalize the paths
for correct dependency detection in FileOpBatch.
* Cleaned up SwiftFileBackend exception handling to make debugging easier.
* Added a quick and dirty performance testing script.
* Updated unit tests to include a run with parallelize=implicit.
* Improved file test failure output a bit.
Change-Id: I6a5ed743c30c598e0dd7301dbdb3631c460332fd
* Added directoryExists() function to check if a dir exists.
* Added getDirectoryList() and getTopDirectoryList() functions to list out subdirs.
* Added getTopFileList() function to list out immediate files in a dir. This wraps getFileList(), which was modified.
Change-Id: I087835f40d76c41f5d6af55b9a34a51e0f44a675
* Use 'b' param in some fopen() calls as needed for Windows and newline handling.
* Removed some useless padding code in FileBackend::getContainerShard(). Initialized $m to make IDE happy.
* Updated some code comments.
In SwiftFileBackend:
* Manually set the ETag when using php-cloudfiles for creating files to avoid https://github.com/rackspace/php-cloudfiles/issues/59.
* Manually set the content type based on how StreamFile::getType(). This makes it safe to read files directly out of the proxy to end-users. The streamFile() backend functions already uses a similar content-type check.
* Made FileBackend::getFileProps() final.
* Added exception needed in SwiftFileBackend::getConnection().
* Various FileBackendTests fixes and additions. Optimized it a bit by keeping the backend instance in memory.
* Fixed bogus $params var in logException() call in SwiftFileBackend.
* Added 'latest' param to FileBackendMultliWrite::consistencyCheck().
* Dummy-proof FileBackend::getFileStat() w.r.t the 'latest' param and removed related FileOp::allowStaleReads() comment.
* Tweaked backend-fail-batchsize message from r109469.
* r108944: doCleanInternal() should delete empty containers only if the container dir was given.
* Made doSecureInternal() set container permissions. Also renamed swiftProxyUser -> swiftAnonUser.
* Made doGetFileStat() respect the 'latest' parameter (using r109235).
* Fixed connTTL default and renamed it to authTTL. Also added explicit close() call to getConnection().
* Reduced RTTs in doPrepareInternal() by checking getContainer() first (which is process cached).
* Killed an RTT in doStoreInternal(), doCreateInternal(), and doCopyInternal() by using create_object(). Also cleaned up logic with regards to the destination CF_Object object fields getting preloaded before write().
* Cleanups to getLocalCopy(); only create the tmp file if get_object() succeeds to short-circuits things.
* Made getContainer() limit the container cache size for sanity.
* Simplified doDeleteInternal() code a bit.
* Renamed $destRel => $dstRel for consistency.