[SOCIS] Testing Framework

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Nov 20 15:11:13 UTC 2013


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.



More information about the devel mailing list