initial commit
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Small deterministic checks; this test never creates the ~1 GiB workload."""
|
||||
import hashlib
|
||||
from pathlib import Path
|
||||
from tempfile import TemporaryDirectory
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
|
||||
from generate_stress_pdf import IMAGE_BYTES, generate, validate_source
|
||||
|
||||
|
||||
class StressGeneratorTest(unittest.TestCase):
|
||||
def test_real_images_are_unique_used_and_deterministic(self):
|
||||
with TemporaryDirectory(prefix="docview-generator-test-") as directory:
|
||||
paths = [Path(directory) / name for name in ("a.pdf", "b.pdf")]
|
||||
first, second = (generate(path, 5, 2) for path in paths)
|
||||
self.assertEqual(first["sha256"], second["sha256"])
|
||||
data = paths[0].read_bytes()
|
||||
self.assertEqual(hashlib.sha256(data).hexdigest(), first["sha256"])
|
||||
self.assertEqual(first["rasterPayloadBytes"], 2 * IMAGE_BYTES)
|
||||
self.assertEqual(validate_source(paths[0], first)["uniqueRasterDigests"], 2)
|
||||
self.assertEqual(data.count(b"/Subtype /Image"), 2)
|
||||
self.assertNotIn(b"/Filter", data)
|
||||
self.assertEqual(data.count(b"/Scan 4 0 R"), 3)
|
||||
self.assertEqual(data.count(b"/Scan 5 0 R"), 2)
|
||||
self.assertIn(b"DOCVIEW STRESS PAGE 00005 OF 00005 IMAGE 0000", data)
|
||||
|
||||
def test_disk_limit_and_existing_files_fail_before_writing(self):
|
||||
with TemporaryDirectory(prefix="docview-generator-test-") as directory:
|
||||
path = Path(directory) / "source.pdf"
|
||||
with patch("generate_stress_pdf.shutil.disk_usage") as usage:
|
||||
usage.return_value.free = 0
|
||||
with self.assertRaises(RuntimeError):
|
||||
generate(path, 5, 2)
|
||||
self.assertFalse(path.exists())
|
||||
path.write_bytes(b"preserve me")
|
||||
with self.assertRaises(FileExistsError):
|
||||
generate(path, 5, 2)
|
||||
self.assertEqual(path.read_bytes(), b"preserve me")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user