User story #113
Updated by Ivan Herrero over 9 years ago
Implement requirement MARTe-EX-F-1.2.11 based on the original MARTe implementation
Note: While waiting for a given event or resource to be available a framework developer might decide to wait and return the control to the operating system schedule.
h1. Source code files modified
* Source\Core\L0Portability\Architecture\x86_cl\HighResolutionTimerA.h
* Source\Core\L0Portability\Architecture\x86_gcc\HighResolutionTimerA.h
* Source\Core\L0Portability\HighResolutionTimer.cpp
* Source\Core\L0Portability\HighResolutionTimer.h
* Source\Core\L0Portability\OperatingSystem\Linux\HighResolutionTimerCalibratorOS.h
* Source\Core\L0Portability\OperatingSystem\Linux\SleepOS.h
* Source\Core\L0Portability\OperatingSystem\Windows\HighResolutionTimerCalibratorOS.h
* Source\Core\L0Portability\OperatingSystem\Windows\SleepOS.h
* Source\Core\L0Portability\Sleep.cpp
* Source\Core\L0Portability\Sleep.h
h1. Architecture & design review
*Date of the review:* 08/06/2015
*Person who did the review:* André Neto
*Version of architecture & design document:* N/A. As per the original MARTe implementation, this is implemented in a support class and does not require formal design in UML.
*Result of review:* N/A
*List of non-conformities:* N/A
h1. Code and documentation review
*Date of the review:* 17/06/2015
*Person who did the review:* Ivan Herrero
*Result of review:* SUCCESS
*List of non-conformities:* N/A
*Technical debt:*
Manual review for Source\Core\L0Portability\Architecture\x86_cl\HighResolutionTimerA.h
This file has not been reviewed, because it is pending further discussion.
Manual review for Source\Core\L0Portability\Architecture\x86_gcc\HighResolutionTimerA.h
This file has not been reviewed, because it is pending further discussion.
Manual review for Source\Core\L0Portability\OperatingSystem\Linux\HighResolutionTimerCalibratorOS.h
This file has not been reviewed, because it is pending further discussion.
Manual review for Source\Core\L0Portability\OperatingSystem\Windows\HighResolutionTimerCalibratorOS.h
This file has not been reviewed, because it is pending further discussion.
h1. Unit test review
*Date of the review:* 15/07/2015 01/07/2015
*Person who did the review:* Ivan Herrero
*Result of coverage tests review:* PASS FAIL
*Result of functional tests review:* PASS FAIL
*Result of review:* PASS FAIL
*List of non-conformities:* N/A
* Class HighResolutionTimerTest
It lacks tests for Counter32, Period, and TicksToTime.
The name for GetTimeStamp should be TestGetTimeStamp instead of TestTimeStamp.
The function Tolerance should be static in order to not clashing with other names at linking time or better put it on a common class for testing.
The execution of tests TestCounter and TestTimeStamp have failed (perhaps due to multitasking issues, because these tests sleep themselves).
* Class SleepTest
Almost all test methods include the name of the target class, but it is not needed by the convention (e.g. method TestSleepAtleast should be TestAtleast).
The method Sleep::Sec(float) has a test but is never called because its test method TestSleepSec(float) has an overloaded version for doubles, so when it is called with a literal without the "F" suffix, the actual call is to the double version.
It lacks a test for the Sleep::GetDateSeconds() method.
Note: While waiting for a given event or resource to be available a framework developer might decide to wait and return the control to the operating system schedule.
h1. Source code files modified
* Source\Core\L0Portability\Architecture\x86_cl\HighResolutionTimerA.h
* Source\Core\L0Portability\Architecture\x86_gcc\HighResolutionTimerA.h
* Source\Core\L0Portability\HighResolutionTimer.cpp
* Source\Core\L0Portability\HighResolutionTimer.h
* Source\Core\L0Portability\OperatingSystem\Linux\HighResolutionTimerCalibratorOS.h
* Source\Core\L0Portability\OperatingSystem\Linux\SleepOS.h
* Source\Core\L0Portability\OperatingSystem\Windows\HighResolutionTimerCalibratorOS.h
* Source\Core\L0Portability\OperatingSystem\Windows\SleepOS.h
* Source\Core\L0Portability\Sleep.cpp
* Source\Core\L0Portability\Sleep.h
h1. Architecture & design review
*Date of the review:* 08/06/2015
*Person who did the review:* André Neto
*Version of architecture & design document:* N/A. As per the original MARTe implementation, this is implemented in a support class and does not require formal design in UML.
*Result of review:* N/A
*List of non-conformities:* N/A
h1. Code and documentation review
*Date of the review:* 17/06/2015
*Person who did the review:* Ivan Herrero
*Result of review:* SUCCESS
*List of non-conformities:* N/A
*Technical debt:*
Manual review for Source\Core\L0Portability\Architecture\x86_cl\HighResolutionTimerA.h
This file has not been reviewed, because it is pending further discussion.
Manual review for Source\Core\L0Portability\Architecture\x86_gcc\HighResolutionTimerA.h
This file has not been reviewed, because it is pending further discussion.
Manual review for Source\Core\L0Portability\OperatingSystem\Linux\HighResolutionTimerCalibratorOS.h
This file has not been reviewed, because it is pending further discussion.
Manual review for Source\Core\L0Portability\OperatingSystem\Windows\HighResolutionTimerCalibratorOS.h
This file has not been reviewed, because it is pending further discussion.
h1. Unit test review
*Date of the review:* 15/07/2015 01/07/2015
*Person who did the review:* Ivan Herrero
*Result of coverage tests review:* PASS FAIL
*Result of functional tests review:* PASS FAIL
*Result of review:* PASS FAIL
*List of non-conformities:* N/A
* Class HighResolutionTimerTest
It lacks tests for Counter32, Period, and TicksToTime.
The name for GetTimeStamp should be TestGetTimeStamp instead of TestTimeStamp.
The function Tolerance should be static in order to not clashing with other names at linking time or better put it on a common class for testing.
The execution of tests TestCounter and TestTimeStamp have failed (perhaps due to multitasking issues, because these tests sleep themselves).
* Class SleepTest
Almost all test methods include the name of the target class, but it is not needed by the convention (e.g. method TestSleepAtleast should be TestAtleast).
The method Sleep::Sec(float) has a test but is never called because its test method TestSleepSec(float) has an overloaded version for doubles, so when it is called with a literal without the "F" suffix, the actual call is to the double version.
It lacks a test for the Sleep::GetDateSeconds() method.