toulouse-maelis: [tools] add tests to soap benchmark (#81399)

This commit is contained in:
Nicolas Roche 2023-09-22 18:04:54 +02:00 committed by Nicolas Roche
parent b497988bf5
commit bac28e933c
3 changed files with 118 additions and 13 deletions

View File

@ -0,0 +1,28 @@
#!/usr/bin/python3
import argparse
import utils
def check(args):
utils.configure_logging(args.verbose)
client = utils.get_client(args.env, 'Family')
result = client.service.readFamilyListFromFullName(
fullname=args.query,
)
if args.verbose > 1:
print(result)
return result
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
parser.add_argument(
'query', help='Recherche en texte intégral (plus ou moins)', nargs='?', default='TEST_'
)
args = parser.parse_args()
check(args)

View File

@ -12,8 +12,8 @@ from multiprocessing.sharedctypes import Value
import utils
FAMILY_ID = '322423' # NICO
FAMILY_ID = '322423' # NICO TEST / UDAVE INTEG
PERSON_ID = '176658' # INTEG
duis = [str(i) for i in range(330120, 33151)]
@ -25,14 +25,49 @@ client = None
_client = None
def get_client_label(args):
if args.test in ['read-family', 'search-family', 'update-family']:
return 'Family'
elif args.test in ['person-catalog', 'global-catalog']:
return 'Activity'
else:
raise Exception('unknown test')
def check(client, i, args):
client = client or utils.get_client(args.env, 'Family')
result = client.service.readFamily(
dossierNumber=args.family,
# schoolYear=
# incomeYear=2020, # <-- pour avoir les quotients
# referenceYear=2020,
)
client = client or utils.get_client(args.env, get_client_label(args))
if args.test == 'read-family':
result = client.service.readFamily(dossierNumber=args.family)
elif args.test == 'search-family':
result = client.service.readFamilyListFromFullName(fullname=args.query)
elif args.test == 'update-family':
result = client.service.updateFamily(
dossierNumber=args.family,
category='BI',
situation='VIEM',
nbChild='1',
nbTotalChild='2',
nbAES='3',
)
elif args.test == 'person-catalog':
result = client.service.getPersonCatalogueActivity(
getPersonCatalogueActivityRequestBean={
'numDossier': args.family,
'numPerson': args.person,
'yearSchool': '2022',
'dateStartActivity': '2022-09-01',
'dateEndActivity': '2023-08-31',
}
)
elif args.test == 'global-catalog':
result = client.service.readActivityList(
schoolyear='1970',
dateStartCalend='2022-01-01',
dateEndCalend='2024-12-31',
)
else:
raise Exception('unknown test')
return result
@ -43,11 +78,16 @@ if __name__ == '__main__':
parser.add_argument('--reuse', '-r', default=False, help='reuse zeep client', action='store_true')
parser.add_argument('--number', '-n', type=int, default=300, help='number of requests')
parser.add_argument('--concurrency', '-c', type=int, default=100, help='number of parallel processes')
parser.add_argument('--test', '-t', default='read-family', help='WS to test')
parser.add_argument('family', help=FAMILY_ID, nargs='?', default=FAMILY_ID)
parser.add_argument(
'query', help='Recherche en texte intégral (plus ou moins)', nargs='?', default='SIMP'
)
parser.add_argument('--person', '-P', default=PERSON_ID, help='person id')
args = parser.parse_args()
if args.reuse:
_client = utils.get_client(args.env, 'Family')
_client = utils.get_client(args.env, get_client_label(args))
done = 0
count = args.number
@ -64,7 +104,7 @@ if __name__ == '__main__':
__client = None
if args.reuse:
__client = _client or utils.get_client(args.env, 'Family')
__client = _client or utils.get_client(args.env, get_client_label(args))
barrier.wait()
while done < count:
@ -90,7 +130,7 @@ if __name__ == '__main__':
def target(result_queue, done_value):
_client = None
if args.reuse:
_client = utils.get_client(args.env, 'Family')
_client = utils.get_client(args.env, get_client_label(args))
while done_value.value < count:
with done_value.get_lock():
if done_value.value >= count:
@ -98,7 +138,7 @@ if __name__ == '__main__':
done_value.value += 1
try:
start = time.time()
check(_client or utils.get_client(args.env, 'Family'), i, args)
check(_client or utils.get_client(args.env, get_client_label(args)), i, args)
duration = time.time() - start
result_queue.put((True, duration))
except Exception as e:
@ -125,6 +165,10 @@ if __name__ == '__main__':
process.join()
else:
# Refait le script avec multiprocessing plutôt que threading
# pour être plus proche des processus uwsgi
# (la création des zeep.Client coûte parce qu'un seul thread peut le faire à la fois)
print('obsolete')
threads = [threading.Thread(target=f, args=(i,)) for i in range(concurrency)]
for thread in threads:

View File

@ -0,0 +1,33 @@
#!/usr/bin/python3
import argparse
import utils
FAMILY_ID = '322423' # NICO
def check(args):
utils.configure_logging(args.verbose)
client = utils.get_client(args.env, 'Family')
result = client.service.updateFamily(
dossierNumber=args.family,
category='BI',
situation='VIEM',
nbChild='1',
nbTotalChild='2',
nbAES='3',
)
if args.verbose > 1:
print(result)
return result
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--verbose', '-v', type=int, default=2, help='display errors')
parser.add_argument('--env', '-e', default='integ', help='dev, test, integ, prod')
parser.add_argument('family', help=FAMILY_ID, nargs='?', default=FAMILY_ID)
args = parser.parse_args()
check(args)