#1595: fix poorly merged tests + files
This commit is contained in:
@@ -73,8 +73,8 @@ class HardCodedAgentSessionABC(AgentSessionABC):
|
|||||||
self._env.set_as_eval() # noqa
|
self._env.set_as_eval() # noqa
|
||||||
self.is_eval = True
|
self.is_eval = True
|
||||||
|
|
||||||
time_steps = self._training_config.num_steps
|
time_steps = self._training_config.num_eval_steps
|
||||||
episodes = self._training_config.num_episodes
|
episodes = self._training_config.num_eval_episodes
|
||||||
|
|
||||||
obs = self._env.reset()
|
obs = self._env.reset()
|
||||||
for episode in range(episodes):
|
for episode in range(episodes):
|
||||||
|
|||||||
@@ -7,6 +7,14 @@
|
|||||||
# "CUSTOM" (Custom Agent)
|
# "CUSTOM" (Custom Agent)
|
||||||
agent_framework: CUSTOM
|
agent_framework: CUSTOM
|
||||||
|
|
||||||
|
# Sets which deep learning framework will be used (by RLlib ONLY).
|
||||||
|
# Default is TF (Tensorflow).
|
||||||
|
# Options are:
|
||||||
|
# "TF" (Tensorflow)
|
||||||
|
# TF2 (Tensorflow 2.X)
|
||||||
|
# TORCH (PyTorch)
|
||||||
|
deep_learning_framework: TF2
|
||||||
|
|
||||||
# Sets which Agent class will be used.
|
# Sets which Agent class will be used.
|
||||||
# Options are:
|
# Options are:
|
||||||
# "A2C" (Advantage Actor Critic coupled with either SB3 or RLLIB agent_framework)
|
# "A2C" (Advantage Actor Critic coupled with either SB3 or RLLIB agent_framework)
|
||||||
@@ -17,32 +25,78 @@ agent_framework: CUSTOM
|
|||||||
# "DUMMY" (primaite.agents.simple.DummyAgent)
|
# "DUMMY" (primaite.agents.simple.DummyAgent)
|
||||||
agent_identifier: DUMMY
|
agent_identifier: DUMMY
|
||||||
|
|
||||||
|
# Sets whether Red Agent POL and IER is randomised.
|
||||||
|
# Options are:
|
||||||
|
# True
|
||||||
|
# False
|
||||||
|
random_red_agent: False
|
||||||
|
|
||||||
|
# The (integer) seed to be used in random number generation
|
||||||
|
# Default is None (null)
|
||||||
|
seed: null
|
||||||
|
|
||||||
|
# Set whether the agent will be deterministic instead of stochastic
|
||||||
|
# Options are:
|
||||||
|
# True
|
||||||
|
# False
|
||||||
|
deterministic: False
|
||||||
|
|
||||||
|
# Sets what view of the environment the deterministic hardcoded agent has. The default is BASIC.
|
||||||
|
# Options are:
|
||||||
|
# "BASIC" (The current observation space only)
|
||||||
|
# "FULL" (Full environment view with actions taken and reward feedback)
|
||||||
|
hard_coded_agent_view: FULL
|
||||||
|
|
||||||
# Sets How the Action Space is defined:
|
# Sets How the Action Space is defined:
|
||||||
# "NODE"
|
# "NODE"
|
||||||
# "ACL"
|
# "ACL"
|
||||||
# "ANY" node and acl actions
|
# "ANY" node and acl actions
|
||||||
action_type: NODE
|
action_type: NODE
|
||||||
|
# observation space
|
||||||
|
observation_space:
|
||||||
|
# flatten: true
|
||||||
|
components:
|
||||||
|
- name: NODE_LINK_TABLE
|
||||||
|
# - name: NODE_STATUSES
|
||||||
|
# - name: LINK_TRAFFIC_LEVELS
|
||||||
|
|
||||||
|
|
||||||
|
# Number of episodes for training to run per session
|
||||||
|
num_train_episodes: 10
|
||||||
|
|
||||||
|
# Number of time_steps for training per episode
|
||||||
|
num_train_steps: 256
|
||||||
|
|
||||||
# Number of episodes for evaluation to run per session
|
# Number of episodes for evaluation to run per session
|
||||||
num_eval_episodes: 1
|
num_eval_episodes: 1
|
||||||
|
|
||||||
# Number of time_steps for evaluation per episode
|
# Number of time_steps for evaluation per episode
|
||||||
num_eval_steps: 15
|
num_eval_steps: 15
|
||||||
# Time delay between steps (for generic agents)
|
|
||||||
time_delay: 1
|
|
||||||
|
|
||||||
# Type of session to be run (TRAINING or EVALUATION)
|
# Sets how often the agent will save a checkpoint (every n time episodes).
|
||||||
|
# Set to 0 if no checkpoints are required. Default is 10
|
||||||
|
checkpoint_every_n_episodes: 10
|
||||||
|
|
||||||
|
# Time delay (milliseconds) between steps for CUSTOM agents.
|
||||||
|
time_delay: 5
|
||||||
|
|
||||||
|
# Type of session to be run. Options are:
|
||||||
|
# "TRAIN" (Trains an agent)
|
||||||
|
# "EVAL" (Evaluates an agent)
|
||||||
|
# "TRAIN_EVAL" (Trains then evaluates an agent)
|
||||||
session_type: EVAL
|
session_type: EVAL
|
||||||
# Determine whether to load an agent from file
|
|
||||||
load_agent: False
|
|
||||||
# File path and file name of agent if you're loading one in
|
|
||||||
agent_load_file: C:\[Path]\[agent_saved_filename.zip]
|
|
||||||
|
|
||||||
# Environment config values
|
# Environment config values
|
||||||
# The high value for the observation space
|
# The high value for the observation space
|
||||||
observation_space_high_value: 1000000000
|
observation_space_high_value: 1000000000
|
||||||
|
|
||||||
|
# The Stable Baselines3 learn/eval output verbosity level:
|
||||||
|
# Options are:
|
||||||
|
# "NONE" (No Output)
|
||||||
|
# "INFO" (Info Messages (such as devices and wrappers used))
|
||||||
|
# "DEBUG" (All Messages)
|
||||||
|
sb3_output_verbose_level: NONE
|
||||||
|
|
||||||
# Reward values
|
# Reward values
|
||||||
# Generic
|
# Generic
|
||||||
all_ok: 0
|
all_ok: 0
|
||||||
|
|||||||
@@ -5,7 +5,15 @@
|
|||||||
# "SB3" (Stable Baselines3)
|
# "SB3" (Stable Baselines3)
|
||||||
# "RLLIB" (Ray RLlib)
|
# "RLLIB" (Ray RLlib)
|
||||||
# "CUSTOM" (Custom Agent)
|
# "CUSTOM" (Custom Agent)
|
||||||
agent_framework: CUSTOM
|
agent_framework: SB3
|
||||||
|
|
||||||
|
# Sets which deep learning framework will be used (by RLlib ONLY).
|
||||||
|
# Default is TF (Tensorflow).
|
||||||
|
# Options are:
|
||||||
|
# "TF" (Tensorflow)
|
||||||
|
# TF2 (Tensorflow 2.X)
|
||||||
|
# TORCH (PyTorch)
|
||||||
|
deep_learning_framework: TF2
|
||||||
|
|
||||||
# Sets which Agent class will be used.
|
# Sets which Agent class will be used.
|
||||||
# Options are:
|
# Options are:
|
||||||
@@ -15,7 +23,7 @@ agent_framework: CUSTOM
|
|||||||
# "DO_NOTHING" (The DoNothing agents coupled with an ACL or NODE action_type)
|
# "DO_NOTHING" (The DoNothing agents coupled with an ACL or NODE action_type)
|
||||||
# "RANDOM" (primaite.agents.simple.RandomAgent)
|
# "RANDOM" (primaite.agents.simple.RandomAgent)
|
||||||
# "DUMMY" (primaite.agents.simple.DummyAgent)
|
# "DUMMY" (primaite.agents.simple.DummyAgent)
|
||||||
agent_identifier: DUMMY
|
agent_identifier: PPO
|
||||||
|
|
||||||
# Sets whether Red Agent POL and IER is randomised.
|
# Sets whether Red Agent POL and IER is randomised.
|
||||||
# Options are:
|
# Options are:
|
||||||
@@ -23,92 +31,128 @@ agent_identifier: DUMMY
|
|||||||
# False
|
# False
|
||||||
random_red_agent: True
|
random_red_agent: True
|
||||||
|
|
||||||
|
# The (integer) seed to be used in random number generation
|
||||||
|
# Default is None (null)
|
||||||
|
seed: null
|
||||||
|
|
||||||
|
# Set whether the agent will be deterministic instead of stochastic
|
||||||
|
# Options are:
|
||||||
|
# True
|
||||||
|
# False
|
||||||
|
deterministic: False
|
||||||
|
|
||||||
|
# Sets what view of the environment the deterministic hardcoded agent has. The default is BASIC.
|
||||||
|
# Options are:
|
||||||
|
# "BASIC" (The current observation space only)
|
||||||
|
# "FULL" (Full environment view with actions taken and reward feedback)
|
||||||
|
hard_coded_agent_view: FULL
|
||||||
|
|
||||||
# Sets How the Action Space is defined:
|
# Sets How the Action Space is defined:
|
||||||
# "NODE"
|
# "NODE"
|
||||||
# "ACL"
|
# "ACL"
|
||||||
# "ANY" node and acl actions
|
# "ANY" node and acl actions
|
||||||
action_type: NODE
|
action_type: NODE
|
||||||
|
# observation space
|
||||||
|
observation_space:
|
||||||
|
# flatten: true
|
||||||
|
components:
|
||||||
|
- name: NODE_LINK_TABLE
|
||||||
|
# - name: NODE_STATUSES
|
||||||
|
# - name: LINK_TRAFFIC_LEVELS
|
||||||
|
|
||||||
|
|
||||||
# Number of episodes for training to run per session
|
# Number of episodes for training to run per session
|
||||||
num_train_episodes: 2
|
num_train_episodes: 10
|
||||||
|
|
||||||
# Number of time_steps for training per episode
|
# Number of time_steps for training per episode
|
||||||
num_train_steps: 15
|
num_train_steps: 256
|
||||||
|
|
||||||
# Number of episodes for evaluation to run per session
|
# Number of episodes for evaluation to run per session
|
||||||
num_eval_episodes: 2
|
num_eval_episodes: 1
|
||||||
|
|
||||||
# Number of time_steps for evaluation per episode
|
# Number of time_steps for evaluation per episode
|
||||||
num_eval_steps: 15
|
num_eval_steps: 256
|
||||||
# Time delay between steps (for generic agents)
|
|
||||||
time_delay: 1
|
|
||||||
|
|
||||||
# Type of session to be run (TRAINING or EVALUATION)
|
# Sets how often the agent will save a checkpoint (every n time episodes).
|
||||||
session_type: EVAL
|
# Set to 0 if no checkpoints are required. Default is 10
|
||||||
# Determine whether to load an agent from file
|
checkpoint_every_n_episodes: 10
|
||||||
load_agent: False
|
|
||||||
# File path and file name of agent if you're loading one in
|
# Time delay (milliseconds) between steps for CUSTOM agents.
|
||||||
agent_load_file: C:\[Path]\[agent_saved_filename.zip]
|
time_delay: 5
|
||||||
|
|
||||||
|
# Type of session to be run. Options are:
|
||||||
|
# "TRAIN" (Trains an agent)
|
||||||
|
# "EVAL" (Evaluates an agent)
|
||||||
|
# "TRAIN_EVAL" (Trains then evaluates an agent)
|
||||||
|
session_type: TRAIN_EVAL
|
||||||
|
|
||||||
# Environment config values
|
# Environment config values
|
||||||
# The high value for the observation space
|
# The high value for the observation space
|
||||||
observation_space_high_value: 1000000000
|
observation_space_high_value: 1000000000
|
||||||
|
|
||||||
|
# The Stable Baselines3 learn/eval output verbosity level:
|
||||||
|
# Options are:
|
||||||
|
# "NONE" (No Output)
|
||||||
|
# "INFO" (Info Messages (such as devices and wrappers used))
|
||||||
|
# "DEBUG" (All Messages)
|
||||||
|
sb3_output_verbose_level: NONE
|
||||||
|
|
||||||
# Reward values
|
# Reward values
|
||||||
# Generic
|
# Generic
|
||||||
all_ok: 0
|
all_ok: 0
|
||||||
# Node Hardware State
|
# Node Hardware State
|
||||||
off_should_be_on: -10
|
off_should_be_on: -0.001
|
||||||
off_should_be_resetting: -5
|
off_should_be_resetting: -0.0005
|
||||||
on_should_be_off: -2
|
on_should_be_off: -0.0002
|
||||||
on_should_be_resetting: -5
|
on_should_be_resetting: -0.0005
|
||||||
resetting_should_be_on: -5
|
resetting_should_be_on: -0.0005
|
||||||
resetting_should_be_off: -2
|
resetting_should_be_off: -0.0002
|
||||||
resetting: -3
|
resetting: -0.0003
|
||||||
# Node Software or Service State
|
# Node Software or Service State
|
||||||
good_should_be_patching: 2
|
good_should_be_patching: 0.0002
|
||||||
good_should_be_compromised: 5
|
good_should_be_compromised: 0.0005
|
||||||
good_should_be_overwhelmed: 5
|
good_should_be_overwhelmed: 0.0005
|
||||||
patching_should_be_good: -5
|
patching_should_be_good: -0.0005
|
||||||
patching_should_be_compromised: 2
|
patching_should_be_compromised: 0.0002
|
||||||
patching_should_be_overwhelmed: 2
|
patching_should_be_overwhelmed: 0.0002
|
||||||
patching: -3
|
patching: -0.0003
|
||||||
compromised_should_be_good: -20
|
compromised_should_be_good: -0.002
|
||||||
compromised_should_be_patching: -20
|
compromised_should_be_patching: -0.002
|
||||||
compromised_should_be_overwhelmed: -20
|
compromised_should_be_overwhelmed: -0.002
|
||||||
compromised: -20
|
compromised: -0.002
|
||||||
overwhelmed_should_be_good: -20
|
overwhelmed_should_be_good: -0.002
|
||||||
overwhelmed_should_be_patching: -20
|
overwhelmed_should_be_patching: -0.002
|
||||||
overwhelmed_should_be_compromised: -20
|
overwhelmed_should_be_compromised: -0.002
|
||||||
overwhelmed: -20
|
overwhelmed: -0.002
|
||||||
# Node File System State
|
# Node File System State
|
||||||
good_should_be_repairing: 2
|
good_should_be_repairing: 0.0002
|
||||||
good_should_be_restoring: 2
|
good_should_be_restoring: 0.0002
|
||||||
good_should_be_corrupt: 5
|
good_should_be_corrupt: 0.0005
|
||||||
good_should_be_destroyed: 10
|
good_should_be_destroyed: 0.001
|
||||||
repairing_should_be_good: -5
|
repairing_should_be_good: -0.0005
|
||||||
repairing_should_be_restoring: 2
|
repairing_should_be_restoring: 0.0002
|
||||||
repairing_should_be_corrupt: 2
|
repairing_should_be_corrupt: 0.0002
|
||||||
repairing_should_be_destroyed: 0
|
repairing_should_be_destroyed: 0.0000
|
||||||
repairing: -3
|
repairing: -0.0003
|
||||||
restoring_should_be_good: -10
|
restoring_should_be_good: -0.001
|
||||||
restoring_should_be_repairing: -2
|
restoring_should_be_repairing: -0.0002
|
||||||
restoring_should_be_corrupt: 1
|
restoring_should_be_corrupt: 0.0001
|
||||||
restoring_should_be_destroyed: 2
|
restoring_should_be_destroyed: 0.0002
|
||||||
restoring: -6
|
restoring: -0.0006
|
||||||
corrupt_should_be_good: -10
|
corrupt_should_be_good: -0.001
|
||||||
corrupt_should_be_repairing: -10
|
corrupt_should_be_repairing: -0.001
|
||||||
corrupt_should_be_restoring: -10
|
corrupt_should_be_restoring: -0.001
|
||||||
corrupt_should_be_destroyed: 2
|
corrupt_should_be_destroyed: 0.0002
|
||||||
corrupt: -10
|
corrupt: -0.001
|
||||||
destroyed_should_be_good: -20
|
destroyed_should_be_good: -0.002
|
||||||
destroyed_should_be_repairing: -20
|
destroyed_should_be_repairing: -0.002
|
||||||
destroyed_should_be_restoring: -20
|
destroyed_should_be_restoring: -0.002
|
||||||
destroyed_should_be_corrupt: -20
|
destroyed_should_be_corrupt: -0.002
|
||||||
destroyed: -20
|
destroyed: -0.002
|
||||||
scanning: -2
|
scanning: -0.0002
|
||||||
# IER status
|
# IER status
|
||||||
red_ier_running: -5
|
red_ier_running: -0.0005
|
||||||
green_ier_blocked: -10
|
green_ier_blocked: -0.001
|
||||||
|
|
||||||
# Patching / Reset durations
|
# Patching / Reset durations
|
||||||
os_patching_duration: 5 # The time taken to patch the OS
|
os_patching_duration: 5 # The time taken to patch the OS
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ class TempPrimaiteSession(PrimaiteSession):
|
|||||||
|
|
||||||
def __exit__(self, type, value, tb):
|
def __exit__(self, type, value, tb):
|
||||||
shutil.rmtree(self.session_path)
|
shutil.rmtree(self.session_path)
|
||||||
shutil.rmtree(self.session_path.parent)
|
|
||||||
_LOGGER.debug(f"Deleted temp session directory: {self.session_path}")
|
_LOGGER.debug(f"Deleted temp session directory: {self.session_path}")
|
||||||
|
|
||||||
|
|
||||||
@@ -114,7 +113,7 @@ def temp_primaite_session(request):
|
|||||||
"""
|
"""
|
||||||
training_config_path = request.param[0]
|
training_config_path = request.param[0]
|
||||||
lay_down_config_path = request.param[1]
|
lay_down_config_path = request.param[1]
|
||||||
with patch("primaite.agents.agent.get_session_path", get_temp_session_path) as mck:
|
with patch("primaite.agents.agent_abc.get_session_path", get_temp_session_path) as mck:
|
||||||
mck.session_timestamp = datetime.now()
|
mck.session_timestamp = datetime.now()
|
||||||
|
|
||||||
return TempPrimaiteSession(training_config_path, lay_down_config_path)
|
return TempPrimaiteSession(training_config_path, lay_down_config_path)
|
||||||
|
|||||||
Reference in New Issue
Block a user