| 63 | self.assertEqual(payload, compressed.read()) |
| 64 | |
| 65 | def test_compression(self): |
| 66 | compress_extensions = ["yes", "html"] |
| 67 | payload = "\x01" * 1000 + "\x02" * 1000 # Will compress very well |
| 68 | payload = payload.encode('utf-8') |
| 69 | |
| 70 | self.site.compress_extensions = compress_extensions |
| 71 | |
| 72 | with io.FileIO(os.path.join(self.site.static_path, "static.yes"), 'wb') as f: |
| 73 | f.write(payload) |
| 74 | |
| 75 | with io.FileIO(os.path.join(self.site.static_path, "static.no"), 'wb') as f: |
| 76 | f.write(payload) |
| 77 | |
| 78 | self.site.upload() |
| 79 | |
| 80 | puts = [req for req in self.connection_factory.requests if req.method == "PUT"] |
| 81 | |
| 82 | self.assertEqual(2, len(puts)) |
| 83 | compressed = 0 |
| 84 | for put in puts: |
| 85 | if put.url.rsplit(".", 1)[1] in compress_extensions: |
| 86 | self.assertEqual("gzip", put.headers["content-encoding"]) |
| 87 | compressed += 1 |
| 88 | else: |
| 89 | self.assertIsNone(put.headers.get("content-encoding")) |
| 90 | |
| 91 | self.assertEqual(1, compressed) |