59 | | * Sep 28: After Gedare Bloom's suggestion on using serial console for passing test case name, going to change Slingshot accordingly. Will update the repository with the final version (dynamic linking assisted execution), write a future work document, and update the blog with the big picture about the dynamic linking assisted execution until Oct 15. |
| 59 | * Sep 28: After Gedare Bloom's suggestion on using serial console for passing test case name, going to change Slingshot accordingly. Will update the repository with the final version (dynamic linking assisted execution), write a future work document, and update the blog with the big picture about the dynamic linking assisted execution until Oct 15. End of SOCIS 2016. |
| 60 | |
| 61 | = Final Reports (brief) = |
| 62 | |
| 63 | == Saeed Ehteshamifar: RTEMS Fault Tolerance == |
| 64 | |
| 65 | This year's project was continuation of RTEMS Fault Tolerance project from [https://devel.rtems.org/wiki/SOCIS/2015#SaeedEhteshamifar:RTEMSFaulttolerance the last year]. According to the [https://docs.google.com/document/d/1DVbwDUEf0DDzzLQbYQo7oPF0zKwueCaLS87cqKSlsGw/pub#h.yd5gsvhyhgpg last year's future works], the following task were proposed for this year: |
| 66 | 1. Distributing Slingshot as a stand-alone repository, instead of a patch to the original version. |
| 67 | 2. Integrating GRINDER's functionality (running tests and storing the result) into Slingshot in order to decrease the maintenance costs. |
| 68 | 3. Automatically continuing the test execution process in case a test case crashes. |
| 69 | 4. Dynamically linking and loading test cases to the test executor, in order to decrease code complexity and overall run time. |
| 70 | 5. Gathering statistics and reporting the results in an easy-to-read and human-friendly way. |
| 71 | |
| 72 | The four first items from the list above were implemented. In addition, |
| 73 | 1. Slingshot's development environment was migrated from the deprecated [https://github.com/utahta/pythonbrew Pythonbrew] to [https://github.com/yyuu/pyenv pyenv], and |
| 74 | 2. [https://www.vagrantup.com/ Vagrant] scripts were written to facilitate reproducing the work. |
| 75 | |
| 76 | Further future works are elaborated as follows: |
| 77 | 1. Gathering statistics and reporting the results in an easy-to-read and human-friendly way. |
| 78 | Initially [https://www.r-project.org/ R] was proposed for this matter but this can be changed based on the contributor’s discretion because nothing has been done in this respect. |
| 79 | 2. Permuting the order of test cases and repeating the test to decrease the dependence impact. |
| 80 | The dependence impact is the impact that each test case might have on the test cases that run afterwards due to the changes in the system state, i.e. memory, IO, registers, etc. For example, consider two consecutive test cases for function ''free''. If due to a bad implementation of free by the OS, the first one passes but leaves the system with an inconsistent memory state (huge leak, etc.) that leads to the failure of the second test case, this is a dependence impact. Because by itself, the second test case might be non-faulty. However due to the dependence impact, it seems that it is faulty. |
| 81 | In order to minimize this impact, the order of executing the test cases should be randomly permuted and any difference in the results should be carefully analyzed. |
| 82 | 3. Covering and testing POSIX as far as implemented by RTEMS. That is, generating a more complete test case list (via ''util'' folder scripts) and running the test process (executing, permuting, storing) for it. |
| 83 | 4. Extending to the classic API. |
| 84 | Even if all POSIX functions are tested, many RTEMS users use RTEMS Classic API for application development. Therefore it is crucial to extend the test to the classic API as well. However, this might be a little tricky since Slingshot’s code generation module is based on Ballista, which has originally targeted POSIX API. This means function signatures, definition of compound data types in the type hierarchy, and maybe some other basic elements are specific to POSIX and should be tailored to the classic API to add support for this API. |
| 85 | 5. Using RTEMS Source Builder to facilitate invoking the test process and merging with the RTEMS code base. |