You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/documentation/testing.md
+16-18Lines changed: 16 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
## Testing
2
-
2
+
3
3
To run MFC's test suite, run
4
4
```shell
5
5
./mfc.sh test -j <thread count>
@@ -8,15 +8,15 @@ To run MFC's test suite, run
8
8
It will generate and run test cases, comparing their output to previous runs from versions of MFC considered accurate.
9
9
*golden files*, stored in the `tests/` directory contain this data, aggregating `.dat` files generated when running MFC.
10
10
A test is considered passing when our error tolerances are met in order to maintain a high level of stability and accuracy.
11
-
Run `./mfc.sh test -h` for a full list of accepted arguments.
12
-
13
-
Most notably, you can consult the full list of tests by running
14
-
```shell
15
-
./mfc.sh test -l
16
-
```
11
+
`./mfc.sh test` has the following unique options:
12
+
-`-l` outputs the full list of tests
13
+
-`--from` (`-f)` and `--to` (`t`) restrict testing to a range of contiguous slugs
14
+
-`--only` (`-o`) restricts testing to a non-contiguous range of tests based on if their trace contains a certain feature
15
+
-`--test-all` (`a`) test post process and ensure the Silo database files are correct
16
+
-`--percent` (`%`) to specify a percentage of the test suite to select at random and test
17
+
-`--max-attempts` (`-m`) the maximum number of attempts to make on a test before considering it failed
18
+
-`--no-examples` skips the testing of cases in the examples folder
17
19
18
-
To restrict to a given range, use the `--from` (`-f`) and `--to` (`-t`) options.
19
-
To run a (non-contiguous) subset of tests, use the `--only` (`-o`) option instead.
20
20
To specify a computer, pass the `-c` flag to `./mfc.sh run` like so:
21
21
```shell
22
22
./mfc.sh test -j <thread count> -- -c <computer name>
@@ -27,15 +27,13 @@ The use of `--` in the above command passes options to the `./mfc.sh run` comman
27
27
28
28
### Creating Tests
29
29
30
-
To (re)generate *golden files*, append the `--generate` option:
31
-
```shell
32
-
./mfc.sh test--generate -j 8
33
-
```
30
+
Creating and updating test cases can be done with the following command line arguments:
31
+
-`--generate` to generate golden files for a new test case
32
+
-`--add-new-variables` to similar to `--generate`, but rather than generating a golden file from scratch, it generates a gold file with new variables for an updated test without changing the original golden file values.
33
+
-`--remove-old-tests` to remove the directories of tests that no longer exist
34
34
35
35
It is recommended that a range be specified when generating golden files for new test cases, as described in the previous section, in an effort not to regenerate the golden files of existing test cases.
36
36
37
-
**Note:** If you output new variables and want to update the golden files to include these without modifying the original data, use the `--add-new-variables` option instead.
38
-
39
37
Adding a new test case can be done by modifying [cases.py](https://github.com/MFlowCode/MFC/tree/master/toolchain/mfc/test/cases.py).
40
38
The function `list_cases` is responsible for generating the list of test cases.
41
39
Loops and conditionals are used to vary parameters, whose defaults can be found in the `BASE_CFG` case object within [case.py](https://github.com/MFlowCode/MFC/tree/master/toolchain/mfc/test/case.py).
@@ -44,7 +42,7 @@ The function operates on two variables:
44
42
-`stack`: A stack that holds the variations to the default case parameters.
45
43
By pushing and popping the stack inside loops and conditionals, it is easier to nest test case descriptions, as it holds the variations that are common to all future test cases within the same indentation level (in most scenarios).
46
44
47
-
-`cases`: A list that holds fully-formed `Case` objects, that will be returned at the end of the function.
45
+
-`cases`: A list that holds fully-formed `Case` objects, that will be returned at the end of the function.
48
46
49
47
Internally a test case is described as:
50
48
```python
@@ -93,13 +91,13 @@ Finally, the case is appended to the `cases` list, which will be returned by the
93
91
94
92
### Testing Post Process
95
93
96
-
To test the post-processing code, append the `-a` or `--test-all` option:
94
+
To test the post-processing code, append the `-a` or `--test-all` option:
97
95
```shell
98
96
./mfc.sh test -a -j 8
99
97
```
100
98
101
99
This argument will re-run the test stack with `parallel_io='T'`, which generates silo_hdf5 files.
102
100
It will also turn most write parameters (`*_wrt`) on.
103
101
Then, it searches through the silo files using `h5dump` to ensure that there are no `NaN`s or `Infinity`s.
104
-
Although adding this option does not guarantee that accurate `.silo` files are generated, it does ensure that the post-process code does not fail or produce malformed data.
102
+
Although adding this option does not guarantee that accurate `.silo` files are generated, it does ensure that the post-process code does not fail or produce malformed data.
test.add_argument("-%", "--percent", type=int, default=100, help="Percentage of tests to run.")
82
82
test.add_argument("-m", "--max-attempts", type=int, default=1, help="Maximum number of attempts to run a test.")
83
83
test.add_argument( "--no-build", action="store_true", default=False, help="(Testing) Do not rebuild MFC.")
84
+
test.add_argument( "--no-examples", action="store_true", default=False, help="Do not test example cases." )
84
85
test.add_argument("--case-optimization", action="store_true", default=False, help="(GPU Optimization) Compile MFC targets with some case parameters hard-coded.")
85
86
test_meg=test.add_mutually_exclusive_group()
86
87
test_meg.add_argument("--generate", action="store_true", default=False, help="(Test Generation) Generate golden files.")
0 commit comments