[SOCIS] Testing Framework
Gedare Bloom
gedare at rtems.org
Sat Nov 23 15:05:47 UTC 2013
The article [1] might be relevant.
-Gedare
[1] http://www.sciencedirect.com/science/article/pii/S0167642312000317
On Thu, Nov 21, 2013 at 9:20 AM, Marcin Bujar <marcin.bujar at gmail.com> wrote:
> Hi Sebastian,
>
> Unfortunately the project was on hold for a while now due to administrative
> reasons. I am just about get back into it so expect more updates soon.
>
> As to the thread safety of Unity I was not aware that was an explicit
> requirement for a testing framework. If you are referring to accessing the
> Unity struct then this is something I could serialize, or even better I will
> check if somebody has implemented this already.
>
> Thanks for pointing it out.
>
>
> Marcin
>
>
> On 20 November 2013 16:11, Sebastian Huber
> <sebastian.huber at embedded-brains.de> wrote:
>>
>> Hello Marcin,
>>
>> I just checked out the Unity sources and had a brief look at it. I see
>> one major problem with this framework. It is not thread-safe, e.g. you have
>> functions like this:
>>
>> https://github.com/ThrowTheSwitch/Unity/blob/master/src/unity.c
>>
>> [...]
>> //-----------------------------------------------
>> void UnityAssertNumbersWithin( const _U_SINT delta,
>> const _U_SINT expected,
>> const _U_SINT actual,
>> const char* msg,
>> const UNITY_LINE_TYPE lineNumber,
>> const UNITY_DISPLAY_STYLE_T style)
>> {
>> UNITY_SKIP_EXECUTION;
>>
>> if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT)
>> {
>> if (actual > expected)
>> Unity.CurrentTestFailed = ((actual - expected) > delta);
>> else
>> Unity.CurrentTestFailed = ((expected - actual) > delta);
>> }
>> else
>> {
>> if ((_U_UINT)actual > (_U_UINT)expected)
>> Unity.CurrentTestFailed = ((_U_UINT)(actual - expected) >
>> (_U_UINT)delta);
>> else
>> Unity.CurrentTestFailed = ((_U_UINT)(expected - actual) >
>> (_U_UINT)delta);
>> }
>>
>> if (Unity.CurrentTestFailed)
>> {
>> UnityTestResultsFailBegin(lineNumber);
>> UnityPrint(UnityStrDelta);
>> UnityPrintNumberByStyle(delta, style);
>> UnityPrint(UnityStrExpected);
>> UnityPrintNumberByStyle(expected, style);
>> UnityPrint(UnityStrWas);
>> UnityPrintNumberByStyle(actual, style);
>> UnityAddMsgIfSpecified(msg);
>> UNITY_FAIL_AND_BAIL;
>> }
>> }
>> [...]
>>
>> So now if multiple threads call this function the result is unpredictable.
>>
>> Thread-safety is a mandatory feature for a unit test framework for RTEMS
>> from my point of view, so either we add this to Unity or search for
>> something else.
>>
>>
>> --
>> Sebastian Huber, embedded brains GmbH
>>
>> Address : Dornierstr. 4, D-82178 Puchheim, Germany
>> Phone : +49 89 189 47 41-16
>> Fax : +49 89 189 47 41-09
>> E-Mail : sebastian.huber at embedded-brains.de
>> PGP : Public key available on request.
>>
>> Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
>
>
>
> _______________________________________________
> rtems-devel mailing list
> rtems-devel at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-devel
>
More information about the devel
mailing list