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

Unified Diff: tools/telemetry/third_party/webpagereplay/proxyshaper.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/third_party/webpagereplay/proxyshaper.py
diff --git a/tools/telemetry/third_party/webpagereplay/proxyshaper.py b/tools/telemetry/third_party/webpagereplay/proxyshaper.py
deleted file mode 100644
index 6c6976f5b47cab1f693952c02ddf22292068f2f5..0000000000000000000000000000000000000000
--- a/tools/telemetry/third_party/webpagereplay/proxyshaper.py
+++ /dev/null
@@ -1,125 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2012 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.
-
-"""Simulate network characteristics directly in Python.
-
-Allows running replay without dummynet.
-"""
-
-import logging
-import platformsettings
-import re
-import time
-
-
-TIMER = platformsettings.timer
-
-
-class ProxyShaperError(Exception):
- """Module catch-all error."""
- pass
-
-class BandwidthValueError(ProxyShaperError):
- """Raised for unexpected dummynet-style bandwidth value."""
- pass
-
-
-class RateLimitedFile(object):
- """Wrap a file like object with rate limiting.
-
- TODO(slamm): Simulate slow-start.
- Each RateLimitedFile corresponds to one-direction of a
- bidirectional socket. Slow-start can be added here (algorithm needed).
- Will consider changing this class to take read and write files and
- corresponding bit rates for each.
- """
- BYTES_PER_WRITE = 1460
-
- def __init__(self, request_counter, f, bps):
- """Initialize a RateLimiter.
-
- Args:
- request_counter: callable to see how many requests share the limit.
- f: file-like object to wrap.
- bps: an integer of bits per second.
- """
- self.request_counter = request_counter
- self.original_file = f
- self.bps = bps
-
- def transfer_seconds(self, num_bytes):
- """Seconds to read/write |num_bytes| with |self.bps|."""
- return 8.0 * num_bytes / self.bps
-
- def write(self, data):
- num_bytes = len(data)
- num_sent_bytes = 0
- while num_sent_bytes < num_bytes:
- num_write_bytes = min(self.BYTES_PER_WRITE, num_bytes - num_sent_bytes)
- num_requests = self.request_counter()
- wait = self.transfer_seconds(num_write_bytes) * num_requests
- logging.debug('write sleep: %0.4fs (%d requests)', wait, num_requests)
- time.sleep(wait)
-
- self.original_file.write(
- data[num_sent_bytes:num_sent_bytes + num_write_bytes])
- num_sent_bytes += num_write_bytes
-
- def _read(self, read_func, size):
- start = TIMER()
- data = read_func(size)
- read_seconds = TIMER() - start
- num_bytes = len(data)
- num_requests = self.request_counter()
- wait = self.transfer_seconds(num_bytes) * num_requests - read_seconds
- if wait > 0:
- logging.debug('read sleep: %0.4fs %d requests)', wait, num_requests)
- time.sleep(wait)
- return data
-
- def readline(self, size=-1):
- return self._read(self.original_file.readline, size)
-
- def read(self, size=-1):
- return self._read(self.original_file.read, size)
-
- def __getattr__(self, name):
- """Forward any non-overriden calls."""
- return getattr(self.original_file, name)
-
-
-def GetBitsPerSecond(bandwidth):
- """Return bits per second represented by dummynet bandwidth option.
-
- See ipfw/dummynet.c:read_bandwidth for how it is really done.
-
- Args:
- bandwidth: a dummynet-style bandwidth specification (e.g. "10Kbit/s")
- """
- if bandwidth == '0':
- return 0
- bw_re = r'^(\d+)(?:([KM])?(bit|Byte)/s)?$'
- match = re.match(bw_re, str(bandwidth))
- if not match:
- raise BandwidthValueError('Value, "%s", does not match regex: %s' % (
- bandwidth, bw_re))
- bw = int(match.group(1))
- if match.group(2) == 'K':
- bw *= 1000
- if match.group(2) == 'M':
- bw *= 1000000
- if match.group(3) == 'Byte':
- bw *= 8
- return bw

Powered by Google App Engine
This is Rietveld 408576698