+An (in-progress) implementation of the automation tool briefly described [here](https://lists.freebsd.org/pipermail/soc-status/2017-July/001079.html).
+The following diagram summarizes how different components fit with the testcase-generator -
+The location `~/smoketestsuite` is important! If using a different location, the scripts under [src/scripts](src/scripts) need to be updated accordingly (for the time being).
+
+### Populating groff scripts
+* The directory [src/groff](src/groff) should be populated with the relevant groff scripts before proceeding for test generation. These scripts are available in the FreeBSD source tree. For filtering the utilities section wise, [fetch_groff.sh](src/scripts/fetch_groff.sh) sets the variable `section` to a default value of **1**. This value can be changed at will. However, it should be noted that currently the tool is tested to successfully generate **section 1 utilities** and might probably fail for other section numbers.
+
+* The variable `src` in [fetch_groff.sh](src/scripts/fetch_groff.sh) should be updated to the local location of the FreeBSD source. The default value is `~/freebsd`.
+
+* For populating `src/groff`, execute from [src](src) -
+ ```
+ make fetch_groff
+ ```
+
+### Generating tests
+Execute the following commands inside [src](src) -
+```
+make clean
+make && make run
+```
+
+A few demo tests are located in [src/generated_tests](src/generated_tests).
+**NOTE:** The generated tests are maintained at [shivansh/smoketests](https://github.com/shivansh/smoketests). The directory [generated_tests](src/generated_tests) only contains a few demos.
+The following table summarizes the type of test-cases produced for 3 (randomly chosen) utilities.
+* [date_test.sh](src/generated_tests/date_test.sh) is time/timezone dependent, hence all the test-cases apart from `invalid_usage` will fail. The aim for using this utility is to demonstrate that the tool can generate positive test-cases along with negative ones. It also demonstrates the need to sanity check the tests.
+ - After adding functionality to generate annotations, the 5 timezone dependent testcases were removed.
+ - Adding functionality for long options increased the number of negative testcases by 4.
+
+* [ln_test.sh](src/generated_tests/ln_test.sh) demonstrates that if the utility produces a common usage message for every invalid usage, then the tool can define a variable containing this message and avoid duplication while generating the test-cases. Also, all the negative tests are collated under a single testcase named `invalid_usage`.
+
+* The groff script for `stdbuf(1)` is slightly different than others, hence
+the tool couldn’t generate any negative test-case in [stdbuf_test.sh](src/generated_tests/stdbuf_test.sh) as it couldn't pick up the supported options. This scenario will be taken into account next. The aim for using this utility is to demonstrate that the tool will always produce atleast one positive/negative testcase.
+ - Adding functionality for long options increased the number of negative testcases by 3.