Files
fa26_cs425_.group-mp_.team-01/MP1/test.py
2026-09-13 15:33:41 -05:00

315 lines
7.7 KiB
Python

import subprocess
import random
import sys
PORT = 5055
ALL_IPS = [
"172.22.156.3",
"172.22.158.2",
"172.22.94.2",
"172.22.156.4",
"172.22.158.3",
"172.22.94.3",
"172.22.156.5",
"172.22.158.4",
"172.22.94.4",
"172.22.156.6"
]
tests = ["TEST_ALL", "TEST_UNIQUE", "TEST_SOME", "TEST_MEDIUM"]
results = ["""Filename: machine.1.log
Matches: 1
1:[1-0] [INFO] TEST_ALL
Filename: machine.2.log
Matches: 1
1:[2-0] [INFO] TEST_ALL
Filename: machine.3.log
Matches: 1
1:[3-0] [INFO] TEST_ALL
Filename: machine.4.log
Matches: 1
1:[4-0] [INFO] TEST_ALL
Filename: machine.5.log
Matches: 1
1:[5-0] [INFO] TEST_ALL
Filename: machine.6.log
Matches: 1
1:[6-0] [INFO] TEST_ALL
Filename: machine.7.log
Matches: 1
1:[7-0] [INFO] TEST_ALL
Filename: machine.8.log
Matches: 1
1:[8-0] [INFO] TEST_ALL
Filename: machine.9.log
Matches: 1
1:[9-0] [INFO] TEST_ALL
Filename: machine.10.log
Matches: 1
1:[10-0] [INFO] TEST_ALL
=========================== SUMMARY ===========================
machine.1.test.log: 1 matches
machine.2.test.log: 1 matches
machine.3.test.log: 1 matches
machine.4.test.log: 1 matches
machine.5.test.log: 1 matches
machine.6.test.log: 1 matches
machine.7.test.log: 1 matches
machine.8.test.log: 1 matches
machine.9.test.log: 1 matches
machine.10.test.log: 1 matches
Total matches: 10
===============================================================""",
"""
Filename: machine.2.log
Matches: 1
2:[2-1] [DEBUG] TEST_UNIQUE
Filename: machine.4.log
Matches: 1
2:[4-1] [DEBUG] TEST_UNIQUE
Filename: machine.6.log
Matches: 1
2:[6-1] [DEBUG] TEST_UNIQUE
Filename: machine.8.log
Matches: 1
2:[8-1] [DEBUG] TEST_UNIQUE
Filename: machine.10.log
Matches: 1
2:[10-1] [DEBUG] TEST_UNIQUE
=========================== SUMMARY ===========================
machine.1.test.log: 0 matches
machine.2.test.log: 1 matches
machine.3.test.log: 0 matches
machine.4.test.log: 1 matches
machine.5.test.log: 0 matches
machine.6.test.log: 1 matches
machine.7.test.log: 0 matches
machine.8.test.log: 1 matches
machine.9.test.log: 0 matches
machine.10.test.log: 1 matches
Total matches: 5
===============================================================
""",
"""
Filename: machine.1.log
Matches: 1
3:[1-2] [ERROR] TEST_SOME
Filename: machine.3.log
Matches: 1
3:[3-2] [ERROR] TEST_SOME
Filename: machine.5.log
Matches: 1
3:[5-2] [ERROR] TEST_SOME
Filename: machine.7.log
Matches: 1
3:[7-2] [ERROR] TEST_SOME
Filename: machine.9.log
Matches: 1
3:[9-2] [ERROR] TEST_SOME
=========================== SUMMARY ===========================
machine.1.test.log: 1 matches
machine.2.test.log: 0 matches
machine.3.test.log: 1 matches
machine.4.test.log: 0 matches
machine.5.test.log: 1 matches
machine.6.test.log: 0 matches
machine.7.test.log: 1 matches
machine.8.test.log: 0 matches
machine.9.test.log: 1 matches
machine.10.test.log: 0 matches
Total matches: 5
===============================================================
""",
"""
Filename: machine.1.log
Matches: 10
4:[1-3] [INFO] TEST_MEDIUM
5:[1-4] [INFO] TEST_MEDIUM
6:[1-5] [INFO] TEST_MEDIUM
7:[1-6] [INFO] TEST_MEDIUM
8:[1-7] [INFO] TEST_MEDIUM
9:[1-8] [INFO] TEST_MEDIUM
10:[1-9] [INFO] TEST_MEDIUM
11:[1-10] [INFO] TEST_MEDIUM
12:[1-11] [INFO] TEST_MEDIUM
13:[1-12] [INFO] TEST_MEDIUM
Filename: machine.2.log
Matches: 10
4:[2-3] [INFO] TEST_MEDIUM
5:[2-4] [INFO] TEST_MEDIUM
6:[2-5] [INFO] TEST_MEDIUM
7:[2-6] [INFO] TEST_MEDIUM
8:[2-7] [INFO] TEST_MEDIUM
9:[2-8] [INFO] TEST_MEDIUM
10:[2-9] [INFO] TEST_MEDIUM
11:[2-10] [INFO] TEST_MEDIUM
12:[2-11] [INFO] TEST_MEDIUM
13:[2-12] [INFO] TEST_MEDIUM
Filename: machine.3.log
Matches: 10
4:[3-3] [INFO] TEST_MEDIUM
5:[3-4] [INFO] TEST_MEDIUM
6:[3-5] [INFO] TEST_MEDIUM
7:[3-6] [INFO] TEST_MEDIUM
8:[3-7] [INFO] TEST_MEDIUM
9:[3-8] [INFO] TEST_MEDIUM
10:[3-9] [INFO] TEST_MEDIUM
11:[3-10] [INFO] TEST_MEDIUM
12:[3-11] [INFO] TEST_MEDIUM
13:[3-12] [INFO] TEST_MEDIUM
Filename: machine.4.log
Matches: 10
4:[4-3] [INFO] TEST_MEDIUM
5:[4-4] [INFO] TEST_MEDIUM
6:[4-5] [INFO] TEST_MEDIUM
7:[4-6] [INFO] TEST_MEDIUM
8:[4-7] [INFO] TEST_MEDIUM
9:[4-8] [INFO] TEST_MEDIUM
10:[4-9] [INFO] TEST_MEDIUM
11:[4-10] [INFO] TEST_MEDIUM
12:[4-11] [INFO] TEST_MEDIUM
13:[4-12] [INFO] TEST_MEDIUM
Filename: machine.5.log
Matches: 10
4:[5-3] [INFO] TEST_MEDIUM
5:[5-4] [INFO] TEST_MEDIUM
6:[5-5] [INFO] TEST_MEDIUM
7:[5-6] [INFO] TEST_MEDIUM
8:[5-7] [INFO] TEST_MEDIUM
9:[5-8] [INFO] TEST_MEDIUM
10:[5-9] [INFO] TEST_MEDIUM
11:[5-10] [INFO] TEST_MEDIUM
12:[5-11] [INFO] TEST_MEDIUM
13:[5-12] [INFO] TEST_MEDIUM
Filename: machine.6.log
Matches: 10
4:[6-3] [INFO] TEST_MEDIUM
5:[6-4] [INFO] TEST_MEDIUM
6:[6-5] [INFO] TEST_MEDIUM
7:[6-6] [INFO] TEST_MEDIUM
8:[6-7] [INFO] TEST_MEDIUM
9:[6-8] [INFO] TEST_MEDIUM
10:[6-9] [INFO] TEST_MEDIUM
11:[6-10] [INFO] TEST_MEDIUM
12:[6-11] [INFO] TEST_MEDIUM
13:[6-12] [INFO] TEST_MEDIUM
Filename: machine.7.log
Matches: 10
4:[7-3] [INFO] TEST_MEDIUM
5:[7-4] [INFO] TEST_MEDIUM
6:[7-5] [INFO] TEST_MEDIUM
7:[7-6] [INFO] TEST_MEDIUM
8:[7-7] [INFO] TEST_MEDIUM
9:[7-8] [INFO] TEST_MEDIUM
10:[7-9] [INFO] TEST_MEDIUM
11:[7-10] [INFO] TEST_MEDIUM
12:[7-11] [INFO] TEST_MEDIUM
13:[7-12] [INFO] TEST_MEDIUM
Filename: machine.8.log
Matches: 10
4:[8-3] [INFO] TEST_MEDIUM
5:[8-4] [INFO] TEST_MEDIUM
6:[8-5] [INFO] TEST_MEDIUM
7:[8-6] [INFO] TEST_MEDIUM
8:[8-7] [INFO] TEST_MEDIUM
9:[8-8] [INFO] TEST_MEDIUM
10:[8-9] [INFO] TEST_MEDIUM
11:[8-10] [INFO] TEST_MEDIUM
12:[8-11] [INFO] TEST_MEDIUM
13:[8-12] [INFO] TEST_MEDIUM
Filename: machine.9.log
Matches: 10
4:[9-3] [INFO] TEST_MEDIUM
5:[9-4] [INFO] TEST_MEDIUM
6:[9-5] [INFO] TEST_MEDIUM
7:[9-6] [INFO] TEST_MEDIUM
8:[9-7] [INFO] TEST_MEDIUM
9:[9-8] [INFO] TEST_MEDIUM
10:[9-9] [INFO] TEST_MEDIUM
11:[9-10] [INFO] TEST_MEDIUM
12:[9-11] [INFO] TEST_MEDIUM
13:[9-12] [INFO] TEST_MEDIUM
Filename: machine.10.log
Matches: 10
4:[10-3] [INFO] TEST_MEDIUM
5:[10-4] [INFO] TEST_MEDIUM
6:[10-5] [INFO] TEST_MEDIUM
7:[10-6] [INFO] TEST_MEDIUM
8:[10-7] [INFO] TEST_MEDIUM
9:[10-8] [INFO] TEST_MEDIUM
10:[10-9] [INFO] TEST_MEDIUM
11:[10-10] [INFO] TEST_MEDIUM
12:[10-11] [INFO] TEST_MEDIUM
13:[10-12] [INFO] TEST_MEDIUM
=========================== SUMMARY ===========================
machine.1.test.log: 10 matches
machine.2.test.log: 10 matches
machine.3.test.log: 10 matches
machine.4.test.log: 10 matches
machine.5.test.log: 10 matches
machine.6.test.log: 10 matches
machine.7.test.log: 10 matches
machine.8.test.log: 10 matches
machine.9.test.log: 10 matches
machine.10.test.log: 10 matches
Total matches: 100
===============================================================
"""]
#generate log files on all the machines before running this test
print("Generating log files on all machines...")
for i, ip in enumerate(ALL_IPS):
subprocess.run(["ssh", f"asing271@{ip}", f"cd ~/fa26_cs425_.group-mp_.team-01/MP1 && python3 generate_log.py {i + 1} 100"])
#start the server on all the machines before running this test
print("Starting server on all machines...")
for i, ip in enumerate(ALL_IPS):
print(f"Starting server on machine {i + 1} ({ip})...")
subprocess.run(["ssh", f"asing271@{ip}", "cd ~/fa26_cs425_.group-mp_.team-01/MP1 && setsid -f python3 server.py > server.log 2>&1 < /dev/null"])
#ssh into one machine at randome
machine_num = random.randint(1, len(ALL_IPS))
print(f"Running grep command on a {machine_num} random machine...")
for i in tests:
result = subprocess.run(["ssh", f"asing271@{ALL_IPS[machine_num - 1]}", f"cd ~/fa26_cs425_.group-mp_.team-01/MP1 && grepp {i} -t"], capture_output=True, text=True)
if result.stdout.strip() == results[tests.index(i)].strip():
print(f"PASS {i} test")
else:
print(f"FAIL {i} test")
#delete log files on all the machines after running this test
print("Deleting log files on all machines...")
for i, ip in enumerate(ALL_IPS):
subprocess.run(["ssh", f"asing271@{ip}", "cd ~/fa26_cs425_.group-mp_.team-01/MP1 && rm -f ./machine.*.test.log"])