Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 | 2 |
| 3 """ | 3 """ |
| 4 Copyright 2013 Google Inc. | 4 Copyright 2013 Google Inc. |
| 5 | 5 |
| 6 Use of this source code is governed by a BSD-style license that can be | 6 Use of this source code is governed by a BSD-style license that can be |
| 7 found in the LICENSE file. | 7 found in the LICENSE file. |
| 8 | 8 |
| 9 HTTP server for our HTML rebaseline viewer. | 9 HTTP server for our HTML rebaseline viewer. |
| 10 """ | 10 """ |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 101 | 101 |
| 102 def __init__(self, | 102 def __init__(self, |
| 103 actuals_dir=DEFAULT_ACTUALS_DIR, | 103 actuals_dir=DEFAULT_ACTUALS_DIR, |
| 104 expectations_dir=DEFAULT_EXPECTATIONS_DIR, | 104 expectations_dir=DEFAULT_EXPECTATIONS_DIR, |
| 105 port=DEFAULT_PORT, export=False, editable=True, | 105 port=DEFAULT_PORT, export=False, editable=True, |
| 106 reload_seconds=0): | 106 reload_seconds=0): |
| 107 """ | 107 """ |
| 108 Args: | 108 Args: |
| 109 actuals_dir: directory under which we will check out the latest actual | 109 actuals_dir: directory under which we will check out the latest actual |
| 110 GM results | 110 GM results |
| 111 expectations_dir: directory under which to find GM expectations (they | 111 expectations_dir: DEPRECATED: directory under which to find |
| 112 must already be in that directory) | 112 GM expectations (they must already be in that directory) |
| 113 port: which TCP port to listen on for HTTP requests | 113 port: which TCP port to listen on for HTTP requests |
| 114 export: whether to allow HTTP clients on other hosts to access this server | 114 export: whether to allow HTTP clients on other hosts to access this server |
| 115 editable: whether HTTP clients are allowed to submit new baselines | 115 editable: whether HTTP clients are allowed to submit new baselines |
| 116 reload_seconds: polling interval with which to check for new results; | 116 reload_seconds: polling interval with which to check for new results; |
| 117 if 0, don't check for new results at all | 117 if 0, don't check for new results at all |
| 118 """ | 118 """ |
| 119 self._actuals_dir = actuals_dir | 119 self._actuals_dir = actuals_dir |
| 120 self._expectations_dir = expectations_dir | 120 self._expectations_dir = expectations_dir |
| 121 self._port = port | 121 self._port = port |
| 122 self._export = export | 122 self._export = export |
| 123 self._editable = editable | 123 self._editable = editable |
| 124 self._reload_seconds = reload_seconds | 124 self._reload_seconds = reload_seconds |
| 125 self._actuals_repo = _create_svn_checkout( | 125 self._actuals_repo = _create_svn_checkout( |
| 126 dir_path=actuals_dir, repo_url=ACTUALS_SVN_REPO) | 126 dir_path=actuals_dir, repo_url=ACTUALS_SVN_REPO) |
| 127 | 127 |
| 128 # We only update the expectations dir if the server was run with a | 128 # We only update the expectations dir if the server was run with a |
| 129 # nonzero --reload argument; otherwise, we expect the user to maintain | 129 # nonzero --reload argument; otherwise, we expect the user to maintain |
| 130 # her own expectations as she sees fit. | 130 # her own expectations as she sees fit. |
| 131 # | 131 # |
| 132 # TODO(epoger): Use git instead of svn to check out expectations, since | 132 # TODO(epoger): Use git instead of svn to check out expectations, since |
| 133 # the Skia repo is moving to git. | 133 # the Skia repo is moving to git. |
| 134 if reload_seconds: | 134 if reload_seconds: |
| 135 self._expectations_repo = _create_svn_checkout( | 135 self._expectations_repo = _create_svn_checkout( |
|
epoger
2013/11/21 17:08:37
see comments below
| |
| 136 dir_path=expectations_dir, repo_url=EXPECTATIONS_SVN_REPO) | 136 dir_path=expectations_dir, repo_url=EXPECTATIONS_SVN_REPO) |
| 137 else: | 137 else: |
| 138 self._expectations_repo = None | 138 self._expectations_repo = None |
| 139 | 139 |
| 140 def is_exported(self): | 140 def is_exported(self): |
| 141 """ Returns true iff HTTP clients on other hosts are allowed to access | 141 """ Returns true iff HTTP clients on other hosts are allowed to access |
| 142 this server. """ | 142 this server. """ |
| 143 return self._export | 143 return self._export |
| 144 | 144 |
| 145 def is_editable(self): | 145 def is_editable(self): |
| (...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 427 def main(): | 427 def main(): |
| 428 logging.basicConfig(level=logging.INFO) | 428 logging.basicConfig(level=logging.INFO) |
| 429 parser = argparse.ArgumentParser() | 429 parser = argparse.ArgumentParser() |
| 430 parser.add_argument('--actuals-dir', | 430 parser.add_argument('--actuals-dir', |
| 431 help=('Directory into which we will check out the latest ' | 431 help=('Directory into which we will check out the latest ' |
| 432 'actual GM results. If this directory does not ' | 432 'actual GM results. If this directory does not ' |
| 433 'exist, it will be created. Defaults to %(default)s'), | 433 'exist, it will be created. Defaults to %(default)s'), |
| 434 default=DEFAULT_ACTUALS_DIR) | 434 default=DEFAULT_ACTUALS_DIR) |
| 435 parser.add_argument('--editable', action='store_true', | 435 parser.add_argument('--editable', action='store_true', |
| 436 help=('Allow HTTP clients to submit new baselines.')) | 436 help=('Allow HTTP clients to submit new baselines.')) |
| 437 parser.add_argument('--expectations-dir', | 437 # Deprecated the --expectations-dir option, because once our GM expectations |
| 438 help=('Directory under which to find GM expectations; ' | 438 # are maintained within git we will no longer be able to check out and update |
| 439 # them in isolation (in SVN you can update a single directory subtree within | |
| 440 # a checkout, but you cannot do that with git). | |
| 441 # | |
| 442 # In a git world, we will force the user to refer to expectations | |
| 443 # within the same checkout as this tool (at the relative path | |
| 444 # ../../expectations/gm ). If they specify the --reload option, we will | |
| 445 # periodically run "git pull" on the entire Skia checkout, which will update | |
| 446 # the GM expectations along with everything else (such as this script). | |
| 447 # | |
| 448 # We can still allow --actuals-dir to be specified, though, because the | |
| 449 # actual results will continue to be maintained in the skia-autogen | |
| 450 # SVN repository. | |
| 451 parser.add_argument('--deprecated-expectations-dir', | |
| 452 help=('DEPRECATED due to our transition from SVN to git ' | |
| 453 '(formerly known as --expectations-dir). ' | |
| 454 'If you still need this option, contact ' | |
| 455 'epoger@google.com as soon as possible. WAS: ' | |
| 456 'Directory under which to find GM expectations; ' | |
|
epoger
2013/11/21 17:08:37
Alternatively, we could allow the user to specify
| |
| 439 'defaults to %(default)s'), | 457 'defaults to %(default)s'), |
| 440 default=DEFAULT_EXPECTATIONS_DIR) | 458 default=DEFAULT_EXPECTATIONS_DIR) |
| 441 parser.add_argument('--export', action='store_true', | 459 parser.add_argument('--export', action='store_true', |
| 442 help=('Instead of only allowing access from HTTP clients ' | 460 help=('Instead of only allowing access from HTTP clients ' |
| 443 'on localhost, allow HTTP clients on other hosts ' | 461 'on localhost, allow HTTP clients on other hosts ' |
| 444 'to access this server. WARNING: doing so will ' | 462 'to access this server. WARNING: doing so will ' |
| 445 'allow users on other hosts to modify your ' | 463 'allow users on other hosts to modify your ' |
| 446 'GM expectations, if combined with --editable.')) | 464 'GM expectations, if combined with --editable.')) |
| 447 parser.add_argument('--port', type=int, | 465 parser.add_argument('--port', type=int, |
| 448 help=('Which TCP port to listen on for HTTP requests; ' | 466 help=('Which TCP port to listen on for HTTP requests; ' |
| 449 'defaults to %(default)s'), | 467 'defaults to %(default)s'), |
| 450 default=DEFAULT_PORT) | 468 default=DEFAULT_PORT) |
| 451 parser.add_argument('--reload', type=int, | 469 parser.add_argument('--reload', type=int, |
| 452 help=('How often (a period in seconds) to update the ' | 470 help=('How often (a period in seconds) to update the ' |
| 453 'results. If specified, both EXPECTATIONS_DIR and ' | 471 'results. If specified, both ' |
| 472 'DEPRECATED_EXPECTATIONS_DIR and ' | |
| 454 'ACTUAL_DIR will be updated. ' | 473 'ACTUAL_DIR will be updated. ' |
| 455 'By default, we do not reload at all, and you ' | 474 'By default, we do not reload at all, and you ' |
| 456 'must restart the server to pick up new data.'), | 475 'must restart the server to pick up new data.'), |
| 457 default=0) | 476 default=0) |
| 458 args = parser.parse_args() | 477 args = parser.parse_args() |
| 459 global _SERVER | 478 global _SERVER |
| 460 _SERVER = Server(actuals_dir=args.actuals_dir, | 479 _SERVER = Server(actuals_dir=args.actuals_dir, |
| 461 expectations_dir=args.expectations_dir, | 480 expectations_dir=args.deprecated_expectations_dir, |
| 462 port=args.port, export=args.export, editable=args.editable, | 481 port=args.port, export=args.export, editable=args.editable, |
| 463 reload_seconds=args.reload) | 482 reload_seconds=args.reload) |
| 464 _SERVER.run() | 483 _SERVER.run() |
| 465 | 484 |
| 466 if __name__ == '__main__': | 485 if __name__ == '__main__': |
| 467 main() | 486 main() |
| OLD | NEW |