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

Unified Diff: infra_libs/experiments.py

Issue 2213143002: Add infra_libs as a bootstrap dependency. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Removed the ugly import hack 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 side-by-side diff with in-line comments
Download patch
Index: infra_libs/experiments.py
diff --git a/infra_libs/experiments.py b/infra_libs/experiments.py
deleted file mode 100644
index 7a85037febf39748903b90756d6281783dc9eb99..0000000000000000000000000000000000000000
--- a/infra_libs/experiments.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Tools for gradually enabling a feature on a deterministic set of machines.
-
-Add a flag to your program to control the percentage of machines that a new
-feature should be enabled on::
-
- def add_argparse_options(self, parser):
- parser.add_argument('--myfeature-percent', type=int, default=0)
-
- def main(self, opts):
- if experiments.is_active_for_host('myfeature', opts.myfeature_percent):
- # do myfeature
-"""
-
-import hashlib
-import logging
-import socket
-import struct
-
-
-def _is_active(labels, percent):
- h = hashlib.md5()
- for label, value in sorted(labels.iteritems()):
- h.update(label)
- h.update(value)
-
- # The first 8 bytes of the hash digest as an unsigned integer.
- hash_num = struct.unpack_from('Q', h.digest())[0]
-
- return (hash_num % 100) < percent
-
-
-def is_active_for_host(experiment_name, percent):
- ret = _is_active({
- 'name': experiment_name,
- 'host': socket.getfqdn(),
- }, percent)
-
- if ret:
- logging.info('Experiment "%s" is active', experiment_name)
-
- return ret

Powered by Google App Engine
This is Rietveld 408576698