Flutter Engine
The Flutter Engine
upload_dm_results.py
Go to the documentation of this file.
1#!/usr/bin/env python
2# Copyright 2014 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6"""Upload DM output PNG files and JSON summary to Google Storage."""
7
8
9import datetime
10import os
11import shutil
12import sys
13import tempfile
14
15def main(dm_dir, build_number, builder_name):
16 """Upload DM output PNG files and JSON summary to Google Storage.
17
18 dm_dir: path to PNG files and JSON summary (str)
19 build_number: nth build on this builder (str or int)
20 builder_name: name of this builder (str)
21 """
22 # import gs_utils
23 current_dir = os.path.dirname(os.path.abspath(__file__))
24 sys.path.insert(0, os.path.join(current_dir, "../../../common/py/utils"))
25 import gs_utils
26
27 # Private, but Google-readable.
28 ACL = gs_utils.GSUtils.PredefinedACL.PRIVATE
29 FINE_ACLS = [(
30 gs_utils.GSUtils.IdType.GROUP_BY_DOMAIN,
31 'google.com',
32 gs_utils.GSUtils.Permission.READ
33 )]
34
35 if not os.path.isfile(os.path.join(dm_dir, 'dm.json')):
36 sys.exit("no dm.json file found in output directory.")
37
38 # Move dm.json to its own directory to make uploading it easier.
39 tmp = tempfile.mkdtemp()
40 shutil.move(os.path.join(dm_dir, 'dm.json'),
41 os.path.join(tmp, 'dm.json'))
42
43 # Only images are left in dm_dir. Upload any new ones.
44 gs = gs_utils.GSUtils()
45 gs.upload_dir_contents(dm_dir,
46 'skia-android-dm',
47 'dm-images-v1',
48 upload_if = gs.UploadIf.IF_NEW,
49 predefined_acl = ACL,
50 fine_grained_acl_list = FINE_ACLS)
51
52
53 # /dm-json-v1/year/month/day/hour/build-number/builder/dm.json
54 now = datetime.datetime.utcnow()
55 summary_dest_dir = '/'.join(['dm-json-v1',
56 str(now.year ).zfill(4),
57 str(now.month).zfill(2),
58 str(now.day ).zfill(2),
59 str(now.hour ).zfill(2),
60 str(build_number),
61 builder_name])
62
63 # Upload the JSON summary.
64 gs.upload_dir_contents(tmp,
65 'skia-android-dm',
66 summary_dest_dir,
67 predefined_acl = ACL,
68 fine_grained_acl_list = FINE_ACLS)
69
70
71 # Just for hygiene, put dm.json back.
72 shutil.move(os.path.join(tmp, 'dm.json'),
73 os.path.join(dm_dir, 'dm.json'))
74 os.rmdir(tmp)
75
76if '__main__' == __name__:
77 main(*sys.argv[1:])
Definition: main.py:1
def main(dm_dir, build_number, builder_name)
static SkString join(const CommandLineFlags::StringArray &)
Definition: skpbench.cpp:741