r4485 - in branches/scale_testing: cumin/bin cumin/etc cumin/python/cumin cumin/python/cumin/grid wooly/python/wooly
by tmckay@fedoraproject.org
Author: tmckay
Date: 2011-01-24 19:06:57 +0000 (Mon, 24 Jan 2011)
New Revision: 4485
Added:
branches/scale_testing/cumin/bin/cumin
Removed:
branches/scale_testing/cumin/bin/cumin
Modified:
branches/scale_testing/cumin/bin/cumin-admin
branches/scale_testing/cumin/bin/cumin-bench
branches/scale_testing/cumin/bin/cumin-data
branches/scale_testing/cumin/bin/cumin-database
branches/scale_testing/cumin/bin/cumin-smoke-test
branches/scale_testing/cumin/bin/cumin-web
branches/scale_testing/cumin/etc/sysvinit-cumin
branches/scale_testing/cumin/python/cumin/config.py
branches/scale_testing/cumin/python/cumin/grid/job.py
branches/scale_testing/cumin/python/cumin/grid/negotiator.py
branches/scale_testing/cumin/python/cumin/grid/negotiator.strings
branches/scale_testing/cumin/python/cumin/grid/pool.py
branches/scale_testing/cumin/python/cumin/model.py
branches/scale_testing/wooly/python/wooly/datatable.py
branches/scale_testing/wooly/python/wooly/datatable.strings
branches/scale_testing/wooly/python/wooly/widgets.py
branches/scale_testing/wooly/python/wooly/widgets.strings
Log:
Bring scale testing branch into agreement with 1.3.2 before we move any further.
Deleted: branches/scale_testing/cumin/bin/cumin
===================================================================
--- branches/scale_testing/cumin/bin/cumin 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/cumin/bin/cumin 2011-01-24 19:06:57 UTC (rev 4485)
@@ -1,32 +0,0 @@
-#!/bin/bash
-
-function die {
- kill "$data" "$web"
-}
-
-trap die EXIT
-
-function start_data {
- cumin-data &
- data="$!"
-}
-
-function start_web {
- cumin-web &
- web="$!"
-}
-
-start_data
-start_web
-
-while [ 0 ]; do
- sleep 30
-
- if [ ! -d "/proc/$data" ]; then
- start_data
- fi
-
- if [ ! -d "/proc/$web" ]; then
- start_web
- fi
-done
Copied: branches/scale_testing/cumin/bin/cumin (from rev 4478, branches/1.3.2/cumin/bin/cumin)
===================================================================
--- branches/scale_testing/cumin/bin/cumin (rev 0)
+++ branches/scale_testing/cumin/bin/cumin 2011-01-24 19:06:57 UTC (rev 4485)
@@ -0,0 +1,74 @@
+#!/usr/bin/python
+
+from optparse import OptionParser
+from time import sleep
+import subprocess
+import os
+import sys
+import signal
+
+def call_sys_exit(sig,frame):
+ sys.exit()
+
+def set_exit_handler(func):
+ if os.name == "nt":
+ try:
+ import win32api
+ win32api.SetConsoleCtrlHandler(func, True)
+ except ImportError:
+ version = ".".join(map(str, sys.version_info[:2]))
+ raise Exception("pywin32 not installed for Python " + version)
+ else:
+ signal.signal(signal.SIGTERM, func)
+
+def main():
+
+ # tuple indices, for clarity
+ PROCESS = 0
+ SECTION = 1
+ PROGRAM = 2
+
+ parser = OptionParser()
+
+ parser.add_option("--webs", dest="webs", default="web",
+ help="Configuration section names for cumin-web instances."\
+ "\nEach value implies a separate cumin-web instance.")
+
+ parser.add_option("--datas", dest="datas", default="data",
+ help="Configuration section names for cumin-data instances."\
+ "\nEach value implies a separate cumin-data instance.")
+
+ (options, args) = parser.parse_args()
+
+ # Get our list cumin-web and data instances
+ # create list elements to hold the process object, section arg, and app
+ apps = []
+ for app in options.webs.split(','):
+ apps.append([None, app, "cumin-web"])
+
+ for app in options.datas.split(','):
+ apps.append([None, app, "cumin-data"])
+
+ # Launch and babysit
+ try:
+ while True:
+ for app in apps:
+ if not app[PROCESS] or app[PROCESS].poll():
+ arg = "--section=" + app[SECTION]
+ app[PROCESS] = subprocess.Popen([app[PROGRAM], arg])
+ sleep(30)
+
+ finally:
+ for app in apps:
+ if app[PROCESS]:
+ os.kill(app[PROCESS].pid, signal.SIGTERM)
+
+if __name__ == "__main__":
+ # This is necessary so that on a SIGTERM we can call sys.exit()
+ # and cause the finally block to be executed. Ctrl-C will
+ # run the finally block anyway.
+ set_exit_handler(call_sys_exit)
+ try:
+ main()
+ except KeyboardInterrupt:
+ pass
Modified: branches/scale_testing/cumin/bin/cumin-admin
===================================================================
--- branches/scale_testing/cumin/bin/cumin-admin 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/cumin/bin/cumin-admin 2011-01-24 19:06:57 UTC (rev 4485)
@@ -24,14 +24,10 @@
if uid == 0:
os.setuid(file_uid)
- config = CuminConfig()
- values = config.parse()
-
- parser = CuminOptionParser(values.data)
+ parser = CuminDataOptionParser()
parser.set_usage(generate_usage())
+ config, values, opts, args = get_configuration(parser, CuminDataConfig)
- opts, args = parser.parse_args()
-
try:
name = args[0]
except IndexError:
@@ -50,7 +46,7 @@
broker_uris = [x.strip() for x in opts.brokers.split(",")]
- app = Cumin(config.home, broker_uris, opts.database)
+ app = Cumin(config.get_home(), broker_uris, opts.database)
app.check()
app.init()
Modified: branches/scale_testing/cumin/bin/cumin-bench
===================================================================
--- branches/scale_testing/cumin/bin/cumin-bench 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/cumin/bin/cumin-bench 2011-01-24 19:06:57 UTC (rev 4485)
@@ -8,22 +8,17 @@
from cumin.config import *
def do_main():
- config = CuminConfig()
- values = config.parse()
+ config, values, opts, args = get_configuration(CuminWebOptionParser(), CuminWebConfig)
- parser = CuminOptionParser(values.web)
-
- opts, args = parser.parse_args()
-
setup_logging(opts)
broker_uris = [x.strip() for x in opts.brokers.split(",")]
- cumin = Cumin(config.home, broker_uris, opts.database)
+ cumin = Cumin(config.get_home(), broker_uris, opts.database)
cumin.debug = True
- cumin.user = values.web.user
- cumin.update_interval = values.web.update_interval
+ cumin.user = values.user
+ cumin.update_interval = values.update_interval
cumin.check()
cumin.init()
Modified: branches/scale_testing/cumin/bin/cumin-data
===================================================================
--- branches/scale_testing/cumin/bin/cumin-data 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/cumin/bin/cumin-data 2011-01-24 19:06:57 UTC (rev 4485)
@@ -11,17 +11,8 @@
from mint import *
def main():
- config = CuminConfig()
- values = config.parse().data
+ config, values, opts, args = get_configuration(CuminDataOptionParser(), CuminDataConfig)
- parser = CuminOptionParser(values)
- parser.add_option("--print-stats", action="store_true")
- parser.add_option("--scale-stats", action="store_true")
- parser.add_option("--object-stats", action="store_true")
- parser.add_option("--print-events", type="int", default=0, metavar="LEVEL")
-
- opts, args = parser.parse_args()
-
setup_logging(opts)
model_dir = os.path.join(config.home, "model")
Modified: branches/scale_testing/cumin/bin/cumin-database
===================================================================
--- branches/scale_testing/cumin/bin/cumin-database 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/cumin/bin/cumin-database 2011-01-24 19:06:57 UTC (rev 4485)
@@ -151,7 +151,11 @@
check-environment || exit 1
check-initialized || exit 1
- /sbin/service postgresql restart
+ # The postgresql 8.1.22 init script violates LSB 3.1 Chapter 20.2,
+ # and returns 1 on a successful restart of a stopped service. A
+ # proper restart is thus simulated with condstop and start.
+ /sbin/service postgresql condstop
+ /sbin/service postgresql start
}
function initialize {
@@ -170,9 +174,10 @@
# On older versions of Postgres (before 8.4), initdb does not exist but
# using the start option will initialize the database, then start it.
- # Try initdb first, and if it fails try start followed by stop. This
- # should leave the database and the service in the same state on all
- # 8.x versions of Postgres.
+ # Try initdb first, and if it fails try start. The "start" method
+ # will leave the service running, which is different than initdb,
+ # but that is fine at this point because it is restarted after
+ # the call to configure anyway.
echo -e "\nAttempting to use initdb option..."
run "/sbin/service postgresql initdb" || {
echo -e "\ninitdb option not supported, using start..."
Modified: branches/scale_testing/cumin/bin/cumin-smoke-test
===================================================================
--- branches/scale_testing/cumin/bin/cumin-smoke-test 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/cumin/bin/cumin-smoke-test 2011-01-24 19:06:57 UTC (rev 4485)
@@ -13,22 +13,16 @@
from cumin.util import *
def main():
- config = CuminConfig()
- values = config.parse()
+ config, values, opts, args = get_configuration(CuminWebOptionParser(), CuminWebConfig)
- parser = CuminOptionParser(values.web)
-
- parser.add_option("--host", default=values.web.host)
- parser.add_option("--port", default=values.web.port)
-
- opts, args = parser.parse_args()
-
setup_logging(opts)
- cumin = Cumin(config.home, opts.brokers, opts.database,
+ broker_uris = [x.strip() for x in opts.brokers.split(",")]
+
+ cumin = Cumin(config.get_home(), broker_uris, opts.database,
opts.host, opts.port)
- cumin.user = values.web.user
+ cumin.user = values.user
cumin.check()
cumin.init()
Modified: branches/scale_testing/cumin/bin/cumin-web
===================================================================
--- branches/scale_testing/cumin/bin/cumin-web 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/cumin/bin/cumin-web 2011-01-24 19:06:57 UTC (rev 4485)
@@ -11,32 +11,24 @@
from cumin.util import *
def main():
- config = CuminConfig()
- values = config.parse()
+ config, values, opts, args = get_configuration(CuminWebOptionParser(), CuminWebConfig)
- parser = CuminOptionParser(values.web)
-
- parser.add_option("--host", default=values.web.host)
- parser.add_option("--port", default=values.web.port)
-
- opts, args = parser.parse_args()
-
setup_logging(opts)
broker_uris = [x.strip() for x in opts.brokers.split(",")]
- cumin = Cumin(config.home, broker_uris, opts.database,
+ cumin = Cumin(config.get_home(), broker_uris, opts.database,
opts.host, opts.port)
cumin.debug = opts.debug
- cumin.user = values.web.user
- cumin.update_interval = values.web.update_interval
+ cumin.user = values.user
+ cumin.update_interval = values.update_interval
# set default values for form inputs
- cumin.set_form_defaults(values.web.request_memory,
- values.web.request_memory_vm,
- values.web.request_disk,
- values.web.request_disk_vm)
+ cumin.set_form_defaults(values.request_memory,
+ values.request_memory_vm,
+ values.request_disk,
+ values.request_disk_vm)
cumin.check()
cumin.init()
Modified: branches/scale_testing/cumin/etc/sysvinit-cumin
===================================================================
--- branches/scale_testing/cumin/etc/sysvinit-cumin 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/cumin/etc/sysvinit-cumin 2011-01-24 19:06:57 UTC (rev 4485)
@@ -11,6 +11,9 @@
test -x /usr/bin/cumin || exit 1
test -x /usr/bin/cumin-database || exit 1
+SYSCONFIG="/etc/sysconfig/cumin"
+[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"
+
cumin-database check-started &> /dev/null || {
echo "Cumin's database server is not running"
echo "Run 'cumin-database start' as root"
@@ -34,7 +37,7 @@
start() {
echo -n $"Starting cumin: "
- daemon --user cumin --check $servicename $processname \&
+ daemon --user cumin --check $servicename $processname $CUMIN_OPTIONS \&
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename
Modified: branches/scale_testing/cumin/python/cumin/config.py
===================================================================
--- branches/scale_testing/cumin/python/cumin/config.py 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/cumin/python/cumin/config.py 2011-01-24 19:06:57 UTC (rev 4485)
@@ -17,9 +17,28 @@
if not os.path.isdir(self.home):
raise Exception("Home path '%s' is not a directory")
- web = CuminConfigSection(self, "web")
- web.log_file.default = os.path.join(self.home, "log", "web.log")
+ def get_home(self):
+ return self.home
+ def parse(self):
+ paths = list()
+
+ paths.append(os.path.join(os.sep, "etc", "cumin", "cumin.conf"))
+ paths.append(os.path.join(self.home, "etc", "cumin.conf"))
+ paths.append(os.path.join(os.path.expanduser("~"), ".cumin.conf"))
+
+ return self.parse_files(paths)
+
+class CuminWebConfig(CuminConfig):
+ def __init__(self, section_name):
+ super(CuminWebConfig, self).__init__()
+
+ self.create_section(section_name)
+
+ def create_section(self, name):
+ web = CuminConfigSection(self, name)
+ web.log_file.default = os.path.join(self.home, "log", name + ".log")
+
param = ConfigParameter(web, "update-interval", int)
param.default = 10
@@ -42,8 +61,15 @@
param = ConfigParameter(web, "request-disk-vm", int)
param.default = 5 * 1024 #MB
- data = CuminConfigSection(self, "data")
- data.log_file.default = os.path.join(self.home, "log", "data.log")
+class CuminDataConfig(CuminConfig):
+ def __init__(self, section_name):
+ super(CuminDataConfig, self).__init__()
+
+ self.create_section(section_name)
+
+ def create_section(self, name):
+ data = CuminConfigSection(self, name)
+ data.log_file.default = os.path.join(self.home, "log", name + ".log")
param = ConfigParameter(data, "packages", str)
@@ -59,15 +85,6 @@
param = ConfigParameter(data, "queue-size", int)
param.default = 1000
- def parse(self):
- paths = list()
-
- paths.append(os.path.join(os.sep, "etc", "cumin", "cumin.conf"))
- paths.append(os.path.join(self.home, "etc", "cumin.conf"))
- paths.append(os.path.join(os.path.expanduser("~"), ".cumin.conf"))
-
- return self.parse_files(paths)
-
class CuminConfigSection(ConfigSection):
def __init__(self, config, name):
super(CuminConfigSection, self).__init__(config, name)
@@ -86,17 +103,61 @@
param = ConfigParameter(self, "debug", bool)
param.default = False
-class CuminOptionParser(OptionParser):
- def __init__(self, section):
+class CuminMultiOptionParser(OptionParser,object):
+ def __init__(self, default_section):
OptionParser.__init__(self)
- self.add_option("--database", default=section.database)
- self.add_option("--brokers", default=section.brokers)
- self.add_option("--log-file", default=section.log_file)
- self.add_option("--log-level", default=section.log_level)
- self.add_option("--debug", action="store_true", default=section.debug)
+ self.add_option("--section", default=default_section)
+
+ # We don't know defaults yet...
+ self.add_option("--database")
+ self.add_option("--brokers")
+ self.add_option("--log-file")
+ self.add_option("--log-level")
+ self.add_option("--debug", action="store_true")
self.add_option("--init-only", action="store_true")
+ def _apply_default(self, section, name):
+ try:
+ val = getattr(section, name)
+ self.set_default(name, val)
+ except:
+ pass
+
+ def set_defaults_from_section(self, section):
+ # It is possible that a section does not contain an updated
+ # default value for a particular option. Skip exception.
+ self._apply_default(section, "database")
+ self._apply_default(section, "brokers")
+ self._apply_default(section, "log_file")
+ self._apply_default(section, "log_level")
+ self._apply_default(section, "debug")
+
+class CuminWebOptionParser(CuminMultiOptionParser):
+ def __init__(self, default_section="web"):
+ super(CuminWebOptionParser, self).__init__(default_section)
+
+ # Add additional parameters for web
+ self.add_option("--host")
+ self.add_option("--port", type=int)
+
+ def set_defaults_from_section(self, section):
+ super(CuminWebOptionParser, self).set_defaults_from_section(section)
+
+ # For web, these options also have defaults in config files
+ self._apply_default(section, "host")
+ self._apply_default(section, "port")
+
+class CuminDataOptionParser(CuminMultiOptionParser):
+ def __init__(self, default_section="data"):
+ super(CuminDataOptionParser, self).__init__(default_section)
+
+ # Add additional parameters for data
+ self.add_option("--print-stats", action="store_true")
+ self.add_option("--print-events", type="int", default=0, metavar="LEVEL")
+ self.add_option("--scale-stats", action="store_true")
+ self.add_option("--object-stats", action="store_true")
+
def setup_logging(values):
modules = ("cumin", "mint", "parsley", "rosemary", "wooly")
@@ -106,3 +167,21 @@
if values.debug:
for name in modules:
enable_logging(name, "debug", sys.stderr)
+
+def get_configuration(parser, ConfigType):
+ # First parse should return a "section" value
+ opts, args = parser.parse_args()
+ if hasattr(opts, "section"):
+ # Create config object with the given section and parse config files
+ config = ConfigType(opts.section)
+ values = config.parse()
+ if hasattr(values, opts.section):
+ # Reset defaults and parse again
+ values = getattr(values, opts.section)
+ parser.set_defaults_from_section(values)
+ opts, args = parser.parse_args()
+ else:
+ raise Exception("Section ["+opts.section+"] not present in configuration files.")
+ else:
+ raise Exception("No '--section' value available as option or default")
+ return config, values, opts, args
Modified: branches/scale_testing/cumin/python/cumin/grid/job.py
===================================================================
--- branches/scale_testing/cumin/python/cumin/grid/job.py 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/cumin/python/cumin/grid/job.py 2011-01-24 19:06:57 UTC (rev 4485)
@@ -222,16 +222,6 @@
JobSelectionRelease(app, self, "released")
JobSelectionRemove(app, self, "removed")
- def init_ids(self, app, cls):
- item = Parameter(app, "item")
-
- self.ids = ListParameter(app, "selection", item)
- self.add_parameter(self.ids)
-
- self.checkbox_column = ObjectCheckboxColumn \
- (app, "id", cls.JobId, self.ids)
- self.add_column(self.checkbox_column)
-
def create_table(self, app, name, cls):
return JobSelectorTable(app, name, cls)
@@ -270,6 +260,16 @@
self.qmf_response = Attribute(app, "qmf_response")
self.add_attribute(self.qmf_response)
+ def init_ids(self, app, cls):
+ item = Parameter(app, "item")
+
+ self.ids = ListParameter(app, "selection", item)
+ self.add_parameter(self.ids)
+
+ self.checkbox_column = ObjectCheckboxColumn \
+ (app, "id", cls.JobId, self.ids)
+ self.add_column(self.checkbox_column)
+
def get_data_values(self, session):
values = super(JobSelectorTable, self).get_data_values(session)
@@ -300,7 +300,9 @@
qmf_response = self.qmf_response.get(session)
if qmf_response.exception:
writer = Writer()
- msg = "The data is not available at this time. <br/>%s" % str(qmf_response.exception.message)
+ e = qmf_response.exception
+ m = len(e.args) > 0 and e.args[0] or ""
+ msg = "The data is not available at this time. <br/>%s" % m
self.error_tmpl.render(writer, session, msg)
return writer.to_string()
@@ -332,6 +334,10 @@
submission = self.selector.submission.get(osession)
self.form.submission_id.set(session, submission._id)
+ def get_item_content(self, session, item):
+ # item here is the unicode job id
+ return item
+
class JobSelectionHold(JobObjectSelectorTask):
def __init__(self, app, selector, verb):
super(JobSelectionHold, self).__init__(app, selector, verb)
@@ -366,9 +372,10 @@
self.submission_id = IntegerParameter(app, "sub")
self.add_parameter(self.submission_id)
- self.content = ReasonField(app, "fields")
- self.content.required = True
- self.replace_child(self.content)
+ self.reason = ReasonField(app, "reason")
+ self.reason.required = True
+ self.main_fields.add_field(self.reason)
+ self.add_child(self.reason)
self.verb = verb
@@ -380,7 +387,7 @@
def get_reason(self, session, verb):
""" returns <verb> by username[: <user input reason>] """
- reason = self.content.get(session)
+ reason = self.reason.get(session)
if reason:
reason = [reason]
user = session.client_session.attributes["login_session"].user
@@ -390,14 +397,18 @@
return ": ".join(reason)
def process_submit(self, session):
- selection = self.selection.get(session)
- reason = self.get_reason(session, self.verb)
+ self.validate(session)
- scheduler = self.get_scheduler(session)
+ errors = self.errors.get(session)
+ if not errors:
+ selection = self.selection.get(session)
+ reason = self.get_reason(session, self.verb)
- self.task.invoke(session, selection, scheduler, reason)
- self.task.exit_with_redirect(session)
+ scheduler = self.get_scheduler(session)
+ self.task.invoke(session, selection, scheduler, reason)
+ self.task.exit_with_redirect(session)
+
def get_scheduler(self, session):
submission_id = self.submission_id.get(session)
cls = self.app.model.com_redhat_grid.Submission
@@ -409,6 +420,11 @@
cls = self.app.model.com_redhat_grid.Scheduler
return cls.get_object(session.cursor, _id=job_server._schedulerRef_id)
+ def render_content(self, session, *args):
+ content = super(JobObjectSelectorTaskForm, self).render_content(session, *args)
+ reason = self.reason.render(session)
+ return "<table class=\"FormFieldSet\"><tbody>%s</tbody></table>%s" % (reason, content)
+
class JobAdsSet(PropertySet):
types = {0: "expression",
1: "integer",
@@ -542,7 +558,7 @@
# check for qmf error
_, error = self.parent.do_get_items(session)
if error:
- msg = error.message
+ msg = len(error.args) > 0 and error.args[0] or ""
if not msg:
# probably a timeout exception
msg = "Unable to get Job information at this time"
Modified: branches/scale_testing/cumin/python/cumin/grid/negotiator.py
===================================================================
--- branches/scale_testing/cumin/python/cumin/grid/negotiator.py 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/cumin/python/cumin/grid/negotiator.py 2011-01-24 19:06:57 UTC (rev 4485)
@@ -100,6 +100,8 @@
def __init__(self, app, name, negotiator, frame):
super(NegotiatorOverview, self).__init__(app, name)
+ self.negotiator = negotiator
+
self.update_enabled = True
#self.defer_enabled = True
@@ -147,10 +149,13 @@
except AssertionError:
msg = "Missing negotiator"
except Exception, e:
- msg = e.message
+ msg = len(e.args) > 0 and e.args[0] or ""
if msg == "Loading":
tmpl = self.loading_tmpl
else:
+ neg = self.negotiator.get(session)
+ neg_name = neg and " for negotiator %s" % neg.Name or ""
+ msg = "%s%s" % (e, neg_name)
log.exception(e)
else:
return super(NegotiatorOverview, self).do_render(session)
@@ -267,7 +272,8 @@
except TypeError:
if isinstance(value, Exception):
content = "<span class='QuotaError'>error</span>"
- return fmt_link("#", content, "", "", value.message)
+ val = len(value.args) > 0 and value.args[0] or ""
+ return fmt_link("#", content, "", "", val)
href = self.task.get_href(session)
content = "%s%%" % str(round(fval * 100.0, 2))
@@ -303,11 +309,12 @@
if not groups:
if (not results.status) and (not results.exception):
- raise QmfException("Loading")
- #results.exception = QmfException("Request timed out. Please refresh the page to try again.")
+ raise Exception("Loading")
if results.exception:
raise results.exception
else:
+ if not groups:
+ raise Exception(results.status)
try:
groups = self.split_group_names(groups)
except Exception, e:
Modified: branches/scale_testing/cumin/python/cumin/grid/negotiator.strings
===================================================================
--- branches/scale_testing/cumin/python/cumin/grid/negotiator.strings 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/cumin/python/cumin/grid/negotiator.strings 2011-01-24 19:06:57 UTC (rev 4485)
@@ -53,7 +53,7 @@
<![CDATA[
(function() {
window.addEvent("domready", function () {
- setTimeout( function () { window.location.reload(); }, 2000 );
+ setTimeout( function () { window.location.reload(); }, 5000 );
});
}())
]]>
Modified: branches/scale_testing/cumin/python/cumin/grid/pool.py
===================================================================
--- branches/scale_testing/cumin/python/cumin/grid/pool.py 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/cumin/python/cumin/grid/pool.py 2011-01-24 19:06:57 UTC (rev 4485)
@@ -160,6 +160,7 @@
self.add_child(chart)
chart = self.SlotFlashChart(app, "slots", self.collector)
+ chart.duration.param.default = "3600"
chart.stats = ("HostsClaimed", "HostsUnclaimed", "HostsOwner")
chart.chart_type = "stacked"
self.add_child(chart)
Modified: branches/scale_testing/cumin/python/cumin/model.py
===================================================================
--- branches/scale_testing/cumin/python/cumin/model.py 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/cumin/python/cumin/model.py 2011-01-24 19:06:57 UTC (rev 4485)
@@ -906,13 +906,6 @@
return "%s%s" % (conf, rect)
-class QmfException(Exception):
- def __init__(self, value):
- self.message = value
-
- def __str__(self):
- return repr(self.message)
-
class QmfCall(object):
def __init__(self, app, default=None, timeout=5):
self.app = app
@@ -929,7 +922,7 @@
self.data = data
self.got_data = True
else:
- self.error = QmfException(status)
+ self.error = Exception(status)
msg = "QMF call returned with status of %s" % str(status)
log.error(msg)
return completion
@@ -951,7 +944,7 @@
results = self.do_wait()
if not results.got_data and not results.error:
- results.error = QmfException("Request timed out")
+ results.error = Exception("Request timed out")
msg = "QMF call %s timed out" % method_name
log.error(msg)
Modified: branches/scale_testing/wooly/python/wooly/datatable.py
===================================================================
--- branches/scale_testing/wooly/python/wooly/datatable.py 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/wooly/python/wooly/datatable.py 2011-01-24 19:06:57 UTC (rev 4485)
@@ -111,6 +111,12 @@
options.limit = self.header.limit.get(session)
options.offset = self.header.offset.get(session)
+ # make sure offset is a multiple of limit
+ # this happens sometimes when we change limits
+ if options.offset % options.limit:
+ options.offset = (options.offset / options.limit) * options.limit
+ self.header.offset.set(session, options.offset)
+
return options
def get_count(self, session):
@@ -230,6 +236,9 @@
if self.parent.selection.get(session) == option[0]:
return "selected"
+ def render_title(self, session, option):
+ return option[2]
+
def edit_session(self, session, option):
self.parent.selection.set(session, option[0])
@@ -238,26 +247,65 @@
class DataTableFontSelector(DataTableSelector):
def get_options(self, session):
- return ((0.8, "S"), (0.9, "M"), (1.0, "L"))
+ return ((0.8, "S", "Small"), (0.9, "M", "Medium"), (1.0, "L", "Large"))
def render_title(self, session):
return "Font"
class DataTablePageSelector(DataTableSelector):
+ max_page_links = 16
+
def get_options(self, session):
+ # number of items in the table
count = self.table.count.get(session)
+ if not count:
+ return []
+
+ # number of items per page
limit = self.table.header.limit.get(session)
- count = min(count, 20 * limit)
+ # info for each possible page of results
+ options = [(x[1], x[0] + 1, "Goto Page %i" % (x[0] + 1, )) for x in enumerate(range(0, count, limit))]
- return [(x[1], x[0] + 1) for x in enumerate(range(0, count, limit))]
+ # the starting item on the current page
+ selection = self.selection.get(session)
+ #find the index of the current page
+ cur_page = 0
+ for page in options:
+ if selection == page[0]:
+ cur_page = page[1] - 1
+ break
+
+ pages = list()
+
+ # adjust the page links shown so that the current page is in the list
+ first_page = max(cur_page - 1, 0)
+ last_page = min(first_page + self.max_page_links, len(options))
+ first_page = max(last_page - self.max_page_links, 0)
+
+ if first_page:
+ pages.append((0, "«", "First Page"))
+ prev = max(selection - limit, 0)
+ pages.append((prev, "‹", "Previous Page"))
+
+ pages.extend(options[first_page : last_page])
+
+ if last_page < len(options):
+ next = options[cur_page + 1][0]
+ pages.append((next, "›", "Next Page"))
+
+ last = options[len(options) - 1][0]
+ pages.append((last, "»", "Last Page"))
+
+ return pages
+
def render_title(self, session):
- return "Page"
+ return self.table.count.get(session) and "Page" or ""
class DataTableLimitSelector(DataTableSelector):
def get_options(self, session):
- return ((25, 25), (50, 50), (100, 100))
+ return ((25, 25, "25 items per page"), (50, 50, "50 items per page"), (100, 100, "100 items per page"))
def render_title(self, session):
return "Limit"
Modified: branches/scale_testing/wooly/python/wooly/datatable.strings
===================================================================
--- branches/scale_testing/wooly/python/wooly/datatable.strings 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/wooly/python/wooly/datatable.strings 2011-01-24 19:06:57 UTC (rev 4485)
@@ -9,13 +9,18 @@
margin: 0 0 0 2em;
}
+table.DataTable th.controls div.paginator {
+ /* allow page numbers to wrap to next line */
+ white-space: normal;
+}
+
[DataTableHeader.html]
<thead>
<tr>
<th colspan="{colspan}" class="controls">
<div class="right">{limit}</div>
<div class="right">{font}</div>
- {page}
+ <div class="paginator">{page}</div>
</th>
</tr>
<tr>{headers}</tr>
Modified: branches/scale_testing/wooly/python/wooly/widgets.py
===================================================================
--- branches/scale_testing/wooly/python/wooly/widgets.py 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/wooly/python/wooly/widgets.py 2011-01-24 19:06:57 UTC (rev 4485)
@@ -131,6 +131,9 @@
self.edit_session(branch, *args)
return branch.marshal()
+ def render_title(self, session, *args):
+ return ""
+
class Toggle(Link):
def __init__(self, app, name):
super(Toggle, self).__init__(app, name)
Modified: branches/scale_testing/wooly/python/wooly/widgets.strings
===================================================================
--- branches/scale_testing/wooly/python/wooly/widgets.strings 2011-01-24 15:52:05 UTC (rev 4484)
+++ branches/scale_testing/wooly/python/wooly/widgets.strings 2011-01-24 19:06:57 UTC (rev 4485)
@@ -67,7 +67,7 @@
<li>{link}</li>
[Link.html]
-<a class="{class}" href="{href}">{content}</a>
+<a class="{class}" href="{href}" title="{title}">{content}</a>
[Toggle.css]
a.Toggle.on {
13 years, 3 months
r4484 - branches/scale_testing/mech_scripts
by tmckay@fedoraproject.org
Author: tmckay
Date: 2011-01-24 15:52:05 +0000 (Mon, 24 Jan 2011)
New Revision: 4484
Modified:
branches/scale_testing/mech_scripts/test_driver.py
Log:
Look for page_request_time custom header in server response
Modified: branches/scale_testing/mech_scripts/test_driver.py
===================================================================
--- branches/scale_testing/mech_scripts/test_driver.py 2011-01-23 21:37:05 UTC (rev 4483)
+++ branches/scale_testing/mech_scripts/test_driver.py 2011-01-24 15:52:05 UTC (rev 4484)
@@ -8,8 +8,11 @@
import httplib
from time import time as time_time
-#import datetime
from datetime import *
+
+import dateutil
+from dateutil import parser as dateparser
+
import optparse
import sys
import string
@@ -79,6 +82,7 @@
total_gets = 0
total_size = 0
get_latency = 0
+ proc_time = 0
for link in f:
link_info = link.split(',')
@@ -115,11 +119,22 @@
total_gets += 1
total_size += len(data)
+ # get processing time header
+ proc_time_header = resp.getheader("page_request_time",None)
+ if proc_time_header != None:
+ tmp = dateparser.parse(proc_time_header)
+ proc_time += tmp.second + tmp.microsecond / 1000000.0
+ if self.print_info:
+ print proc_time_header
+
latency = time_time() - start_timer
self.custom_timers['Page File'] = latency
self.custom_timers['Avg Get'] = get_latency / total_gets
self.stand_alone_stats['Total Gets'] = total_gets
- self.stand_alone_stats['Total Size kb'] = total_size / 1024
+ self.stand_alone_stats['Total Size kb'] = total_size / 1024.0
+ self.stand_alone_stats['Page File Proc'] = proc_time
+ self.stand_alone_stats['Get Proc'] = proc_time / total_gets
+
except Exception, e:
traceback.print_exc()
@@ -127,17 +142,25 @@
trans = Transaction()
trans.script_options=sys.argv[1:]
avg_pg_file = 0
+ avg_pg_proc = 0
+ avg_get_proc = 0
avg_get = 0
avg_num_get = 0
avg_kb =0
samples = 0
+
while not trans.run():
samples += 1
avg_pg_file += trans.custom_timers['Page File']
+ avg_pg_proc += trans.stand_alone_stats['Page File Proc']
+ avg_get_proc += trans.stand_alone_stats['Get Proc']
avg_get += trans.custom_timers['Avg Get']
avg_num_get += trans.stand_alone_stats['Total Gets']
avg_kb += trans.stand_alone_stats['Total Size kb']
+
print "page: ", avg_pg_file / samples, \
+ "page proc: ", avg_pg_proc / samples, \
+ "get proc: ", avg_get_proc / samples, \
"get:", avg_get / samples, "num_get:", avg_num_get /samples, "kb:", avg_kb / samples
#print trans.custom_timers
#print trans.stand_alone_stats
13 years, 3 months
r4483 - branches/scale_testing/wooly/python/wooly/wsgiserver
by tmckay@fedoraproject.org
Author: tmckay
Date: 2011-01-23 21:37:05 +0000 (Sun, 23 Jan 2011)
New Revision: 4483
Modified:
branches/scale_testing/wooly/python/wooly/wsgiserver/__init__.py
Log:
Queue throughput stuff
Modified: branches/scale_testing/wooly/python/wooly/wsgiserver/__init__.py
===================================================================
--- branches/scale_testing/wooly/python/wooly/wsgiserver/__init__.py 2011-01-23 19:36:05 UTC (rev 4482)
+++ branches/scale_testing/wooly/python/wooly/wsgiserver/__init__.py 2011-01-23 21:37:05 UTC (rev 4483)
@@ -1354,11 +1354,24 @@
self.ready = False
self.server = server
threading.Thread.__init__(self)
-
+
def run(self):
+ # put profile results in a subdirectory
+ ds = time.strftime("%m%d%y_%H%M%S",time.localtime())
+ p = os.path.join("./", \
+ "prof_"+ time.strftime("%m%d%y_%H%M%S",time.localtime()))
+
+ if not os.path.exists(p):
+ try:
+ os.makedirs(p)
+ except:
+ pass
+ p = os.path.join(p, self.getName())
+
def profWrapper():
try:
+ counter = 0
self.ready = True
while True:
conn = self.server.requests.get()
@@ -1367,27 +1380,62 @@
self.conn = conn
try:
+ #cProfile.runctx('conn.communicate()', globals(), locals(), p+"_"+str(counter))
conn.communicate()
finally:
conn.close()
self.conn = None
+ counter += 1
except (KeyboardInterrupt, SystemExit), exc:
self.server.interrupt = exc
- # put profile results in a subdirectory
+ #cProfile.runctx('profWrapper()', globals(), locals(), p)
+ profWrapper()
+
+class TimerObject(object):
+ def __init__(self,name):
+ super(TimerObject, self).__init__()
+ self.tuples = []
+ self.total = 0
+ self.samples = 0
+ self.size_total = 0
+ self.name = name
+
ds = time.strftime("%m%d%y_%H%M%S",time.localtime())
- p = os.path.join("./", \
+ self.prof_path = os.path.join("./", \
"prof_"+ time.strftime("%m%d%y_%H%M%S",time.localtime()))
- if not os.path.exists(p):
+ if not os.path.exists(self.prof_path):
try:
- os.makedirs(p)
+ os.makedirs(self.prof_path)
except:
pass
+ self.fname = os.path.join(self.prof_path, name)
- p = os.path.join(p, self.getName())
- cProfile.runctx('profWrapper()', globals(), locals(), p)
+ def record(self, before, after, size):
+ duration = after - before
+ self.tuples.append((before, after, duration, size))
+ self.total += duration
+ self.size_total += size
+ self.samples += 1
+ def dump(self):
+ # write the number of samples
+ # write the average
+ # loop and write all the tuples
+ f = open(self.fname, "w+")
+ f.write("Timer: " + self.name+"\n")
+ f.write("Total number of ops: " + str(self.samples) + "\n")
+ f.write("Total duration: " + str(self.total) + "\n")
+ if self.total == 0:
+ return
+ f.write("Average time: " + str(self.total / self.samples) + "\n")
+ f.write("Average size: " + str(self.size_total / self.samples) + "\n")
+ f.write("\n")
+ for s in self.tuples:
+ f.write(time.ctime(s[0])+", ")
+ f.write(time.ctime(s[1])+", "+str(s[2])+" "+str(s[3])+"\n")
+
class ThreadPool(object):
"""A Request Queue for the CherryPyWSGIServer which pools threads.
@@ -1401,8 +1449,27 @@
self.max = max
self._threads = []
self._queue = Queue.Queue()
- self.get = self._queue.get
-
+ #self.get = self._queue.get
+
+ self.put_timer = TimerObject("enqueue")
+ self.get_timer = TimerObject("dequeue")
+ self.last_put_call = time.time()
+ self.put_call_timer = TimerObject("put_delta")
+
+ def get(self):
+ #before = time.time()
+ #size = self._queue.qsize()
+ while True:
+ try:
+ res = self._queue.get()
+ break
+ except:
+ pass
+ after = time.time()
+ if res != None:
+ self.get_timer.record(res[1], after, res[2])
+ return res[0]
+
def start(self):
"""Start the pool of threads."""
for i in range(self.min):
@@ -1420,9 +1487,19 @@
idle = property(_get_idle, doc=_get_idle.__doc__)
def put(self, obj):
- self._queue.put(obj)
+ before = time.time()
+ size = self._queue.qsize()
+ self._queue.put((obj,before,size))
+
+ self.put_call_timer.record(self.last_put_call, before, size)
+ self.last_put_call = before
+ #after = time.time()
+ #self.put_timer.record(before, after, size)
if obj is _SHUTDOWNREQUEST:
return
+
+ def qsize(self):
+ return self._queue.qsize()
def grow(self, amount):
"""Spawn new worker threads (not above self.max)."""
@@ -1484,8 +1561,12 @@
KeyboardInterrupt), exc1:
pass
+ self.get_timer.dump()
+ self.put_timer.dump()
+ self.put_call_timer.dump()
+
try:
import fcntl
except ImportError:
@@ -1629,77 +1710,85 @@
For UNIX sockets, supply the filename as a string.""")
+
+
def start(self):
- """Run the server forever."""
- # We don't have to trap KeyboardInterrupt or SystemExit here,
- # because cherrpy.server already does so, calling self.stop() for us.
- # If you're using this server with another framework, you should
- # trap those exceptions in whatever code block calls start().
- self._interrupt = None
-
- # Select the appropriate socket
- if isinstance(self.bind_addr, basestring):
- # AF_UNIX socket
+ def startWrapper():
+ """Run the server forever."""
+ # We don't have to trap KeyboardInterrupt or SystemExit here,
+ # because cherrpy.server already does so, calling self.stop() for us.
+ # If you're using this server with another framework, you should
+ # trap those exceptions in whatever code block calls start().
+ self._interrupt = None
- # So we can reuse the socket...
- try: os.unlink(self.bind_addr)
- except: pass
+ # Select the appropriate socket
+ if isinstance(self.bind_addr, basestring):
+ # AF_UNIX socket
- # So everyone can access the socket...
- try: os.chmod(self.bind_addr, 0777)
- except: pass
+ # So we can reuse the socket...
+ try: os.unlink(self.bind_addr)
+ except: pass
+
+ # So everyone can access the socket...
+ try: os.chmod(self.bind_addr, 0777)
+ except: pass
- info = [(socket.AF_UNIX, socket.SOCK_STREAM, 0, "", self.bind_addr)]
- else:
- # AF_INET or AF_INET6 socket
- # Get the correct address family for our host (allows IPv6 addresses)
- host, port = self.bind_addr
- try:
- info = socket.getaddrinfo(host, port, socket.AF_UNSPEC,
- socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
- except socket.gaierror:
- # Probably a DNS issue. Assume IPv4.
- info = [(socket.AF_INET, socket.SOCK_STREAM, 0, "", self.bind_addr)]
+ info = [(socket.AF_UNIX, socket.SOCK_STREAM, 0, "", self.bind_addr)]
+ else:
+ # AF_INET or AF_INET6 socket
+ # Get the correct address family for our host (allows IPv6 addresses)
+ host, port = self.bind_addr
+ try:
+ info = socket.getaddrinfo(host, port, socket.AF_UNSPEC,
+ socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
+ except socket.gaierror:
+ # Probably a DNS issue. Assume IPv4.
+ info = [(socket.AF_INET, socket.SOCK_STREAM, 0, "", self.bind_addr)]
+
+ self.socket = None
+ msg = "No socket could be created"
+ for res in info:
+ af, socktype, proto, canonname, sa = res
+ try:
+ self.bind(af, socktype, proto)
+ except socket.error, msg:
+ if self.socket:
+ self.socket.close()
+ self.socket = None
+ continue
+ break
+ if not self.socket:
+ raise socket.error(msg)
+
+ # Timeout so KeyboardInterrupt can be caught on Win32
+ self.socket.settimeout(1)
+ self.socket.listen(self.request_queue_size)
- self.socket = None
- msg = "No socket could be created"
- for res in info:
- af, socktype, proto, canonname, sa = res
- try:
- self.bind(af, socktype, proto)
- except socket.error, msg:
- if self.socket:
- self.socket.close()
- self.socket = None
- continue
- break
- if not self.socket:
- raise socket.error(msg)
+ # Create worker threads
+ self.requests.start()
- # Timeout so KeyboardInterrupt can be caught on Win32
- self.socket.settimeout(1)
- self.socket.listen(self.request_queue_size)
-
- # Create worker threads
- self.requests.start()
-
- self.ready = True
- while self.ready:
- self.tick()
- if self.interrupt:
- while self.interrupt is True:
- # Wait for self.stop() to complete. See _set_interrupt.
- time.sleep(0.1)
+ self.ready = True
+ while self.ready:
+ self.tick()
if self.interrupt:
- raise self.interrupt
+ while self.interrupt is True:
+ # Wait for self.stop() to complete. See _set_interrupt.
+ time.sleep(0.1)
+ if self.interrupt:
+ raise self.interrupt
- idle = self.requests.idle
+ idle = self.requests.idle
- if idle < 16:
- self.requests.grow(16)
- elif idle > 32:
- self.requests.shrink(2)
+ if idle < 16:
+ self.requests.grow(16)
+ elif idle > 32:
+ self.requests.shrink(2)
+
+ startWrapper()
+# p = os.path.join(self.prof_path, "Cherry Main")
+# cProfile.runctx('startWrapper()', globals(), locals(), p)
+
def bind(self, family, type, proto=0):
"""Create (or recreate) the actual socket object."""
self.socket = socket.socket(family, type, proto)
@@ -1793,6 +1882,7 @@
conn = self.ConnectionClass(s, self.wsgi_app, environ, makefile)
self.requests.put(conn)
+
except socket.timeout:
# The only reason for the timeout in start() is so we can
# notice keyboard interrupts on Win32, which don't interrupt
13 years, 3 months
r4482 - in branches/scale_testing/mech_scripts: . limit link_logs
by tmckay@fedoraproject.org
Author: tmckay
Date: 2011-01-23 19:36:05 +0000 (Sun, 23 Jan 2011)
New Revision: 4482
Added:
branches/scale_testing/mech_scripts/limit/
branches/scale_testing/mech_scripts/limit/admingrid
branches/scale_testing/mech_scripts/limit/firstjob
branches/scale_testing/mech_scripts/limit/firstslot
branches/scale_testing/mech_scripts/limit/mainpage
branches/scale_testing/mech_scripts/limit/pool
branches/scale_testing/mech_scripts/limit/slotoffset
branches/scale_testing/mech_scripts/limit/slots
branches/scale_testing/mech_scripts/limit/submissions
branches/scale_testing/mech_scripts/limit/usergrid
branches/scale_testing/mech_scripts/link_logs/
branches/scale_testing/mech_scripts/link_logs/admingrid
branches/scale_testing/mech_scripts/link_logs/firstjob
branches/scale_testing/mech_scripts/link_logs/firstslot
branches/scale_testing/mech_scripts/link_logs/jobdrilldown
branches/scale_testing/mech_scripts/link_logs/mainpage
branches/scale_testing/mech_scripts/link_logs/pool
branches/scale_testing/mech_scripts/link_logs/slotoffset
branches/scale_testing/mech_scripts/link_logs/slots
branches/scale_testing/mech_scripts/link_logs/submissions
branches/scale_testing/mech_scripts/link_logs/usergrid
Log:
Create some link logs
Added: branches/scale_testing/mech_scripts/limit/admingrid
===================================================================
--- branches/scale_testing/mech_scripts/limit/admingrid (rev 0)
+++ branches/scale_testing/mech_scripts/limit/admingrid 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,35 @@
+False,/usergrid.update?session=usergrid.html%3Fframe%3Dmain.submissions%3Bmain.m%3Dsubmissions;widget=main.tasks;widget=main.submissions.view.table
+False,/usergrid.update?session=usergrid.html%3Fframe%3Dmain.submissions%3Bmain.m%3Dsubmissions;widget=main.tasks;widget=main.submissions.view.table
+False,/usergrid.update?session=usergrid.html%3Fframe%3Dmain.submissions%3Bmain.m%3Dsubmissions;widget=main.tasks;widget=main.submissions.view.table
+False,/usergrid.update?session=usergrid.html%3Fframe%3Dmain.submissions%3Bmain.m%3Dsubmissions;widget=main.tasks;widget=main.submissions.view.table
+False,/usergrid.update?session=usergrid.html%3Fframe%3Dmain.submissions%3Bmain.m%3Dsubmissions;widget=main.tasks;widget=main.submissions.view.table
+False,/index.html
+True,/resource?name=wooly.css
+True,/index.css
+True,/resource?name=app.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/index.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/queue-20.png
+True,/resource?name=/job-20.png
+True,/resource?name=/system-20.png
+True,/resource?name=shade.png
+True,/resource?name=/mrg-logo-32.png
+False,/index.html?frame=main.grid;main.m=grid
+True,/resource?name=mootools.js
+True,/resource?name=app.css
+True,/resource?name=wooly.css
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=shade.png
+True,/resource?name=pool-36.png
+False,/index.update?session=index.html%3Fframe%3Dmain.grid%3Bmain.m%3Dgrid;widget=main.tasks;widget=main.grid.view.tabs.pools.table
+False,/index.update?session=index.html%3Fframe%3Dmain.grid%3Bmain.m%3Dgrid;widget=main.tasks;widget=main.grid.view.tabs.pools.table
Added: branches/scale_testing/mech_scripts/limit/firstjob
===================================================================
--- branches/scale_testing/mech_scripts/limit/firstjob (rev 0)
+++ branches/scale_testing/mech_scripts/limit/firstjob 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,15 @@
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.m%3Dview%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dsubmissions;widget=main.tasks;widget=main.grid.pool.view.body.submissions.table
+False,/index.html?frame=main.grid.pool.submission;main.m=grid;main.grid.m=pool;main.grid.pool.id=1;main.grid.pool.view.body.m=submissions;main.grid.pool.submission.m=view;main.grid.pool.submission.id=264679
+True,/resource?name=wooly.css
+True,/resource?name=app.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=shade.png
+True,/resource?name=action-36.png
+True,/resource?name=button-background.png
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool.submission%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dsubmissions%3Bmain.grid.pool.submission.m%3Dview%3Bmain.grid.pool.submission.id%3D264679;widget=main.tasks;widget=main.grid.pool.submission.view.body.jobs.table
Added: branches/scale_testing/mech_scripts/limit/firstslot
===================================================================
--- branches/scale_testing/mech_scripts/limit/firstslot (rev 0)
+++ branches/scale_testing/mech_scripts/limit/firstslot 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,13 @@
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.m%3Dview%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dslots;widget=main.tasks;widget=main.grid.pool.view.body.slots.table
+False,/index.html?frame=main.grid.pool.slot;main.m=grid;main.grid.m=pool;main.grid.pool.m=slot;main.grid.pool.id=1;main.grid.pool.view.body.m=slots;main.grid.pool.slot.m=view;main.grid.pool.slot.id=137565
+True,/resource?name=wooly.css
+True,/resource?name=app.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+False,/resource?name=action-36.png
+True,/resource?name=shade.png
+True,/resource?name=/mrg-logo-32.png
Added: branches/scale_testing/mech_scripts/limit/mainpage
===================================================================
--- branches/scale_testing/mech_scripts/limit/mainpage (rev 0)
+++ branches/scale_testing/mech_scripts/limit/mainpage 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,18 @@
+False,/
+True,/resource?name=wooly.css
+True,/resource?name=app.css
+True,/index.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/index.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=shade.png
+True,/resource?name=/queue-20.png
+True,/resource?name=/job-20.png
+True,/resource?name=/system-20.png
+False,/index.update?session=index.html;widget=main.tasks;widget=main.overview.view.queues;widget=main.overview.view.systems;widget=main.overview.view.submissions
+False,/index.update?session=index.html;widget=main.tasks;widget=main.overview.view.queues;widget=main.overview.view.systems;widget=main.overview.view.submissions
Added: branches/scale_testing/mech_scripts/limit/pool
===================================================================
--- branches/scale_testing/mech_scripts/limit/pool (rev 0)
+++ branches/scale_testing/mech_scripts/limit/pool 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,42 @@
+False,/index.update?session=index.html%3Fframe%3Dmain.grid%3Bmain.m%3Dgrid;widget=main.tasks;widget=main.grid.view.tabs.pools.table
+False,/index.update?session=index.html%3Fframe%3Dmain.grid%3Bmain.m%3Dgrid;widget=main.tasks;widget=main.grid.view.tabs.pools.table
+False,/index.html?frame=main.grid.pool;main.m=grid;main.grid.m=pool;main.grid.pool.m=view;main.grid.pool.id=1
+True,/resource?name=wooly.css
+True,/index.css
+True,/resource?name=app.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/index.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+False,/stats.png?agent=com.redhat.grid|collector|Wallaby%20Configured%20Pool;object_id=Wallaby%20Configured%20Pool;chart_id=main.grid.pool.view.body.overview.jobs;duration=3600;rpkg=com.redhat.grid;rcls=Collector;stat=RunningJobs;stat=IdleJobs;type=stacked
+True,/resource?name=pool-36.png
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=radio-button.png
+True,/resource?name=shade.png
+True,/resource?name=radio-button-checked.png
+False,/stats.png?agent=com.redhat.grid|collector|Wallaby%20Configured%20Pool;object_id=Wallaby%20Configured%20Pool;chart_id=main.grid.pool.view.body.overview.slots;duration=600;rpkg=com.redhat.grid;rcls=Collector;stat=HostsClaimed;stat=HostsUnclaimed;stat=HostsOwner;type=stacked
+False,/poolslots.vis?state=Unclaimed
+False,/poolslots.vis?state=Claimed
+False,/poolslots.vis?state=Unavailable
+False,/poolslots.vis?state=Matched
+False,/poolslots.vis?state=Preempting
+False,/poolslots.vis?act=Idle
+False,/poolslots.vis?act=Busy
+False,/poolslots.vis?act=Suspended
+False,/poolslots.vis?act=Vacating
+False,/poolslots.vis?act=Killing
+False,/poolslots.vis?act=Benchmarking
+False,/poolslots.vis?act=Retiring
+False,/poolslots.vis?act=Unknown
+False,/poolslots.vis?id=1
+True,/resource?name=pan-up.png
+True,/resource?name=pan-right.png
+True,/resource?name=pan-down.png
+True,/resource?name=pan-left.png
+False,/poolslots.vis?id=1;ts=1295809610788
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.m%3Dview%3Bmain.grid.pool.id%3D1;widget=main.tasks;widget=main.grid.pool.view.body.overview.collector_stats;widget=main.grid.pool.view.body.overview.grid_stats.stats
+False,/stats.png?agent=com.redhat.grid%7Ccollector%7CWallaby%20Configured%20Pool;object_id=Wallaby%20Configured%20Pool;chart_id=main.grid.pool.view.body.overview.jobs;duration=3600;rpkg=com.redhat.grid;rcls=Collector;stat=RunningJobs;stat=IdleJobs;type=stacked;ts=1295809613657
+False,/stats.png?agent=com.redhat.grid%7Ccollector%7CWallaby%20Configured%20Pool;object_id=Wallaby%20Configured%20Pool;chart_id=main.grid.pool.view.body.overview.slots;duration=600;rpkg=com.redhat.grid;rcls=Collector;stat=HostsClaimed;stat=HostsUnclaimed;stat=HostsOwner;type=stacked;ts=1295809613659
Added: branches/scale_testing/mech_scripts/limit/slotoffset
===================================================================
--- branches/scale_testing/mech_scripts/limit/slotoffset (rev 0)
+++ branches/scale_testing/mech_scripts/limit/slotoffset 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,39 @@
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool.submission.job%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dsubmissions%3Bmain.grid.pool.submission.id%3D264679%3Bmain.grid.pool.submission.job.m%3Dview%3Bmain.grid.pool.submission.job.id%3D264679%3Bmain.grid.pool.submission.job.job_id%3D89.0;widget=main.tasks
+False,/index.html?frame=main.grid.pool;main.m=grid;main.grid.m=pool;main.grid.pool.m=view;main.grid.pool.id=1;main.grid.pool.view.body.m=slots
+True,/resource?name=wooly.css
+True,/resource?name=app.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=shade.png
+True,/resource?name=pool-36.png
+False,/index.html?frame=main.grid.pool;main.m=grid;main.grid.m=pool;main.grid.pool.m=view;main.grid.pool.id=1;main.grid.pool.view.body.m=slots;main.grid.pool.view.body.slots.table.header.offset=150
+True,/resource?name=app.css
+True,/resource?name=wooly.css
+True,/index.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/index.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=pool-36.png
+True,/resource?name=shade.png
+False,/index.html?frame=main.grid.pool.slot;main.m=grid;main.grid.m=pool;main.grid.pool.m=slot;main.grid.pool.id=1;main.grid.pool.view.body.m=slots;main.grid.pool.view.body.slots.table.header.offset=150;main.grid.pool.slot.m=view;main.grid.pool.slot.id=108343
+True,/resource?name=app.css
+True,/resource?name=wooly.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=action-36.png
+True,/resource?name=shade.png
Added: branches/scale_testing/mech_scripts/limit/slots
===================================================================
--- branches/scale_testing/mech_scripts/limit/slots (rev 0)
+++ branches/scale_testing/mech_scripts/limit/slots 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,19 @@
+False,/poolslots.vis?id=1;ts=1295809617189
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.m%3Dview%3Bmain.grid.pool.id%3D1;widget=main.tasks;widget=main.grid.pool.view.body.overview.collector_stats;widget=main.grid.pool.view.body.overview.grid_stats.stats
+False,/poolslots.vis?id=1;ts=1295809623575
+False,/stats.png?agent=com.redhat.grid%7Ccollector%7CWallaby%20Configured%20Pool;object_id=Wallaby%20Configured%20Pool;chart_id=main.grid.pool.view.body.overview.jobs;duration=3600;rpkg=com.redhat.grid;rcls=Collector;stat=RunningJobs;stat=IdleJobs;type=stacked;ts=1295809623665
+False,/stats.png?agent=com.redhat.grid%7Ccollector%7CWallaby%20Configured%20Pool;object_id=Wallaby%20Configured%20Pool;chart_id=main.grid.pool.view.body.overview.slots;duration=600;rpkg=com.redhat.grid;rcls=Collector;stat=HostsClaimed;stat=HostsUnclaimed;stat=HostsOwner;type=stacked;ts=1295809623669
+False,/index.html?frame=main.grid.pool;main.m=grid;main.grid.m=pool;main.grid.pool.m=view;main.grid.pool.id=1;main.grid.pool.view.body.m=slots
+True,/resource?name=wooly.css
+True,/resource?name=app.css
+True,/index.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/index.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=pool-36.png
+True,/resource?name=shade.png
Added: branches/scale_testing/mech_scripts/limit/submissions
===================================================================
--- branches/scale_testing/mech_scripts/limit/submissions (rev 0)
+++ branches/scale_testing/mech_scripts/limit/submissions 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,16 @@
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool.slot%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.m%3Dslot%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dslots%3Bmain.grid.pool.slot.m%3Dview%3Bmain.grid.pool.slot.id%3D137565;widget=main.tasks;widget=main.grid.pool.slot.view.body.details.headers;widget=main.grid.pool.slot.view.body.details.refs;widget=main.grid.pool.slot.view.body.details.props;widget=main.grid.pool.slot.view.body.details.stats
+False,/index.html?frame=main.grid.pool;main.m=grid;main.grid.m=pool;main.grid.pool.m=view;main.grid.pool.id=1;main.grid.pool.view.body.m=submissions
+True,/resource?name=wooly.css
+True,/resource?name=app.css
+True,/resource?name=mootools.js
+True,/index.css
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/index.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=pool-36.png
+True,/resource?name=shade.png
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.m%3Dview%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dsubmissions;widget=main.tasks;widget=main.grid.pool.view.body.submissions.table
Added: branches/scale_testing/mech_scripts/limit/usergrid
===================================================================
--- branches/scale_testing/mech_scripts/limit/usergrid (rev 0)
+++ branches/scale_testing/mech_scripts/limit/usergrid 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,14 @@
+False,/index.update?session=index.html;widget=main.tasks;widget=main.overview.view.queues;widget=main.overview.view.systems;widget=main.overview.view.submissions
+False,/usergrid.html
+True,/resource?name=app.css
+True,/resource?name=wooly.css
+False,/usergrid.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+False,/usergrid.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=shade.png
+False,/usergrid.update?session=usergrid.html;widget=main.tasks;widget=main.overview.view.jobs
Added: branches/scale_testing/mech_scripts/link_logs/admingrid
===================================================================
--- branches/scale_testing/mech_scripts/link_logs/admingrid (rev 0)
+++ branches/scale_testing/mech_scripts/link_logs/admingrid 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,35 @@
+False,/usergrid.update?session=usergrid.html%3Fframe%3Dmain.submissions%3Bmain.m%3Dsubmissions;widget=main.tasks;widget=main.submissions.view.table
+False,/usergrid.update?session=usergrid.html%3Fframe%3Dmain.submissions%3Bmain.m%3Dsubmissions;widget=main.tasks;widget=main.submissions.view.table
+False,/usergrid.update?session=usergrid.html%3Fframe%3Dmain.submissions%3Bmain.m%3Dsubmissions;widget=main.tasks;widget=main.submissions.view.table
+False,/usergrid.update?session=usergrid.html%3Fframe%3Dmain.submissions%3Bmain.m%3Dsubmissions;widget=main.tasks;widget=main.submissions.view.table
+False,/usergrid.update?session=usergrid.html%3Fframe%3Dmain.submissions%3Bmain.m%3Dsubmissions;widget=main.tasks;widget=main.submissions.view.table
+False,/index.html
+True,/resource?name=wooly.css
+True,/index.css
+True,/resource?name=app.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/index.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/queue-20.png
+True,/resource?name=/job-20.png
+True,/resource?name=/system-20.png
+True,/resource?name=shade.png
+True,/resource?name=/mrg-logo-32.png
+False,/index.html?frame=main.grid;main.m=grid
+True,/resource?name=mootools.js
+True,/resource?name=app.css
+True,/resource?name=wooly.css
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=shade.png
+True,/resource?name=pool-36.png
+False,/index.update?session=index.html%3Fframe%3Dmain.grid%3Bmain.m%3Dgrid;widget=main.tasks;widget=main.grid.view.tabs.pools.table
+False,/index.update?session=index.html%3Fframe%3Dmain.grid%3Bmain.m%3Dgrid;widget=main.tasks;widget=main.grid.view.tabs.pools.table
Added: branches/scale_testing/mech_scripts/link_logs/firstjob
===================================================================
--- branches/scale_testing/mech_scripts/link_logs/firstjob (rev 0)
+++ branches/scale_testing/mech_scripts/link_logs/firstjob 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,15 @@
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.m%3Dview%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dsubmissions;widget=main.tasks;widget=main.grid.pool.view.body.submissions.table
+False,/index.html?frame=main.grid.pool.submission;main.m=grid;main.grid.m=pool;main.grid.pool.id=1;main.grid.pool.view.body.m=submissions;main.grid.pool.submission.m=view;main.grid.pool.submission.id=264679
+True,/resource?name=wooly.css
+True,/resource?name=app.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=shade.png
+True,/resource?name=action-36.png
+True,/resource?name=button-background.png
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool.submission%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dsubmissions%3Bmain.grid.pool.submission.m%3Dview%3Bmain.grid.pool.submission.id%3D264679;widget=main.tasks;widget=main.grid.pool.submission.view.body.jobs.table
Added: branches/scale_testing/mech_scripts/link_logs/firstslot
===================================================================
--- branches/scale_testing/mech_scripts/link_logs/firstslot (rev 0)
+++ branches/scale_testing/mech_scripts/link_logs/firstslot 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,13 @@
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.m%3Dview%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dslots;widget=main.tasks;widget=main.grid.pool.view.body.slots.table
+False,/index.html?frame=main.grid.pool.slot;main.m=grid;main.grid.m=pool;main.grid.pool.m=slot;main.grid.pool.id=1;main.grid.pool.view.body.m=slots;main.grid.pool.slot.m=view;main.grid.pool.slot.id=137565
+True,/resource?name=wooly.css
+True,/resource?name=app.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+False,/resource?name=action-36.png
+True,/resource?name=shade.png
+True,/resource?name=/mrg-logo-32.png
Added: branches/scale_testing/mech_scripts/link_logs/jobdrilldown
===================================================================
--- branches/scale_testing/mech_scripts/link_logs/jobdrilldown (rev 0)
+++ branches/scale_testing/mech_scripts/link_logs/jobdrilldown 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,18 @@
+False,/index.html?frame=main.grid.pool.submission.job;main.m=grid;main.grid.m=pool;main.grid.pool.id=1;main.grid.pool.view.body.m=submissions;main.grid.pool.submission.id=264679;main.grid.pool.submission.job.m=view;main.grid.pool.submission.job.id=264679;main.grid.pool.submission.job.job_id=89.0
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool.submission%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dsubmissions%3Bmain.grid.pool.submission.m%3Dview%3Bmain.grid.pool.submission.id%3D264679;widget=main.tasks;widget=main.grid.pool.submission.view.body.jobs.table
+True,/resource?name=wooly.css
+True,/resource?name=app.css
+True,/index.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/index.js
+True,/resource?name=incrementalSearch.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=action-36.png
+False,/resource?name=loading.gif
+True,/resource?name=/mrg-logo-32.png
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool.submission.job%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dsubmissions%3Bmain.grid.pool.submission.id%3D264679%3Bmain.grid.pool.submission.job.m%3Dview%3Bmain.grid.pool.submission.job.id%3D264679%3Bmain.grid.pool.submission.job.job_id%3D89.0;widget=main.grid.pool.submission.job.view.body.ads.viewer
+True,/resource?name=shade.png
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool.submission.job%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dsubmissions%3Bmain.grid.pool.submission.id%3D264679%3Bmain.grid.pool.submission.job.m%3Dview%3Bmain.grid.pool.submission.job.id%3D264679%3Bmain.grid.pool.submission.job.job_id%3D89.0;widget=main.tasks
Added: branches/scale_testing/mech_scripts/link_logs/mainpage
===================================================================
--- branches/scale_testing/mech_scripts/link_logs/mainpage (rev 0)
+++ branches/scale_testing/mech_scripts/link_logs/mainpage 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,18 @@
+False,/
+True,/resource?name=wooly.css
+True,/resource?name=app.css
+True,/index.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/index.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=shade.png
+True,/resource?name=/queue-20.png
+True,/resource?name=/job-20.png
+True,/resource?name=/system-20.png
+False,/index.update?session=index.html;widget=main.tasks;widget=main.overview.view.queues;widget=main.overview.view.systems;widget=main.overview.view.submissions
+False,/index.update?session=index.html;widget=main.tasks;widget=main.overview.view.queues;widget=main.overview.view.systems;widget=main.overview.view.submissions
Added: branches/scale_testing/mech_scripts/link_logs/pool
===================================================================
--- branches/scale_testing/mech_scripts/link_logs/pool (rev 0)
+++ branches/scale_testing/mech_scripts/link_logs/pool 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,42 @@
+False,/index.update?session=index.html%3Fframe%3Dmain.grid%3Bmain.m%3Dgrid;widget=main.tasks;widget=main.grid.view.tabs.pools.table
+False,/index.update?session=index.html%3Fframe%3Dmain.grid%3Bmain.m%3Dgrid;widget=main.tasks;widget=main.grid.view.tabs.pools.table
+False,/index.html?frame=main.grid.pool;main.m=grid;main.grid.m=pool;main.grid.pool.m=view;main.grid.pool.id=1
+True,/resource?name=wooly.css
+True,/index.css
+True,/resource?name=app.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/index.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+False,/stats.png?agent=com.redhat.grid|collector|Wallaby%20Configured%20Pool;object_id=Wallaby%20Configured%20Pool;chart_id=main.grid.pool.view.body.overview.jobs;duration=3600;rpkg=com.redhat.grid;rcls=Collector;stat=RunningJobs;stat=IdleJobs;type=stacked
+True,/resource?name=pool-36.png
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=radio-button.png
+True,/resource?name=shade.png
+True,/resource?name=radio-button-checked.png
+False,/stats.png?agent=com.redhat.grid|collector|Wallaby%20Configured%20Pool;object_id=Wallaby%20Configured%20Pool;chart_id=main.grid.pool.view.body.overview.slots;duration=600;rpkg=com.redhat.grid;rcls=Collector;stat=HostsClaimed;stat=HostsUnclaimed;stat=HostsOwner;type=stacked
+False,/poolslots.vis?state=Unclaimed
+False,/poolslots.vis?state=Claimed
+False,/poolslots.vis?state=Unavailable
+False,/poolslots.vis?state=Matched
+False,/poolslots.vis?state=Preempting
+False,/poolslots.vis?act=Idle
+False,/poolslots.vis?act=Busy
+False,/poolslots.vis?act=Suspended
+False,/poolslots.vis?act=Vacating
+False,/poolslots.vis?act=Killing
+False,/poolslots.vis?act=Benchmarking
+False,/poolslots.vis?act=Retiring
+False,/poolslots.vis?act=Unknown
+False,/poolslots.vis?id=1
+True,/resource?name=pan-up.png
+True,/resource?name=pan-right.png
+True,/resource?name=pan-down.png
+True,/resource?name=pan-left.png
+False,/poolslots.vis?id=1;ts=1295809610788
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.m%3Dview%3Bmain.grid.pool.id%3D1;widget=main.tasks;widget=main.grid.pool.view.body.overview.collector_stats;widget=main.grid.pool.view.body.overview.grid_stats.stats
+False,/stats.png?agent=com.redhat.grid%7Ccollector%7CWallaby%20Configured%20Pool;object_id=Wallaby%20Configured%20Pool;chart_id=main.grid.pool.view.body.overview.jobs;duration=3600;rpkg=com.redhat.grid;rcls=Collector;stat=RunningJobs;stat=IdleJobs;type=stacked;ts=1295809613657
+False,/stats.png?agent=com.redhat.grid%7Ccollector%7CWallaby%20Configured%20Pool;object_id=Wallaby%20Configured%20Pool;chart_id=main.grid.pool.view.body.overview.slots;duration=600;rpkg=com.redhat.grid;rcls=Collector;stat=HostsClaimed;stat=HostsUnclaimed;stat=HostsOwner;type=stacked;ts=1295809613659
Added: branches/scale_testing/mech_scripts/link_logs/slotoffset
===================================================================
--- branches/scale_testing/mech_scripts/link_logs/slotoffset (rev 0)
+++ branches/scale_testing/mech_scripts/link_logs/slotoffset 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,39 @@
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool.submission.job%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dsubmissions%3Bmain.grid.pool.submission.id%3D264679%3Bmain.grid.pool.submission.job.m%3Dview%3Bmain.grid.pool.submission.job.id%3D264679%3Bmain.grid.pool.submission.job.job_id%3D89.0;widget=main.tasks
+False,/index.html?frame=main.grid.pool;main.m=grid;main.grid.m=pool;main.grid.pool.m=view;main.grid.pool.id=1;main.grid.pool.view.body.m=slots
+True,/resource?name=wooly.css
+True,/resource?name=app.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=shade.png
+True,/resource?name=pool-36.png
+False,/index.html?frame=main.grid.pool;main.m=grid;main.grid.m=pool;main.grid.pool.m=view;main.grid.pool.id=1;main.grid.pool.view.body.m=slots;main.grid.pool.view.body.slots.table.header.offset=150
+True,/resource?name=app.css
+True,/resource?name=wooly.css
+True,/index.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/index.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=pool-36.png
+True,/resource?name=shade.png
+False,/index.html?frame=main.grid.pool.slot;main.m=grid;main.grid.m=pool;main.grid.pool.m=slot;main.grid.pool.id=1;main.grid.pool.view.body.m=slots;main.grid.pool.view.body.slots.table.header.offset=150;main.grid.pool.slot.m=view;main.grid.pool.slot.id=108343
+True,/resource?name=app.css
+True,/resource?name=wooly.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=action-36.png
+True,/resource?name=shade.png
Added: branches/scale_testing/mech_scripts/link_logs/slots
===================================================================
--- branches/scale_testing/mech_scripts/link_logs/slots (rev 0)
+++ branches/scale_testing/mech_scripts/link_logs/slots 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,19 @@
+False,/poolslots.vis?id=1;ts=1295809617189
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.m%3Dview%3Bmain.grid.pool.id%3D1;widget=main.tasks;widget=main.grid.pool.view.body.overview.collector_stats;widget=main.grid.pool.view.body.overview.grid_stats.stats
+False,/poolslots.vis?id=1;ts=1295809623575
+False,/stats.png?agent=com.redhat.grid%7Ccollector%7CWallaby%20Configured%20Pool;object_id=Wallaby%20Configured%20Pool;chart_id=main.grid.pool.view.body.overview.jobs;duration=3600;rpkg=com.redhat.grid;rcls=Collector;stat=RunningJobs;stat=IdleJobs;type=stacked;ts=1295809623665
+False,/stats.png?agent=com.redhat.grid%7Ccollector%7CWallaby%20Configured%20Pool;object_id=Wallaby%20Configured%20Pool;chart_id=main.grid.pool.view.body.overview.slots;duration=600;rpkg=com.redhat.grid;rcls=Collector;stat=HostsClaimed;stat=HostsUnclaimed;stat=HostsOwner;type=stacked;ts=1295809623669
+False,/index.html?frame=main.grid.pool;main.m=grid;main.grid.m=pool;main.grid.pool.m=view;main.grid.pool.id=1;main.grid.pool.view.body.m=slots
+True,/resource?name=wooly.css
+True,/resource?name=app.css
+True,/index.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/index.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=pool-36.png
+True,/resource?name=shade.png
Added: branches/scale_testing/mech_scripts/link_logs/submissions
===================================================================
--- branches/scale_testing/mech_scripts/link_logs/submissions (rev 0)
+++ branches/scale_testing/mech_scripts/link_logs/submissions 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,16 @@
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool.slot%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.m%3Dslot%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dslots%3Bmain.grid.pool.slot.m%3Dview%3Bmain.grid.pool.slot.id%3D137565;widget=main.tasks;widget=main.grid.pool.slot.view.body.details.headers;widget=main.grid.pool.slot.view.body.details.refs;widget=main.grid.pool.slot.view.body.details.props;widget=main.grid.pool.slot.view.body.details.stats
+False,/index.html?frame=main.grid.pool;main.m=grid;main.grid.m=pool;main.grid.pool.m=view;main.grid.pool.id=1;main.grid.pool.view.body.m=submissions
+True,/resource?name=wooly.css
+True,/resource?name=app.css
+True,/resource?name=mootools.js
+True,/index.css
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+True,/index.js
+True,/resource?name=slotvis.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=pool-36.png
+True,/resource?name=shade.png
+False,/index.update?session=index.html%3Fframe%3Dmain.grid.pool%3Bmain.m%3Dgrid%3Bmain.grid.m%3Dpool%3Bmain.grid.pool.m%3Dview%3Bmain.grid.pool.id%3D1%3Bmain.grid.pool.view.body.m%3Dsubmissions;widget=main.tasks;widget=main.grid.pool.view.body.submissions.table
Added: branches/scale_testing/mech_scripts/link_logs/usergrid
===================================================================
--- branches/scale_testing/mech_scripts/link_logs/usergrid (rev 0)
+++ branches/scale_testing/mech_scripts/link_logs/usergrid 2011-01-23 19:36:05 UTC (rev 4482)
@@ -0,0 +1,14 @@
+False,/index.update?session=index.html;widget=main.tasks;widget=main.overview.view.queues;widget=main.overview.view.systems;widget=main.overview.view.submissions
+False,/usergrid.html
+True,/resource?name=app.css
+True,/resource?name=wooly.css
+False,/usergrid.css
+True,/resource?name=mootools.js
+True,/resource?name=wooly.js
+True,/resource?name=app.js
+True,/resource?name=incrementalSearch.js
+False,/usergrid.js
+True,/resource?name=swfobject.js
+True,/resource?name=/mrg-logo-32.png
+True,/resource?name=shade.png
+False,/usergrid.update?session=usergrid.html;widget=main.tasks;widget=main.overview.view.jobs
13 years, 3 months
r4481 - branches/scale_testing/mech_scripts
by tmckay@fedoraproject.org
Author: tmckay
Date: 2011-01-23 18:49:58 +0000 (Sun, 23 Jan 2011)
New Revision: 4481
Modified:
branches/scale_testing/mech_scripts/test_driver.py
Log:
Tweak reporting
Modified: branches/scale_testing/mech_scripts/test_driver.py
===================================================================
--- branches/scale_testing/mech_scripts/test_driver.py 2011-01-23 00:30:31 UTC (rev 4480)
+++ branches/scale_testing/mech_scripts/test_driver.py 2011-01-23 18:49:58 UTC (rev 4481)
@@ -20,6 +20,7 @@
class Transaction(object):
def __init__(self):
self.custom_timers = {}
+ self.stand_alone_stats = {}
self.http_date_gmt = "%a, %d %b %Y %H:%M:%S GMT"
self.headers = {}
@@ -34,7 +35,7 @@
def next_file(self):
if not self.file_init:
- self.link_init = True
+ self.file_init = True
if os.path.isdir(self.link_file):
self.file_list = os.listdir(self.link_file)
for i in range(len(self.file_list)):
@@ -56,15 +57,19 @@
parser.add_option('--machine', dest='machine', type='str', default="localhost:45672")
parser.add_option('--file', dest='file', type='str', default="")
parser.add_option('--iter', dest='iter', type='int', default=0)
+ parser.add_option('--info', dest='info', action="store_true", default=False)
if type(self.script_options) == str:
self.script_options = self.script_options.split()
opts, args = parser.parse_args(self.script_options)
self.machine = opts.machine
self.link_file = os.path.abspath(opts.file)
self.iteration_limit = opts.iter
+ self.print_info = opts.info
start_timer = time_time()
f = open(self.next_file(), "r")
+ if self.print_info:
+ print f
# If an iteration limit was set, bail after going through file list
# that many times
@@ -72,6 +77,7 @@
return True
total_gets = 0
+ total_size = 0
get_latency = 0
for link in f:
link_info = link.split(',')
@@ -93,29 +99,46 @@
else:
conn.request('GET', link)
resp = conn.getresponse()
+ data = resp.read()
if resp.status == 200:
self.visited[link] = datetime.utcnow().strftime(self.http_date_gmt)
- print "Link " + link
+ if self.print_info:
+ print "Link " + link + ", " + str(len(data)/1024)
elif resp.status == 304:
- pass
- print ("already visited", link)
+ if self.print_info:
+ print ("already visited", link)
else:
- print ("other status", resp.status, link)
self.visited[link] = None
+ if self.print_info:
+ print ("other status", resp.status, link)
get_latency += time_time() - time_for_get
total_gets += 1
+ total_size += len(data)
latency = time_time() - start_timer
self.custom_timers['Page File'] = latency
self.custom_timers['Avg Get'] = get_latency / total_gets
- self.custom_timers['Total Gets'] = total_gets
-
+ self.stand_alone_stats['Total Gets'] = total_gets
+ self.stand_alone_stats['Total Size kb'] = total_size / 1024
except Exception, e:
traceback.print_exc()
if __name__ == '__main__':
trans = Transaction()
trans.script_options=sys.argv[1:]
+ avg_pg_file = 0
+ avg_get = 0
+ avg_num_get = 0
+ avg_kb =0
+ samples = 0
while not trans.run():
- print trans.custom_timers
+ samples += 1
+ avg_pg_file += trans.custom_timers['Page File']
+ avg_get += trans.custom_timers['Avg Get']
+ avg_num_get += trans.stand_alone_stats['Total Gets']
+ avg_kb += trans.stand_alone_stats['Total Size kb']
+ print "page: ", avg_pg_file / samples, \
+ "get:", avg_get / samples, "num_get:", avg_num_get /samples, "kb:", avg_kb / samples
+ #print trans.custom_timers
+ #print trans.stand_alone_stats
13 years, 3 months
r4480 - in branches/scale_testing: . mech_scripts
by tmckay@fedoraproject.org
Author: tmckay
Date: 2011-01-23 00:30:31 +0000 (Sun, 23 Jan 2011)
New Revision: 4480
Added:
branches/scale_testing/mech_scripts/
branches/scale_testing/mech_scripts/test_driver.py
Log:
Don't want to lose this test script.
For use with multi-mechanize, or standalone.
Added: branches/scale_testing/mech_scripts/test_driver.py
===================================================================
--- branches/scale_testing/mech_scripts/test_driver.py (rev 0)
+++ branches/scale_testing/mech_scripts/test_driver.py 2011-01-23 00:30:31 UTC (rev 4480)
@@ -0,0 +1,121 @@
+#!/usr/bin/env python
+#
+# Copyright (c) 2010 Corey Goldberg (corey(a)goldb.org)
+# License: GNU LGPLv3
+#
+# This file is part of Multi-Mechanize
+
+
+import httplib
+from time import time as time_time
+#import datetime
+from datetime import *
+import optparse
+import sys
+import string
+import os
+import traceback
+import copy
+
+class Transaction(object):
+ def __init__(self):
+ self.custom_timers = {}
+
+ self.http_date_gmt = "%a, %d %b %Y %H:%M:%S GMT"
+ self.headers = {}
+ self.script_options = None
+ self.machine = None
+ self.link_file = None
+ self.visited = {}
+
+ self.file_init = False
+ self.file_number = -1
+ self.file_iterations = 0
+
+ def next_file(self):
+ if not self.file_init:
+ self.link_init = True
+ if os.path.isdir(self.link_file):
+ self.file_list = os.listdir(self.link_file)
+ for i in range(len(self.file_list)):
+ self.file_list[i] = os.path.join(self.link_file, self.file_list[i])
+ else:
+ self.file_list = [self.link_file]
+
+ self.file_number += 1
+ if self.file_number == len(self.file_list):
+ self.file_iterations += 1
+ self.file_number = 0
+ return self.file_list[self.file_number]
+
+ def run(self):
+ try:
+ # parse options on first invocation, get machine and links file
+ if self.machine == None:
+ parser = optparse.OptionParser()
+ parser.add_option('--machine', dest='machine', type='str', default="localhost:45672")
+ parser.add_option('--file', dest='file', type='str', default="")
+ parser.add_option('--iter', dest='iter', type='int', default=0)
+ if type(self.script_options) == str:
+ self.script_options = self.script_options.split()
+ opts, args = parser.parse_args(self.script_options)
+ self.machine = opts.machine
+ self.link_file = os.path.abspath(opts.file)
+ self.iteration_limit = opts.iter
+
+ start_timer = time_time()
+ f = open(self.next_file(), "r")
+
+ # If an iteration limit was set, bail after going through file list
+ # that many times
+ if self.iteration_limit and self.file_iterations == self.iteration_limit:
+ return True
+
+ total_gets = 0
+ get_latency = 0
+ for link in f:
+ link_info = link.split(',')
+
+ # Check for initial Boolean, indicates whether "If_Modified" header was used
+ if len(link_info) == 2:
+ if_modified_header = link_info[0] = "True"
+ link = link_info[1].strip()
+ else:
+ if_modified_header = True
+ link = link_info[0].strip()
+
+ time_for_get = time_time()
+ conn = httplib.HTTPConnection(self.machine)
+ if link in self.visited and self.visited[link] and if_modified_header:
+ # value for link will be the time it was visited.
+ headers={"If-Modified-Since": self.visited[link]}
+ conn.request('GET', link, headers=headers)
+ else:
+ conn.request('GET', link)
+ resp = conn.getresponse()
+ if resp.status == 200:
+ self.visited[link] = datetime.utcnow().strftime(self.http_date_gmt)
+ print "Link " + link
+ elif resp.status == 304:
+ pass
+ print ("already visited", link)
+ else:
+ print ("other status", resp.status, link)
+ self.visited[link] = None
+ get_latency += time_time() - time_for_get
+ total_gets += 1
+
+ latency = time_time() - start_timer
+ self.custom_timers['Page File'] = latency
+ self.custom_timers['Avg Get'] = get_latency / total_gets
+ self.custom_timers['Total Gets'] = total_gets
+
+ except Exception, e:
+ traceback.print_exc()
+
+if __name__ == '__main__':
+ trans = Transaction()
+ trans.script_options=sys.argv[1:]
+ while not trans.run():
+ print trans.custom_timers
+
13 years, 3 months
r4479 - branches/scale_testing/wooly/python/wooly
by tmckay@fedoraproject.org
Author: tmckay
Date: 2011-01-22 23:57:22 +0000 (Sat, 22 Jan 2011)
New Revision: 4479
Modified:
branches/scale_testing/wooly/python/wooly/server.py
Log:
Record GET requests to log file, with file-based rollover trigger
Modified: branches/scale_testing/wooly/python/wooly/server.py
===================================================================
--- branches/scale_testing/wooly/python/wooly/server.py 2011-01-21 18:48:36 UTC (rev 4478)
+++ branches/scale_testing/wooly/python/wooly/server.py 2011-01-22 23:57:22 UTC (rev 4479)
@@ -3,7 +3,9 @@
from util import *
from wooly import *
from wsgiserver import CherryPyWSGIServer
+from parsley.loggingex import *
+
log = logging.getLogger("wooly.server")
class WebServer(object):
@@ -23,6 +25,11 @@
self.client_sessions_by_id = dict()
self.client_session_expire_thread = ClientSessionExpireThread(self)
+ self.link_log_path = os.environ.get("CUMIN_HOME", "/usr/share/cumin")
+ self.link_log = os.path.join(self.link_log_path, "wooly_server_links.log")
+ self.link_log_dest = os.path.join(self.link_log_path, "wooly_server_links.dest")
+ self.link_log_dest_mt = None
+
def init(self):
return # XXX urgh
@@ -71,8 +78,36 @@
return then
+ def log_link(self, link, lastrequested):
+ import shutil
+ open_mode = "a+"
+ if os.path.exists(self.link_log_dest):
+ #If modification time has changed
+ if self.link_log_dest_mt == None or \
+ os.path.getmtime(self.link_log_dest) > self.link_log_dest_mt:
+ self.link_log_dest_mt = os.path.getmtime(self.link_log_dest)
+
+ # Read the destination
+ f = open(self.link_log_dest, "r")
+ dest = os.path.join(self.link_log_path, f.readline().strip())
+ f.close()
+
+ # Copy the file to destination
+ shutil.copyfile(self.link_log, dest)
+
+ # Make main log truncate before write
+ open_mode = "w"
+
+ f = open(self.link_log, open_mode)
+ if lastrequested:
+ f.write("True,")
+ else:
+ f.write("False,")
+ f.write(link+"\n")
+
def service_request(self, env, response):
log.info("Request %s %s", env["REQUEST_METHOD"], env["REQUEST_URI"])
+ self.log_link(env["REQUEST_URI"], self.get_last_requested(env) != None)
page = self.get_page(env)
13 years, 3 months
r4478 - in branches/1.3.2/cumin/python/cumin: . grid
by tmckay@fedoraproject.org
Author: tmckay
Date: 2011-01-21 18:48:36 +0000 (Fri, 21 Jan 2011)
New Revision: 4478
Modified:
branches/1.3.2/cumin/python/cumin/grid/job.py
branches/1.3.2/cumin/python/cumin/grid/negotiator.py
branches/1.3.2/cumin/python/cumin/grid/negotiator.strings
branches/1.3.2/cumin/python/cumin/model.py
Log:
Merge revision 4477 from trunk. Original comment:
Candidate fix for BZ 671388. Change exception handling to be compatible with python 2.4
Modified: branches/1.3.2/cumin/python/cumin/grid/job.py
===================================================================
--- branches/1.3.2/cumin/python/cumin/grid/job.py 2011-01-21 17:26:11 UTC (rev 4477)
+++ branches/1.3.2/cumin/python/cumin/grid/job.py 2011-01-21 18:48:36 UTC (rev 4478)
@@ -300,7 +300,9 @@
qmf_response = self.qmf_response.get(session)
if qmf_response.exception:
writer = Writer()
- msg = "The data is not available at this time. <br/>%s" % str(qmf_response.exception.message)
+ e = qmf_response.exception
+ m = len(e.args) > 0 and e.args[0] or ""
+ msg = "The data is not available at this time. <br/>%s" % m
self.error_tmpl.render(writer, session, msg)
return writer.to_string()
@@ -556,7 +558,7 @@
# check for qmf error
_, error = self.parent.do_get_items(session)
if error:
- msg = error.message
+ msg = len(error.args) > 0 and error.args[0] or ""
if not msg:
# probably a timeout exception
msg = "Unable to get Job information at this time"
Modified: branches/1.3.2/cumin/python/cumin/grid/negotiator.py
===================================================================
--- branches/1.3.2/cumin/python/cumin/grid/negotiator.py 2011-01-21 17:26:11 UTC (rev 4477)
+++ branches/1.3.2/cumin/python/cumin/grid/negotiator.py 2011-01-21 18:48:36 UTC (rev 4478)
@@ -100,6 +100,8 @@
def __init__(self, app, name, negotiator, frame):
super(NegotiatorOverview, self).__init__(app, name)
+ self.negotiator = negotiator
+
self.update_enabled = True
#self.defer_enabled = True
@@ -147,10 +149,13 @@
except AssertionError:
msg = "Missing negotiator"
except Exception, e:
- msg = e.message
+ msg = len(e.args) > 0 and e.args[0] or ""
if msg == "Loading":
tmpl = self.loading_tmpl
else:
+ neg = self.negotiator.get(session)
+ neg_name = neg and " for negotiator %s" % neg.Name or ""
+ msg = "%s%s" % (e, neg_name)
log.exception(e)
else:
return super(NegotiatorOverview, self).do_render(session)
@@ -267,7 +272,8 @@
except TypeError:
if isinstance(value, Exception):
content = "<span class='QuotaError'>error</span>"
- return fmt_link("#", content, "", "", value.message)
+ val = len(value.args) > 0 and value.args[0] or ""
+ return fmt_link("#", content, "", "", val)
href = self.task.get_href(session)
content = "%s%%" % str(round(fval * 100.0, 2))
@@ -303,11 +309,12 @@
if not groups:
if (not results.status) and (not results.exception):
- raise QmfException("Loading")
- #results.exception = QmfException("Request timed out. Please refresh the page to try again.")
+ raise Exception("Loading")
if results.exception:
raise results.exception
else:
+ if not groups:
+ raise Exception(results.status)
try:
groups = self.split_group_names(groups)
except Exception, e:
Modified: branches/1.3.2/cumin/python/cumin/grid/negotiator.strings
===================================================================
--- branches/1.3.2/cumin/python/cumin/grid/negotiator.strings 2011-01-21 17:26:11 UTC (rev 4477)
+++ branches/1.3.2/cumin/python/cumin/grid/negotiator.strings 2011-01-21 18:48:36 UTC (rev 4478)
@@ -53,7 +53,7 @@
<![CDATA[
(function() {
window.addEvent("domready", function () {
- setTimeout( function () { window.location.reload(); }, 2000 );
+ setTimeout( function () { window.location.reload(); }, 5000 );
});
}())
]]>
Modified: branches/1.3.2/cumin/python/cumin/model.py
===================================================================
--- branches/1.3.2/cumin/python/cumin/model.py 2011-01-21 17:26:11 UTC (rev 4477)
+++ branches/1.3.2/cumin/python/cumin/model.py 2011-01-21 18:48:36 UTC (rev 4478)
@@ -906,13 +906,6 @@
return "%s%s" % (conf, rect)
-class QmfException(Exception):
- def __init__(self, value):
- self.message = value
-
- def __str__(self):
- return repr(self.message)
-
class QmfCall(object):
def __init__(self, app, default=None, timeout=5):
self.app = app
@@ -929,7 +922,7 @@
self.data = data
self.got_data = True
else:
- self.error = QmfException(status)
+ self.error = Exception(status)
msg = "QMF call returned with status of %s" % str(status)
log.error(msg)
return completion
@@ -951,7 +944,7 @@
results = self.do_wait()
if not results.got_data and not results.error:
- results.error = QmfException("Request timed out")
+ results.error = Exception("Request timed out")
msg = "QMF call %s timed out" % method_name
log.error(msg)
13 years, 3 months
r4477 - in trunk/cumin/python/cumin: . grid
by eallen@fedoraproject.org
Author: eallen
Date: 2011-01-21 17:26:11 +0000 (Fri, 21 Jan 2011)
New Revision: 4477
Modified:
trunk/cumin/python/cumin/grid/job.py
trunk/cumin/python/cumin/grid/negotiator.py
trunk/cumin/python/cumin/grid/negotiator.strings
trunk/cumin/python/cumin/model.py
Log:
Candidate fix for BZ 671388. Change exception handling to be compatible with python 2.4
Modified: trunk/cumin/python/cumin/grid/job.py
===================================================================
--- trunk/cumin/python/cumin/grid/job.py 2011-01-19 19:24:30 UTC (rev 4476)
+++ trunk/cumin/python/cumin/grid/job.py 2011-01-21 17:26:11 UTC (rev 4477)
@@ -300,7 +300,9 @@
qmf_response = self.qmf_response.get(session)
if qmf_response.exception:
writer = Writer()
- msg = "The data is not available at this time. <br/>%s" % str(qmf_response.exception.message)
+ e = qmf_response.exception
+ m = len(e.args) > 0 and e.args[0] or ""
+ msg = "The data is not available at this time. <br/>%s" % m
self.error_tmpl.render(writer, session, msg)
return writer.to_string()
@@ -556,7 +558,7 @@
# check for qmf error
_, error = self.parent.do_get_items(session)
if error:
- msg = error.message
+ msg = len(error.args) > 0 and error.args[0] or ""
if not msg:
# probably a timeout exception
msg = "Unable to get Job information at this time"
Modified: trunk/cumin/python/cumin/grid/negotiator.py
===================================================================
--- trunk/cumin/python/cumin/grid/negotiator.py 2011-01-19 19:24:30 UTC (rev 4476)
+++ trunk/cumin/python/cumin/grid/negotiator.py 2011-01-21 17:26:11 UTC (rev 4477)
@@ -100,6 +100,8 @@
def __init__(self, app, name, negotiator, frame):
super(NegotiatorOverview, self).__init__(app, name)
+ self.negotiator = negotiator
+
self.update_enabled = True
#self.defer_enabled = True
@@ -147,10 +149,13 @@
except AssertionError:
msg = "Missing negotiator"
except Exception, e:
- msg = e.message
+ msg = len(e.args) > 0 and e.args[0] or ""
if msg == "Loading":
tmpl = self.loading_tmpl
else:
+ neg = self.negotiator.get(session)
+ neg_name = neg and " for negotiator %s" % neg.Name or ""
+ msg = "%s%s" % (e, neg_name)
log.exception(e)
else:
return super(NegotiatorOverview, self).do_render(session)
@@ -267,7 +272,8 @@
except TypeError:
if isinstance(value, Exception):
content = "<span class='QuotaError'>error</span>"
- return fmt_link("#", content, "", "", value.message)
+ val = len(value.args) > 0 and value.args[0] or ""
+ return fmt_link("#", content, "", "", val)
href = self.task.get_href(session)
content = "%s%%" % str(round(fval * 100.0, 2))
@@ -303,11 +309,12 @@
if not groups:
if (not results.status) and (not results.exception):
- raise QmfException("Loading")
- #results.exception = QmfException("Request timed out. Please refresh the page to try again.")
+ raise Exception("Loading")
if results.exception:
raise results.exception
else:
+ if not groups:
+ raise Exception(results.status)
try:
groups = self.split_group_names(groups)
except Exception, e:
Modified: trunk/cumin/python/cumin/grid/negotiator.strings
===================================================================
--- trunk/cumin/python/cumin/grid/negotiator.strings 2011-01-19 19:24:30 UTC (rev 4476)
+++ trunk/cumin/python/cumin/grid/negotiator.strings 2011-01-21 17:26:11 UTC (rev 4477)
@@ -53,7 +53,7 @@
<![CDATA[
(function() {
window.addEvent("domready", function () {
- setTimeout( function () { window.location.reload(); }, 2000 );
+ setTimeout( function () { window.location.reload(); }, 5000 );
});
}())
]]>
Modified: trunk/cumin/python/cumin/model.py
===================================================================
--- trunk/cumin/python/cumin/model.py 2011-01-19 19:24:30 UTC (rev 4476)
+++ trunk/cumin/python/cumin/model.py 2011-01-21 17:26:11 UTC (rev 4477)
@@ -906,13 +906,6 @@
return "%s%s" % (conf, rect)
-class QmfException(Exception):
- def __init__(self, value):
- self.message = value
-
- def __str__(self):
- return repr(self.message)
-
class QmfCall(object):
def __init__(self, app, default=None, timeout=5):
self.app = app
@@ -929,7 +922,7 @@
self.data = data
self.got_data = True
else:
- self.error = QmfException(status)
+ self.error = Exception(status)
msg = "QMF call returned with status of %s" % str(status)
log.error(msg)
return completion
@@ -951,7 +944,7 @@
results = self.do_wait()
if not results.got_data and not results.error:
- results.error = QmfException("Request timed out")
+ results.error = Exception("Request timed out")
msg = "QMF call %s timed out" % method_name
log.error(msg)
13 years, 3 months
r4476 - /
by tmckay@fedoraproject.org
Author: tmckay
Date: 2011-01-19 19:24:30 +0000 (Wed, 19 Jan 2011)
New Revision: 4476
Removed:
newdata/
Log:
Newdata branch is no longer needed.
13 years, 3 months