Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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. |
| OLD | NEW |