Documentation/Analysis for "System Properties"
- Dominant language
- C#
- Stars
- 2.4k
- Forks
- 658
- Avg merge
- 3d 5h
- Merged PRs (30d)
- 9
Description
We completed the "System Properties" feature in #254/#287, but we are lacking documentation on how end users can utilize it, in particular for the test framework. Here are a list of the properties that exist and their defaults, however, not all of them apply to the .NET port.
```
{
"smartcn:data:dir": "",
"egothor:stemmer:charset": "UTF-8",
"kuromoji:data:dir": "",
"solr:test:leavetmpdir": null, // Doesn't apply to Lucene.NET
"assert": false, // Turn on assertions (for testing/logging) in release build (.NET-only)
"tests": {
"asserts:gracious": "false", // Doesn't apply to Lucene.NET
"awaitsfix": "false", // Includes tests marked with the [AwaitsFix] attribute in the test run
"cleanthreads:sysprop": "perMethod", // Doesn't apply to Lucene.NET
"codec": "random", // Specifies a specific Codec subclass to use for the tests
"directory": "random", // Specifies a specific Directory subclass to use for the tests
"docvaluesformat": "random", // Specifies a specific DocValuesFormat subclass to use for the tests
"infostream": "${verbose}", // Boolean that specifies whether to log output to console
"jvms": "auto", // Doesn't apply to Lucene.NET
"jvms:override": "${jvms}", // Doesn't apply to Lucene.NET
"leaveTemporary": null, // Skips deletion of files that were created during tests
"leavetemporary": null, // Alias of above
"leavetmpdir": null, // Alias of above
"linedocsfile": "", // Specifies a specific LineDocsFile to use when running tests (may not be functional with external files)
"locale": "random", // Specifies a specific culture to use when running tests (TODO: rename or alias "culture")
"multiplier": "1", // Multiplier to scale random tests for more thorough (but longer) testing - used during nightly/weakly builds
"nightly": "false", // Includes tests marked with the [Nightly] attribute in the test run
"postingsformat": "random", // Specifies a specific PostingsFormat subclass to use for the tests
"seed": "", // Specifies a random seed to use during tests in hexadecimal format (not yet implemented - see #288)
"slow": "true", // Includes tests marked with the [Slow] attribute in the test run
"timezone": "random", // Specifies a specific time zone to use for the tests (not xplat because of different naming conventions)
"verbose": "false", // Use verbose logging
"weekly": "false" // Includes tests marked with the [Weekly] attribute in the test run
},
"user:timezone": "random", // Doesn't apply to Lucene.NET,
"maxStackByteLimit": "2048" // The maximum number of bytes used in stack allocations before falling back to the heap or pool
}
```
The most crucial thing here is to allow end users to specify a random seed and to print out the random seed that caused a failure (#288), but we should also look into setting up nightly and weekly builds to do more thorough testing (provided we get some credits to go over 1 hour for a job on Azure DevOps) and also look at putting in a switch to turn on/off long running tests.
Contributor guide
Research direction
Start by reviewing the System Properties work in issues #254 and #287 and the test-framework handling described here; no files or tests are named in the issue. Document the properties and defaults that apply to Lucene.NET, clarify how end users configure tests, and separately assess the random-seed, nightly, weekly, and long-running-test requests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- ci-cd, documentation, testing
- Issue type
- Documentation
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100