Bug fixes for alpha releases

1. Document enhancements on stand profiling;
2. Synchornize polling interval with report interval when calling from Web UI;
3. Fix the bug which prevent doing multiple progression runs;
4. Isolate logs from different sessions if multiple are running;

Change-Id: Ie2b8a499a942f95a5c7ec80405ce2db10cc8ebdc
This commit is contained in:
Yichen Wang 2015-12-03 15:19:50 -08:00
parent 190e646593
commit 9d09061d96
6 changed files with 61 additions and 8 deletions

View File

@ -387,4 +387,50 @@ KloudBuster can run to.
As a reference, for a Kilo OpenStack deployment (LinuxBridge + VLAN) with
Packstack, using an 10GE NIC card for data plane traffic, KloudBuster can run
up to 18 VMs and achieve approximately 5 GBps throughput.
apprximately 21 VMs and achieve approximately 5 GBps throughput.
How-to
^^^^^^
In order to run KloudBuster Standard Profiling, you have to set up below
configurations:
1. Enable progression runs:
Running from CLI: Edit the config file, and set
**client:progression:enabled** to True
Running from Web UI: Navigate to "Interactive Mode" from the top menu
bar, unfold the left panel for detail settings, under "Progression Test"
section, and check the "Progression Test" checkbox.
2. Set up the max scale:
The max scale basically means the max VM counts that KloudBuster will
try to reach. For a typical 10GE NIC card with VLAN encapsulation,
25 will be a good value. Adjust it to a reasonable value based on
your deployment details.
Running from CLI: Edit the config file, and set **server:vms_per_network**
to a proper value.
Running from Web UI: Navigate to "Interactive Mode" from the top menu
bar, unfold the left panel for detail settings, under "Staging Settings"
section, and set "VMs/Network" to a proper value.
Intepret the results
^^^^^^^^^^^^^^^^^^^^
From the CLI, check the log and find the warning that KloudBuster gave,
similar to this::
WARNING KloudBuster is stopping the iteration because the result reaches the stop limit.
One line before is the json output of last successful run, which has the
number in the "total_server_vms" field.
From the Web UI, in ihe "Interactive Mode" tab, you will see how many sets
of data are you getting. The second last set of data shows the last successful
run, which has the number in the "Server VMs" column.

View File

@ -90,6 +90,7 @@ npm install -g grunt-cli bower
npm install
bower install --allow-root --config.interactive=false --force
grunt build
rm -rf ../kb_server/public/ui/*
mv dist/* ../kb_server/public/ui

View File

@ -70,6 +70,13 @@ class ConfigController(object):
tenants_list = AttrDict(user_config['tenants_list'])\
if 'tenants_list' in user_config else None
# Synchronize the polling interval with report interval
try:
alt_config['kb_cfg']['client']['polling_interval'] = \
alt_config['kb_cfg']['client']['http_tool_config']['report_interval']
except Exception:
pass
key = ['alt_cfg', 'topo_cfg', 'tenants_list']
val = [alt_config, topo_cfg, tenants_list]
kwargs = dict([(k, v) for k, v in zip(key, val) if v])

View File

@ -306,6 +306,7 @@ class KBRunner(object):
raise KBException("Some VMs failed to start.")
if self.config.progression.enabled:
self.tool_result = {}
start = self.config.progression.vm_start
step = self.config.progression.vm_step
limit = self.config.progression.stop_limit

View File

@ -505,7 +505,8 @@ class KloudBuster(object):
def dispose(self):
if self.fp_logfile:
self.fp_logfile.close()
logging.delete_logfile('kloudbuster')
logging.delete_logfile('kloudbuster', self.fp_logfile.name)
self.fp_logfile = None
def get_tenant_vm_count(self, config):
return (config['routers_per_tenant'] * config['networks_per_router'] *

View File

@ -52,7 +52,6 @@ def setup(product_name, logfile=None):
if logfile:
if os.path.exists(logfile):
os.remove(logfile)
CONF.log_file = logfile
fmt = logging.Formatter(fmt=CONF.logging_default_format_string)
hdlr = logging.FileHandler(logfile)
hdlr.setFormatter(fmt)
@ -73,11 +72,9 @@ def getLogger(name="unknown", version="unknown"):
return oslogging._loggers[name]
def delete_logfile(product_name):
if CONF.log_file and os.path.exists(CONF.log_file):
os.remove(CONF.log_file)
CONF.log_file = None
def delete_logfile(product_name, filename):
if filename and os.path.exists(filename):
os.remove(filename)
class KloudBusterContextAdapter(oslogging.KeywordArgumentAdapter):