Dzahn has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/376151 )

Change subject: jsbench: Prep osmium for decom and remove 've' and 'jsbench' 
roles
......................................................................


jsbench: Prep osmium for decom and remove 've' and 'jsbench' roles

The 've' and 'jsbench' roles are no longer used.

Prepare osmium for decom.

Bug: T175093
Change-Id: I99356298ba12d574d84528306e9dbc33c270873c
---
M manifests/site.pp
D modules/role/files/jsbench/benchmarks/README
D modules/role/files/jsbench/benchmarks/ve.js
D modules/role/files/jsbench/devwiki.conf
D modules/role/files/jsbench/jsbench
D modules/role/files/jsbench/systemd
D modules/role/files/jsbench/upstart
D modules/role/files/ve/devwiki.conf
D modules/role/files/ve/vb
D modules/role/manifests/jsbench.pp
D modules/role/manifests/ve.pp
11 files changed, 2 insertions(+), 751 deletions(-)

Approvals:
  jenkins-bot: Verified
  Dzahn: Looks good to me, approved



diff --git a/manifests/site.pp b/manifests/site.pp
index 4d62b1c..0466759 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -1918,11 +1918,9 @@
     include ::standard
 }
 
-# VisualEditor performance testing rig
+# To be decommissioned in T175093
 node 'osmium.eqiad.wmnet' {
-    role(ve)
-    include ::standard
-    include ::base::firewall
+    role(spare::system)
 }
 
 # oxygen runs a kafkatee instance that consumes webrequest from Kafka
