Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down
20 changes: 12 additions & 8 deletions pysipp/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@


def tuple_property(attrs):

def getter(self):
tup = tuple(getattr(self, attr) for attr in attrs)
if all(tup):
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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()
Expand All @@ -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):
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down