1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-11 16:58:40 +03:00

s3:test: make sids2xids test compatible with py2 and py3

define a wrapper function for subprocess.check_output,
to return bytes for py2 and unicode for py3, and replace Popen with it.

Signed-off-by: Joe Guo <joeg@catalyst.net.nz>
Reviewed-by: Noel Power <npower@samba.org>
This commit is contained in:
Joe Guo 2018-12-13 16:33:40 +13:00 committed by Noel Power
parent 5ddff307b4
commit 934e336a95

View File

@ -4,6 +4,7 @@ from __future__ import print_function
import sys
import os
import subprocess
from samba.compat import PY3
if len(sys.argv) != 3:
@ -14,6 +15,16 @@ wbinfo = sys.argv[1]
netcmd = sys.argv[2]
def run(cmd):
"""
Run a cmd, return bytes str for py2 and unicode str for py3.
NOTE: subprocess api always return bytes, in both py2 and py3.
"""
output = subprocess.check_output(cmd).strip()
return output.decode('utf-8') if PY3 else output
def flush_cache(sids=[], uids=[], gids=[]):
for sid in sids:
os.system(netcmd + (" cache del IDMAP/SID2XID/%s" % (sid)))
@ -27,14 +38,11 @@ def fill_cache(inids, idtype='gid'):
for inid in inids:
if inid is None:
continue
subprocess.Popen([wbinfo, '--%s-to-sid=%s' % (idtype, inid)],
stdout=subprocess.PIPE).communicate()
run([wbinfo, '--%s-to-sid=%s' % (idtype, inid)])
domain = subprocess.Popen([wbinfo, "--own-domain"],
stdout=subprocess.PIPE).communicate()[0].strip()
domsid = subprocess.Popen([wbinfo, "-n", domain + "/"],
stdout=subprocess.PIPE).communicate()[0]
domain = run([wbinfo, "--own-domain"])
domsid = run([wbinfo, "-n", domain + "/"])
domsid = domsid.split(' ')[0]
# print domain
@ -44,8 +52,7 @@ sids = [domsid + '-512', 'S-1-5-32-545', domsid + '-513', 'S-1-1-0', 'S-1-3-1',
flush_cache(sids=sids)
sids2xids = subprocess.Popen([wbinfo, '--sids-to-unix-ids=' + ','.join(sids)],
stdout=subprocess.PIPE).communicate()[0].strip()
sids2xids = run([wbinfo, '--sids-to-unix-ids=' + ','.join(sids)])
gids = []
uids = []
@ -83,8 +90,7 @@ def check_singular(sids, ids, idtype='gid'):
if ids[i] is None:
continue
outid = subprocess.Popen([wbinfo, '--sid-to-%s' % idtype, sid],
stdout=subprocess.PIPE).communicate()[0].strip()
outid = run([wbinfo, '--sid-to-%s' % idtype, sid])
if outid != ids[i]:
print("Expected %s, got %s\n" % (outid, ids[i]))
flush_cache(sids=sids, uids=uids, gids=gids)
@ -96,8 +102,7 @@ def check_singular(sids, ids, idtype='gid'):
def check_multiple(sids, idtypes):
sids2xids = subprocess.Popen([wbinfo, '--sids-to-unix-ids=' + ','.join(sids)],
stdout=subprocess.PIPE).communicate()[0].strip()
sids2xids = run([wbinfo, '--sids-to-unix-ids=' + ','.join(sids)])
# print sids2xids
i = 0
for line in sids2xids.split('\n'):