Merge remote-tracking branch 'devops/bugfix/episode-length-and-rewards' into feature/2085-dump_describe_state
This commit is contained in:
72
sandbox.py
72
sandbox.py
@@ -1,72 +0,0 @@
|
||||
from primaite.config.load import example_config_path, load
|
||||
from primaite.session.session import PrimaiteSession
|
||||
from primaite.simulator.system.applications.database_client import DatabaseClient
|
||||
from primaite.simulator.system.applications.web_browser import WebBrowser
|
||||
from primaite.simulator.system.services.dns.dns_client import DNSClient
|
||||
|
||||
cfg = load(example_config_path())
|
||||
session = PrimaiteSession.from_config(cfg)
|
||||
network = session.game.simulation.network
|
||||
|
||||
dc = network.get_node_by_hostname("domain_controller")
|
||||
router = network.get_node_by_hostname("router_1")
|
||||
client_1 = network.get_node_by_hostname("client_1")
|
||||
client_2 = network.get_node_by_hostname("client_2")
|
||||
switch_1 = network.get_node_by_hostname("switch_1")
|
||||
switch_2 = network.get_node_by_hostname("switch_2")
|
||||
web_server = network.get_node_by_hostname("web_server")
|
||||
|
||||
dns_server = dc.software_manager.software["DNSServer"]
|
||||
dns_client: DNSClient = client_2.software_manager.software["DNSClient"]
|
||||
web_db_client: DatabaseClient = web_server.software_manager.software["DatabaseClient"]
|
||||
web_browser: WebBrowser = client_2.software_manager.software["WebBrowser"]
|
||||
|
||||
# print("before calling get webpage")
|
||||
# router.acl.show()
|
||||
# dns_server.show()
|
||||
# client_2.arp.show()
|
||||
# router.arp.show()
|
||||
# print()
|
||||
|
||||
# print("can get webpage", client_2.software_manager.software["WebBrowser"].get_webpage())
|
||||
# print("after calling get webpage")
|
||||
# router.acl.show()
|
||||
# dns_server.show()
|
||||
# client_2.arp.show()
|
||||
# router.arp.show()
|
||||
# print()
|
||||
# print("reset")
|
||||
# print()
|
||||
# print("im gonna reset")
|
||||
# print()
|
||||
|
||||
# web_db_client.connect()
|
||||
# web_db_client.run()
|
||||
# web_browser.run()
|
||||
# print("client_2", client_2.operating_state)
|
||||
# print("web_browser", web_browser.operating_state)
|
||||
# print("can get webpage", client_2.software_manager.software["WebBrowser"].get_webpage())
|
||||
session.game.reset()
|
||||
print("can get webpage", client_2.software_manager.software["WebBrowser"].get_webpage())
|
||||
session.game.reset()
|
||||
print("can get webpage", client_2.software_manager.software["WebBrowser"].get_webpage())
|
||||
session.game.reset()
|
||||
print("can get webpage", client_2.software_manager.software["WebBrowser"].get_webpage())
|
||||
session.game.reset()
|
||||
print("can get webpage", client_2.software_manager.software["WebBrowser"].get_webpage())
|
||||
# print()
|
||||
#
|
||||
# print("before calling get webpage")
|
||||
# router.acl.show()
|
||||
# dns_server.show()
|
||||
# client_2.arp.show()
|
||||
# router.arp.show()
|
||||
# print()
|
||||
#
|
||||
# print("can get webpage", client_2.software_manager.software["WebBrowser"].get_webpage())
|
||||
# print("after calling get webpage")
|
||||
# router.acl.show()
|
||||
# dns_server.show()
|
||||
# client_2.arp.show()
|
||||
# router.arp.show()
|
||||
# print()
|
||||
@@ -51,14 +51,13 @@ class SB3Policy(PolicyABC, identifier="SB3"):
|
||||
|
||||
def eval(self, n_episodes: int, deterministic: bool) -> None:
|
||||
"""Evaluate the agent."""
|
||||
reward_data = evaluate_policy(
|
||||
_ = evaluate_policy(
|
||||
self._agent,
|
||||
self.session.env,
|
||||
n_eval_episodes=n_episodes,
|
||||
deterministic=deterministic,
|
||||
return_episode_rewards=True,
|
||||
)
|
||||
print(reward_data)
|
||||
|
||||
def save(self, save_path: Path) -> None:
|
||||
"""
|
||||
|
||||
@@ -76,7 +76,7 @@ class WebBrowser(Application):
|
||||
def reset_component_for_episode(self, episode: int):
|
||||
"""Reset the original state of the SimComponent."""
|
||||
|
||||
def get_webpage(self) -> bool:
|
||||
def get_webpage(self, url: Optional[str] = None) -> bool:
|
||||
"""
|
||||
Retrieve the webpage.
|
||||
|
||||
@@ -85,7 +85,7 @@ class WebBrowser(Application):
|
||||
:param: url: The address of the web page the browser requests
|
||||
:type: url: str
|
||||
"""
|
||||
url = self.target_url
|
||||
url = url or self.target_url
|
||||
if not self._can_perform_action():
|
||||
return False
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ class DatabaseService(Service):
|
||||
|
||||
def reset_component_for_episode(self, episode: int):
|
||||
"""Reset the original state of the SimComponent."""
|
||||
print("Resetting DatabaseService original state on node {self.software_manager.node.hostname}")
|
||||
_LOGGER.debug("Resetting DatabaseService original state on node {self.software_manager.node.hostname}")
|
||||
self.connections.clear()
|
||||
super().reset_component_for_episode(episode)
|
||||
|
||||
|
||||
@@ -47,7 +47,6 @@ class WebServer(Service):
|
||||
state["last_response_status_code"] = (
|
||||
self.last_response_status_code.value if isinstance(self.last_response_status_code, HttpStatusCode) else None
|
||||
)
|
||||
print(state)
|
||||
return state
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
|
||||
@@ -76,6 +76,10 @@ class TestPrimaiteSession:
|
||||
with pytest.raises(pydantic.ValidationError):
|
||||
session = TempPrimaiteSession.from_config(MISCONFIGURED_PATH)
|
||||
|
||||
@pytest.mark.skip(
|
||||
reason="Currently software cannot be dynamically created/destroyed during simulation. Therefore, "
|
||||
"reset doesn't implement software restore."
|
||||
)
|
||||
@pytest.mark.parametrize("temp_primaite_session", [[CFG_PATH]], indirect=True)
|
||||
def test_session_sim_reset(self, temp_primaite_session):
|
||||
with temp_primaite_session as session:
|
||||
|
||||
@@ -27,10 +27,11 @@ def test_web_page_get_users_page_request_with_domain_name(uc2_network):
|
||||
web_client: WebBrowser = client_1.software_manager.software["WebBrowser"]
|
||||
web_client.run()
|
||||
assert web_client.operating_state == ApplicationOperatingState.RUNNING
|
||||
web_client.target_url = "http://arcd.com/users/"
|
||||
|
||||
assert web_client.get_webpage() is True
|
||||
|
||||
# latest reponse should have status code 200
|
||||
# latest response should have status code 200
|
||||
assert web_client.latest_response is not None
|
||||
assert web_client.latest_response.status_code == HttpStatusCode.OK
|
||||
|
||||
|
||||
Reference in New Issue
Block a user