Project

General

Profile

User story #188

Object introspection base infrastructure

Added by André Neto over 9 years ago. Updated about 9 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
Start date:
31.07.2015
Due date:
% Done:

0%

Estimated time:
Git branch (link):
Git merge to develop (link):
SVN commit (link/?p=rev):

Description

Define the base infrastructure for object introspection.
This would satisfy requirements:
  • MARTe-EX-F-2.2.1: The framework shall allow to fully introspect the properties of any of its object.
  • MARTe-EX-F-2.2.2: The framework shall allow to introspect the class name of any of its objects.
  • MARTe-EX-F-2.2.3: The framework shall allow to introspect the class type of any of its objects.

Source code files modified

  • L0Types/BasicTypes.h
  • L0Types/CompilerTypes.h
  • L0Types/Introspection.h (Moved to L2Objects)
  • L0Types/TypeDescriptor.h (Moved to L1Portability)
  • L0Types/ZeroTerminatedArray.h
  • L1Portability/ErrorManagement.h
  • L1Portability/FormatDescriptor.cpp
  • L1Portability/TypeDescriptor.*
  • L1Portability/StringHelper.h
  • L2Objects/ClassRegistryItem.*
  • L2Objects/IntrospectionEntry.*
  • L2Objects/Introspection.*
  • L3Streams/IOBuffer.cpp
  • L4Configuration/ConfigurationDatabase.*
  • L4Configuration/TypeConversion.*
  • L4Configuration/ValidateBasicType.*
  • L3Streams/IOBuffer.*
  • Lib/IntrospectionParser.*

Architecture & design review

Date of the review: 31/07/2015

Person who did the review: Andre' Neto

Version of architecture & design document: N/A. As per the original MARTe implementation, this is a support function and does not require formal design in UML.

Result of review: N/A

List of non-conformities: N/A

Code and documentation review

Date of the review: 01/02/2016

Person who did the review: Andre' Neto

Result of review: PASS

List of non-conformities:

  • During Specific Walk:
  • File ./Source/Core/BareMetal/L3Streams/IOBufferIntegerPrint.cpp line 531: MARTe::BitSetToInteger(?, ?, ?, 8?, !=0) #1
  • File ./Source/Core/BareMetal/L3Streams/BitSetToInteger.h line 345: MARTe::BitSetToBitSet([1], 0, 8, 1, ?, ?, 8?, !=0) #2
  • File ./Source/Core/BareMetal/L3Streams/BitSetToInteger.h line 286: MARTe::BSToBS([1], 0, 8, 1, ?, 31? | 0?, 8?, !=0) #3
  • File ./Source/Core/BareMetal/L3Streams/BitSetToInteger.h line 105: MARTe::MemoryOperationsHelper::Copy([4], ?, 5?) #31
  • ./Source/Core/BareMetal/L1Portability/Environment/Generic/MemoryOperationsHelper_CLIB_Generic.cpp:58:1: Warning 669: Possible data overrun for function 'memcpy(void *, const void *, unsigned long)', argument 3 (size=5) exceeds argument 1 (size=4)
  • ./Source/Core/BareMetal/L3Streams/BitSetToInteger.h:101:1: Info 831: Reference cited in prior message
  • ./Source/Core/BareMetal/L3Streams/BitSetToInteger.h:105:1: Info 831: Reference cited in prior message
  • ./Source/Core/BareMetal/L3Streams/BitSetToInteger.h:227:1: Info 831: Reference cited in prior message
  • ./Source/Core/BareMetal/L3Streams/BitSetToInteger.h:242:1: Info 831: Reference cited in prior message
  • ./Source/Core/BareMetal/L3Streams/BitSetToInteger.h:286:1: Info 831: Reference cited in prior message
  • ./Source/Core/BareMetal/L3Streams/BitSetToInteger.h:345:1: Info 831: Reference cited in prior message
  • ./Source/Core/BareMetal/L3Streams/IOBufferIntegerPrint.cpp:528:1: Info 831: Reference cited in prior message
  • ./Source/Core/BareMetal/L3Streams/IOBufferIntegerPrint.cpp:531:1: Info 831: Reference cited in prior message
  • ./Source/Core/BareMetal/L4Configuration/ParserI.cpp:51:80: Note 9138: null statement not in line by itself [MISRA C++ Rule 6-2-3]

