31 """Run the DM test."""
32 do_upload = api.properties.get('do_upload') == 'true'
33 images = api.properties.get('images') == 'true'
34 lotties = api.properties.get('lotties') == 'true'
35 resources = api.properties.get('resources') == 'true'
36 skps = api.properties.get('skps') == 'true'
37 svgs = api.properties.get('svgs') == 'true'
38
39 api.flavor.install(
40 images=images,
41 lotties=lotties,
42 resources=resources,
43 skps=skps,
44 svgs=svgs,
45 )
46
47 use_hash_file = False
48 if do_upload:
49 host_dm_dir = str(api.flavor.host_dirs.dm_dir)
50 api.flavor.create_clean_host_dir(api.path.start_dir.join('test'))
51 device_dm_dir = str(api.flavor.device_dirs.dm_dir)
52 if host_dm_dir != device_dm_dir:
53 api.flavor.create_clean_device_dir(device_dm_dir)
54
55
56 hash_filename = 'uninteresting_hashes.txt'
57
58 host_hashes_file = api.vars.tmp_dir.join(hash_filename)
59 hashes_file = api.flavor.device_path_join(
60 api.flavor.device_dirs.tmp_dir, hash_filename)
61 script = api.gold_upload.resource('get_uninteresting_hashes.py')
62 api.run(
63 api.step,
64 'get uninteresting hashes',
65 cmd=['python3', script, api.properties['gold_hashes_url'],
66 host_hashes_file],
67
68
69 abort_on_failure=True,
70 fail_build_on_failure=True,
71 infra_step=True)
72
73 if api.path.exists(host_hashes_file):
74 api.flavor.copy_file_to_device(host_hashes_file, hashes_file)
75 use_hash_file = True
76
77
78 args = json.loads(api.properties['dm_flags'])
79 props = json.loads(api.properties['dm_properties'])
80 args.append('--properties')
81
82
83 for k in sorted(props.keys()):
84 v = props[k]
85 if v == '${SWARMING_BOT_ID}':
86 v = api.vars.swarming_bot_id
87 elif v == '${SWARMING_TASK_ID}':
88 v = api.vars.swarming_task_id
89 if v != '':
90 args.extend([k, v])
91
92
93 if resources:
94 args.extend(['--resourcePath', api.flavor.device_dirs.resource_dir])
95 if skps:
96 args.extend(['--skps', api.flavor.device_dirs.skp_dir])
97 if images:
98 args.extend([
99 '--images', api.flavor.device_path_join(
100 api.flavor.device_dirs.images_dir, 'dm'),
101 '--colorImages', api.flavor.device_path_join(
102 api.flavor.device_dirs.images_dir, 'colorspace'),
103 ])
104 if svgs:
105
106
107 args.extend(['--svgs', api.flavor.device_path_join(
108 api.flavor.device_dirs.svg_dir, "svg")])
109 if lotties:
110 args.extend([
111 '--lotties',
112 api.flavor.device_path_join(
113 api.flavor.device_dirs.resource_dir, 'skottie'),
114 api.flavor.device_dirs.lotties_dir,
115 ])
116 if 'Fontations' in api.vars.builder_cfg.get('extra_config', []):
117 args.extend(['--fontTestDataPath', api.flavor.device_dirs.fonts_dir])
118
119 if use_hash_file:
120 args.extend(['--uninterestingHashesFile', hashes_file])
121 if do_upload:
122 args.extend(['--writePath', api.flavor.device_dirs.dm_dir])
123
124
125 api.run(api.flavor.step, 'dm', cmd=args, abort_on_failure=False)
126
127 if do_upload:
128
129 api.flavor.copy_directory_contents_to_host(
130 api.flavor.device_dirs.dm_dir, api.flavor.host_dirs.dm_dir)
131
132 if 'Win' not in api.vars.builder_cfg.get('os', ''):
133 api.gold_upload.upload()
134
135