chiark
/
gitweb
/
~mdw
/
hippotat
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
do actually process server-specific [<server> LIMIT] sections
[hippotat]
/
hippotatlib
/
__init__.py
diff --git
a/hippotatlib/__init__.py
b/hippotatlib/__init__.py
index 7781c1f54c30b241a5afbec67f063ce2a68dd73c..aa5b06c49385c0b7268a8fc16c60c74555254676 100644
(file)
--- a/
hippotatlib/__init__.py
+++ b/
hippotatlib/__init__.py
@@
-126,7
+126,7
@@
class LogNotBoringTwisted:
#---------- default config ----------
defcfg = '''
#---------- default config ----------
defcfg = '''
-[
DEFAULT
]
+[
COMMON
]
max_batch_down = 65536
max_queue_time = 10
target_requests_outstanding = 3
max_batch_down = 65536
max_queue_time = 10
target_requests_outstanding = 3
@@
-386,11
+386,12
@@
def _cfg_process_putatives():
server_pat = r'[-.0-9A-Za-z]+'
client_pat = r'[.:0-9a-f]+'
server_re = regexp.compile(server_pat)
server_pat = r'[-.0-9A-Za-z]+'
client_pat = r'[.:0-9a-f]+'
server_re = regexp.compile(server_pat)
- serverclient_re = regexp.compile(server_pat + r' ' + client_pat)
+ serverclient_re = regexp.compile(
+ server_pat + r' ' + '(?:' + client_pat + '|LIMIT)')
for cs in cfg.sections():
for cs in cfg.sections():
- if cs == 'LIMIT':
- # plan A "[LIMIT]"
+ if cs == 'LIMIT'
or cs == 'COMMON'
:
+ # plan A "[LIMIT]"
or "[COMMON]"
continue
try:
continue
try:
@@
-434,7
+435,7
@@
def _cfg_process_putatives():
return (servers, clients)
def cfg_process_general(c, ss):
return (servers, clients)
def cfg_process_general(c, ss):
- c.mtu = cfg
.
getint(ss, 'mtu')
+ c.mtu = cfg
1
getint(ss, 'mtu')
def cfg_process_saddrs(c, ss):
class ServerAddr():
def cfg_process_saddrs(c, ss):
class ServerAddr():
@@
-460,20
+461,20
@@
def cfg_process_saddrs(c, ss):
def __repr__(self):
return 'ServerAddr'+repr((self.port,self.addr))
def __repr__(self):
return 'ServerAddr'+repr((self.port,self.addr))
- c.port = cfg
.
getint(ss,'port')
+ c.port = cfg
1
getint(ss,'port')
c.saddrs = [ ]
c.saddrs = [ ]
- for addrspec in cfg
.
get(ss, 'addrs').split():
+ for addrspec in cfg
1
get(ss, 'addrs').split():
sa = ServerAddr(c.port, addrspec)
c.saddrs.append(sa)
def cfg_process_vnetwork(c, ss):
sa = ServerAddr(c.port, addrspec)
c.saddrs.append(sa)
def cfg_process_vnetwork(c, ss):
- c.vnetwork = ipnetwork(cfg
.
get(ss,'vnetwork'))
+ c.vnetwork = ipnetwork(cfg
1
get(ss,'vnetwork'))
if c.vnetwork.num_addresses < 3 + 2:
raise ValueError('vnetwork needs at least 2^3 addresses')
def cfg_process_vaddr(c, ss):
try:
if c.vnetwork.num_addresses < 3 + 2:
raise ValueError('vnetwork needs at least 2^3 addresses')
def cfg_process_vaddr(c, ss):
try:
- c.vaddr = cfg
.
get(ss,'vaddr')
+ c.vaddr = cfg
1
get(ss,'vaddr')
except NoOptionError:
cfg_process_vnetwork(c, ss)
c.vaddr = next(c.vnetwork.hosts())
except NoOptionError:
cfg_process_vnetwork(c, ss)
c.vaddr = next(c.vnetwork.hosts())
@@
-492,9
+493,16
@@
def cfg_search(getter,key,sections):
section = cfg_search_section(key,sections)
return getter(section, key)
section = cfg_search_section(key,sections)
return getter(section, key)
+def cfg1get(section,key, getter=cfg.get,**kwargs):
+ section = cfg_search_section(key,[section,'COMMON'])
+ return getter(section,key,**kwargs)
+
+def cfg1getint(section,key, **kwargs):
+ return cfg1get(section,key, getter=cfg.getint,**kwargs);
+
def cfg_process_client_limited(cc,ss,sections,key):
def cfg_process_client_limited(cc,ss,sections,key):
- val = cfg_search(cfg
.
getint, key, sections)
- lim = cfg_search(cfg
.
getint, key, ['%s LIMIT' % ss, 'LIMIT'])
+ val = cfg_search(cfg
1
getint, key, sections)
+ lim = cfg_search(cfg
1
getint, key, ['%s LIMIT' % ss, 'LIMIT'])
cc.__dict__[key] = min(val,lim)
def cfg_process_client_common(cc,ss,cs,ci):
cc.__dict__[key] = min(val,lim)
def cfg_process_client_common(cc,ss,cs,ci):
@@
-504,12
+512,12
@@
def cfg_process_client_common(cc,ss,cs,ci):
sections = ['%s %s' % (ss,cs),
cs,
ss,
sections = ['%s %s' % (ss,cs),
cs,
ss,
- '
DEFAULT
']
+ '
COMMON
']
try: pwsection = cfg_search_section('password', sections)
except NoOptionError: return None
try: pwsection = cfg_search_section('password', sections)
except NoOptionError: return None
- pw = cfg
.
get(pwsection, 'password')
+ pw = cfg
1
get(pwsection, 'password')
cc.password = pw.encode('utf-8')
cfg_process_client_limited(cc,ss,sections,'target_requests_outstanding')
cc.password = pw.encode('utf-8')
cfg_process_client_limited(cc,ss,sections,'target_requests_outstanding')
@@
-526,7
+534,7
@@
def cfg_process_ipif(c, sections, varmap):
#print('CFGIPIF',repr((varmap, sections, c.__dict__)),file=sys.stderr)
section = cfg_search_section('ipif', sections)
#print('CFGIPIF',repr((varmap, sections, c.__dict__)),file=sys.stderr)
section = cfg_search_section('ipif', sections)
- c.ipif_command = cfg
.
get(section,'ipif', vars=c.__dict__)
+ c.ipif_command = cfg
1
get(section,'ipif', vars=c.__dict__)
#---------- startup ----------
#---------- startup ----------