Commit Graph

187 Commits

Author SHA1 Message Date
Marek Wolan
fec44aef53 Rename connect_nodes to connect and fix minor bug 2023-08-24 13:03:16 +01:00
Marek Wolan
78008e3c6e Fix container test 2023-08-24 12:52:38 +01:00
Marek Wolan
7058c7e9a8 Rename networkcontainer to network 2023-08-24 12:41:46 +01:00
Marek Wolan
a818de8f01 Add ability to connect nodes via the network. 2023-08-24 12:40:00 +01:00
Marek Wolan
4077eb3a5c Add tests for network node adding/removal 2023-08-24 10:26:17 +01:00
Marek Wolan
6ca53803cd Describe state 2023-08-17 15:32:12 +01:00
Czar Echavez
d972fcc07e Merged PR 164: File System Class setup fixing tests
## Summary
Attempting to fix a test which seems to be broken when integrated with https://dev.azure.com/ma-dev-uk/PrimAITE/_git/PrimAITE/pullrequest/160

## Test process
*How have you tested this (if applicable)?*

## Checklist
- [x] This PR is linked to a **work item**
- [x] I have performed **self-review** of the code
- [x] I have written **tests** for any new functionality added with this PR
- [ ] I have updated the **documentation** if this PR changes or adds functionality
- [ ] I have written/updated **design docs** if this PR implements new functionality.
- [x] I have run **pre-commit** checks for code style

#1714: fixing minor error in test + adding a check for existing uuid when adding file