diff --git a/modules/role/files/jsbench/benchmarks/README 
b/modules/role/files/jsbench/benchmarks/README
deleted file mode 100644
index 85bd91b..0000000
--- a/modules/role/files/jsbench/benchmarks/README
+++ /dev/null
@@ -1,6 +0,0 @@
-A benchmark is a piece of Javascript that can be run with the
-  jsbench --benchmark <benchmark> <url>
-command. The script will be executed when the browser opens the page.
-It needs to contain a console.profile and a console.profileEnd call;
-otherwise it can be arbitrary. The output of the profileEnd call will be
-returned by jsbench.
diff --git a/modules/role/files/jsbench/benchmarks/ve.js 
b/modules/role/files/jsbench/benchmarks/ve.js
deleted file mode 100644
index fb7b43e..0000000
--- a/modules/role/files/jsbench/benchmarks/ve.js
+++ /dev/null
@@ -1,23 +0,0 @@
-window.onload = function () {
-       var stage = jsbench.stage;
-       ve.trackSubscribe( 'trace.' + stage + '.', function ( topic ) {
-               switch ( topic.split( '.' ).pop() ) {
-                       case 'enter':
-                               console.profile( stage );
-                               break;
-                       case 'exit':
-                               console.profileEnd( stage );
-                               break;
-               }
-       } );
-
-       // Don't show the welcome dialog.
-       localStorage.clear()
-       localStorage.setItem( 've-beta-welcome-dialog', 1 );
-
-       // Wait 200ms for any load handlers to run, then start VE.
-       setTimeout( function () {
-               mw.libs.ve.onEditTabClick( { preventDefault: $.noop } );
-       }, 200 );
-};
-
diff --git a/modules/role/files/jsbench/devwiki.conf 
b/modules/role/files/jsbench/devwiki.conf
deleted file mode 100644
index 67bcfac..0000000
--- a/modules/role/files/jsbench/devwiki.conf
+++ /dev/null
@@ -1,31 +0,0 @@
-<VirtualHost *:80>
-    ServerName osmium
-    DocumentRoot /var/www
-
-    <Directory />
-        Options FollowSymLinks
-        AllowOverride None
-    </Directory>
-
-    <Directory /var/www>
-        Require all granted
-    </Directory>
-
-    <Directory /srv/mediawiki-local>
-        Require all granted
-    </Directory>
-
-    <Directory /srv/images>
-        Require all granted
-    </Directory>
-
-    AllowEncodedSlashes on
-    RewriteEngine On
-
-    Alias /images "/srv/images"
-
-    ProxyPass       /wiki                
fcgi://127.0.0.1:9000/var/www/w/index.php retry=0
-    ProxyPass       /w/extensions        !
-    ProxyPassMatch  ^/w/(.*\.(php|hh))$  fcgi://127.0.0.1:9000/var/www/w/$1 
retry=0
-    RewriteRule     ^/$                  
fcgi://127.0.0.1:9000/var/www/w/index.php  [P]
-</VirtualHost>
diff --git a/modules/role/files/jsbench/jsbench 
b/modules/role/files/jsbench/jsbench
deleted file mode 100755
index f58e282..0000000
--- a/modules/role/files/jsbench/jsbench
+++ /dev/null
@@ -1,455 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""
-  jsbench - Javascript performance benchmarking tool
-  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  Usage: jsbench [OPTIONS] URL
-   -h, --help            show this help message and exit
-   --verbose             log verbosely
-   --benchmark-file FILE benchmark file (default: standard input)
-   --host HOST           Chromium host (default: localhost)
-   --port PORT           Chromium port (default: 9222)
-   --repeat N            times to repeat (default: 5)
-   --warmups N           number of warm-up runs (default: 3)
-   --write-profile-data  save profiling data as .cpuprofile files.
-   --display DISPLAY     set device display metrics to WIDTHxHEIGHT or
-                         WIDTHxHEIGHT*SCALE_FACTOR
-   --disable-cache       disable network cache
-   --jsvar NAME VALUE    make VALUE available in the benchmark script as
-                         jsbench[NAME]; can be used multiple times
-
-  A benchmark must be specified via --benchmark or on the standard input.
-  jsbench will remote-control Chromium (which needs to be running and
-  listening for a remote debugger on the given host/port) to go to the
-  specified URL, execute the benchmark script, and return performance
-  profiling data.
-
-
-  Copyright 2015 Ori Livneh <o...@wikimedia.org>
-
-  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.
-
-"""
-from __future__ import division, print_function
-
-import sys
-reload(sys)
-sys.setdefaultencoding('utf-8')
-
-import argparse
-import functools
-import itertools
-import json
-import logging
-import re
-import string
-import time
-import urllib2
-import weakref
-
-try:
-    from twisted.internet import defer, reactor
-    from twisted.python.log import PythonLoggingObserver
-
-    from autobahn.twisted.websocket import (WebSocketClientProtocol,
-                                            WebSocketClientFactory)
-except ImportError:
-    print('jsbench requires autobahn (https://pypi.python.org/pypi/autobahn/) '
-          'and twisted (https://pypi.python.org/pypi/Twisted/).')
-    sys.exit(1)
-
-
-class Highlighter(object):
-    RED, GREEN, YELLOW, BLUE, WHITE = ('\x1b[1;3%sm' % n for n in '12347')
-    RESET = '\x1b[0m'
-    SUBS = {'^': RED, '@': GREEN, '_': YELLOW, '~': BLUE, '*': WHITE}
-    RE = re.compile(r'(?P<meta>[%s])\((?P<text>.+?)\)(?P=meta)'
-                    % ''.join(SUBS))
-
-    def __init__(self, use_color=True):
-        self.use_color = use_color
-
-    def repl(self, match):
-        start = self.SUBS[match.group('meta')] if self.use_color else ''
-        end = self.RESET if self.use_color else ''
-        return start + match.group('text') + end
-
-    def highlight(self, s):
-        return self.RE.sub(self.repl, s)
-
-
-class HighlightingFormatter(logging.Formatter, Highlighter):
-    """A formatter for the Python standard library's logging module
-    that uses `Highlighter` to colorize text."""
-
-    def __init__(self, use_color=False):
-        self.use_color = use_color
-        super(HighlightingFormatter, self).__init__(
-            self.highlight('[_(%(asctime)s)_] %(message)s'), '%H:%M:%S')
-
-    def format(self, record):
-        if isinstance(record.msg, basestring):
-            record.msg = self.highlight(record.msg)
-        return super(HighlightingFormatter, self).format(record)
-
-
-def mean(data):
-    """Compute arithmetic mean ("average") of data."""
-    data = list(data)
-    n = len(data)
-    if not n:
-        raise ValueError('cannot compute mean of empty set')
-    return sum(data) / n
-
-
-def median(data):
-    """Compute median (middle value) of data."""
-    data = list(data)
-    n = len(data)
-    if not n:
-        raise ValueError('cannot compute median of empty set')
-    data.sort()
-    i = n // 2
-    return data[i] if n % 2 == 1 else (data[i - 1] + data[i]) / 2
-
-
-def std(data):
-    """Compute the population standard deviation."""
-    data = list(data)
-    n = len(data)
-    if n == 0:
-        raise ValueError('cannot compute stdev of empty set')
-    m = mean(data)
-    ss = sum((x - m) ** 2 for x in data)
-    return (ss / n) ** 0.5
-
-
-def parse_display_opts(opt_string):
-    """Parse display options in format WIDTHxHEIGHT or WIDTHxHEIGHT*FACTOR."""
-    opts = {'deviceScaleFactor': 1, 'emulateViewport': False,
-            'fitWindow': False, 'mobile': False}
-    match = re.match(r'(?P<width>\d+)x(?P<height>\d+)(\*(?P<deviceScaleFactor'
-                     r'>\d+))?', opt_string)
-    if match is None:
-        raise ValueError('Invalid display options string.')
-    opts.update(((k, int(v)) for k, v in match.groupdict().items()))
-    return opts
-
-
-def upper_first(s):
-    """Returns a copy of a string with the first letter capitalized."""
-    return s[0:1].upper() + s[1:]
-
-
-def summarize(data):
-    data = list(data)
-    template = ('min: *({: >7.2f})* max: *({: >7.2f})* '
-                'avg: *({: >7.2f})* med: *({: >7.2f})* '
-                'std: *({: >7.2f})*')
-    return template.format(min(data), max(data), mean(data),
-                           median(data), std(data))
-
-
-class ChromeCPUProfile(object):
-    """Represents the result of a Chrome CPU profiler run."""
-
-    def __init__(self, profile, title=None):
-        self.profile = profile
-        self.title = title
-        self.total_hit_count = self.get_hit_count(profile['head'])
-        self.wall_time = (profile['endTime'] - profile['startTime']) * 1000
-        self.sampling_interval = self.wall_time / self.total_hit_count
-        self.cpu_time = 0
-        self.gc_time = 0
-        self.idle_time = 0
-
-        for node in profile['head']['children']:
-            if node['functionName'] == '(garbage collector)':
-                self.gc_time = self.get_time(node)
-            elif node['functionName'] == '(idle)':
-                self.idle_time = self.get_time(node)
-            else:
-                self.cpu_time += self.get_time(node)
-
-    def get_hit_count(self, node):
-        children = node.get('children', ())
-        return node['hitCount'] + sum(self.get_hit_count(x) for x in children)
-
-    def get_time(self, node):
-        return self.get_hit_count(node) * self.sampling_interval
-
-    def write(self, file_name=None):
-        if file_name is None:
-            prefix = self.title or 'profile'
-            file_name = '%s.%d.cpuprofile' % (prefix, time.time())
-        with open(file_name, 'w') as f:
-            json.dump(self.profile, f, sort_keys=True, indent=2)
-
-
-class ChromeRemoteDebuggingDomain(object):
-    """Represents a Chrome Remote Debugging API domain."""
-
-    def __init__(self, domain, proto):
-        self.domain = upper_first(domain)
-        self.proto = weakref.proxy(proto)
-
-    def __getattr__(self, name):
-        command = self.domain + '.' + name
-        return functools.partial(self.proto.sendCommand, command)
-
-
-class ChromeRemoteDebuggingProtocol(WebSocketClientProtocol):
-    """Protocol for communicating with Chrome via the Remote Debugging API."""
-
-    domain_names = (
-        'heapProfiler',
-        'inspector',
-        'network',
-        'page',
-        'profiler',
-        'console',
-    )
-
-    def sendCommand(self, method, **params):
-        id = next(self.message_ids)
-        deferred = self.deferreds[id] = defer.Deferred()
-        command = {'id': id, 'method': method, 'params': params}
-        self.sendMessage(json.dumps(command))
-        return deferred
-
-    def onConnect(self, response):
-        self.message_ids = itertools.count()
-        self.deferreds = {}
-        self.profiles = []
-        reactor.addSystemEventTrigger('after', 'shutdown', self.showSummary)
-        
-
-    def onConsoleMessageAdded(self, message):
-        level = message['level']
-        text = message.get('text', '')
-        meta = dict(log='~', error='^', warning='_', debug='@').get(level, '')
-        log_level = getattr(logging, level.upper(), logging.DEBUG)
-        log.log(log_level, '[%s(console.%s)%s] %s' % (meta, level, meta, text))
-
-    def onInspectorTargetCrashed(self):
-        log.critical('^(Aw, snap!)^ Target has crashed. Trying to recover...')
-        return self.onProfilerReady()
-
-    @defer.inlineCallbacks
-    def onOpen(self):
-        log.info('Loading *(%s)*...', self.factory.target_url)
-
-        for domain_name in self.domain_names:
-            domain = ChromeRemoteDebuggingDomain(domain_name, self)
-            self.__dict__[domain_name] = domain
-            yield domain.enable()
-
-        scriptSource = 'var jsbench=%s;\n\n%s' % 
(json.dumps(dict(self.factory.jsvar)),
-            self.factory.benchmark_file.read())
-        yield self.page.addScriptToEvaluateOnLoad(scriptSource=scriptSource)
-        yield self.profiler.setSamplingInterval(interval=100)
-
-        if self.factory.disable_cache:
-            yield self.network.setCacheDisabled(cacheDisabled=True)
-
-        if self.factory.display:
-            yield self.page.setDeviceMetricsOverride(**self.factory.display)
-
-        yield self.onProfilerReady()
-
-    @defer.inlineCallbacks
-    def onProfilerReady(self):
-        yield self.network.clearBrowserCache()
-        yield self.heapProfiler.collectGarbage()
-        yield self.page.navigate(url=self.factory.target_url)
-
-    def onProfilerConsoleProfileFinished(self, id, location, profile,
-                                         title=None):
-        profile = ChromeCPUProfile(profile, title)
-
-        if self.factory.warmups > 0:
-            t = 'XX/{:02d}: CPU: {: <7.2f}  Wall: {: >7.2f}  GC: {: >7.2f}'
-            log.info(t.format(self.factory.repetitions, profile.cpu_time,
-                              profile.wall_time, profile.gc_time))
-            self.factory.warmups -= 1
-            return self.onProfilerReady()
-
-        self.profiles.append(profile)
-
-        if self.factory.write_profile_data:
-            profile.write()
-
-        if self.factory.repetitions > 1:
-            t = '{:02d}/{:02d}: CPU: {: <7.2f}  Wall: {: >7.2f}  GC: {: >7.2f}'
-            log.info(t.format(len(self.profiles), self.factory.repetitions,
-                              profile.cpu_time, profile.wall_time,
-                              profile.gc_time))
-        if len(self.profiles) < self.factory.repetitions:
-            return self.onProfilerReady()
-        else:
-            reactor.stop()
-
-    def getHandler(self, method):
-        object, event = method.split('.')
-        handler = 'on' + object + upper_first(event)
-        return getattr(self, handler, None)
-
-    def onMessage(self, payload, isBinary):
-        message = json.loads(payload.decode('utf-8'))
-
-        id = message.get('id')
-        error = message.get('error')
-        method = message.get('method')
-        params = message.get('params')
-        result = message.get('result')
-        deferred = self.deferreds.get(id)
-
-        if deferred:
-            if error:
-                log.error(error)
-                return deferred.errback(error)
-            else:
-                return deferred.callback(result)
-
-        if method:
-            handler = self.getHandler(method)
-            if handler:
-                return handler(**params)
-
-    def showSummary(self):
-        if not len(self.profiles):
-            return
-        log.info('CPU:  ' + summarize(p.cpu_time for p in self.profiles))
-        log.info('Wall: ' + summarize(p.wall_time for p in self.profiles))
-
-
-class ChromeRemoteDebuggingFactory(WebSocketClientFactory):
-
-    def __init__(self, target_url, **kwargs):
-        self.__dict__.update(kwargs)
-        self.target_url = target_url.replace('https://', 'http://', 1)
-        WebSocketClientFactory.__init__(self, self.getConnectableTabUrl())
-        self.protocol = ChromeRemoteDebuggingProtocol
-
-    def getConnectableTabUrl(self):
-        for tab in self.getTabs():
-            if 'webSocketDebuggerUrl' in tab:
-                return tab['webSocketDebuggerUrl']
-
-    def getTabs(self):
-        req = urllib2.urlopen('http://%s:%s/json' % (self.host, self.port))
-        return json.load(req)
-
-
-ap = argparse.ArgumentParser(fromfile_prefix_chars='@',
-    description='Javascript performance benchmarking tool',
-    epilog='A benchmark must be specified via --benchmark or on the standard 
input. '
-           'jsbench will remote-control Chromium (which needs to be running 
and '
-           'listening for a remote debugger on the given host/port) to go to 
the '
-           'specified URL, execute the benchmark script, and return 
performance '
-           'profiling data.')
-ap.add_argument(
-    '--verbose',
-    action='store_const',
-    const=logging.DEBUG,
-    default=logging.INFO,
-    dest='log_level',
-    help='log verbosely',
-)
-ap.add_argument(
-    '--benchmark-file',
-    action='store',
-    type=argparse.FileType('r'),
-    default=sys.stdin,
-    help='benchmark file (default: standard input)',
-    metavar='FILE',
-)
-ap.add_argument(
-    '--host',
-    default='localhost',
-    help='Chromium host (default: localhost)',
-)
-ap.add_argument(
-    '--port',
-    default=9222,
-    help='Chromium port (default: 9222)',
-    type=int,
-)
-ap.add_argument(
-    '--repeat',
-    default=5,
-    dest='repetitions',
-    help='times to repeat (default: 5)',
-    metavar='N',
-    type=int,
-)
-ap.add_argument(
-    '--warmups',
-    default=2,
-    help='number of warm-up runs (default: 3)',
-    metavar='N',
-    type=int,
-)
-ap.add_argument(
-    '--write-profile-data',
-    action='store_true',
-    default=False,
-    help='save profiling data as .cpuprofile files',
-)
-ap.add_argument(
-    '--display',
-    type=parse_display_opts,
-    help='set device display metrics to WIDTHxHEIGHT or '
-         'WIDTHxHEIGHT*SCALE_FACTOR',
-)
-ap.add_argument(
-    '--disable-cache',
-    action='store_true',
-    default=False,
-    help='disable network cache',
-)
-ap.add_argument(
-    '--jsvar',
-    action='append',
-    nargs=2,
-    help='make VALUE available in the benchmark script as'
-         'jsbench[NAME]; can be used multiple times',
-    metavar=('NAME', 'VALUE'),
-)
-ap.add_argument(
-    'target_url',
-    metavar='URL',
-    help='URL to load',
-)
-
-args = ap.parse_args()
-
-log = logging.getLogger('jsbench')
-log.setLevel(args.log_level)
-
-is_tty = sys.stdout.isatty()
-stdout_handler = logging.StreamHandler(stream=sys.stdout)
-stdout_handler.setFormatter(HighlightingFormatter(use_color=is_tty))
-log.addHandler(stdout_handler)
-if not is_tty:
-    stderr_handler = logging.StreamHandler(stream=sys.stderr)
-    stderr_handler.setFormatter(HighlightingFormatter(use_color=True))
-    log.addHandler(stderr_handler)
-
-observer = PythonLoggingObserver('jsbench')
-observer.start()
-
-factory = ChromeRemoteDebuggingFactory(**vars(args))
-reactor.connectTCP(args.host, args.port, factory)
-reactor.run()
diff --git a/modules/role/files/jsbench/systemd 
b/modules/role/files/jsbench/systemd
deleted file mode 100644
index 0f4f2dd..0000000
--- a/modules/role/files/jsbench/systemd
+++ /dev/null
@@ -1,35 +0,0 @@
-[Unit]
-Description="Headless Chromium as a benchmark runner service for jsbench"
-After=xvfb.service
-
-[Service]
-WorkingDirectory=/srv/profile/jsbench
-User=jsbench
-Restart=always
-ExecStart=/usr/lib/chromium/chromium \
-      --incognito \
-      --remote-debugging-port=9222 \
-      --display=:99 \
-      --disable-background-networking \
-      --disable-client-side-phishing-detection \
-      --disable-component-update \
-      --disable-default-apps \
-      --disable-extensions \
-      --disable-hang-monitor \
-      --disable-infobars \
-      --disable-plugins-discovery \
-      --disable-prompt-on-repost \
-      --disable-suggestions-service \
-      --disable-sync \
-      --disable-translate \
-      --disable-v8-idle-tasks \
-      --disable-web-resources \
-      --no-default-browser-check \
-      --no-first-run \
-      `#--host-rules="MAP * localhost, EXCLUDE upload.wikimedia.org"` \
-      --safebrowsing-disable-auto-update \
-      --safebrowsing-disable-download-protection \
-      --no-sandbox
-
-[Install]
-WantedBy=multi-user.target
diff --git a/modules/role/files/jsbench/upstart 
b/modules/role/files/jsbench/upstart
deleted file mode 100755
index 88c4652..0000000
--- a/modules/role/files/jsbench/upstart
+++ /dev/null
@@ -1,48 +0,0 @@
-#####################################################################
-### THIS FILE IS MANAGED BY PUPPET
-#####################################################################
-
-description "Headless Chromium as a benchmark runner service for jsbench"
-
-start on started xvfb
-
-setuid jsbench
-setgid jsbench
-
-respawn
-respawn limit 10 5
-
-script
-  cd /srv/profile/jsbench
-  exec /usr/lib/chromium-browser/chromium-browser \
-      --incognito \
-      --remote-debugging-port=9222 \
-      --display=:99 \
-      --disable-background-networking \
-      --disable-client-side-phishing-detection \
-      --disable-component-update \
-      --disable-default-apps \
-      --disable-extensions \
-      --disable-hang-monitor \
-      --disable-infobars \
-      --disable-plugins-discovery \
-      --disable-prompt-on-repost \
-      --disable-suggestions-service \
-      --disable-sync \
-      --disable-translate \
-      --disable-v8-idle-tasks \
-      --disable-web-resources \
-      --no-default-browser-check \
-      --no-first-run \
-      `#--host-rules="MAP * localhost, EXCLUDE upload.wikimedia.org"` \
-      --safebrowsing-disable-auto-update \
-      --safebrowsing-disable-download-protection \
-      --no-sandbox
-end script
-
-post-start script
-  if [[ -n $JSBENCH_CPU ]]; then
-    taskset -p -c $JSBENCH_CPU `cat /var/run/jsbench-browser.pid`
-  fi
-end script
-
diff --git a/modules/role/files/ve/devwiki.conf 
b/modules/role/files/ve/devwiki.conf
deleted file mode 100644
index 67bcfac..0000000
--- a/modules/role/files/ve/devwiki.conf
+++ /dev/null
@@ -1,31 +0,0 @@
-<VirtualHost *:80>
-    ServerName osmium
-    DocumentRoot /var/www
-
-    <Directory />
-        Options FollowSymLinks
-        AllowOverride None
-    </Directory>
-
-    <Directory /var/www>
-        Require all granted
-    </Directory>
-
-    <Directory /srv/mediawiki-local>
-        Require all granted
-    </Directory>
-
-    <Directory /srv/images>
-        Require all granted
-    </Directory>
-
-    AllowEncodedSlashes on
-    RewriteEngine On
-
-    Alias /images "/srv/images"
-
-    ProxyPass       /wiki                
fcgi://127.0.0.1:9000/var/www/w/index.php retry=0
-    ProxyPass       /w/extensions        !
-    ProxyPassMatch  ^/w/(.*\.(php|hh))$  fcgi://127.0.0.1:9000/var/www/w/$1 
retry=0
-    RewriteRule     ^/$                  
fcgi://127.0.0.1:9000/var/www/w/index.php  [P]
-</VirtualHost>
diff --git a/modules/role/files/ve/vb b/modules/role/files/ve/vb
deleted file mode 100755
index b0fa9bf..0000000
--- a/modules/role/files/ve/vb
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/env bash
-repo_status() {
-    pushd $1 >/dev/null 2>&1
-    local project_name="$(git remote -v | grep -Po '(?<=/r/)\S+' | head -1)"
-    echo "${project_name}:"
-    git show --oneline --no-patch
-    popd >/dev/null 2>&1
-    echo
-}
-
-echo
-repo_status "/srv/mediawiki-local/extensions/VisualEditor"
-repo_status "/srv/mediawiki-local"
-
-export JSBENCH_CPU=15
-
-sudo service jsbench-browser start
-sleep 1
-jsbench --benchmark /usr/local/share/jsbench/ve.js --repeat=30 
--write-profile-data --jsvar stage activate "http://osmium/wiki/Barack_Obama";
-
-sudo service jsbench-browser start
diff --git a/modules/role/manifests/jsbench.pp 
b/modules/role/manifests/jsbench.pp
deleted file mode 100644
index e68021e..0000000
--- a/modules/role/manifests/jsbench.pp
+++ /dev/null
@@ -1,72 +0,0 @@
-# == Class: role::jsbench
-#
-# Sets up a Javascript performance testing rig with a headless
-# Chromium instance that supports remote debugging.
-#
-class role::jsbench {
-    # jsbench is a CLI tool for benchmarking Javascript performance.
-    # It uses `autobahn` and `twisted` for WebSocket support, which
-    # it needs so it can speak Chrome's remote debugging protocol.
-    # It uses `numpy` to calculate summary statistics.
-    require_package('python-autobahn', 'python-twisted', 'python-numpy')
-
-    # it's chromium on Debian but chromium-browser on Ubuntu (T141023)
-    if os_version('debian >= jessie') {
-        require_package('chromium')
-    } else {
-        require_package('chromium-browser')
-    }
-
-    # 1366x768 is the most common display resolution, according
-    # to http://gs.statcounter.com/.
-    class { 'xvfb':
-        resolution => '1366x768x24',
-    }
-
-    file { '/srv/profile':
-        ensure => directory,
-    }
-
-    ferm::service { 've-xvfb':
-        proto  => 'tcp',
-        port   => '6099',
-        srange => '$PRODUCTION_NETWORKS',
-    }
-
-    user { 'jsbench':
-        ensure     => present,
-        comment    => 'Chromium service user for jsbench',
-        home       => '/srv/profile/jsbench',
-        system     => true,
-        managehome => true,
-        require    => File['/srv/profile'],
-    }
-
-    file { '/usr/local/bin/jsbench':
-        source => 'puppet:///modules/role/jsbench/jsbench',
-        owner  => 'root',
-        group  => 'root',
-        mode   => '0555',
-    }
-
-    if $::initsystem == 'upstart' {
-        file { '/etc/init/jsbench-browser.conf':
-            ensure => present,
-            source => 'puppet:///modules/role/jsbench/upstart',
-            mode   => '0444',
-        }
-    }
-
-    if $::initsystem == 'systemd' {
-        file { '/etc/systemd/system/jsbench-browser.service':
-            ensure => present,
-            source => 'puppet:///modules/role/jsbench/systemd',
-            mode   => '0444',
-        }
-    }
-
-    file { '/usr/local/share/jsbench':
-        source  => 'puppet:///modules/role/jsbench/benchmarks',
-        recurse => true,
-    }
-}
diff --git a/modules/role/manifests/ve.pp b/modules/role/manifests/ve.pp
deleted file mode 100644
index c44fa63..0000000
--- a/modules/role/manifests/ve.pp
+++ /dev/null
@@ -1,25 +0,0 @@
-# == Class: role::ve
-#
-# Sets up a Visual Editor performance testing rig with a headless
-# Chromium instance that supports remote debugging.
-#
-class role::ve {
-    include ::standard
-    include ::role::jsbench
-    include ::mediawiki
-    include ::mediawiki::web
-    include ::mediawiki::web::sites
-    include ::mediawiki::web::prod_sites
-
-    file { '/usr/local/bin/vb':
-        source => 'puppet:///modules/role/ve/vb',
-        owner  => 'root',
-        group  => 'root',
-        mode   => '0555',
-    }
-
-    apache::site { 'devwiki':
-        source   => 'puppet:///modules/role/ve/devwiki.conf',
-        priority => 4,
-    }
-}

-- 
To view, visit https://gerrit.wikimedia.org/r/376151
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I99356298ba12d574d84528306e9dbc33c270873c
Gerrit-PatchSet: 4
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Krinkle <krinklem...@gmail.com>
Gerrit-Reviewer: Dzahn <dz...@wikimedia.org>
Gerrit-Reviewer: Giuseppe Lavagetto <glavage...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to