Unit test review

Date of the review: 03/02/2015

Person who did the review: Ivan Herrero

Result of coverage tests review: PASS

Result of functional tests review: PASS

Result of review: PASS

List of non-conformities:

  • Object::Clone(), and Object::Initialise() are not tested, but it is fine because they are not really implemented, yet.
  • LexicalAnalyzer.cpp, IOBufferFloatPrint.cpp, and IOBuffer.cpp have some error handdling branches not covered, that consist of a bit more than a simple error reporting sentence. Anyway, they have been left uncovered, because the error is hard to simulate.
  • The following tests on Windows platform fail:

[----------] Global test environment tear-down
[==========] 2502 tests from 75 test cases ran. (78098 ms total)
[ PASSED ] 2462 tests.
[ FAILED ] 40 tests, listed below:
[ FAILED ] AnyObjectGTest.TestGetType_Scalar_String
[ FAILED ] AnyTypeGTest.TestAnyType_ConstCharPointerToConst
[ FAILED ] BufferedStreamIGTest.TestPrintFormatted_CCString_BufferSize_1
[ FAILED ] BufferedStreamIGTest.TestPrintFormatted_CCString_BufferSize_2
[ FAILED ] BufferedStreamIGTest.TestPrintFormatted_CCString_BufferSize_8
[ FAILED ] BufferedStreamIGTest.TestPrintFormatted_CCString_BufferSize_64
[ FAILED ] BufferedStreamIGTest.TestPrintFormatted_CCString_BufferSize_128
[ FAILED ] BufferedStreamIGTest.TestPrintFormatted_CCString_BufferSize_1024
[ FAILED ] ConfigurationDatabaseGTest.TestCopy
[ FAILED ] DirectoryGTest.TestGetLastAccessTime_ReRead
[ FAILED ] DirectoryGTest.TestGetLastAccessTime_ReRead2
[ FAILED ] IOBufferGTest.TestPrintFormatted_CCString
[ FAILED ] JsonParserGTest.TestParseVector
[ FAILED ] JsonParserGTest.TestParseMatrix
[ FAILED ] LoadableLibraryGTest.TestOpenCloseLibrary
[ FAILED ] LoadableLibraryGTest.TestCloseLibrary
[ FAILED ] LoadableLibraryGTest.TestLoadFunction
[ FAILED ] LoadableLibraryGTest.TestLoadFunctionSquareBracketsOperator
[ FAILED ] LoadableLibraryGTest.TestGetModule
[ FAILED ] MutexSemGTest.TestIsRecursive
[ FAILED ] MutexSemGTest.TestRecursiveOff
[ FAILED ] StreamMemoryReferenceGTest.TestAnyTypeOperator
[ FAILED ] StreamStringGTest.TestAnyTypeOperator
[ FAILED ] ThreadsGTest.TestBeginThreadStacksize0
[ FAILED ] TypeConversionGTest.TestInt32ToCArrayVector
[ FAILED ] TypeConversionGTest.TestUInt32ToCArrayVector
[ FAILED ] TypeConversionGTest.TestFloat32ToCArrayVector
[ FAILED ] TypeConversionGTest.TestCCStringToCArrayVector
[ FAILED ] TypeConversionGTest.TestCArrayToInt32Vector
[ FAILED ] TypeConversionGTest.TestCArrayToUInt32Vector
[ FAILED ] TypeConversionGTest.TestCArrayToFloat32Vector
[ FAILED ] TypeConversionGTest.TestFloat32ToCArrayMatrixStaticToStatic
[ FAILED ] TypeConversionGTest.TestCArrayToFloat32MatrixStaticToStatic
[ FAILED ] TypeConversionGTest.TestCArrayToFloat32MatrixStaticToHeap
[ FAILED ] TypeConversionGTest.TestCArrayToCCStringVector
[ FAILED ] TypeConversionGTest.TestCArrayToCCStringMatrix
[ FAILED ] StandardParserGTest.TestParseVector
[ FAILED ] StandardParserGTest.TestParseMatrix
[ FAILED ] XMLParserGTest.TestParseVector
[ FAILED ] XMLParserGTest.TestParseMatrix

