44 lines
2.0 KiB
Python
44 lines
2.0 KiB
Python
#!/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()
|