Related work items: #1714
2023-08-14 08:27:09 +00:00
Chris McCarthy
b902d945ee Merge remote-tracking branch 'devops/dev' into feature/1706_node_class_and_node_type_subclasses
# Conflicts:
#	CHANGELOG.md
#	src/primaite/simulator/core.py
2023-08-10 13:29:14 +01:00
Marek Wolan
e24d4b8890 Fix typo in test 2023-08-10 09:14:45 +01:00
Chris McCarthy
ad81a81949 #1706 - Applied some code suggestions from the PR 2023-08-09 20:38:45 +01:00
Marek Wolan
34ff9abd7a Apply changes from code review. 2023-08-09 15:55:28 +01:00
Marek Wolan
596bbaacde Change enum strings to uppercase 2023-08-09 12:06:06 +01:00
Czar Echavez
572f457231 #1714: fixing minor error in test + adding a check for existing uuid when adding file 2023-08-09 11:19:58 +01:00
Marek Wolan
1de8e0a058 Update tests 2023-08-09 09:19:11 +01:00
Marek Wolan
a3c2ae6c7d Merge dev into feature/1716-accounts-and-groups 2023-08-09 09:18:06 +01:00
Chris McCarthy
9fbc3c91f7 #1706 - Finished up the Node and Switch MVP. Added full extensive documentation on what's happening at each step. 2023-08-08 20:22:18 +01:00
Chris McCarthy
4e4c2b501a Merge remote-tracking branch 'devops/dev' into feature/1706_node_class_and_node_type_subclasses
# Conflicts:
#	tests/unit_tests/_primaite/_simulator/test_core.py
2023-08-08 20:05:11 +01:00
Chris McCarthy
139d739732 #1706 - Tidies up the sysLog ARPCache, and ICMP classes and integrated them into the Node. Tidied up the base implementation of SoftwareManager and SessionManager. Tidies up the public API for Services and Applications. Added the SwitchPort and Switch classes. Added a basic test in test_frame_transmission.py that tests sending a frame from one node to another across a multi-switch network. 2023-08-07 19:33:52 +01:00
Czar Echavez
a4c193cd34 #1714: apply recommended changes with removing get methods and using the properties directly 2023-08-07 16:20:55 +01:00
Czar Echavez
554619e4b4 #1714: conver file and folder lists to dicts + fixing and adding a few more tests 2023-08-07 14:49:59 +01:00
Czar Echavez
b58a3a3e24 #1714: FileSystemItem is no longer an abstract base class + Added enums and enum sizes + stream lined FileSystemFile init 2023-08-07 11:52:54 +01:00
Marek Wolan
f0d7e03fd7 Add docs and tests 2023-08-07 10:55:29 +01:00
Czar Echavez
028211d288 #1714: update to use objects instead of uuids + tests 2023-08-07 09:34:59 +01:00
Marek Wolan
ac9b83cc42 Merge remote-tracking branch 'origin/dev' into feature/1716-accounts-and-groups 2023-08-07 09:15:35 +01:00
Czar Echavez
46c70ac084 #1714: refactor private attributes and made them public + serialisation tests 2023-08-03 22:20:14 +01:00
Chris McCarthy
04f1cb0dc6 #1706 - Got the code services, application, and process base classes stubbed out. Need them now so that I can leverage them for core node services required. 2023-08-03 21:30:13 +01:00
Marek Wolan
2a680c1e48 Test my validators 2023-08-03 16:26:33 +01:00
Chris McCarthy
cac4779244 #1706 - Started adding the core node software required by all nodes. Made some tweaks to the Frame to have send and receive timestamp. 2023-08-03 14:37:55 +01:00
Czar Echavez
b08683fcd3 #1714: fix tests 2023-08-03 12:42:16 +01:00
Czar Echavez
483fa7d841 Merge branch 'dev' into feature/1714-file-system-file-system-folder-and-file-system-file-class-skeletons 2023-08-03 12:15:08 +01:00
Czar Echavez
a0356a7fbc #1714: updated file system classes 2023-08-03 12:14:11 +01:00
Chris McCarthy
897dbdf10c #1706 - Got the core Node class build and working with ARP and the ability to ping another node. Added some basic tests in. Next job is to create the Node subclasses. Then move ARP and ICMP into a service that is used by all nodes. 2023-08-02 21:54:21 +01:00
Chris McCarthy
95f5515d69 #1724 - Added documentation for the transport layer down to data link layer 2023-08-02 12:12:08 +01:00
Chris McCarthy
9d17a9b0d3 #1724 - Added the primaite/simulator/network/transmission sub-package with modules for each layer. They come together to build a minimal but fairly realistic network Frame. A custom PrimaiteHeader has been included to hold primaite specific metadata required in transmission for reward function and RL agent downstream. Added some basic tests that check the proper configuration of Frames with matching headers for protocols. Updated the frame typehints in NIC and Link classes. 2023-08-01 22:25:00 +01:00
Czar Echavez
841aafd259 Merge branch 'dev' into feature/1714-file-system-file-system-folder-and-file-system-file-class-skeletons 2023-08-01 16:20:08 +01:00
Czar Echavez
ea8c65a17e #1714: set up files 2023-08-01 16:18:49 +01:00
Chris McCarthy
0532db960a #1715 - Added more tests. MAde use of the pydantic model_post_init function for proper ipv4 cofiguration checking. Added NetworkError to exceptions.py. 2023-07-31 16:55:45 +01:00
Chris McCarthy
59394c3642 #1715 - Added Link class in physical_layer.py. Also added NIC class in physical_layer.py for #1672. Added attributes and public API functions. test_physical_layer.py ready to house the tests once logic has been implemented. 2023-07-31 15:55:22 +01:00
Marek Wolan
954026d3e0 Comment out RLLib support 2023-07-31 12:13:52 +01:00
Marek Wolan
3b4a01760b Rework apply_actions to make it more standard 2023-07-28 15:14:43 +01:00
Marek Wolan
c1bcc372b1 Merge remote-tracking branch 'origin/dev' into feature/1709-base-simulation-class 2023-07-28 14:49:56 +01:00
Marek Wolan
b129c4fc97 Add SimComponent core class 2023-07-28 14:49:21 +01:00
Chris McCarthy
bb8b41a5ec #1711 - Removed the legacy bools from the RLlibAgent constructor in primaite_session.py 2023-07-28 14:02:17 +01:00
Chris McCarthy
0fb9268f44 #1711 - Fully Integrated the legacy training config and lay down config options into the CLI, run PrimaiteSession, and Agent classes. Made the ese test in test_full_legacy_config_session.py use this new integrated option to read the legacy file. 2023-07-28 13:49:26 +01:00
Chris McCarthy
7c843d3caa #1711 - Added the ability to load legacy lay down config files. Added extensive unit testing and end-to-end testing. Also added the ability to set exactly how many num_train_steps, num_eval_steps, num_train_episodes, and num_eval_episode and used when converting a legacy training config. 2023-07-28 12:53:49 +01:00
Chris McCarthy
1131663cde #1650 - Removed the commented out pytest.mark.skip statement now that the test does work. 2023-07-24 09:20:36 +01:00
Chris McCarthy
66d367aa94 #1650 - Turned on the test. Also updated some references to the old primaite paths. Finally, pushed the deployment status classifier to Development Status :: 5 - Production/Stable 2023-07-21 16:49:17 +01:00
Chris McCarthy
1dc23e11f2 #1648 - Updated file header from 'Crown Owned Copyright (C) Dstl 2023. DEFCON 703. Shared in confidence.' to '© Crown-owned copyright 2023, Defence Science and Technology Laboratory UK' 2023-07-21 14:54:09 +01:00
Czar Echavez
034ea831c3 Merged PR 130: #1595: load session double run
## Summary
- Fixed the bug where session gets run twice when loading a session via CLI
- Added a test for the CLI run - xskipped while the bugfix for load session acting odd is tbd
- Fixed a minor bug in PrimAITE session where session_path is overwritten

