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

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: Update hashes as version has changed. Created 4 years, 4 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
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 (required on POSIX, ignored on non-POSIX). 118 - `m`: POSIX file mode (required on POSIX, ignored on non-POSIX).
119 - `s`: file size iff not a symlink 119 - `s`: file size iff not a symlink
120 - `t`: type of the file iff not the default of `basic`
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 - `ar`: An [ar](https://en.wikipedia.org/wiki/Ar_(Unix)) archive containing a
139 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 | appengine/swarming/local_smoke_test.py » ('j') | client/tests/isolateserver_test.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698