test_6_cooldown.pyโข4.82 kB
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
๐ ํ
์คํธ 6: Cooldown ํ
์คํธ
ํด์ปคํค ํ์ ์๊ตฌ์ฌํญ:
- --boss_alertness_cooldown ํ๋ผ๋ฏธํฐ์ ๋ฐ๋ฅธ Boss Alert Level ๊ฐ์ ํ์ธ
- ์ง์ ๋ ์ฃผ๊ธฐ๋ง๋ค 1ํฌ์ธํธ์ฉ ๊ฐ์ํ๋ ๋ฉ์ปค๋์ฆ ๊ฒ์ฆ
"""
import sys
import os
import time
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from base_validator import BaseValidator
class CooldownTest(BaseValidator):
"""Cooldown ํ
์คํธ"""
def test_cooldown(self):
"""ํ
์คํธ 6: Cooldown ํ
์คํธ"""
self.print_header("ํ
์คํธ 6: Boss Alert Level Cooldown ํ
์คํธ")
# ์งง์ cooldown์ผ๋ก ์์
if not self.start_server(boss_alertness=100, cooldown=10):
self.print_test("์๋ฒ ์์ (cooldown=10)", False)
return False
if not self.initialize_server():
self.print_test("์๋ฒ ์ด๊ธฐํ", False)
self.cleanup()
return False
# Boss Alert Level ์ฌ๋ฆฌ๊ธฐ (boss_alertness=100์ด๋ฏ๋ก ํญ์ ์์น)
print(" [INFO] Boss Alert Level์ ์์น์ํค๋ ์ค...")
for i in range(3):
response_text = self.call_tool("coffee_mission")
if response_text:
valid, data = self.validate_response_format(response_text)
if valid:
boss_level = data["boss_alert_level"]
self.print_test(f"Boss Alert ์์น {i+1}", True, f"Level: {boss_level}")
else:
self.print_test(f"Boss Alert ์์น {i+1}", False, "์๋ต ํ์ฑ ์คํจ")
else:
self.print_test(f"Boss Alert ์์น {i+1}", False, "์๋ต ์์")
time.sleep(0.5) # ๊ฐ ํธ์ถ ์ฌ์ด์ ์ ์ ๋๊ธฐ
# ์ด๊ธฐ Boss Alert Level ์ธก์
response_text = self.call_tool("take_a_break")
if not response_text:
self.print_test("์ด๊ธฐ Boss Alert ์ธก์ ", False, "์๋ต ์์")
self.cleanup()
return False
valid, data = self.validate_response_format(response_text)
if not valid:
self.print_test("์ด๊ธฐ Boss Alert ์ธก์ ", False, "์๋ต ํ์ฑ ์คํจ")
self.cleanup()
return False
initial_boss = data["boss_alert_level"]
self.print_test("์ด๊ธฐ Boss Alert ์ธก์ ", True, f"Level: {initial_boss}")
# 15์ด ๋๊ธฐ (cooldown=10์ด + ์ฌ์ ) - ๋๊ตฌ ํธ์ถ ์์ด ๋๊ธฐ
print(" [INFO] 15์ด ๋๊ธฐ ์ค (Cooldown ๋์ ํ์ธ)...")
print(" [INFO] ๋๊ธฐ ์ค์๋ ๋๊ตฌ๋ฅผ ํธ์ถํ์ง ์์ต๋๋ค.")
time.sleep(15)
# ๋๊ธฐ ํ Boss Alert Level ํ์ธ
print(" [INFO] Cooldown ํ Boss Alert Level ํ์ธ ์ค...")
response_text = self.call_tool("take_a_break")
if response_text:
valid, data = self.validate_response_format(response_text)
if valid:
final_boss = data["boss_alert_level"]
# ์ด์ cooldown์ด ์๋ํ์ด์ผ ํจ (๋๊ตฌ ํธ์ถ๋ก ์ธํ ์ฆ๊ฐ๋ 1ํฌ์ธํธ๋ง)
# cooldown์ด ์๋ํ๋ค๋ฉด Boss Alert Level์ด ๊ฐ์ํ์ด์ผ ํจ
decreased = final_boss < initial_boss
self.print_test("Boss Alert Level ๋ณํ", True,
f"{initial_boss} โ {final_boss}")
if decreased:
self.print_test("Cooldown ๋ฉ์ปค๋์ฆ", True, "์ ์ ๋์ - Boss Alert Level ๊ฐ์ ํ์ธ")
else:
# ๋๊ตฌ ํธ์ถ๋ก ์ธํด 1ํฌ์ธํธ ์ฆ๊ฐํ์ ์ ์์
increase_amount = final_boss - initial_boss
if increase_amount <= 1:
self.print_test("Cooldown ๋ฉ์ปค๋์ฆ", True, f"์ ์ ๋์ - ์ต์ ์ฆ๊ฐ ({increase_amount}ํฌ์ธํธ)")
else:
self.print_test("Cooldown ๋ฉ์ปค๋์ฆ", False, f"๋น์ ์ - ๊ณผ๋ํ ์ฆ๊ฐ ({increase_amount}ํฌ์ธํธ)")
else:
self.print_test("์ต์ข
์๋ต ํ์ฑ", False, "ํ์ฑ ์คํจ")
else:
self.print_test("์ต์ข
๋๊ตฌ ํธ์ถ", False, "์๋ต ์์")
self.cleanup()
return True
def run_test(self):
"""ํ
์คํธ ์คํ"""
print("\n" + "="*70)
print(" [TEST] ํ
์คํธ 6: Cooldown ํ
์คํธ")
print(" Boss Alert Level ์๋ ๊ฐ์ ํ์ธ")
print("="*70)
success = self.test_cooldown()
return self.print_final_result("ํ
์คํธ 6: Cooldown")
if __name__ == "__main__":
test = CooldownTest()
success = test.run_test()
sys.exit(0 if success else 1)