## Test process
Added a new test for CLI, but xskipped while a different bug is tbd

Ran it locally and no longer runs another session after the loaded session
```
(venv) PS D:\Projects\ARCD\PrimAITE\PrimAITE> primaite session --load [REDACTED for security]\primaite\sessions\2023-07-20\2023-07-20_15-01-11
2023-07-20 15:04:21,320: Using: AgentFramework.SB3, AgentIdentifier.PPO, ActionType.NODE, observation_space=NODE_LINK_TABLE, Training: 5 episodes @ 256 stepsEvaluation: 5 episodes @ 256 steps
2023-07-20 15:04:21,335: Environment configuration loaded
Environment configuration loaded
2023-07-20 15:04:21,775: Welcome to the Primary-level AI Training Environment (PrimAITE) (version: 2.0.0rc1)
2023-07-20 15:04:21,775: The output directory for this session is: C:\Users\czar.echavez\primaite\sessions\2023-07-20\2023-07-20_15-04-21
2023-07-20 15:04:21,779: Beginning learning for 10 episodes @ 256 time steps...
2023-07-20 15:04:22,379: Episode: 1, Average Reward: -0.0020839843750000003
2023-07-20 15:04:23,137: Episode: 2, Average Reward: -0.0021933593750000004
2023-07-20 15:04:23,831: Episode: 3, Average Reward: -0.0022617187500000003
2023-07-20 15:04:24,486: Episode: 4, Average Reward: -0.002373046874999999
2023-07-20 15:04:25,125: Episode: 5, Average Reward: -0.0018066406250000014
2023-07-20 15:04:25,791: Episode: 6, Average Reward: -0.0017597656250000013
2023-07-20 15:04:26,415: Episode: 7, Average Reward: -0.0018437500000000014
2023-07-20 15:04:27,053: Episode: 8, Average Reward: -0.0019101562500000015
2023-07-20 15:04:27,715: Episode: 9, Average Reward: -0.0016777343750000013
2023-07-20 15:04:28,359: Episode: 10, Average Reward: -0.0015976562500000012
2023-07-20 15:04:28,550: Finished learning
2023-07-20 15:04:30,851: Beginning deterministic evaluation for 5 episodes @ 256 time steps...
2023-07-20 15:04:31,243: Episode: 1, Average Reward: -0.0018515625000000014
2023-07-20 15:04:31,663: Episode: 2, Average Reward: -0.0018515625000000014
2023-07-20 15:04:32,112: Episode: 3, Average Reward: -0.0018515625000000014
2023-07-20 15:04:32,505: Episode: 4, Average Reward: -0.0018515625000000014
2023-07-20 15:04:32,904: Episode: 5, Average Reward: -0.0018515625000000014
2023-07-20 15:04:32,998: Finished evaluation

```

Also fixed the xskipped tests, since the double running seems to have caused the issue of rewards not matching.

Added a test that runs the PrimAITE in CLI

## Checklist
- [x] This PR is linked to a **work item**
- [x] I have performed **self-review** of the code
- [x] I have written **tests** for any new functionality added with this PR
- [x] I have updated the **documentation** if this PR changes or adds functionality
- [x] I have run **pre-commit** checks for code style

#1595:
- Fixed the...
2023-07-21 11:32:32 +00:00
Czar Echavez
720a326537 #1595: refactor variable name 2023-07-21 09:31:37 +01:00