#!/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()