-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathload_test.py
More file actions
65 lines (51 loc) · 2.02 KB
/
load_test.py
File metadata and controls
65 lines (51 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import requests
import time
import matplotlib.pyplot as plt
import numpy as np
def load_test(url, duration_seconds=30):
response_times = []
start_time = time.time()
end_time = start_time + duration_seconds
print(f"Starting load test for {duration_seconds} seconds...")
while time.time() < end_time:
try:
start_request = time.time()
response = requests.get(url, timeout=10)
end_request = time.time()
response_time = (end_request - start_request) * 1000 # ms
response_times.append(response_time)
if response.status_code == 200:
print(f"Request {len(response_times)}: {response_time:.2f}ms")
else:
print(f"Request {len(response_times)}: Failed with status {response.status_code}")
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
return response_times
# Replace with your EC2 public IP / DNS
EC2_URL = "http://ec2-54-218-90-169.us-west-2.compute.amazonaws.com:8080/albums"
# Run test
response_times = load_test(EC2_URL)
# Plot results
plt.figure(figsize=(12, 8))
# Histogram
plt.subplot(2, 1, 1)
plt.hist(response_times, bins=50, alpha=0.7, color='blue')
plt.xlabel('Response Time (ms)')
plt.ylabel('Frequency')
plt.title('Distribution of Response Times')
# Scatter plot
plt.subplot(2, 1, 2)
plt.scatter(range(len(response_times)), response_times, alpha=0.6)
plt.xlabel('Request Number')
plt.ylabel('Response Time (ms)')
plt.title('Response Times Over Time')
plt.tight_layout()
plt.show()
# Stats
print(f"\nStatistics:")
print(f"Total requests: {len(response_times)}")
print(f"Average response time: {np.mean(response_times):.2f}ms")
print(f"Median response time: {np.median(response_times):.2f}ms")
print(f"95th percentile: {np.percentile(response_times, 95):.2f}ms")
print(f"99th percentile: {np.percentile(response_times, 99):.2f}ms")
print(f"Max response time: {max(response_times):.2f}ms")