|
@@ -4,15 +4,16 @@ import time
|
|
|
import statistics
|
|
|
|
|
|
|
|
|
-def call_api(url, method, params, json):
|
|
|
+def call_api(url, method, params, json, print_res):
|
|
|
start = time.time()
|
|
|
response = requests.request(method, url, params=params, json=json)
|
|
|
- # print(response.json())
|
|
|
+ if print_res:
|
|
|
+ print(response.json())
|
|
|
end = time.time()
|
|
|
return (end - start) * 1000, response.status_code, len(response.content)
|
|
|
|
|
|
|
|
|
-def test_api_tps(url, method, params=None, json=None, concurrency=1, duration=1):
|
|
|
+def test_api_tps(url, method, params=None, json=None, concurrency=1, duration=1, print_res=False):
|
|
|
successes = 0
|
|
|
failures = 0
|
|
|
times = []
|
|
@@ -20,7 +21,7 @@ def test_api_tps(url, method, params=None, json=None, concurrency=1, duration=1)
|
|
|
|
|
|
with concurrent.futures.ThreadPoolExecutor(max_workers=concurrency) as executor:
|
|
|
start = time.time()
|
|
|
- futures = [executor.submit(call_api, url, method, params, json) for i in range(concurrency)]
|
|
|
+ futures = [executor.submit(call_api, url, method, params, json, print_res) for i in range(concurrency)]
|
|
|
|
|
|
while time.time() - start < duration:
|
|
|
completed, futures = concurrent.futures.wait(futures, timeout=0)
|
|
@@ -32,7 +33,18 @@ def test_api_tps(url, method, params=None, json=None, concurrency=1, duration=1)
|
|
|
successes += 1
|
|
|
else:
|
|
|
failures += 1
|
|
|
- futures.add(executor.submit(call_api, url, method, params, json))
|
|
|
+ futures.add(executor.submit(call_api, url, method, params, json, print_res))
|
|
|
+ # Wait for the remaining futures to complete
|
|
|
+ if futures:
|
|
|
+ completed, _ = concurrent.futures.wait(futures)
|
|
|
+ for future in completed:
|
|
|
+ elapsed, status, length = future.result()
|
|
|
+ times.append(elapsed)
|
|
|
+ data_lengths.append(length)
|
|
|
+ if status == 200:
|
|
|
+ successes += 1
|
|
|
+ else:
|
|
|
+ failures += 1
|
|
|
|
|
|
total = successes + failures
|
|
|
tps = total / duration
|