Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(719)

Side by Side Diff: appengine/isolate/doc/Design.md

Issue 2060983006: luci-py/isolateserver.py: Add archive support when downloading. (Closed) Base URL: https://github.com/luci/luci-py.git@master
Patch Set: Rebase Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | client/cipd.py » ('j') | client/isolateserver.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Isolated Server 1 # Isolated Server
2 2
3 High performance Infrastructure to run an executable with all its dependencies 3 High performance Infrastructure to run an executable with all its dependencies
4 mapped in. 4 mapped in.
5 5
6 **One line description:** How to push 10000 files worth 2Gb in total to tens of 6 **One line description:** How to push 10000 files worth 2Gb in total to tens of
7 bots within a few seconds, *even on Windows or Android*. 7 bots within a few seconds, *even on Windows or Android*.
8 8
9 9
10 ## Objective 10 ## Objective
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 The root is a dictionary with the following keys: 110 The root is a dictionary with the following keys:
111 - `algo`: Hashing algorithm used to hash the content. Normally `'sha-1'`. 111 - `algo`: Hashing algorithm used to hash the content. Normally `'sha-1'`.
112 - `command`: exact command to run as a list. 112 - `command`: exact command to run as a list.
113 - `files`: list of dictionary, each key being the relative file path, and the 113 - `files`: list of dictionary, each key being the relative file path, and the
114 entry being a dict determining the properties of the file. Exactly one of 114 entry being a dict determining the properties of the file. Exactly one of
115 `h` or `l` must be present. `m` must be present only on POSIX systems. 115 `h` or `l` must be present. `m` must be present only on POSIX systems.
116 - `h`: file content's SHA-1 116 - `h`: file content's SHA-1
117 - `l`: link destination iff a symlink 117 - `l`: link destination iff a symlink
118 - `m`: posix file mode iff on posix 118 - `m`: posix file mode iff on posix
119 - `s`: file size iff not a symlink 119 - `s`: file size iff not a symlink
120 - `t`: type of the file, defaults to `basic` if not given.
M-A Ruel 2016/06/22 17:17:49 I'd make the statement stronger, it should not be
mithro 2016/06/23 07:17:21 Done.
120 - `includes`: references another `.isolated` file for additional files or to 121 - `includes`: references another `.isolated` file for additional files or to
121 provide the command. In practice, this is used to reduce `.isolated` file 122 provide the command. In practice, this is used to reduce `.isolated` file
122 size by moving rarely changed test data files in a separate `.isolated` 123 size by moving rarely changed test data files in a separate `.isolated`
123 file. 124 file.
124 - `read_only`: boolean to specify if all the files should be read-only. This 125 - `read_only`: boolean to specify if all the files should be read-only. This
125 will be eventually enforced. 126 will be eventually enforced.
126 - `relative_cwd`: relative directory inside the temporary directory tree when 127 - `relative_cwd`: relative directory inside the temporary directory tree when
127 the command should be executed from. 128 the command should be executed from.
128 - `version`: version of the file format. Increment the minor version for non 129 - `version`: version of the file format. Increment the minor version for non
129 breaking changes and the major version if code written for a previous 130 breaking changes and the major version if code written for a previous
130 version shouldn't be able to parse it. 131 version shouldn't be able to parse it.
131 132
132 133
134 ##### File types
135
136 There are two file types;
137 - `basic`: All normal files, the default type.
138 - `smallfiles-archive`: An [ar](https://en.wikipedia.org/wiki/Ar_(Unix))
M-A Ruel 2016/06/22 17:17:49 this is overly verbose. :/ I think 'ar' is suffic
mithro 2016/06/23 07:17:21 How about "smallar"? If we want to use ar files in
M-A Ruel 2016/06/23 13:29:01 I don't understand, it's an 'ar' file. We use 'ar'
mithro 2016/07/28 16:38:00 Done.
139 archive containing a large number of small files.
140
141
133 #### Arbitrary split vs recursive trees 142 #### Arbitrary split vs recursive trees
134 143
135 The `.isolated` format supports the `includes` key to split and merge back list 144 The `.isolated` format supports the `includes` key to split and merge back list
136 of files in separate `.isolated` files. It is in stark contrast with more 145 of files in separate `.isolated` files. It is in stark contrast with more
137 traditional tree of trees structure like the git tree object rooted to a git 146 traditional tree of trees structure like the git tree object rooted to a git
138 commit object. 147 commit object.
139 148
140 The reason is to leave a lot of room to the tool generating the `.isolated` 149 The reason is to leave a lot of room to the tool generating the `.isolated`
141 files to be able to package low-churn files versus high-churn files into a small 150 files to be able to package low-churn files versus high-churn files into a small
142 number of `.isolated` files. As a practical example, we can state that test data 151 number of `.isolated` files. As a practical example, we can state that test data
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 373
365 ## Testing Plan 374 ## Testing Plan
366 375
367 - The isolate server code is unit, smoke and canary tested. Since most of the 376 - The isolate server code is unit, smoke and canary tested. Since most of the
368 isolate server code is OS-independent and written in python, testing is 377 isolate server code is OS-independent and written in python, testing is
369 relatively easy. 378 relatively easy.
370 - Support for hardlinks, symlinks and native path case need OS-specific code 379 - Support for hardlinks, symlinks and native path case need OS-specific code
371 which can be tested itself on Swarming to get coverage across OSes. 380 which can be tested itself on Swarming to get coverage across OSes.
372 - A canary Continuous Integration master is run by the chromium team at 381 - A canary Continuous Integration master is run by the chromium team at
373 http://build.chromium.org/p/chromium.swarm/waterfall. 382 http://build.chromium.org/p/chromium.swarm/waterfall.
OLDNEW
« no previous file with comments | « no previous file | client/cipd.py » ('j') | client/isolateserver.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698