Skip to content

Conversation

@cschuchardt88
Copy link
Member

@cschuchardt88 cschuchardt88 commented Jul 8, 2025

Description

This PR adds DebugApplicationEngine. Also renames and fixes some errors, along with formatting.

image

Type of change

  • Optimization (the change is only an optimization)
  • Style (the change is only a code style for better maintenance or standard purpose)
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How Has This Been Tested?

  • Unit Tests

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules

cschuchardt88 and others added 28 commits June 14, 2025 23:25
* [Optimization] - Optimize Key method

* Update src/Neo.Cryptography.MPTTrie/Cache.cs

---------

Co-authored-by: Shargon <[email protected]>
* Fix threading hanging with `NeoSystem`

* Fixed for deadlocks

---------

Co-authored-by: Christopher R. Schuchardt <[email protected]>
Co-authored-by: Shargon <[email protected]>
Co-authored-by: NGD Admin <[email protected]>
* Update packages

* more

* clean

---------

Co-authored-by: Jimmy <[email protected]>
neo-project#3473)

* Initial comit

* Fix paths

* Added `Neo.Plugins.DBFTPlugin.Tests` to `Neo` internals

* Added tests to github workflow

* Akka deps

* Advancing

* TestWallet is mocked

* Adding more steps

* Fixed Test mocking

* Timestamp testing

* Header and TestProbe

* format

* Huge advance! Test probe is now working. Now we go

* dotnet format

* Header looks like to be correct now

* Workaround for dbft settings

* build the mock system for solenode

* update to 7 nodes network mock system

* Comment original tests of the PR

