aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/tools/gcs_test
diff options
context:
space:
mode:
authorGravatar Benoit Steiner <bsteiner@google.com>2017-08-01 16:16:52 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2017-08-01 16:21:29 -0700
commit05c491d30888088873fedfbe81bca378c8c3fc87 (patch)
treed8779f7ceabeb6998c61c36fa9af1fe537c0a6e4 /tensorflow/tools/gcs_test
parente0108157af11bac4afd0ad1e7f2b07cd2fff2a7d (diff)
Merge changes from github.
END_PUBLIC --- Commit e62de3f78 authored by Kay Zhu<kayzhu@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: [XLA] Handle Reverse in HloEvaluator. Also move HandleCopy to outer visitor instead, since it can be implemented as a type-agnostic copy instead. PiperOrigin-RevId: 163866499 --- Commit 96675956e authored by Asim Shankar<ashankar@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: C API: Avoid converting uninitialized tensorflow::Tensor to TF_Tensor* And return error messages instead of CHECK failing when the conversion fails. PiperOrigin-RevId: 163863981 --- Commit 9593704b2 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Fix framework import function dependency. PiperOrigin-RevId: 163863883 --- Commit 66f148542 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Improve performance of compilation by ~8% by speeding up the hlo rematerialization pass. Changes: . Wrap each HloInstruction* inside an Item structure that keeps associated data. This allows us to get rid of a bunch of hash tables indexed by HloInstruction*. * Switch to an intrusive linked list (instead of std::list) so that we can avoid a hash table that maps to std::list::iterator. * Use inlined vector in a few places. PiperOrigin-RevId: 163848365 --- Commit 6d77a0129 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Hide NonMaxSuppression and NonMaxSuppressionV2 ops and add a python wrapper that sets a backwards compatible default value for iou_threshold. PiperOrigin-RevId: 163844703 --- Commit 1a4499607 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Fix: add GDN to __init__. Also put it in alphabetical order. PiperOrigin-RevId: 163842410 --- Commit db0e1c6c8 authored by Benoit Steiner<bsteiner@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Don't force inlining of functions marked no-inline PiperOrigin-RevId: 163842238 --- Commit 18718b6f7 authored by Benoit Steiner<bsteiner@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Misc grappler improvements: * Avoid copying optimized graphs since that takes time. * Avoid optimizing a pruned graph, since it's already been pruned there isn't much to gain PiperOrigin-RevId: 163842122 --- Commit 90abbf684 authored by Benoit Steiner<bsteiner@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Use OP_REQUIRES instead of an assertion to validate op arguments PiperOrigin-RevId: 163841759 --- Commit 203c3f5fd authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Infer unknown shapes for functions in C++ As we are implementing function support through C API, the new code path runs shape inference of Operations representing functions, but we don't yet support shape inference for functions. Before this change, adding a function NodeDef would result in error. This change pairs all functions with a shape inference function that sets all output shapes to unknown. PiperOrigin-RevId: 163830793 --- Commit 3cc5fc088 authored by Chris Leary<leary@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: [XLA] Implement MirrorPad op. Addresses #11890 * Improves the shape inference error message for concatenate. * Adds a helper to Literal that gets an integral value converted to int64. PiperOrigin-RevId: 163829437 --- Commit c7b674fa2 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: flatten_up_to should return values, not keys PiperOrigin-RevId: 163809688 --- Commit 6209b4b52 authored by Asim Shankar<ashankar@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Minor refactoring the TF_Tensor <-> PyArray conversion functions. PiperOrigin-RevId: 163802822 --- Commit 618f913bb authored by Yao Zhang<yaozhang@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Speed up topological sort by avoiding copies. The speedup is about 10-20%. PiperOrigin-RevId: 163800134 --- Commit 6446895aa authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Remove and replace broken giflib download link PiperOrigin-RevId: 163796393 --- Commit 9d5613088 authored by Chris Leary<leary@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: [XLA:CPU] Atomically enqueue tuple buffers for outfeed. Previously it was possible that a distinct thread could hop in between the buffer enqueues done by a tuple-outfeeding thread. This changes the sequence to enqueue all the tuple buffers as an atomic unit. PiperOrigin-RevId: 163781804 --- Commit b882d686f authored by Bjarke Hammersholt Roune<broune@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Allow cost estimates to differ per backend and include the estimates into the HLO profile. Add a summary table for what categories have the most opportunity for optimization left in them. PiperOrigin-RevId: 163780413 --- Commit 14b736761 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Pass stats_collector when using SymbolicGradientOp. PiperOrigin-RevId: 163773897 --- Commit 5202a5b6c authored by RJ Ryan<rjryan@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Fix some typos in StreamExecutor's cuFFT support. PiperOrigin-RevId: 163771825 --- Commit edac90c7c authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Add support to generate pprof results to tf.profiler A fun thing is, it can not only profile time,memory but also parameters, etc. PiperOrigin-RevId: 163767517 --- Commit 78a90370e authored by Eli Bendersky<eliben@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: [XLA] Refactor CreateModuleConfig to share code between multiple call-sites. Previously Service, LocalService and CompileOnlyService had their own code to create a new HloModuleConfig, with much repetition (and some ommissions); collect all these uses in a single method. PiperOrigin-RevId: 163766869 --- Commit 6150611ae authored by Anna R<annarev@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Internal change. PiperOrigin-RevId: 163765028 --- Commit 9e7875437 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Add the option of including Shape, ShapeN, Size and Rank in the standard TensorFlow constant propagation pass, when the inputs to those Ops have sufficiently known static shape. PiperOrigin-RevId: 163762750 --- Commit 8b1365bb4 authored by Yuefeng Zhou<yuefengz@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Infer output shape for restore op. PiperOrigin-RevId: 163762216 --- Commit 2e2a8536d authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Update WorkerCacheLogger::RecordDataTransfer to not modify the details if provided. PiperOrigin-RevId: 163761089 --- Commit d03ba54f7 authored by Yangzihao Wang<yangzihao@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Use BlasGemv() when autotune is not set. PiperOrigin-RevId: 163754092 --- Commit 724884f1c authored by Justin Lebar<jlebar@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Show layouts in HLO graph dump. Layouts are displayed as e.g. "f32[100,200]{0,1}". But constants used to be displayed as e.g. "f32[]{42}". To avoid ambiguity, constants are now displayed as e.g. "42 (f32[])". Also gets rid of the xla_hlo_graph_layout flag, which is no longer necessary since we're now showing layouts unconditionally. PiperOrigin-RevId: 163753637 --- Commit 84c2757a6 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Move Grappler test GraphDefs to separate files PiperOrigin-RevId: 163751948 --- Commit 0b3a25d68 authored by Asim Shankar<ashankar@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Make TF_RESOURCE memory handling consistent with other types. TF_Tensor's are backed by a contiguous memory region for all but TF_RESOURCE tensors. The memory management of TF_RESOURCE tensors required keeping a backing tensorflow::ResourceHandle* object alive for the lifetime of the TF_Tensor object. This change removes that discrepancy, making the memory backing TF_RESOURCE tensors self-contained. This simplifies use of TF_RESOURCE tensors in the C API (as users of the C API do not need to worry about a tensorflow::ResourceHandle object and its lifetime). In doing so, this moves a string memory copy from the TF_Tensor <-> Numpy conversion to the C API from the Python session helper. Unfortunately, I couldn't figure out how to add a simple unittest in c_api_test.cc. The more comprehensive tensorflow/python/kernel_tests/session_ops_test.py does cover the changed lines though. Additionally, avoid an unnecessary copy when creating TF_STRING or TF_RESOURCE tensors (as eigen alignment is not a requirement for them). PiperOrigin-RevId: 163751880 --- Commit 1333e7745 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Allow one tensor to be the input to the estimator. PiperOrigin-RevId: 163747076 --- Commit 104f349e9 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Update Conv2DShape function to handle filters that have data NCHW_VECT_C layout. PiperOrigin-RevId: 163746769 --- Commit efb7fb8e5 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Use XLA_VLOG_LINES() in literal_test_util to avoid truncation of large tensors. PiperOrigin-RevId: 163745522 --- Commit 043505a09 authored by Suharsh Sivakumar<suharshs@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: MasterSession should throw error if use_per_session_threads or session_inter_op_thread_pool is set. PiperOrigin-RevId: 163743936 --- Commit 6ba02f0e9 authored by Artem Belevich<tra@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: [XLA] Added HasAllocationAt() helper function. PiperOrigin-RevId: 163742985 --- Commit 18304683e authored by Justine Tunney<jart@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Pin tensorflow to tensorflow-tensorboard 0.1.x This change will be cherry-picked into the 1.3.0 release. PiperOrigin-RevId: 163742463 --- Commit 3445dd0ed authored by Justine Tunney<jart@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Make 'import tensorflow' go faster It now takes about 400ms rather than 800ms, if the file system cache is warm. Most of the latency was due to parsing text_format OpList protocol buffers in our generated sources. We now use a binary representation, while preserving the text proto as a comment for readability. Note: This change does not improve the latency of dereferencing tf.contrib, which takes about 340ms. PiperOrigin-RevId: 163739355 --- Commit c215c55d5 authored by Neal Wu<wun@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Add missing py_binary for mnist_deep.py PiperOrigin-RevId: 163737503 --- Commit b663c9899 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Make non-iterable input to `stratified_sample` produce better error message. PiperOrigin-RevId: 163735979 --- Commit 122750a87 authored by Peter Hawkins<phawkins@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: [SE] Make ExecutorCache thread-safe, change ExecutorCache::Insert to ExecutorCache::GetOrCreate. Add support for creating Executors for different device ordinals in parallel. [XLA] Create Executors in parallel. PiperOrigin-RevId: 163734988 --- Commit 7ebed6678 authored by Frank Chen<frankchn@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Add __init__.py to the contrib/cluster_resolver directory so that the Cluster Resolver classes within this are visible to open source TensorFlow users. PiperOrigin-RevId: 163733781 --- Commit 21faf19d0 authored by Shanqing Cai<cais@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Upgrade pip version to 9.0.1; Prettier format of log text * Upgrade pip version used in virtualenv created by the test-on-install to latest (9.0.1). * Highlight step titles of pip builds with bold font. PiperOrigin-RevId: 163732825 --- Commit 5887cc10e authored by Kay Zhu<kayzhu@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: [XLA] In LiteralUtil::StridedConfig: choose the larger dimension between the source and destination shapes' minor-most dimension index. PiperOrigin-RevId: 163732014 --- Commit f9c644693 authored by Peter Hawkins<phawkins@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: [TF:XLA] Disable sanitizers for depthwise conv test to fix test flakiness. PiperOrigin-RevId: 163727765 --- Commit 6263539a1 authored by Allen Lavoie<allenl@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Grappler memory optimization: allow inputs to gradients with non-standard names to be recomputed Includes Python tests for name-scoped gradients. PiperOrigin-RevId: 163720208 --- Commit 4ac195669 authored by Benoit Steiner<benoitsteiner@users.noreply.github.com> Committed by GitHub<noreply@github.com>: Branch 163695881 (#11913) * Prevent ctc_loss op from segfaulting when given empty batch. PiperOrigin-RevId: 163663460 * New "SavedModel: Practical Uses" and "SavedModel: Architecture" documents. PiperOrigin-RevId: 163669809 * Minor cleanup PiperOrigin-RevId: 163685423 * Add regression variance over individual trees to TensorForest inference. PiperOrigin-RevId: 163695881 --- Commit b876065af authored by Alexandre Passos<apassos@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: graph_to_function_def gets its own file PiperOrigin-RevId: 163709410 --- Commit 29550762b authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Fixes unit tests for inverse hyperbolic functions that were failing because numeric gradients were computed too close to a branch cut (for complex arguments) or singularity (for real arguments) where the function is not differentiable (See, e.g., http://mathworld.wolfram.com/BranchCut.html). This change moves the test points away from the branch cut/singularity. Improves precision of double precision numerical gradients by using a smaller step size delta (the optimal for symmetric difference approximation with functions computed with O(epsilon) error is epsilon^(1/3), so for double64 it is ~1e-5). PiperOrigin-RevId: 163706297 --- Commit 99b190a1f authored by Peter Hawkins<phawkins@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: [TF:XLA] Add implementation of depthwise convolution. This implementation expands the depthwise convolution kernels into a regular convolution kernel, which may not scale to large feature depths. PiperOrigin-RevId: 163705408 --- Commit f6f07b027 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Allow kernel unit tests to run on GPU PiperOrigin-RevId: 163705027 --- Commit 4ec29c5d9 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Avoid direct access to Node::def() where some other method works. PiperOrigin-RevId: 163704839 --- Commit 153be4d26 authored by Luke Iwanski<luke@codeplay.com> Committed by Benoit Steiner<benoitsteiner@users.noreply.github.com>: [OpenCL] Stats tracking (#11523) * Adds stat tracking to the SYCL allocator The SYCLAllocator will now find the max allocation size on construction, and keep track of the allocation stats, as given in AllocationStats. * [OpenCL] Adds buffer size tracking to SYCL allocator (#114) The SYCL buffers underlying tensors already keep track of their sizes, so we can easily provide this tracking information for debugging purposes. --- Commit 8d642672f authored by Amit Patankar<amitpatankar@google.com> Committed by Amit Patankar<amitpatankar@google.com>: Disabling gmm_test.py on Windows builds as it's flaky on GPU nightly builds. --- Commit 1560c55d2 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Add regression variance over individual trees to TensorForest inference. PiperOrigin-RevId: 163695881 --- Commit 15e928d51 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Minor cleanup PiperOrigin-RevId: 163685423 --- Commit f9c758719 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: New "SavedModel: Practical Uses" and "SavedModel: Architecture" documents. PiperOrigin-RevId: 163669809 --- Commit f19bb3beb authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Prevent ctc_loss op from segfaulting when given empty batch. PiperOrigin-RevId: 163663460 --- Commit 454fe936c authored by Taehoon Lee<taehoonlee@snu.ac.kr> Committed by Taehoon Lee<taehoonlee@snu.ac.kr>: Fix typos --- Commit e17650b69 authored by Frank Chen<frankchn@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: This adds the cluster_resolver module to contrib/__init__.py so that it is actually visible to open source TensorFlow users. PiperOrigin-RevId: 163636676 --- Commit 926c0f6ee authored by ??<awsomekde@gmail.com> Committed by GitHub<noreply@github.com>: fix minor typo --- Commit 00d3126a3 authored by Yao Zhang<yaozhang@google.com> Committed by TensorFlower Gardener<gardener@tensorflow.org>: Change const nodes to variables in the test, so that they are not optimized away by the grappler constant folding pass. PiperOrigin-RevId: 163602405 --- Commit 1c7c9c716 authored by Aditya Dhulipala<aditya.d@hotmail.com> Committed by Vijay Vasudevan<vrv@google.com>: Minor typo correction (#11874) --- Commit f91a3546e authored by Sergii Khomenko<x-sam@brainscode.com> Committed by Vijay Vasudevan<vrv@google.com>: Fix a minor typo (#11873) --- Commit adf5d1bc0 authored by A. Unique TensorFlower<gardener@tensorflow.org> Committed by TensorFlower Gardener<gardener@tensorflow.org>: BEGIN_PUBLIC Automated g4 rollback of changelist 163510186 PiperOrigin-RevId: 163902859
Diffstat (limited to 'tensorflow/tools/gcs_test')
-rw-r--r--tensorflow/tools/gcs_test/python/gcs_smoke.py138
1 files changed, 109 insertions, 29 deletions
diff --git a/tensorflow/tools/gcs_test/python/gcs_smoke.py b/tensorflow/tools/gcs_test/python/gcs_smoke.py
index 51933a52a6..9882f75a8a 100644
--- a/tensorflow/tools/gcs_test/python/gcs_smoke.py
+++ b/tensorflow/tools/gcs_test/python/gcs_smoke.py
@@ -50,55 +50,135 @@ def create_examples(num_examples, input_mean):
return examples
def create_dir_test():
- """Verifies file_io directory handling methods ."""
+ """Verifies file_io directory handling methods."""
- starttime = int(round(time.time() * 1000))
- dir_name = "%s/tf_gcs_test_%s" % (FLAGS.gcs_bucket_url, starttime)
+ # Test directory creation.
+ starttime_ms = int(round(time.time() * 1000))
+ dir_name = "%s/tf_gcs_test_%s" % (FLAGS.gcs_bucket_url, starttime_ms)
print("Creating dir %s" % dir_name)
file_io.create_dir(dir_name)
- elapsed = int(round(time.time() * 1000)) - starttime
- print("Created directory in: %d milliseconds" % elapsed)
+ elapsed_ms = int(round(time.time() * 1000)) - starttime_ms
+ print("Created directory in: %d milliseconds" % elapsed_ms)
+
# Check that the directory exists.
dir_exists = file_io.is_directory(dir_name)
+ assert dir_exists
print("%s directory exists: %s" % (dir_name, dir_exists))
- # List contents of just created directory.
- print("Listing directory %s." % dir_name)
- starttime = int(round(time.time() * 1000))
- print(file_io.list_directory(dir_name))
- elapsed = int(round(time.time() * 1000)) - starttime
- print("Listed directory %s in %s milliseconds" % (dir_name, elapsed))
+ # Test recursive directory creation.
+ starttime_ms = int(round(time.time() * 1000))
+ recursive_dir_name = "%s/%s/%s" % (dir_name,
+ "nested_dir1",
+ "nested_dir2")
+ print("Creating recursive dir %s" % recursive_dir_name)
+ file_io.recursive_create_dir(recursive_dir_name)
+ elapsed_ms = int(round(time.time() * 1000)) - starttime_ms
+ print("Created directory recursively in: %d milliseconds" % elapsed_ms)
- # Delete directory.
- print("Deleting directory %s." % dir_name)
- starttime = int(round(time.time() * 1000))
+ # Check that the directory exists.
+ recursive_dir_exists = file_io.is_directory(recursive_dir_name)
+ assert recursive_dir_exists
+ print("%s directory exists: %s" % (recursive_dir_name, recursive_dir_exists))
+
+ # Create some contents in the just created directory and list the contents.
+ num_files = 10
+ files_to_create = ["file_%d.txt" % n for n in range(num_files)]
+ for file_num in files_to_create:
+ file_name = "%s/%s" % (dir_name, file_num)
+ print("Creating file %s." % file_name)
+ file_io.write_string_to_file(file_name, "test file.")
+
+ print("Listing directory %s." % dir_name)
+ starttime_ms = int(round(time.time() * 1000))
+ directory_contents = file_io.list_directory(dir_name)
+ print(directory_contents)
+ elapsed_ms = int(round(time.time() * 1000)) - starttime_ms
+ print("Listed directory %s in %s milliseconds" % (dir_name, elapsed_ms))
+ assert set(directory_contents) == set(files_to_create + ["nested_dir1/"])
+
+ # Test directory renaming.
+ dir_to_rename = "%s/old_dir" % dir_name
+ new_dir_name = "%s/new_dir" % dir_name
+ file_io.create_dir(dir_to_rename)
+ assert file_io.is_directory(dir_to_rename)
+ assert not file_io.is_directory(new_dir_name)
+
+ starttime_ms = int(round(time.time() * 1000))
+ print("Will try renaming directory %s to %s" % (dir_to_rename, new_dir_name))
+ file_io.rename(dir_to_rename, new_dir_name)
+ elapsed_ms = int(round(time.time() * 1000)) - starttime_ms
+ print("Renamed directory %s to %s in %s milliseconds" % (
+ dir_to_rename, new_dir_name, elapsed_ms))
+ assert not file_io.is_directory(dir_to_rename)
+ assert file_io.is_directory(new_dir_name)
+
+ # Test Delete directory recursively.
+ print("Deleting directory recursively %s." % dir_name)
+ starttime_ms = int(round(time.time() * 1000))
file_io.delete_recursively(dir_name)
- elapsed = int(round(time.time() * 1000)) - starttime
- print("Deleted directory %s in %s milliseconds" % (dir_name, elapsed))
+ elapsed_ms = int(round(time.time() * 1000)) - starttime_ms
+ dir_exists = file_io.is_directory(dir_name)
+ assert not dir_exists
+ print("Deleted directory recursively %s in %s milliseconds" % (
+ dir_name, elapsed_ms))
def create_object_test():
"""Verifies file_io's object manipulation methods ."""
- starttime = int(round(time.time() * 1000))
- dir_name = "%s/tf_gcs_test_%s" % (FLAGS.gcs_bucket_url, starttime)
+ starttime_ms = int(round(time.time() * 1000))
+ dir_name = "%s/tf_gcs_test_%s" % (FLAGS.gcs_bucket_url, starttime_ms)
print("Creating dir %s." % dir_name)
file_io.create_dir(dir_name)
- # Create a file in this directory.
- file_name = "%s/test_file.txt" % dir_name
- print("Creating file %s." % file_name)
- file_io.write_string_to_file(file_name, "test file creation.")
-
+ num_files = 5
+ # Create files of 2 different patterns in this directory.
+ files_pattern_1 = ["%s/test_file_%d.txt" % (dir_name, n)
+ for n in range(num_files)]
+ files_pattern_2 = ["%s/testfile%d.txt" % (dir_name, n)
+ for n in range(num_files)]
+
+ starttime_ms = int(round(time.time() * 1000))
+ files_to_create = files_pattern_1 + files_pattern_2
+ for file_name in files_to_create:
+ print("Creating file %s." % file_name)
+ file_io.write_string_to_file(file_name, "test file creation.")
+ elapsed_ms = int(round(time.time() * 1000)) - starttime_ms
+ print("Created %d files in %s milliseconds" % (len(files_to_create), elapsed_ms))
+
+ # Listing files of pattern1.
list_files_pattern = "%s/test_file*.txt" % dir_name
print("Getting files matching pattern %s." % list_files_pattern)
+ starttime_ms = int(round(time.time() * 1000))
files_list = file_io.get_matching_files(list_files_pattern)
+ elapsed_ms = int(round(time.time() * 1000)) - starttime_ms
+ print("Listed files in %s milliseconds" % elapsed_ms)
print(files_list)
+ assert set(files_list) == set(files_pattern_1)
- assert len(files_list) == 1
- assert files_list[0] == file_name
-
- # Cleanup test files.
- print("Deleting file %s." % file_name)
- file_io.delete_file(file_name)
+ # Listing files of pattern2.
+ list_files_pattern = "%s/testfile*.txt" % dir_name
+ print("Getting files matching pattern %s." % list_files_pattern)
+ starttime_ms = int(round(time.time() * 1000))
+ files_list = file_io.get_matching_files(list_files_pattern)
+ elapsed_ms = int(round(time.time() * 1000)) - starttime_ms
+ print("Listed files in %s milliseconds" % elapsed_ms)
+ print(files_list)
+ assert set(files_list) == set(files_pattern_2)
+
+ # Test renaming file.
+ file_to_rename = "%s/oldname.txt" % dir_name
+ file_new_name = "%s/newname.txt" % dir_name
+ file_io.write_string_to_file(file_to_rename, "test file.")
+ assert file_io.file_exists(file_to_rename)
+ assert not file_io.file_exists(file_new_name)
+
+ print("Will try renaming file %s to %s" % (file_to_rename, file_new_name))
+ starttime_ms = int(round(time.time() * 1000))
+ file_io.rename(file_to_rename, file_new_name)
+ elapsed_ms = int(round(time.time() * 1000)) - starttime_ms
+ print("File %s renamed to %s in %s milliseconds" % (
+ file_to_rename, file_new_name, elapsed_ms))
+ assert not file_io.file_exists(file_to_rename)
+ assert file_io.file_exists(file_new_name)
# Delete directory.
print("Deleting directory %s." % dir_name)