diff --git a/README.md b/README.md index 96868c6..d1860ad 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,15 @@ scen = pysipp.scenario(dirpath='path/to/test_scenario/', scen() ``` +**pysipp** by default uses `-screen_file` SIPp argument to redirect output, + but this argument is only available in SIPp version >= [3.5.0](https://sourceforge.net/p/sipp/mailman/message/34041962/), + for lower versions to run properly, this argument must be + disable setting `enable_screen_file` to `False`: + +```python +scen = pysipp.scenario(enable_screen_file=False) +``` + If you've got multiple such scenario directories you can iterate over them: diff --git a/pysipp/agent.py b/pysipp/agent.py index 1c0881d..a57a312 100644 --- a/pysipp/agent.py +++ b/pysipp/agent.py @@ -16,7 +16,6 @@ def tuple_property(attrs): - def getter(self): tup = tuple(getattr(self, attr) for attr in attrs) if all(tup): @@ -77,10 +76,11 @@ def is_client(self): def is_server(self): return 'uas' in self.name.lower() - def iter_logfile_items(self, types_attr='_log_types'): + def iter_logfile_items(self, types_attr='_log_types', enable_screen_file=True): for name in getattr(self, types_attr): - attr_name = name + '_file' - yield attr_name, getattr(self, attr_name) + if name != 'screen' or enable_screen_file: + attr_name = name + '_file' + yield attr_name, getattr(self, attr_name) def iter_toconsole_items(self): yield 'screen_file', self.screen_file @@ -118,11 +118,11 @@ def enable_tracing(self): attr_name = 'trace_' + name setattr(self, attr_name, True) - def enable_logging(self, logdir=None, debug=False): + def enable_logging(self, logdir=None, debug=False, enable_screen_file=True): """Enable agent logging by appending appropriately named log file arguments to the underlying command. """ - logattrs = self.iter_logfile_items() + logattrs = self.iter_logfile_items(enable_screen_file=enable_screen_file) if debug: logattrs = itertools.chain( logattrs, @@ -233,8 +233,9 @@ class ScenarioType(object): If called it will invoke the standard run hooks. """ + def __init__(self, agents, defaults, clientdefaults=None, - serverdefaults=None, confpy=None): + serverdefaults=None, confpy=None, enable_screen_file=True): # agents iterable in launch-order self._agents = agents ua_attrs = UserAgent.keys() @@ -253,6 +254,7 @@ def __init__(self, agents, defaults, clientdefaults=None, # hook module self.mod = confpy + self.enable_screen_file = enable_screen_file @property def agents(self): @@ -330,6 +332,7 @@ def prepare_agent(self, agent): """Return a new agent with all default settings applied from this scenario """ + def merge(dicts): """Merge dicts without clobbering up to 1 level deep's worth of sub-dicts @@ -364,7 +367,8 @@ def merge(dicts): params = merge(ordered) log.debug("merged contents:\n{}".format(params)) ua = UserAgent(defaults=params) - ua.enable_logging() + + ua.enable_logging(enable_screen_file=self.enable_screen_file) # call post defaults hook plugin.mng.hook.pysipp_post_ua_defaults(ua=ua)