- 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 Data Limits
NCrunch's RDI works by tracking the execution of code under test in large rolling binary logs stored on the machine responsible for execution. To handle execution at scale without runaway data collection, RDI will enforce limits on the amount of data that can be captured.
Currently, RDI enforces four types of data limits. Under default settings, all limits are active and are rigidly enforced by the collection system.
String Length Data Limit
RDI will only collect strings up to a configurable character limit. This limit is controlled by the following:
- String length limit inline directive
- String length limit project-level configuration setting
- StringLengthLimitAttribute
The intention of this limit is to ensure tests processing large strings do not store excessive amounts of string data.
Method Data Limit
RDI limits the amount of data that can be collected by any given method. This limit is controlled by the following:
- Method data limit inline directive
- Method data limit project-level configuration setting
- MethodDataLimitAttribute
When method data limits are disabled, binary logs can become extremely large. This can cause some tests to run for unacceptably long periods and consume excessive disk space. However, disabling method data limits will allow RDI to access every frame of every method executed by a test, effectively allowing the entire run to become searchable and all data to be visible.
Sometimes when troubleshooting a complex test using a large amount of data, temporarily turning off the method data limit can mean the difference between finding the problem in minutes rather than hours.
Storage Data Limit
The RDI Storage Settings configuration setting can specify a limit to the total amount of RDI data that can be stored on a machine.
When RDI reaches this limit's pruning threshold, a background thread in the NCrunch engine attempts to prune unused data from other RDI sessions (i.e. for other solutions RDI was used for on the same machine).
Generally, the pruning system clears disk space fast enough for RDI to avoid hitting the storage data limit. However, if the pruning threshold is set too high or the overall storage is too small to fit data for the open solution in its entirety, RDI will immediately cease collecting all data when it hits the limit. This can make RDI almost completely unavailable until test data is eventually cleaned up by newer execution runs (which may themselves be truncated by this limit).
This limit is a rough tool for controlling disk space consumption. When encountered, it can make RDI almost useless, as some tests simply won't have any captured data at all.
A correctly configured machine with sufficient hardware resources should not encounter this limit. If you are receiving warnings from RDI about encountering this limit, it is strongly recommended that you provision additional storage for RDI or consider setting a lower method data limit.
Reserved Disk Space Limit
The RDI Storage Settings configuration setting can specify a reserved amount of disk space that should not be used by RDI.
In practice, this limit is very similar to the Storage Data Limit. The only difference is that where the storage data limit is an absolute limit, the reserved disk space limit is calculated relative to the amount of free disk space remaining.
Since software can often become unstable when a machine runs out of disk space, it is strongly recommended to always have at least some disk space reserved. This is to prevent a situation where the storage data limit may be set too high and RDI eats up all remaining disk space.
As with the storage data limit, enforcement of this setting can cause RDI data to be largely unavailable or even missing entirely.