From d2ce61aec9afea6f72a2b4d0e9347bdb9a588afd Mon Sep 17 00:00:00 2001 From: Vangelis Banos Date: Tue, 9 Jan 2018 12:54:42 +0000 Subject: [PATCH] Add WarcWriter warc_filename unit test Use custom ``warc_filename`` option and check that the created WARC filename follows the defined pattern. --- tests/test_writer.py | 24 ++++++++++++++++++++++++ warcprox/writer.py | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/tests/test_writer.py b/tests/test_writer.py index 4474f82..9b6d53a 100644 --- a/tests/test_writer.py +++ b/tests/test_writer.py @@ -163,3 +163,27 @@ def test_special_dont_write_prefix(): wwt.stop.set() wwt.join() + +def test_warc_writer_filename(tmpdir): + """Test if WarcWriter is writing WARC files with custom filenames. + """ + recorder = ProxyingRecorder(None, None, 'sha1', url='http://example.com') + recorded_url = RecordedUrl( + url='http://example.com', content_type='text/plain', status=200, + client_ip='127.0.0.2', request_data=b'abc', + response_recorder=recorder, remote_ip='127.0.0.3', + timestamp=datetime.utcnow()) + + dirname = os.path.dirname(str(tmpdir.mkdir('test-warc-writer'))) + wwriter = WarcWriter(Options(directory=dirname, prefix='foo', + warc_filename='{timestamp17}-{prefix}-{timestamp14}-{serialno}')) + wwriter.write_records(recorded_url) + warcs = [fn for fn in os.listdir(dirname)] + assert warcs + target_warc = os.path.join(dirname, warcs[0]) + assert target_warc + parts = warcs[0].split('-') + assert len(parts[0]) == 17 + assert parts[1] == 'foo' + assert len(parts[2]) == 14 + assert parts[3] == '00000.warc.open' diff --git a/warcprox/writer.py b/warcprox/writer.py index 44d21d3..56ff635 100644 --- a/warcprox/writer.py +++ b/warcprox/writer.py @@ -105,7 +105,7 @@ class WarcWriter: Extension ``.warc`` or ``.warc.gz`` is appended automatically. """ hostname = socket.getfqdn() - shorthostname = hostname.split(',')[0] + shorthostname = hostname.split('.')[0] fname = self.warc_filename.format(prefix=self.prefix, timestamp14=self.timestamp14(), timestamp17=self.timestamp17(),