* [`ut`] 100% Coverage Trie.Get (neo-project#3952)

* 100% Coverage Trie.Get

* fix ut

* feat: Add comprehensive DBFT consensus unit tests

- Add 34 comprehensive unit tests covering all DBFT scenarios
- Test normal consensus flows, abnormal scenarios, and recovery mechanisms
- Include Byzantine fault tolerance testing (f=1 and f=2 failures)
- Add network partition and message loss simulation
- Implement stress testing with multiple rounds and large transaction sets
- Create professional test infrastructure with TestWallet and ConsensusTestHelper
- Add comprehensive README documentation
- Ensure 100% test pass rate with robust error handling
- Cover complete DBFT protocol: PrepareRequest → PrepareResponse → Commit flow
- Validate view changes, recovery requests, and state synchronization

Test Coverage:
- UT_ConsensusService.cs (7 tests): Service lifecycle and message handling
- UT_DBFT.cs (6 tests): Basic consensus scenarios
- UT_DBFT_Integration.cs (4 tests): Integration scenarios
- UT_DBFT_NormalFlow.cs (3 tests): Complete normal consensus flows
- UT_DBFT_AbnormalScenarios.cs (4 tests): Failure and attack scenarios
- UT_DBFT_Recovery.cs (6 tests): Recovery mechanisms
- UT_DBFT_Robustness.cs (4 tests): Stress and edge case testing

All tests pass: 34/34 ✅

* chore: Update .NET SDK version to 9.0.203

- Update global.json to use .NET SDK 9.0.203 (from 9.0.102)
- Ensures compatibility with latest .NET 9 features and fixes

* fix: Revert .NET SDK version to 9.0.102

- Revert global.json to use .NET SDK 9.0.102 (available on build system)
- Ensures compatibility with current development environment
- Previous version 9.0.203 was not available on the build system

* style: Update copyright year to 2025

- Run dotnet format to apply code formatting standards
- Update copyright year in RecoveryMessageExtensions.cs from 2024 to 2025
- Maintain consistent code formatting across the project

* chore: Update .NET SDK version to 9.0.300

- Update global.json to use .NET SDK 9.0.300 (from 9.0.102)
- Ensures compatibility with latest .NET 9 features and improvements
- Maintains project build consistency with updated SDK

* fix: Resolve RpcServer test compilation errors

- Add Neo.IO using statement for ToHexString extension method
- Comment out problematic ToHexString calls in test setup
- Ensure RpcServer tests can compile alongside DBFT tests
- Maintain DBFT test functionality (34/34 tests passing)

* fix: Complete RpcServer test compilation fix

- Ensure all ToHexString extension method issues are resolved
- Maintain compatibility with DBFT tests (34/34 passing)
- Fix build errors in RpcServer test suite

* Revert changes except DBFT plugin tests

- Reverted all source files to match dev branch
- Reverted test files in Neo.UnitTests and Neo.Plugins.RpcServer.Tests
- Preserved all DBFT plugin test files and functionality
- Removed RecoveryMessageExtensions.cs (not in dev branch)

* Fix DBFT plugin tests API compatibility and accessibility

- Made ConsensusService class internal for test accessibility
- Added InternalsVisibleTo attributes for Neo core and DBFT plugin
- Updated test constructors to use current dev branch API:
  - Fixed NeoSystem constructor (2-parameter instead of 6-parameter)
  - Fixed Settings constructor to use IConfigurationSection
  - Added Microsoft.Extensions.Configuration packages
- Created TestBlockchain.CreateDefaultSettings() helper method
- Updated all test files to use compatible API calls
- All 1,401 tests passing including 34 DBFT plugin tests
- Code formatted with dotnet format

* Add comprehensive DBFT consensus message flow tests

- Implement proper consensus message flow monitoring as requested in GitHub comment
- Add UT_DBFT_ProperMessageFlow.cs with professional, working tests
- Update ConsensusTestHelper with async methods for natural message flow
- Clean up comments and code formatting with dotnet format
- All 38 DBFT plugin tests passing

Tests now properly:
- Send PrepareRequest and wait for natural PrepareResponse
- Monitor actual consensus message flow instead of forcing it
- Handle message validation, service resilience, and lifecycle testing
- Use simplified but effective message capture mechanism

* Update src/Plugins/DBFTPlugin/DBFTPlugin.csproj

Co-authored-by: Christopher Schuchardt <[email protected]>

* Update src/Plugins/DBFTPlugin/DBFTPlugin.csproj

* refactor: Enhance DBFT consensus unit tests to professional standards - Consistent UT_xxx naming convention for all test files - Mock* pattern for all helper/utility classes - Enhanced assertions (7→19, +171% improvement) - Removed duplicate test methods (~140 lines eliminated) - Professional documentation aligned with implementation - Fixed project file syntax (InternalsVisibleTo) - 100% test pass rate maintained (34/34 tests) - Ready for production deployment

* Convert DBFT unit tests from xUnit to MSTest framework

- Remove xUnit package references (xunit, xunit.runner.visualstudio, Akka.TestKit.Xunit2)
- Add Akka.TestKit.MsTest package reference
- Update all test files to use MSTest TestKit instead of xUnit
- Fix test runner configuration to resolve "Zero tests ran" issue
- All 34 tests now pass successfully with MSTest framework
- Maintain existing test structure and TestKit inheritance

* Update DBFT unit tests README for MSTest framework

- Document MSTest framework usage instead of xUnit
- Update prerequisites to include MSTest and Akka.NET TestKit (MSTest version)
- Add note about Visual Studio Test Explorer integration
- Update performance timing to reflect current test execution (~33s)
- Emphasize production-ready testing capabilities

* Fix copyright header filenames in DBFT tests

- Correct UT_DBFT_Performance.cs header (was UT_DBFT_Robustness.cs)
- Correct UT_DBFT_Failures.cs header (was UT_DBFT_AbnormalScenarios.cs)
- Fix other copyright headers to match actual filenames
- Applied via dotnet format to ensure consistency

* Update tests/Neo.Plugins.DBFTPlugin.Tests/Neo.Plugins.DBFTPlugin.Tests.csproj

* Update tests/Neo.Plugins.DBFTPlugin.Tests/UT_DBFT_Core.cs

* Update tests/Neo.Plugins.DBFTPlugin.Tests/UT_DBFT_MessageFlow.cs

* Update tests/Neo.Plugins.DBFTPlugin.Tests/UT_DBFT_MessageFlow.cs

* Add coverage

---------

Co-authored-by: Christopher Schuchardt <[email protected]>
Co-authored-by: Jimmy <[email protected]>
Co-authored-by: Shargon <[email protected]>
Co-authored-by: Will <[email protected]>
Co-authored-by: Jimmy <[email protected]>
* nullable app logs

* Update src/Plugins/ApplicationLogs/LogReader.cs

Co-authored-by: Christopher Schuchardt <[email protected]>

* Apply suggestions from code review

Co-authored-by: Christopher Schuchardt <[email protected]>

* Update src/Plugins/ApplicationLogs/Settings.cs

Co-authored-by: Christopher Schuchardt <[email protected]>

---------

Co-authored-by: Christopher Schuchardt <[email protected]>
* Add: SignClient vsock support

* optimize: add const string

* optimize: use Uri parse endpoint

---------

Co-authored-by: Shargon <[email protected]>
Co-authored-by: NGD Admin <[email protected]>
Co-authored-by: Christopher Schuchardt <[email protected]>
@cschuchardt88 cschuchardt88 requested review from Jim8y and shargon July 8, 2025 16:36
@cschuchardt88
Copy link
Member Author

This is still ready to merge

@shargon
Copy link
Member

shargon commented Jul 30, 2025

Conflicts

@cschuchardt88
Copy link
Member Author

Everything should be fixed now.

@cschuchardt88
Copy link
Member Author

@shargon everything should be fixed now

@shargon shargon merged commit 86d68a2 into neo-project:neo-build.dev Aug 6, 2025
11 of 13 checks passed
@shargon shargon deleted the neo-build.dev/add/debugger-engine branch August 6, 2025 07:56
cschuchardt88 added a commit to cschuchardt88/neo that referenced this pull request Sep 16, 2025
* Added `neo-build` new branch

* Add debug sink

* Add more debug logging and fixes

* Added Provider

* Fixes to ApplicationEngine Threading

* Fix: P/Invokes should not be visible (neo-project#4003)

* [Optimization] - Optimize key method (neo-project#4001)

* [Optimization] - Optimize Key method

* Update src/Neo.Cryptography.MPTTrie/Cache.cs

---------

Co-authored-by: Shargon <[email protected]>

* Fix Threading hanging with `NeoSystem` (neo-project#4005)

* Fix threading hanging with `NeoSystem`

* Fixed for deadlocks

---------

Co-authored-by: Christopher R. Schuchardt <[email protected]>
Co-authored-by: Shargon <[email protected]>
Co-authored-by: NGD Admin <[email protected]>

* Style: unify json init style (neo-project#4004)

Co-authored-by: Jimmy <[email protected]>
Co-authored-by: Shargon <[email protected]>

* Update packages (neo-project#4006)

* Update packages

* more

* clean

---------

Co-authored-by: Jimmy <[email protected]>

* Restore DBFTPlugin Unit Tests (ConsensusService and Consensus Context) (neo-project#3473)

* Initial comit

* Fix paths

* Added `Neo.Plugins.DBFTPlugin.Tests` to `Neo` internals

* Added tests to github workflow

* Akka deps

* Advancing

* TestWallet is mocked

* Adding more steps

* Fixed Test mocking

* Timestamp testing

* Header and TestProbe

* format

* Huge advance! Test probe is now working. Now we go

* dotnet format

* Header looks like to be correct now

* Workaround for dbft settings

* build the mock system for solenode

* update to 7 nodes network mock system

* Comment original tests of the PR

* [`ut`] 100% Coverage Trie.Get (neo-project#3952)

* 100% Coverage Trie.Get

* fix ut

* feat: Add comprehensive DBFT consensus unit tests

- Add 34 comprehensive unit tests covering all DBFT scenarios
- Test normal consensus flows, abnormal scenarios, and recovery mechanisms
- Include Byzantine fault tolerance testing (f=1 and f=2 failures)
- Add network partition and message loss simulation
- Implement stress testing with multiple rounds and large transaction sets
- Create professional test infrastructure with TestWallet and ConsensusTestHelper
- Add comprehensive README documentation
- Ensure 100% test pass rate with robust error handling
- Cover complete DBFT protocol: PrepareRequest → PrepareResponse → Commit flow
- Validate view changes, recovery requests, and state synchronization

Test Coverage:
- UT_ConsensusService.cs (7 tests): Service lifecycle and message handling
- UT_DBFT.cs (6 tests): Basic consensus scenarios
- UT_DBFT_Integration.cs (4 tests): Integration scenarios
- UT_DBFT_NormalFlow.cs (3 tests): Complete normal consensus flows
- UT_DBFT_AbnormalScenarios.cs (4 tests): Failure and attack scenarios
- UT_DBFT_Recovery.cs (6 tests): Recovery mechanisms
- UT_DBFT_Robustness.cs (4 tests): Stress and edge case testing

All tests pass: 34/34 ✅

* chore: Update .NET SDK version to 9.0.203

- Update global.json to use .NET SDK 9.0.203 (from 9.0.102)
- Ensures compatibility with latest .NET 9 features and fixes

* fix: Revert .NET SDK version to 9.0.102

- Revert global.json to use .NET SDK 9.0.102 (available on build system)
- Ensures compatibility with current development environment
- Previous version 9.0.203 was not available on the build system

* style: Update copyright year to 2025

- Run dotnet format to apply code formatting standards
- Update copyright year in RecoveryMessageExtensions.cs from 2024 to 2025
- Maintain consistent code formatting across the project

* chore: Update .NET SDK version to 9.0.300

- Update global.json to use .NET SDK 9.0.300 (from 9.0.102)
- Ensures compatibility with latest .NET 9 features and improvements
- Maintains project build consistency with updated SDK

* fix: Resolve RpcServer test compilation errors

- Add Neo.IO using statement for ToHexString extension method
- Comment out problematic ToHexString calls in test setup
- Ensure RpcServer tests can compile alongside DBFT tests
- Maintain DBFT test functionality (34/34 tests passing)

* fix: Complete RpcServer test compilation fix

- Ensure all ToHexString extension method issues are resolved
- Maintain compatibility with DBFT tests (34/34 passing)
- Fix build errors in RpcServer test suite

* Revert changes except DBFT plugin tests

- Reverted all source files to match dev branch
- Reverted test files in Neo.UnitTests and Neo.Plugins.RpcServer.Tests
- Preserved all DBFT plugin test files and functionality
- Removed RecoveryMessageExtensions.cs (not in dev branch)

* Fix DBFT plugin tests API compatibility and accessibility

- Made ConsensusService class internal for test accessibility
- Added InternalsVisibleTo attributes for Neo core and DBFT plugin
- Updated test constructors to use current dev branch API:
  - Fixed NeoSystem constructor (2-parameter instead of 6-parameter)
  - Fixed Settings constructor to use IConfigurationSection
  - Added Microsoft.Extensions.Configuration packages
- Created TestBlockchain.CreateDefaultSettings() helper method
- Updated all test files to use compatible API calls
- All 1,401 tests passing including 34 DBFT plugin tests
- Code formatted with dotnet format

* Add comprehensive DBFT consensus message flow tests

- Implement proper consensus message flow monitoring as requested in GitHub comment
- Add UT_DBFT_ProperMessageFlow.cs with professional, working tests
- Update ConsensusTestHelper with async methods for natural message flow
- Clean up comments and code formatting with dotnet format
- All 38 DBFT plugin tests passing

Tests now properly:
- Send PrepareRequest and wait for natural PrepareResponse
- Monitor actual consensus message flow instead of forcing it
- Handle message validation, service resilience, and lifecycle testing
- Use simplified but effective message capture mechanism

* Update src/Plugins/DBFTPlugin/DBFTPlugin.csproj

Co-authored-by: Christopher Schuchardt <[email protected]>

* Update src/Plugins/DBFTPlugin/DBFTPlugin.csproj

* refactor: Enhance DBFT consensus unit tests to professional standards - Consistent UT_xxx naming convention for all test files - Mock* pattern for all helper/utility classes - Enhanced assertions (7→19, +171% improvement) - Removed duplicate test methods (~140 lines eliminated) - Professional documentation aligned with implementation - Fixed project file syntax (InternalsVisibleTo) - 100% test pass rate maintained (34/34 tests) - Ready for production deployment

* Convert DBFT unit tests from xUnit to MSTest framework

- Remove xUnit package references (xunit, xunit.runner.visualstudio, Akka.TestKit.Xunit2)
- Add Akka.TestKit.MsTest package reference
- Update all test files to use MSTest TestKit instead of xUnit
- Fix test runner configuration to resolve "Zero tests ran" issue
- All 34 tests now pass successfully with MSTest framework
- Maintain existing test structure and TestKit inheritance

* Update DBFT unit tests README for MSTest framework

- Document MSTest framework usage instead of xUnit
- Update prerequisites to include MSTest and Akka.NET TestKit (MSTest version)
- Add note about Visual Studio Test Explorer integration
- Update performance timing to reflect current test execution (~33s)
- Emphasize production-ready testing capabilities

* Fix copyright header filenames in DBFT tests

- Correct UT_DBFT_Performance.cs header (was UT_DBFT_Robustness.cs)
- Correct UT_DBFT_Failures.cs header (was UT_DBFT_AbnormalScenarios.cs)
- Fix other copyright headers to match actual filenames
- Applied via dotnet format to ensure consistency

* Update tests/Neo.Plugins.DBFTPlugin.Tests/Neo.Plugins.DBFTPlugin.Tests.csproj

* Update tests/Neo.Plugins.DBFTPlugin.Tests/UT_DBFT_Core.cs

* Update tests/Neo.Plugins.DBFTPlugin.Tests/UT_DBFT_MessageFlow.cs

* Update tests/Neo.Plugins.DBFTPlugin.Tests/UT_DBFT_MessageFlow.cs

* Add coverage

---------

Co-authored-by: Christopher Schuchardt <[email protected]>
Co-authored-by: Jimmy <[email protected]>
Co-authored-by: Shargon <[email protected]>
Co-authored-by: Will <[email protected]>
Co-authored-by: Jimmy <[email protected]>

* Style: move MPT Benchamrk Project to benchmarks/ (neo-project#4011)

* [`improve`] nullable app logs (neo-project#4008)

* nullable app logs

* Update src/Plugins/ApplicationLogs/LogReader.cs

Co-authored-by: Christopher Schuchardt <[email protected]>

* Apply suggestions from code review

Co-authored-by: Christopher Schuchardt <[email protected]>

* Update src/Plugins/ApplicationLogs/Settings.cs

Co-authored-by: Christopher Schuchardt <[email protected]>

---------

Co-authored-by: Christopher Schuchardt <[email protected]>

* Fix: remove FluentAssertions in notary tests (neo-project#4014)

* Add: SignClient Vsock support (neo-project#4002)

* Add: SignClient vsock support

* optimize: add const string

* optimize: use Uri parse endpoint

---------

Co-authored-by: Shargon <[email protected]>
Co-authored-by: NGD Admin <[email protected]>
Co-authored-by: Christopher Schuchardt <[email protected]>

* Comments: add Exception info for numeric ops (neo-project#4021)

* Fixes

* Ran `dotnet format`

* init project

* Changed method to static for lamda

* changed variable name

* Fixed extensions and add helper classes

* Switched to using Indexer

* Add executescript

* Added more tests

* Fixes and removal of used code

* Fix `using` statement

* Fixed tests

* Add snapshot storage events

* added `RandomNumberFactory`

* fixes

* Fixed breakpoints

* fixed bug with breakpoints

* fixed tests

* some name changes

* Fixed `IEquatable` for `Breakpoint`

* Added back `RandomNumberFactory` (core version)

---------

Co-authored-by: Christopher R. Schuchardt <[email protected]>
Co-authored-by: Will <[email protected]>
Co-authored-by: Alvaro <[email protected]>
Co-authored-by: Shargon <[email protected]>
Co-authored-by: NGD Admin <[email protected]>
Co-authored-by: Jimmy <[email protected]>
Co-authored-by: Vitor Nazário Coelho <[email protected]>
Co-authored-by: Jimmy <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants