lucenenet icon indicating copy to clipboard operation
lucenenet copied to clipboard

Documentation/Analysis for "System Properties"

Open NightOwl888 opened this issue 3 years ago • 0 comments

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.

NightOwl888 avatar Jul 07 '20 12:07 NightOwl888