Change video content scaling so that it either:
[dcpomatic.git] / test / torture_partial.py
1 #!/usr/bin/python
2
3 import sys
4 import os
5 import shutil
6 import random
7
8 import guessdcp
9
10 if len(sys.argv) < 2:
11     print 'Syntax: %s <film>' % sys.argv[0]
12     sys.exit(1)
13
14 film = sys.argv[1]
15
16 print 'Creating reference Film'
17 os.system('makedcp -n %s' % film)
18
19 videos = os.listdir(os.path.join(film, 'video'))
20 assert(len(videos) == 1)
21
22 full_size = os.path.getsize(os.path.join(film, 'video', videos[0]))
23 print 'Video MXF is %d bytes long' % full_size
24
25 while 1:
26     film_copy = '%s-copy' % film
27
28     try:
29         shutil.rmtree(film_copy)
30     except:
31         pass
32
33     print 'Copying %s to %s' % (film, film_copy)
34     shutil.copytree(film, film_copy)
35     old_dcp = guessdcp.path(film_copy)
36     print 'Removing %s and log' % old_dcp
37     shutil.rmtree(old_dcp)
38     os.remove(os.path.join(film_copy, 'log'))
39
40     truncated_size = random.randint(1, full_size)
41     print 'Truncating video MXF to %d' % truncated_size
42     videos = os.listdir(os.path.join(film_copy, 'video'))
43     assert(len(videos) == 1)
44     os.system('ls -l %s' % os.path.join(film_copy, 'video'))
45     os.system('truncate %s --size %d' % (os.path.join(film_copy, 'video', videos[0]), truncated_size))
46     os.system('ls -l %s' % os.path.join(film_copy, 'video'))
47
48     print 'Rebuilding'
49     os.system('makedcp -n %s' % film_copy)
50
51     print 'Checking'
52     r = os.system('dcpdiff %s %s' % (guessdcp.path(film), guessdcp.path(film_copy)))
53     if r != 0:
54         print 'FAIL'
55         sys.exit(1)
56
57     print 'OK'
58     print
59
60     print 'Deleting copy'
61     shutil.rmtree(film_copy)
62