From 8534cd56d8633c9468f337372d78c436263f36f6 Mon Sep 17 00:00:00 2001 From: Peter Portante Date: Fri, 19 Oct 2012 01:35:46 -0400 Subject: Reduce the number of stat/fstat system calls made This address BZ 868086, https://bugzilla.redhat.com/show_bug.cgi?id=868086 This refactoring consolidates the code a bit, and uses os.stat calls to get all the information in one call when gathering the metadata for an object. The five stat system calls (invoked via all the os.path.*() calls) have been reduced to one. We also added a unit test for the one new behavior where get_object_metadata() will now throw an OSError exception if it has a problem stat'ing a file that exists. Change-Id: Iad5410c77938af68a47be757a3170abd201adeb0 BUG: 868086 Signed-off-by: Peter Portante Reviewed-on: http://review.gluster.org/4112 Reviewed-by: Kaleb KEITHLEY Reviewed-by: Mohammed Junaid Tested-by: Anand Avati --- swift/1.4.8/test/unit/plugins/test_utils.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'swift/1.4.8/test/unit/plugins/test_utils.py') diff --git a/swift/1.4.8/test/unit/plugins/test_utils.py b/swift/1.4.8/test/unit/plugins/test_utils.py index 944d118926a..70081a7d26e 100644 --- a/swift/1.4.8/test/unit/plugins/test_utils.py +++ b/swift/1.4.8/test/unit/plugins/test_utils.py @@ -312,6 +312,15 @@ class TestUtils(unittest.TestCase): md = utils.get_object_metadata("/tmp/doesNotEx1st") assert md == {} + def test_get_object_metadata_err(self): + tf = tempfile.NamedTemporaryFile() + try: + md = utils.get_object_metadata(os.path.join(tf.name,"doesNotEx1st")) + except OSError as e: + assert e.errno != errno.ENOENT + else: + self.fail("Expected exception") + obj_keys = (utils.X_TIMESTAMP, utils.X_CONTENT_TYPE, utils.X_ETAG, utils.X_CONTENT_LENGTH, utils.X_TYPE, utils.X_OBJECT_TYPE) -- cgit