aboutsummaryrefslogtreecommitdiff
path: root/src/profiling
AgeCommit message (Collapse)Author
2019-10-22IVGCVSW-3980 Add ProfilingGuid and ProfilingGuidGenerator APINarumol Prangnawarat
* ProfilingGuid * ProfilingDynamicGuid * ProfilingStaticGuid * ProfilingGuidGenerator API * Unit tests Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: If950415f059d07d34cf64e13a9b4663dd032ec34
2019-10-22Fix for bug where ProfilingConnectionDumpToFactory is not used in profiling ↵Keith Davis
service Signed-off-by: Keith Davis <keith.davis@arm.com> Change-Id: I962093766a79fefc8fb91b9bc3d5bd8f28c35114
2019-10-18IVGCVSW-4005 Add PacketFamilyId to version resolverJim Flynn
Change-Id: Ief9373871438df4e1d353bbc545a3ee4f25c1fb0 Signed-off-by: Jim Flynn <jim.flynn@arm.com>
2019-10-18IVGCVSW-4002 Add FamilyId to CommandHandlerKeyJim Flynn
Change-Id: I0bb0bf77da2bcd7f4746078c4ccee9acc98638a7 Signed-off-by: Jim Flynn <jim.flynn@arm.com>
2019-10-17IVGCVSW-3409 Create the ProfilingService classColm Donelan
* Improve the error handling in SocketProfilingConnection to close the socket when an error has been detected. * Update the CommandHandler thread to handle a closed socket. Signed-off-by: Colm Donelan <Colm.Donelan@arm.com> Change-Id: I1577c8d7d57a7af9bde98c2dec12cb19a3afb21d
2019-10-16IVGCVSW-3930 Create the Timeline Relationship Binary PacketNarumol Prangnawarat
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: Ia3f93a25cd26c6d9116c2112d1e8d07be438bf39
2019-10-16IVGCVSW-3931 Create the Timeline Event Binary PacketMatteo Martincigh
* Added WriteTimelineEventBinaryPacket function * Added unit tests * Code refactoring Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: I36b6a8b26bb46eb5ea97bb711ef7e153ea6d851f
2019-10-16Refactor ProfilingUtilsJan Eilers
* Added decl_id to all swtrace stream messages * Adjusted unit tests to include decl_id * Refactored code to reduce code duplication Signed-off-by: Jan Eilers <jan.eilers@arm.com> Change-Id: I7a607765d9e65b1c08e4f914acbeda392400f6a4
2019-10-16IVGCVSW-3929 Create the Timeline Event Class Binary PacketJan Eilers
* Added some utility functions * Added WriteTimelineEventClassBinaryPacket * Added related unit tests Signed-off-by: Jan Eilers <jan.eilers@arm.com> Change-Id: Ib1fca3f8642bf5bbddb5ce51f2d90581a86359b1
2019-10-15IVGCVSW-3939 Code refactoring and minor fixesMatteo Martincigh
* Fixed value masking in SendPeriodicCounterCapturePacket and updated the pertinent unit tests * Code refactoring and cleanup * Added extra comments to the ProfilingService stop/reset procedure Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: Ibaf2fede76e06d5b8ce7258a4820a60e5993559f
2019-10-15IVGCVSW-3948 Add Startup method to ProfilingJim Flynn
Change-Id: I591e84048775278bfc728e1b0c189ff4cf2d350b Signed-off-by: Jim Flynn <jim.flynn@arm.com>
2019-10-15IVGCVSW-3984 Fix CheckPeriodicCounterCaptureThreadFinn Williams
* PerodicCounterCapture now sleeps instead of terminating when reading empty counter data * m_IsRunning is now set to false after the thread is joined and is no longer atomic * removed usages of find() (not thread safe) Signed-off-by: Finn Williams <Finn.Williams@arm.com> Change-Id: Ie65d5a9a7e42a31653ec8eed064849355661ef56
2019-10-14IVGCVSW-3971 Implement the Per-Job Counter Selection command handlerMatteo Martincigh
* Added new PerJobCounterSelectionCommandHandler class * The new handler drops the incoming packet without altering the state of the profiling service * Added unit test Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: I2b1bb803318a9e6c438391a0985893eb412e7787
2019-10-14IVGCVSW-3972 Implement the Disconnect functionalityJim Flynn
* Added Disconnect method to the ProfilingService class * Added unit test Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Signed-off-by: Jim Flynn <jim.flynn@arm.com> Change-Id: I5cc57abd3e1239cdf8afe21ee4883c1f73cd0e80
2019-10-11IVGCVSW-3964 Implement the Periodic Counter Selection command handlerMatteo Martincigh
* Improved the PeriodicCounterPacket class to handle errors properly * Improved the PeriodicCounterSelectionCommandHandler to handle invalid counter UIDs in the selection packet * Added the Periodic Counter Selection command handler to the ProfilingService class * Code refactoring and added comments * Added WaitForPacketSent method to the SendCounterPacket class to allow waiting for the packets to be sent (useful in the unit tests) * Added unit tests and updated the old ones accordingly * Fixed threading issues with a number of unit tests Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: I271b7b0bfa801d88fe1725b934d24e30cd839ed7
2019-10-11IVGCVSW-3721 Add support for startup sequence (Mock Gatord service).Colm Donelan
* Receive and process the stream metadata from the client. * Send the connection ack packet. * Wait in a receiving thread and print the packets. * GatordMockTest and Impl for PeriodicCounterCapture CommandHandler * CaptureData class to retain packet data * MockUtils * Update SocketProfilingConnection to fix non blocking receipt of packets. * Restructure directory layout following review comments. * Extract the mock service into a static library in the cmake files. Signed-off-by: Colm Donelan <Colm.Donelan@arm.com> Signed-off-by: Keith Davis <keith.davis@arm.com> Signed-off-by: Mike Kelly <mike.kelly@arm.com> Signed-off-by: Finn Williams <Finn.Williams@arm.com> Signed-off-by: Kevin May <kevin.may@arm.com> Change-Id: I33c1c9f93976708c9315f71290d42cff53b8c075
2019-10-10IVGCVSW-3964 Change the type held by the Packet class to unsigned charMatteo Martincigh
* Updated the Packet class * Updated the pertinent code accordingly Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: I73eab5b1ead67a610cd17fd33f8a74f764ad8cc4
2019-10-10IVGCVSW-3963 Implement the Request Counter Directory HandlerMatteo Martincigh
* Integrated the RequestCounterDirectoryCommandHandler in the ProfilingService class * Code refactoring * Added/Updated unit tests Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: I60d9f8acf166e29b3dabc921dbdb8149461bd85f
2019-10-09IVGCVSW-3937 Improve the Connection Acknowledged HandlerMatteo Martincigh
* The Connection Acknowledged Handler should report an error is it's called while in a wrong state * Stopping the threads in the ProfilingService before having to start them again * Updated the unit tests to check the changes * Removed unnecessary Packet.cpp file * Fixed memory leak Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: I8c4d33b4d97994df86fe6c9f8c659f880ec64c16
2019-10-08IVGCVSW-3926 Create the Timeline Message Directory PackageSadik Armagan
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com> Change-Id: I8be40f2e6f1f916b2566ca4d9e87b38d27eb7730
2019-10-08IVGCVSW-3937 Add the necessary components to the ProfilingService class toMatteo Martincigh
process a connection to an external profiling service (e.g. gatord) * Added the required components (CommandHandlerRegistry, CommandHandler, SendCounterPacket, ...) to the ProfilingService class * Reworked the ProfilingService::Run procedure and renamed it to Update * Handling all states but Active in the Run method (future work) * Updated the unit and tests accordingly * Added component tests to check that the Connection Acknowledged packet is handled correctly * Added test util classes, made the default constructor/destructor protected to superclass a ProfilingService object * Added IProfilingConnectionFactory interface Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: I010d94b18980c9e6394253f4b2bbe4fe5bb3fe4f
2019-10-08IVGCVSW-3948 Add Profiling config to Runtime constructorJim Flynn
Change-Id: Ib5cb85e620ed2cd76a85d423b2674b5d80981be9 Signed-off-by: Jim Flynn <jim.flynn@arm.com>
2019-10-08IVGCVSW-3937 Update the Send thread to send out the Metadata packetMatteo Martincigh
* The Send thread now automatically sends out Stream Metadata packets when the Profiling Service is in WaitingForAck state * Added a reference to the profiling state in the SendCounterPacket class * Moving the RuntimeException thrown in the Send thread to the main thread for rethrowing * The Stop method now rethrows the exception occurred in the send thread * The Stop method does not rethrow when destructing the object * Added unit tests Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: Ice7080bff63199eac84fc4fa1d37fb1a6fcdff89
2019-10-08IVGCVSW-3937 Refactor and improve the CommandHandleRegistry classMatteo Martincigh
* Added simplified RegisterFunctor method * Code refactoring * Updated the unit tests accordingly Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: Iee941d898facd9c1ab5366e87c611c99a0468830
2019-10-07IVGCVSW-3937 Make dynamic use the of the profiling connectionMatteo Martincigh
in the SendCounterPacket class * Passing the profiling connection as an argument to the pertinent methods of the SendCounterPacket class, as the connection is created dynamically by the ProfilingService * Updated the unit tests accordingly Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: Ibe72bdbad814a201c4f1505cff4badbb9b03b13e
2019-10-07IVGCVSW-3928 Add the Timeline Entity Binary PacketDavid Monahan
Signed-off-by: David Monahan <david.monahan@arm.com> Change-Id: If3dda4c5ba5c79e4bade58e14fc4df677cb2f5a1
2019-10-07IVGCVSW-3937 Refactor and improve the PeriodicCounterCapture classMatteo Martincigh
* Conformed the PeriodicCounterCapture class to the other thread-based classes * Code refactoring * Renamed CounterValues file to ICounterValues * Removed no longer used file * Updated unit tests accordingly Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: I8c42aa17e17a90cda5cf86eb8ac2d13501ecdadc
2019-10-07IVGCVSW-3937 Rename CommandThread to CommandHandlerMatteo Martincigh
* Renamed files, class name and methods accordingly * Updated unit tests accordingly Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: Ifb88aa61edb93b852a07b1bd59bd259213677b44
2019-10-07IVGCVSW-3937 Refactor the command threadMatteo Martincigh
* Integrated the Join method into Stop * Updated the unit tests accordingly * General code refactoring Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: If8537e77b3d3ff2b780f58a07df01191a91d83d2
2019-10-07IVGCVSW-3937 Initial ServiceProfiling refactoringMatteo Martincigh
* Made the ServiceProfiling class a singleton * Registered basic category and counters * Code refactoring * Updated unit tests accordingly Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: I648a6202eead2a3016aac14d905511bd945a90cb
2019-10-04IVGCVSW-3949 Fix signed/unsigned comparison bugJim Flynn
Change-Id: I6a7a809e2d30f137f8221a7d30091d3d6821c213 Signed-off-by: Jim Flynn <jim.flynn@arm.com>
2019-10-04IVGCVSW-3904 Add more unit tests for send thread with BufferManagerNarumol Prangnawarat
* Add timeout parameter to wait for readable data * Write all readable data to the profiling connection when ready to read * Set ready to read when buffer exhaust * Ensure that readable data get written to profiling connection before the send thread is stopped * Add MockWriteProfilingConnection to be able to test WritePacket * Refactor BufferManager and the unit tests Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: I80ae01bd8d0119a3a3a957069ae8ac521c005a12
2019-10-03IVGCVSW-3927 Create the Timeline Label Binary PacketMatteo Martincigh
* Added a new utility function to create a Timeline Label Binary Packet and write it to a given buffer * Added new enumeration to be reused for subsequent utility functions * Added unit tests Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: Icbabefb9050f3f3b1a30082eabf875593378001f
2019-10-03IVGCVSW-3440 Fix intermittently failing send thread testMatteo Martincigh
* Simplified the implementation of the MockStreamCounterBuffer * Minor refactoring Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: I3aed97daee0ac32d384e1f830e8cc57aae84950b
2019-10-03Throw by value, catch by const reference. Even anonymously.Matthew Bentham
This avoids compiler warnings about catching polymorphic types by value. Change-Id: I672bcffe3471fcc0c446bab1e554937ba09208b2 Signed-off-by: Matthew Bentham <Matthew.Bentham@arm.com>
2019-09-30IVGCVSW-3903 Create Counter Stream BufferNarumol Prangnawarat
* Add implementation of PacketBuffer * Add implementation of BufferManager * Unit tests Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: Icca3807149ff5a8ed31cc87de73c50b95bca39d4
2019-09-30IVGCVSW-3920 Fix build regression due to implicit conversion in ↵Aron Virginas-Tar
ProfilingConnectionDumpToFileDecorator * Explicitly cast uint32_t to std::streamsize when using in sdt::ofstream::write() Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com> Change-Id: I0f2989d2f8d077ae53b559c4029074a323d62f21
2019-09-27IVGCVSW-3442 Add ProfilingConnectionDumpToFileDecoratorAron Virginas-Tar
Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com> Change-Id: I3a8313287c69268ae02b6a65103363e9fbba6b4a
2019-09-27IVGCVSW-3557 Return IProfilingConnection from ProfilingConnectionFactorySadik Armagan
* Remove WaitingForAck test, test std::cerr instead Signed-off-by: Kevin May <kevin.may@arm.com> Signed-off-by: Sadik Armagan <sadik.armagan@arm.com> Change-Id: I968c53dc005ff078ed08faf8818c83cb2a41528a
2019-09-26IVGCVSW-3902 Create IReadOnlyPacketBuffer, IPacketBuffer and IBufferManager ↵Narumol Prangnawarat
interfaces * Create IReadOnlyPacketBuffer, IPacketBuffer and IBufferManager interfaces * Add Read and Write util functions that use IPacketBuffer * Add MockBufferManager using IBufferManager for testing * Modify SendCounterPacket to use IBufferManager * Modify MockStreamCounterBuffer to use IBufferManager * Remove IBufferWrapper and MockBuffer * Add MockPacketBuffer for testing * Modify unit tests to use the new interfaces Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: Ib86768187e032f07169aa39367a418b7665c9f03
2019-09-25IVGCVSW-3905 Create a first implementation of the send threadMatteo Martincigh
* Added the send thread directly to the SendCounterPacket class * Updated the SendCounterPacket class constructor to also take a reference of a IProfilingConnection object, used to send packets out * Added Start and Stop methods to SendCounterPacket to start and stop the send thread * Added mutex and wait condition to make the send thread waiting for something to send * This implementation used the old IBufferWrapper interface * Added defult (empty) constructor for the Packet class * Refactoring of IPeriodicCounterCapture and SocketProfilingConnection * Modified WritePacket to make it match IBufferWrapper::GetReadBuffer * Added unit test for regular and stress testing of the send thread Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: I8175619ff4e65c0d5be99bcd8bd9d8dd87f717c6
2019-09-25IVGCVSW-3411 Add the Counter Values array and accessor methodsFinnWilliamsArm
Signed-off-by: FinnWilliamsArm <Finn.Williams@arm.com> Change-Id: I4fa2428a83b93cbe58b821344206e2f7ce9e37e7
2019-09-24IVGCVSW-3439 Create the Command ThreadFinnWilliamsArm
Signed-off-by: FinnWilliamsArm <Finn.Williams@arm.com> Change-Id: I9548c5937967f4c25841bb851273168379687bcd
2019-09-24IVGCVSW-3691 Fix the Counter Directory Packet data lengthMatteo Martincigh
* The data_length field in the header represents only the size of the data included in the packet after the header, so the header size is not included * Removed a number of conversion macros in SendCounterPacket by using numeric casts where possible * Updated the unit tests accordingly Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: Ifb23c341c442ff3d33b234d4213b739a77ceb658
2019-09-23IVGCVSW-3413 Add the Counters MetadataFinnWilliamsArm
Signed-off-by: FinnWilliamsArm <Finn.Williams@arm.com> Change-Id: I1313320a28b2d17d1adbc80248882ef458c34a14
2019-09-23IVGCVSW-3437 Add Request Counter Directory Command HandlerNarumol Prangnawarat
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: I56ef68d6fe993d271a0fc43467f2a63cdcaee496
2019-09-20IVGCVSW-3433 Create the Periodic Counter Capture ThreadFrancis Murtagh
* Add Periodic counter thread object * Add Unit test for thread * Move MockBuffer to header file to allow reuse Change-Id: Id2a8ea636723ab35e8a50efc200c8c76059bba02 Signed-off-by: Ferran Balaguer <ferran.balaguer@arm.com> Signed-off-by: Francis Murtagh <francis.murtagh@arm.com>
2019-09-19IVGCVSW-3430 Connection Acknowledged Command Handler ImplementationSadik Armagan
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com> Change-Id: I0ba97a93edb283b37bd1c089c668135a4bf9550c
2019-09-18IVGCVSW-3691 Implement SendCounterPacket.SendCounterDirectoryPacket() functionMatteo Martincigh
* Changed the signature of SendCounterDirectoryPacket to accept any ICounterDirectory object * Added helper methods to the SendCounterPacket class for creating the records * Created mock classes for testing * Added unit tests for both SendCounterDirectoryPacket and the helper methods * Added unit tests for the SWTrace utility functions * Added ReadUint8 utility function for getting single byte out of a buffer * Disabled extra sign-conversion warning in the conversion macro Change-Id: Ie2dddcd6824ed07b623f0cd78d9b7d05c5b70c39 Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
2019-09-18IVGCVSW-3432 Fix a multithread store conflictJim Flynn
* Unit test was using the same CaptureData object across 50 threads Change-Id: I0249b5a8e0bb05e3d3efdd855f5b34b1d5ef3dc9 Signed-off-by: Jim Flynn <jim.flynn@arm.com>