mirror of
https://github.com/curl/curl.git
synced 2026-08-26 20:43:52 +03:00
tests: enable additional ruff Python lint options
These all seem reasonable to enable for this code.
This commit is contained in:
parent
223fb00a78
commit
57cc523378
15 changed files with 142 additions and 177 deletions
|
|
@ -353,7 +353,9 @@ class TestCA:
|
|||
valid_from: timedelta = timedelta(days=-1),
|
||||
valid_to: timedelta = timedelta(days=89),
|
||||
) -> Credentials:
|
||||
"""Create a certificate signed by this CA for the given domains.
|
||||
"""
|
||||
Create a certificate signed by this CA for the given domains.
|
||||
|
||||
:returns: the certificate and private key PEM file paths
|
||||
"""
|
||||
if spec.domains and len(spec.domains):
|
||||
|
|
@ -381,7 +383,7 @@ class TestCA:
|
|||
elif common_name:
|
||||
name_pieces.append(x509.NameAttribute(NameOID.COMMON_NAME, common_name))
|
||||
if parent:
|
||||
name_pieces.extend([rdn for rdn in parent])
|
||||
name_pieces.extend(list(parent))
|
||||
return x509.Name(name_pieces)
|
||||
|
||||
@staticmethod
|
||||
|
|
@ -522,7 +524,6 @@ class TestCA:
|
|||
valid_from: timedelta = timedelta(days=-1),
|
||||
valid_to: timedelta = timedelta(days=89),
|
||||
) -> Credentials:
|
||||
name = name
|
||||
pkey = _private_key(key_type=key_type)
|
||||
subject = TestCA._make_x509_name(common_name=name, parent=issuer.subject)
|
||||
csr = TestCA._make_csr(subject=subject,
|
||||
|
|
|
|||
|
|
@ -95,13 +95,12 @@ class LocalClient:
|
|||
if key in os.environ and key not in run_env:
|
||||
run_env[key] = os.environ[key]
|
||||
try:
|
||||
with open(self._stdoutfile, 'w') as cout:
|
||||
with open(self._stderrfile, 'w') as cerr:
|
||||
p = subprocess.run(myargs, stderr=cerr, stdout=cout,
|
||||
cwd=self._run_dir, shell=False,
|
||||
input=None, env=run_env,
|
||||
timeout=self._timeout)
|
||||
exitcode = p.returncode
|
||||
with open(self._stdoutfile, 'w') as cout, open(self._stderrfile, 'w') as cerr:
|
||||
p = subprocess.run(myargs, stderr=cerr, stdout=cout,
|
||||
cwd=self._run_dir, shell=False,
|
||||
input=None, env=run_env,
|
||||
timeout=self._timeout)
|
||||
exitcode = p.returncode
|
||||
except subprocess.TimeoutExpired:
|
||||
log.warning(f'Timeout after {self._timeout}s: {args}')
|
||||
exitcode = -1
|
||||
|
|
|
|||
|
|
@ -120,20 +120,16 @@ class RunTcpDump:
|
|||
def stats(self) -> Optional[List[str]]:
|
||||
if self._proc:
|
||||
raise Exception('tcpdump still running')
|
||||
lines = []
|
||||
for line in open(self._stdoutfile).readlines():
|
||||
if re.match(r'.* IP 127\.0\.0\.1\.\d+ [<>] 127\.0\.0\.1\.\d+:.*', line):
|
||||
lines.append(line)
|
||||
return lines
|
||||
return [line
|
||||
for line in open(self._stdoutfile)
|
||||
if re.match(r'.* IP 127\.0\.0\.1\.\d+ [<>] 127\.0\.0\.1\.\d+:.*', line)]
|
||||
|
||||
def stats_excluding(self, src_port) -> Optional[List[str]]:
|
||||
if self._proc:
|
||||
raise Exception('tcpdump still running')
|
||||
lines = []
|
||||
for line in self.stats:
|
||||
if not re.match(r'.* IP 127\.0\.0\.1\.' + str(src_port) + ' >.*', line):
|
||||
lines.append(line)
|
||||
return lines
|
||||
return [line
|
||||
for line in self.stats
|
||||
if not re.match(r'.* IP 127\.0\.0\.1\.' + str(src_port) + ' >.*', line)]
|
||||
|
||||
@property
|
||||
def stderr(self) -> List[str]:
|
||||
|
|
@ -157,20 +153,19 @@ class RunTcpDump:
|
|||
args.extend([
|
||||
tcpdump, '-i', local_if, '-n', 'tcp[tcpflags] & (tcp-rst)!=0'
|
||||
])
|
||||
with open(self._stdoutfile, 'w') as cout:
|
||||
with open(self._stderrfile, 'w') as cerr:
|
||||
self._proc = subprocess.Popen(args, stdout=cout, stderr=cerr,
|
||||
text=True, cwd=self._run_dir,
|
||||
shell=False)
|
||||
assert self._proc
|
||||
assert self._proc.returncode is None
|
||||
while self._proc:
|
||||
try:
|
||||
self._proc.wait(timeout=1)
|
||||
except subprocess.TimeoutExpired:
|
||||
pass
|
||||
except Exception as e:
|
||||
log.error(f'Tcpdump: {e}')
|
||||
with open(self._stdoutfile, 'w') as cout, open(self._stderrfile, 'w') as cerr:
|
||||
self._proc = subprocess.Popen(args, stdout=cout, stderr=cerr,
|
||||
text=True, cwd=self._run_dir,
|
||||
shell=False)
|
||||
assert self._proc
|
||||
assert self._proc.returncode is None
|
||||
while self._proc:
|
||||
try:
|
||||
self._proc.wait(timeout=1)
|
||||
except subprocess.TimeoutExpired:
|
||||
pass
|
||||
except Exception:
|
||||
log.exception('Tcpdump')
|
||||
|
||||
def start(self):
|
||||
def do_sample():
|
||||
|
|
@ -230,7 +225,7 @@ class ExecResult:
|
|||
self._stats.append(json.loads(line))
|
||||
# TODO: specify specific exceptions here
|
||||
except: # noqa: E722
|
||||
log.error(f'not a JSON stat: {line}')
|
||||
log.exception(f'not a JSON stat: {line}')
|
||||
break
|
||||
|
||||
@property
|
||||
|
|
@ -771,39 +766,38 @@ class CurlClient:
|
|||
tcpdump = RunTcpDump(self.env, self._run_dir)
|
||||
tcpdump.start()
|
||||
try:
|
||||
with open(self._stdoutfile, 'w') as cout:
|
||||
with open(self._stderrfile, 'w') as cerr:
|
||||
if with_profile:
|
||||
end_at = started_at + timedelta(seconds=self._timeout) \
|
||||
if self._timeout else None
|
||||
log.info(f'starting: {args}')
|
||||
p = subprocess.Popen(args, stderr=cerr, stdout=cout,
|
||||
cwd=self._run_dir, shell=False,
|
||||
env=self._run_env)
|
||||
profile = RunProfile(p.pid, started_at, self._run_dir)
|
||||
if intext is not None and False:
|
||||
p.communicate(input=intext.encode(), timeout=1)
|
||||
ptimeout = 0.0
|
||||
while True:
|
||||
try:
|
||||
p.wait(timeout=ptimeout)
|
||||
break
|
||||
except subprocess.TimeoutExpired:
|
||||
if end_at and datetime.now() >= end_at:
|
||||
p.kill()
|
||||
raise subprocess.TimeoutExpired(cmd=args, timeout=self._timeout)
|
||||
profile.sample()
|
||||
ptimeout = 0.01
|
||||
exitcode = p.returncode
|
||||
profile.finish()
|
||||
log.info(f'done: exit={exitcode}, profile={profile}')
|
||||
else:
|
||||
p = subprocess.run(args, stderr=cerr, stdout=cout,
|
||||
cwd=self._run_dir, shell=False,
|
||||
input=intext.encode() if intext else None,
|
||||
timeout=self._timeout,
|
||||
env=self._run_env)
|
||||
exitcode = p.returncode
|
||||
with open(self._stdoutfile, 'w') as cout, open(self._stderrfile, 'w') as cerr:
|
||||
if with_profile:
|
||||
end_at = started_at + timedelta(seconds=self._timeout) \
|
||||
if self._timeout else None
|
||||
log.info(f'starting: {args}')
|
||||
p = subprocess.Popen(args, stderr=cerr, stdout=cout,
|
||||
cwd=self._run_dir, shell=False,
|
||||
env=self._run_env)
|
||||
profile = RunProfile(p.pid, started_at, self._run_dir)
|
||||
if intext is not None and False:
|
||||
p.communicate(input=intext.encode(), timeout=1)
|
||||
ptimeout = 0.0
|
||||
while True:
|
||||
try:
|
||||
p.wait(timeout=ptimeout)
|
||||
break
|
||||
except subprocess.TimeoutExpired:
|
||||
if end_at and datetime.now() >= end_at:
|
||||
p.kill()
|
||||
raise subprocess.TimeoutExpired(cmd=args, timeout=self._timeout)
|
||||
profile.sample()
|
||||
ptimeout = 0.01
|
||||
exitcode = p.returncode
|
||||
profile.finish()
|
||||
log.info(f'done: exit={exitcode}, profile={profile}')
|
||||
else:
|
||||
p = subprocess.run(args, stderr=cerr, stdout=cout,
|
||||
cwd=self._run_dir, shell=False,
|
||||
input=intext.encode() if intext else None,
|
||||
timeout=self._timeout,
|
||||
env=self._run_env)
|
||||
exitcode = p.returncode
|
||||
except subprocess.TimeoutExpired:
|
||||
now = datetime.now()
|
||||
duration = now - started_at
|
||||
|
|
@ -857,7 +851,6 @@ class CurlClient:
|
|||
args.extend(['-v', '--trace-ids', '--trace-time'])
|
||||
if self.env.verbose > 1:
|
||||
args.extend(['--trace-config', 'http/2,http/3,h2-proxy,h1-proxy'])
|
||||
pass
|
||||
|
||||
active_options = options
|
||||
if options is not None and '--next' in options:
|
||||
|
|
|
|||
|
|
@ -213,8 +213,8 @@ class EnvConfig:
|
|||
log.error(f'{self.apxs} failed to query HTTPD_VERSION: {p}')
|
||||
else:
|
||||
self._httpd_version = p.stdout.strip()
|
||||
except Exception as e:
|
||||
log.error(f'{self.apxs} failed to run: {e}')
|
||||
except Exception:
|
||||
log.exception(f'{self.apxs} failed to run')
|
||||
return self._httpd_version
|
||||
|
||||
def versiontuple(self, v):
|
||||
|
|
@ -563,7 +563,7 @@ class Env:
|
|||
def make_data_file(self, indir: str, fname: str, fsize: int,
|
||||
line_length: int = 1024) -> str:
|
||||
if line_length < 11:
|
||||
raise 'line_length less than 11 not supported'
|
||||
raise RuntimeError('line_length less than 11 not supported')
|
||||
fpath = os.path.join(indir, fname)
|
||||
s10 = "0123456789"
|
||||
s = round((line_length / 10) + 1) * s10
|
||||
|
|
|
|||
|
|
@ -117,9 +117,7 @@ class Httpd:
|
|||
self._proxy_auth_basic = active
|
||||
|
||||
def _run(self, args, intext=''):
|
||||
env = {}
|
||||
for key, val in os.environ.items():
|
||||
env[key] = val
|
||||
env = os.environ.copy()
|
||||
env['APACHE_RUN_DIR'] = self._run_dir
|
||||
env['APACHE_RUN_USER'] = os.environ['USER']
|
||||
env['APACHE_LOCK_DIR'] = self._lock_dir
|
||||
|
|
@ -252,7 +250,7 @@ class Httpd:
|
|||
if os.path.exists(os.path.join(self._mods_dir, f'mod_{m}.so')):
|
||||
fd.write(f'LoadModule {m}_module "{self._mods_dir}/mod_{m}.so"\n')
|
||||
if Httpd.MOD_CURLTEST is not None:
|
||||
fd.write(f'LoadModule curltest_module \"{Httpd.MOD_CURLTEST}\"\n')
|
||||
fd.write(f'LoadModule curltest_module "{Httpd.MOD_CURLTEST}"\n')
|
||||
conf = [ # base server config
|
||||
f'ServerRoot "{self._apache_dir}"',
|
||||
'DefaultRuntimeDir logs',
|
||||
|
|
|
|||
|
|
@ -164,7 +164,7 @@ class Nghttpx:
|
|||
|
||||
def _write_config(self):
|
||||
with open(self._conf_file, 'w') as fd:
|
||||
fd.write('# nghttpx test config'),
|
||||
fd.write('# nghttpx test config')
|
||||
fd.write("\n".join([
|
||||
'# do we need something here?'
|
||||
]))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue