| Index: tools/telemetry/third_party/webpagereplay/servermanager.py
|
| diff --git a/tools/telemetry/third_party/webpagereplay/servermanager.py b/tools/telemetry/third_party/webpagereplay/servermanager.py
|
| deleted file mode 100644
|
| index 8bb9b3aeb2e085b727c3781ec229d27de7457b7d..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/third_party/webpagereplay/servermanager.py
|
| +++ /dev/null
|
| @@ -1,137 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright 2011 Google Inc. All Rights Reserved.
|
| -#
|
| -# Licensed under the Apache License, Version 2.0 (the "License");
|
| -# you may not use this file except in compliance with the License.
|
| -# You may obtain a copy of the License at
|
| -#
|
| -# http://www.apache.org/licenses/LICENSE-2.0
|
| -#
|
| -# Unless required by applicable law or agreed to in writing, software
|
| -# distributed under the License is distributed on an "AS IS" BASIS,
|
| -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -# See the License for the specific language governing permissions and
|
| -# limitations under the License.
|
| -
|
| -"""Control "replay.py --server_mode" (e.g. switch from record to replay)."""
|
| -
|
| -import sys
|
| -import time
|
| -
|
| -class ServerManager(object):
|
| - """Run servers until is removed or an exception is raised.
|
| -
|
| - Servers start in the order they are appended and stop in the
|
| - opposite order. Servers are started by calling the initializer
|
| - passed to ServerManager.Append() and by calling __enter__(). Once an
|
| - server's initializer is called successfully, the __exit__() function
|
| - is guaranteed to be called when ServerManager.Run() completes.
|
| - """
|
| -
|
| - def __init__(self, is_record_mode):
|
| - """Initialize a server manager."""
|
| - self.initializers = []
|
| - self.record_callbacks = []
|
| - self.replay_callbacks = []
|
| - self.traffic_shapers = []
|
| - self.is_record_mode = is_record_mode
|
| - self.should_exit = False
|
| -
|
| - def Append(self, initializer, *init_args, **init_kwargs):
|
| - """Append a server to the end of the list to run.
|
| -
|
| - Servers start in the order they are appended and stop in the
|
| - opposite order.
|
| -
|
| - Args:
|
| - initializer: a function that returns a server instance.
|
| - A server needs to implement the with-statement interface.
|
| - init_args: positional arguments for the initializer.
|
| - init_args: keyword arguments for the initializer.
|
| - """
|
| - self.initializers.append((initializer, init_args, init_kwargs))
|
| -
|
| - def AppendTrafficShaper(self, initializer, *init_args, **init_kwargs):
|
| - """Append a traffic shaper to the end of the list to run.
|
| -
|
| - Args:
|
| - initializer: a function that returns a server instance.
|
| - A server needs to implement the with-statement interface.
|
| - init_args: positional arguments for the initializer.
|
| - init_args: keyword arguments for the initializer.
|
| - """
|
| - self.traffic_shapers.append((initializer, init_args, init_kwargs))
|
| -
|
| - def AppendRecordCallback(self, func):
|
| - """Append a function to the list to call when switching to record mode.
|
| -
|
| - Args:
|
| - func: a function that takes no arguments and returns no value.
|
| - """
|
| - self.record_callbacks.append(func)
|
| -
|
| - def AppendReplayCallback(self, func):
|
| - """Append a function to the list to call when switching to replay mode.
|
| -
|
| - Args:
|
| - func: a function that takes no arguments and returns no value.
|
| - """
|
| - self.replay_callbacks.append(func)
|
| -
|
| - def IsRecordMode(self):
|
| - """Call all the functions that have been registered to enter replay mode."""
|
| - return self.is_record_mode
|
| -
|
| - def SetRecordMode(self):
|
| - """Call all the functions that have been registered to enter record mode."""
|
| - self.is_record_mode = True
|
| - for record_func in self.record_callbacks:
|
| - record_func()
|
| -
|
| - def SetReplayMode(self):
|
| - """Call all the functions that have been registered to enter replay mode."""
|
| - self.is_record_mode = False
|
| - for replay_func in self.replay_callbacks:
|
| - replay_func()
|
| -
|
| - def Run(self):
|
| - """Create the servers and loop.
|
| -
|
| - The loop quits if a server raises an exception.
|
| -
|
| - Raises:
|
| - any exception raised by the servers
|
| - """
|
| - server_exits = []
|
| - server_ports = []
|
| - exception_info = (None, None, None)
|
| - try:
|
| - for initializer, init_args, init_kwargs in self.initializers:
|
| - server = initializer(*init_args, **init_kwargs)
|
| - if server:
|
| - server_exits.insert(0, server.__exit__)
|
| - server.__enter__()
|
| - if hasattr(server, 'server_port'):
|
| - server_ports.append(server.server_port)
|
| - for initializer, init_args, init_kwargs in self.traffic_shapers:
|
| - init_kwargs['ports'] = server_ports
|
| - shaper = initializer(*init_args, **init_kwargs)
|
| - if server:
|
| - server_exits.insert(0, shaper.__exit__)
|
| - shaper.__enter__()
|
| - while True:
|
| - time.sleep(1)
|
| - if self.should_exit:
|
| - break
|
| - except Exception:
|
| - exception_info = sys.exc_info()
|
| - finally:
|
| - for server_exit in server_exits:
|
| - try:
|
| - if server_exit(*exception_info):
|
| - exception_info = (None, None, None)
|
| - except Exception:
|
| - exception_info = sys.exc_info()
|
| - if exception_info != (None, None, None):
|
| - # pylint: disable=raising-bad-type
|
| - raise exception_info[0], exception_info[1], exception_info[2]
|
|
|