Associated revisions

Revision c4beb5d4
Added by Filippo Sartori over 9 years ago

Merge branch 'master' into #188_Introspection

Revision da35c940
Added by Filippo Sartori over 9 years ago

Merge branch 'master' into #188_Introspection

Revision ee8ad586
Added by Filippo Sartori over 9 years ago

Merge branch 'master' into #188_Introspection

Conflicts:
Source/Core/BareMetal/L3Streams/AnyType.h

Revision 02b3550f (diff)
Added by Giuseppe Ferro about 9 years ago

#188
-Created Introspection class
-Added the macro to register the introspection class to the
ClassRegistryDatabase

Revision e3f9b763 (diff)
Added by Giuseppe Ferro about 9 years ago

#188
-Added Introspection class
-Added macro to register it into the ClassRegistryDatabase

Revision b97157e1 (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Added ZeroTerminatedArray

Revision 1d598e58 (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Added introspection tests
Added GetTypeCastDescriptor function to AnyTypeCreator
Added GetChildName and GetNumberOfChilds to ConfigurationDatabase
WIP Introspection parser

Revision 3599d735 (diff)
Added by Giuseppe Ferro about 9 years ago

#188
-Added lookup table [basic type name - TypeDescriptor]
-Moved TypeDescriptor from Level0 to Level1 because it needs
StringHelper.
-Moved Introspection stuff to Level2 because IntrospectionEntry needs
ClassRegistryDatabase to build in runtime the TypeDescriptor if it is an
Object.
-Added the implementation of IntrospectionParser in the Lib folder

Revision f2f827c0 (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Source code documentation done.

Revision e2a9866e (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Improved and documented Tests

Revision 9e02a299 (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Improved documentation of tests

Revision 45cf8438
Added by Giuseppe Ferro about 9 years ago

Merge remote-tracking branch 'origin/#296_GTest_Folder_Structure' into #188_Object_Introspection

Revision efec44d0 (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Fixed and checked test coverage

Revision 59ac2744 (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Improved the IntrospectionParser in order to use different parsers.

Revision 749b5731 (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Removed a comment

Revision 4aaa97a4 (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Added ZeroTerminatedArray tests

Revision e3640f3b (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Improved documentation

Revision 2384a046 (diff)
Added by Giuseppe Ferro about 9 years ago

#188
Added the pointer level to the function IsConstant in IntrospectionEntry
and the function GetMemberPointerLevel

Revision 3bdbe1f7 (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Work in progress struct type conversion

Revision 1a4ba2fd (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Added ValidateBasicType
Added tests on TypeConversion for structuredData
Added Read and Write for StructuredData for ConfigurationDatabase
Changed Copy to do a real ConfigurationDatabase copy

Revision ae53deb2 (diff)
Added by Giuseppe Ferro about 9 years ago

#188
-Added Tests
-Improved linting and documentation
-Added print support of multidimensional, object, introspection and
buffered data

Revision f6abac40 (diff)
Added by Giuseppe Ferro about 9 years ago

#188
-Finished Tests and Documentation

Revision 26354db2 (diff)
Added by Giuseppe Ferro about 9 years ago

#188
-Adjusted IntrospectionParser with the new configuration

Revision 732857d3 (diff)
Added by Giuseppe Ferro about 9 years ago

#188
Improved documentation

Revision 6ffcab7c (diff)
Added by Giuseppe Ferro about 9 years ago

#188
Improved documentation

Revision 369fa7b6 (diff)
Added by André Neto about 9 years ago

#188 Small lint and documentation corrections

Corrected some lint errors and clarified documentation.

Revision 5b4edb1e
Added by Giuseppe Ferro about 9 years ago

Merge branch '#188_Object_Introspection' of https://vcis-gitlab.f4e.europa.eu/aneto/MARTe2.git into #188_Object_Introspection

Revision d3b39159 (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Added the test of CLASS_INTROSPECTION_REGISTER macro

Revision e55a7b74 (diff)
Added by Ivan Herrero about 9 years ago

#188 - Fix error on test value used in
IntrospectionTest::TestMacroToAddObjectClassRegistryDatabase().

Revision 3b041ee1 (diff)
Added by Ivan Herrero about 9 years ago

#188 - Finish incomplete postcondition on IntrospectionEntry constructor
and update its unit test.

Revision 976feec5
Added by Giuseppe Ferro about 9 years ago

Merge branch '#188_Object_Introspection' of https://vcis-gitlab.f4e.europa.eu/aneto/MARTe2.git into #188_Object_Introspection

Revision e2dc9c62 (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Improved testing

Revision 3cfbc015 (diff)
Added by Ivan Herrero about 9 years ago

#188 - Add postconditions on TypeDescriptor's constructors.

Revision bfe69342
Added by Ivan Herrero about 9 years ago

Merge branch '#188_Object_Introspection' of https://vcis-gitlab.f4e.europa.eu/aneto/MARTe2.git into #188_Object_Introspection

Revision b90b7e75 (diff)
Added by Ivan Herrero about 9 years ago

#188 - Fix linting issue on ParserI.

Revision 013acbcd (diff)
Added by Giuseppe Ferro about 9 years ago

#188 Change the BasicTCPSocket::WaitConnection from recursive to loop

Revision 3283c59c
Added by Giuseppe Ferro about 9 years ago

Merge branch '#188_Object_Introspection' of https://vcis-gitlab.f4e.europa.eu/aneto/MARTe2.git into #188_Object_Introspection

Revision 987f9977 (diff)
Added by Ivan Herrero about 9 years ago

#188 - Update StringHelper_CLIB_Generic.cpp and ErrorManagement.cpp to
last generic version.

Revision b8b94fa7 (diff)
Added by Ivan Herrero about 9 years ago

#188 - Fix syntax error on
/Core/BareMetal/L1Portability/Environment/Windows/Makefile.inc (extra
tab removed).

Revision a1f7b00b (diff)
Added by Ivan Herrero about 9 years ago

#188 - Fix error TimeStamp.cpp (inclusion of ctime header was missing).

Revision 48e6ad1e (diff)
Added by Ivan Herrero about 9 years ago

#188 - Fix DLL exporting error (the BasicConsole::Close function has
been reverted to non-virtual because, for unknown reasons, it is not
exported when is virtual, so it is not found at runtime, hence making
the program to abort).

History

#1 Updated by André Neto over 9 years ago

  • Target version set to 0.3

#2 Updated by André Neto over 9 years ago

  • Description updated (diff)

#3 Updated by André Neto over 9 years ago

  • Target version changed from 0.3 to 0.5

#4 Updated by André Neto over 9 years ago

  • Status changed from New to Code: Impl

#5 Updated by André Neto over 9 years ago

  • Assignee set to Filippo Sartori

#6 Updated by André Neto over 9 years ago

  • Target version changed from 0.5 to 0.6

#7 Updated by Ivan Herrero over 9 years ago

  • Target version changed from 0.6 to 0.7

#8 Updated by André Neto over 9 years ago

  • Target version changed from 0.7 to Backlog

#9 Updated by André Neto about 9 years ago

  • Assignee changed from Filippo Sartori to Giuseppe Ferro
  • Target version deleted (Backlog)

#10 Updated by Giuseppe Ferro about 9 years ago

  • Status changed from Code: Impl to Code: Rev

#11 Updated by Giuseppe Ferro about 9 years ago

  • Description updated (diff)
  • Assignee deleted (Giuseppe Ferro)

#12 Updated by Giuseppe Ferro about 9 years ago

  • Description updated (diff)

#13 Updated by Giuseppe Ferro about 9 years ago

  • Status changed from Code: Rev to Code: Impl

#14 Updated by Giuseppe Ferro about 9 years ago

  • Assignee set to Giuseppe Ferro

#15 Updated by André Neto about 9 years ago

  • Target version set to 0.11

#16 Updated by Giuseppe Ferro about 9 years ago

  • Description updated (diff)
  • Status changed from Code: Impl to Code: Rev
  • Assignee deleted (Giuseppe Ferro)

code implementation done: 749b573
Created from #296_GTest_Folder_Structure

#17 Updated by Giuseppe Ferro about 9 years ago

  • Description updated (diff)

#18 Updated by Ivan Herrero about 9 years ago

  • Status changed from Code: Rev to Code: Impl

#19 Updated by Giuseppe Ferro about 9 years ago

  • Description updated (diff)

#20 Updated by Giuseppe Ferro about 9 years ago

  • Status changed from Code: Impl to Blocked

#21 Updated by Giuseppe Ferro about 9 years ago

  • Status changed from Blocked to Unit: Rev

#22 Updated by Giuseppe Ferro about 9 years ago

  • Status changed from Unit: Rev to Code: Rev

#23 Updated by Giuseppe Ferro about 9 years ago

  • Description updated (diff)

#24 Updated by André Neto about 9 years ago

  • Description updated (diff)

#25 Updated by André Neto about 9 years ago

  • Description updated (diff)

#26 Updated by André Neto about 9 years ago

  • Description updated (diff)

#27 Updated by André Neto about 9 years ago

  • Description updated (diff)

#28 Updated by André Neto about 9 years ago

  • Description updated (diff)

#29 Updated by André Neto about 9 years ago

  • Description updated (diff)

#30 Updated by André Neto about 9 years ago

  • Assignee set to André Neto

#31 Updated by André Neto about 9 years ago

  • Description updated (diff)

#32 Updated by André Neto about 9 years ago

  • Status changed from Code: Rev to Unit: Impl

#33 Updated by André Neto about 9 years ago

  • Assignee changed from André Neto to Ivan Herrero

#34 Updated by André Neto about 9 years ago

  • Status changed from Unit: Impl to Unit: Rev

#35 Updated by Ivan Herrero about 9 years ago

  • Description updated (diff)
  • Status changed from Unit: Rev to Unit: Impl
  • Assignee deleted (Ivan Herrero)

#36 Updated by Ivan Herrero about 9 years ago

  • Assignee set to Giuseppe Ferro

#37 Updated by Ivan Herrero about 9 years ago

  • Status changed from Unit: Impl to Unit: Rev
  • Assignee changed from Giuseppe Ferro to Ivan Herrero

#38 Updated by Ivan Herrero about 9 years ago

  • Description updated (diff)

Unit test review finished on branch #188_Object_Introspection [b90b7e7].

#39 Updated by Ivan Herrero about 9 years ago

  • Description updated (diff)

#40 Updated by Ivan Herrero about 9 years ago

  • Description updated (diff)
  • Status changed from Unit: Rev to Closed
  • Assignee deleted (Ivan Herrero)

commit 17d5804ba45316e2875e1fe8ce29698b2e0bb009

Merge branch '#188_Object_Introspection' into develop

Conflicts:
Test/GTest/BareMetal/Makefile.inc
Test/GTest/FileSystem/Makefile.cov
Test/GTest/FileSystem/Makefile.inc
Test/GTest/Scheduler/Makefile.cov
Test/GTest/Scheduler/Makefile.inc

Also available in: Atom PDF