- Overview
- Guides
- Concepts
- Considerations And Constraints
- Absolute File References
- Assembly Colocation Assumptions
- Concurrent Use Of Test Resources
- Cross Application Domain Testing
- Heavily Executed Code Under Test
- Implicit File Dependencies
- Multi Threaded Tests
- Netstandard Test Projects
- Project Atomicity
- Project Build Platform And Configuration
- Rdi Data Point Location
- Test Atomicity
- Unique Test Names
- Using NCrunch With Source Control
- Reference
- Global Configuration
- Overview
- Auto Adjust Clashing Marker Colours
- Build Log Verbosity
- Build Process Memory Limit
- Capabilities Of This Computer
- Coverage Marker Style
- Cpu Cores Assigned To NCrunch Or Ide
- Custom Environment Variables
- Disable Global Hotkey
- Engine Hosting Strategy
- Fast Lane Threads
- Fast Lane Threshold
- Grid Maximum Reconnection Attempts
- Grid Reconnection Delay
- Impact Detection Mode
- Listening Port
- Log To Output Window
- Logging Verbosity
- Marker Colours
- Max Failing Test Trace Log Size
- Max Number Of Processing Threads
- Max Passing Test Trace Log Size
- Max Test Runners To Pool
- NCrunch Tool Window Colors
- Node Id (Name)
- Password
- Performance Aggregation Type
- Performance Display Sensitivity
- Pipeline Optimisation Priority
- Rdi Storage Settings
- Sliding Build Delay
- Snapshot Storage Directory
- Solution Storage Data Limit
- Spinner Colours
- Terminate Test Runners On Complete
- Test Process Memory Limit
- Tests To Execute On This Machine
- Text Output Font
- Workspace Base Path
- Solution Configuration
- Overview
- Additional Files For Grid Processing
- Additional Files To Include
- Allow Parallel Test Execution
- Allow Tests In Parallel With Themselves
- Infer Project References Using Assembly
- Instrumentation Mode
- NCrunch Cache Storage Path
- Only Consider Tests Outofdate If Impacted
- Project Config File Storage Path
- Show Coverage For Tests
- Show Metrics For Tests
- Tests To Execute Automatically
- Project Configuration
- Overview
- Additional Files To Include
- Allow Dynamic Code Contract Checks
- Allow Static Code Contract Checks
- Analyse Line Execution Times
- Autodetect Nuget Build Dependencies
- Build Priority
- Build Process Cpu Architecture
- Build Sdk
- Collect Control Flow During Execution
- Consider Inconclusive Tests As Passing
- Copied Project Dependencies
- Copy Referenced Assemblies To Workspace
- Custom Build Properties
- Data Storage File Size
- Default Test Timeout
- Detect Stack Overflow
- Enable Rdi
- Files Excluded From Auto Build
- Framework Utilisation Types
- Ignore This Component Completely
- Implicit Project Dependencies
- Include Static References In Workspace
- Instrument Output Assembly
- Method Data Limit
- Ms Test Thread Apartment State
- Preload Assembly References
- Prevent Signing Of Assembly
- Proxy Process File Path
- Rdi Cache Size
- Required Capabilities
- Restrict Tostring Usage
- Run Pre Or Post Build Events
- String Length Limit
- Track File Dependencies
- Use Build Configuration
- Use Build Platform
- Use Cpu Architecture
- Runtime Framework
- Overview
- Atomic Attribute
- Category Attribute
- Collect Control Flow Attribute
- Distribute By Capabilities
- Duplicate By Dimensions
- Enable Rdi Attribute
- Environment Class
- Exclusively Uses Attribute
- Inclusively Uses Attribute
- Isolated Attribute
- Method Data Limit Attribute
- Requires Capability Attribute
- Restrict Tostring Attribute
- Serial Attribute
- String Length Limit Attribute
- Timeout Attribute
- Uses Threads Attribute
- Global Configuration
- Troubleshooting
- Tools
- Keyboard Shortcuts
- Manual Installation Instructions
RDI Storage Settings
Global-level NCrunch configuration setting Introduced NCrunch v5.0ID/Tag in config file: RdiStorageSettings
Purpose
This setting controls how RDI should store data collected during test execution.
Data collected by RDI include the values and entire execution path of all threads and processes responsible for the execution of every test, up to configured data limits. When configured for aggressive collection, this can be hundreds of gigabytes of data for a large solution, potentially reaching terabytes in extreme situations.
To manage such a volume of data, RDI storage is highly configurable. It is possible to specify multiple storage paths, allowing data to be striped across multiple drives for better scalability and performance. Storage limits and pruning thresholds can be configured per storage path, allowing asymmetrical storage of data. Storage paths are usually system-wide and are shared by multiple solutions.
There is no default value for this setting, and RDI will not collect or report any data without at least one configured storage path. To use RDI, you must configure a storage path with sensible limits. When RDI is enabled but no storage path is configured, a warning will be shown in the Tests Window.
When using distributed processing with RDI, every grid node must specify RDI storage settings with a storage path configured. Any RDI-enabled test run on a grid node without storage settings will result in warnings being shown in the Tests Window.
Pruning
When adding a storage path, there is an option to set a pruning threshold, which is a percentage value determining at what point NCrunch should attempt to prune old data from the storage directory. When the amount of data in the directory reaches the threshold, a background thread will run inside the NCrunch engine process to clear up additional space.
Pruning targets only RDI data stored for solutions that are not currently being used by NCrunch. As multiple NCrunch sessions can exist (for example, if you have two IDEs open with different solutions), there is coordination between these sessions to avoid instability.
Recommendations
The performance of RDI-enabled tests is heavily dependent on the speed of the drive being used to store data. A modern NVME drive is highly recommended, the faster the better.
RDI can cycle a lot of data in its storage paths. Depending on your settings and the size of your solution, this may have an impact on the lifespan of your SSD. If you are heavily using RDI, it is recommended you avoid placing storage paths on the same drive as critical data on your system. With consumer grade SSDs now being widely available at very reasonable prices, it can be very worth purchasing a dedicated drive just for RDI.
Usually, pruning happens fast enough that a storage path will not reach its storage data limit. If you experience problems with limits being reached, it may be worth trying a lower pruning threshold to force cleanup to happen sooner.
Test log data being unavailable is a common symptom of RDI not having enough storage space. If you experience this often, consider increasing your storage limits or assigning additional storage paths on other drives.
Our own experimentation has shown there does not seem to be any significant improvement in performance in using a RAM Disk for RDI storage as opposed to a modern SSD.