315 lines
7.7 KiB
Python
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("PASS {i} test")
|
|
else:
|
|
print("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"])
|