From df7f1d314704e1562968f22d711d8b08e418b676 Mon Sep 17 00:00:00 2001 From: Conrad Weidenkeller Date: Tue, 23 Nov 2010 18:59:31 -0600 Subject: [PATCH 1/7] Added Custom mime.types file for swift. --- etc/mime.types-sample | 5 +++++ swift/proxy/server.py | 1 + 2 files changed, 6 insertions(+) create mode 100644 etc/mime.types-sample diff --git a/etc/mime.types-sample b/etc/mime.types-sample new file mode 100644 index 0000000000..d1d86bc513 --- /dev/null +++ b/etc/mime.types-sample @@ -0,0 +1,5 @@ +######################################################### +# A nice place to put custom Mime-Types for Swift # +# Please enter Mime-Types in standard mime.types format # +# Mime-Type Extension ex. image/jpeg jpg # +######################################################### diff --git a/swift/proxy/server.py b/swift/proxy/server.py index bacea4db9f..c5ee8745b7 100644 --- a/swift/proxy/server.py +++ b/swift/proxy/server.py @@ -1268,6 +1268,7 @@ class BaseApplication(object): self.account_ring = account_ring or \ Ring(os.path.join(swift_dir, 'account.ring.gz')) self.memcache = memcache + mimetypes.init(mimetypes.knownfiles + [os.path.join(self.swift_dir, 'mime.types')]) def get_controller(self, path): """ From ca8d30466c5aa084bb740fe583a687f18d3f9af6 Mon Sep 17 00:00:00 2001 From: Conrad Weidenkeller Date: Tue, 23 Nov 2010 19:26:02 -0600 Subject: [PATCH 2/7] PEP 8 compliance and small modification to mime.types file --- etc/mime.types-sample | 5 +++++ swift/proxy/server.py | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/etc/mime.types-sample b/etc/mime.types-sample index d1d86bc513..456cfec4e1 100644 --- a/etc/mime.types-sample +++ b/etc/mime.types-sample @@ -3,3 +3,8 @@ # Please enter Mime-Types in standard mime.types format # # Mime-Type Extension ex. image/jpeg jpg # ######################################################### + +#EX. Mime-Type Extension +# foo/bar foo + + diff --git a/swift/proxy/server.py b/swift/proxy/server.py index c5ee8745b7..b8e4ae9bf1 100644 --- a/swift/proxy/server.py +++ b/swift/proxy/server.py @@ -1268,7 +1268,8 @@ class BaseApplication(object): self.account_ring = account_ring or \ Ring(os.path.join(swift_dir, 'account.ring.gz')) self.memcache = memcache - mimetypes.init(mimetypes.knownfiles + [os.path.join(self.swift_dir, 'mime.types')]) + mimetypes.init(mimetypes.knownfiles + + [os.path.join(self.swift_dir, 'mime.types')]) def get_controller(self, path): """ From 9c44ad0aaf764ebb1159b07f1778f925d35e8587 Mon Sep 17 00:00:00 2001 From: Conrad Weidenkeller Date: Wed, 24 Nov 2010 15:36:10 -0600 Subject: [PATCH 3/7] Added Unit Test --- test/unit/proxy/test_server.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/test/unit/proxy/test_server.py b/test/unit/proxy/test_server.py index 2bf85c139c..28bb1c022a 100644 --- a/test/unit/proxy/test_server.py +++ b/test/unit/proxy/test_server.py @@ -302,6 +302,27 @@ class TestObjectController(unittest.TestCase): 'text/html', 'text/html'])) test_content_type('test.css', iter(['', '', '', 'text/css', 'text/css', 'text/css'])) + def test_custom_mime_types_files(self): + conf = {'swift-dir': mkdtemp()} + fd = open(os.path.join([conf['swift-dir'], 'mime.types'], 'w')) + fd.write('foo/bar foo') + fd.close() + fd = open(os.path.join([conf['swift-dir'], 'resellers.conf'], 'w')) + fd.write('') + fd.close() + log = NullLoggingHandler() + fake_mc = FakeMemcache() + fake_acct_r = FakeRing() + fake_obj_r = FakeRing() + fake_cont_r = FakeRing() + ba = proxy_server.BaseApplication(conf, fake_mc, log, + fake_acct_r, fake_cont_r, + fake_obj_r) + self.assertTrue(proxy_server.mimetypes.guess_type('blah.foo')[0] + == 'foo/bar') + self.assertTrue(proxy_server.mimetypes.guess_type('blah.jpg')[0] + == 'image/jpeg') + rmtree(conf['swift-dir']) def test_PUT(self): with save_globals(): From 44baabc46cfe9b2ca01e2590a70003f3785ee130 Mon Sep 17 00:00:00 2001 From: Conrad Weidenkeller Date: Wed, 24 Nov 2010 16:20:16 -0600 Subject: [PATCH 4/7] Unit tests pass now work as expected --- swift/proxy/server.py | 2 +- test/unit/proxy/test_server.py | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/swift/proxy/server.py b/swift/proxy/server.py index b8e4ae9bf1..aa53f9d6a4 100644 --- a/swift/proxy/server.py +++ b/swift/proxy/server.py @@ -1269,7 +1269,7 @@ class BaseApplication(object): Ring(os.path.join(swift_dir, 'account.ring.gz')) self.memcache = memcache mimetypes.init(mimetypes.knownfiles + - [os.path.join(self.swift_dir, 'mime.types')]) + [os.path.join(swift_dir, 'mime.types')]) def get_controller(self, path): """ diff --git a/test/unit/proxy/test_server.py b/test/unit/proxy/test_server.py index 28bb1c022a..d3317181c2 100644 --- a/test/unit/proxy/test_server.py +++ b/test/unit/proxy/test_server.py @@ -303,11 +303,11 @@ class TestObjectController(unittest.TestCase): test_content_type('test.css', iter(['', '', '', 'text/css', 'text/css', 'text/css'])) def test_custom_mime_types_files(self): - conf = {'swift-dir': mkdtemp()} - fd = open(os.path.join([conf['swift-dir'], 'mime.types'], 'w')) + conf = {'swift_dir': '/tmp'} + fd = open(os.path.join(conf['swift_dir'], 'mime.types'), 'w') fd.write('foo/bar foo') fd.close() - fd = open(os.path.join([conf['swift-dir'], 'resellers.conf'], 'w')) + fd = open(os.path.join(conf['swift_dir'], 'resellers.conf'), 'w') fd.write('') fd.close() log = NullLoggingHandler() @@ -322,7 +322,6 @@ class TestObjectController(unittest.TestCase): == 'foo/bar') self.assertTrue(proxy_server.mimetypes.guess_type('blah.jpg')[0] == 'image/jpeg') - rmtree(conf['swift-dir']) def test_PUT(self): with save_globals(): From 5fac58a012e0311a734008c4e63d28431a236c10 Mon Sep 17 00:00:00 2001 From: gholt Date: Wed, 24 Nov 2010 14:48:03 -0800 Subject: [PATCH 5/7] Updated test_custom_mime_types_files --- test/unit/proxy/test_server.py | 35 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/test/unit/proxy/test_server.py b/test/unit/proxy/test_server.py index d3317181c2..f566160d8a 100644 --- a/test/unit/proxy/test_server.py +++ b/test/unit/proxy/test_server.py @@ -29,6 +29,7 @@ from shutil import rmtree from time import time from urllib import unquote, quote from hashlib import md5 +from tempfile import mkdtemp import eventlet from eventlet import sleep, spawn, TimeoutError, util, wsgi, listen @@ -303,25 +304,21 @@ class TestObjectController(unittest.TestCase): test_content_type('test.css', iter(['', '', '', 'text/css', 'text/css', 'text/css'])) def test_custom_mime_types_files(self): - conf = {'swift_dir': '/tmp'} - fd = open(os.path.join(conf['swift_dir'], 'mime.types'), 'w') - fd.write('foo/bar foo') - fd.close() - fd = open(os.path.join(conf['swift_dir'], 'resellers.conf'), 'w') - fd.write('') - fd.close() - log = NullLoggingHandler() - fake_mc = FakeMemcache() - fake_acct_r = FakeRing() - fake_obj_r = FakeRing() - fake_cont_r = FakeRing() - ba = proxy_server.BaseApplication(conf, fake_mc, log, - fake_acct_r, fake_cont_r, - fake_obj_r) - self.assertTrue(proxy_server.mimetypes.guess_type('blah.foo')[0] - == 'foo/bar') - self.assertTrue(proxy_server.mimetypes.guess_type('blah.jpg')[0] - == 'image/jpeg') + conf = {'swift_dir': mkdtemp()} + try: + with open(os.path.join(conf['swift_dir'], 'mime.types'), 'w') \ + as fp: + fp.write('foo/bar foo\n') + open(os.path.join(conf['swift_dir'], 'resellers.conf'), + 'w').close() + ba = proxy_server.BaseApplication(conf, FakeMemcache(), + NullLoggingHandler(), FakeRing(), FakeRing(), FakeRing()) + self.assertEquals(proxy_server.mimetypes.guess_type('blah.foo')[0], + 'foo/bar') + self.assertEquals(proxy_server.mimetypes.guess_type('blah.jpg')[0], + 'image/jpeg') + finally: + rmtree(conf['swift_dir'], ignore_errors=True) def test_PUT(self): with save_globals(): From c01b5d9f1df09de8349ec7c9ec987e105c302bb4 Mon Sep 17 00:00:00 2001 From: gholt Date: Wed, 24 Nov 2010 14:58:17 -0800 Subject: [PATCH 6/7] Maybe even a bit more concise with test_custom_mime_types_files --- test/unit/proxy/test_server.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/test/unit/proxy/test_server.py b/test/unit/proxy/test_server.py index f566160d8a..b30be22afb 100644 --- a/test/unit/proxy/test_server.py +++ b/test/unit/proxy/test_server.py @@ -304,21 +304,20 @@ class TestObjectController(unittest.TestCase): test_content_type('test.css', iter(['', '', '', 'text/css', 'text/css', 'text/css'])) def test_custom_mime_types_files(self): - conf = {'swift_dir': mkdtemp()} + swift_dir = mkdtemp() try: - with open(os.path.join(conf['swift_dir'], 'mime.types'), 'w') \ - as fp: + with open(os.path.join(swift_dir, 'mime.types'), 'w') as fp: fp.write('foo/bar foo\n') - open(os.path.join(conf['swift_dir'], 'resellers.conf'), - 'w').close() - ba = proxy_server.BaseApplication(conf, FakeMemcache(), - NullLoggingHandler(), FakeRing(), FakeRing(), FakeRing()) + open(os.path.join(swift_dir, 'resellers.conf'), 'w').close() + ba = proxy_server.BaseApplication({'swift_dir': swift_dir}, + FakeMemcache(), NullLoggingHandler(), FakeRing(), FakeRing(), + FakeRing()) self.assertEquals(proxy_server.mimetypes.guess_type('blah.foo')[0], 'foo/bar') self.assertEquals(proxy_server.mimetypes.guess_type('blah.jpg')[0], 'image/jpeg') finally: - rmtree(conf['swift_dir'], ignore_errors=True) + rmtree(swift_dir, ignore_errors=True) def test_PUT(self): with save_globals(): From 21d355af1810e707da8cc6e020518ce538544ceb Mon Sep 17 00:00:00 2001 From: Chuck Thier Date: Fri, 26 Nov 2010 19:37:08 +0000 Subject: [PATCH 7/7] Removed uneeded creation of resellers.conf from the unit test --- test/unit/proxy/test_server.py | 1 - 1 file changed, 1 deletion(-) diff --git a/test/unit/proxy/test_server.py b/test/unit/proxy/test_server.py index b30be22afb..595616fb0a 100644 --- a/test/unit/proxy/test_server.py +++ b/test/unit/proxy/test_server.py @@ -308,7 +308,6 @@ class TestObjectController(unittest.TestCase): try: with open(os.path.join(swift_dir, 'mime.types'), 'w') as fp: fp.write('foo/bar foo\n') - open(os.path.join(swift_dir, 'resellers.conf'), 'w').close() ba = proxy_server.BaseApplication({'swift_dir': swift_dir}, FakeMemcache(), NullLoggingHandler(), FakeRing(), FakeRing(), FakeRing())