Report view
===========
The generated HTML report view presents three different tabs: a *diagram* tab,
a *measure logs* tab and a *source code* tab. For the purpose of this guide,
we will concentrate ourselves on the main tab, the *diagram* tab.
The diagram tab can be split up in 6 logical regions: tabs, filters, actors,
conversations, transactions and details. With the exception of the tab bar, the
other 5 regions are described in detail in the following subsections.
Filters
-------
.. figure:: /assets/region-filters.*
:align: center
:figclass: align-left
:width: 200pt
Diagram view with the *filters* region highlighted.
The filter bar allows to trigger different visualization modes of the different
transactions, by including or excluding one or more transactions based on some
criteria or by rendering a logical group of transactions differently.
The available filters and renderers are:
Display mode
Triggers the visualization of transactions based on their TCP flags.
Possible values are *all* to display all transactions, *hide ACK-only* to
show all transactions but they with only the ``ACK`` flag set,
*smart SYN/FIN* to group transactions belonging to the same three way
handshake (or the same ``FIN`` sequence) into one and rendering it
appropriately or *PSH only* to display only transactions containing actual
POP method calls or responses.
Conversations filter
A simple filter allowing to select or deselect visible conversations.
BindStatus display mode
Triggers the visualization of ``BindStatus`` calls and responses. Possible
values are *normal* to display them as normal transactions, *smart* to group
them into a single transaction and render it appropriately or *hide* to
completely hide any ``BindStatus`` related transaction.
Hide/show all details
A simple switch to either hide all transaction details or to show them all.
Actors
------
.. figure:: /assets/region-actors.*
:align: center
:figclass: align-left
:width: 200pt
Diagram view with the *actors* region highlighted.
The actors region displays the different IP addresses and ports bound to each
conversation. When hovering a transaction, the two peers are automatically
highlighted.
This highlight mode can be fixed by clicking on a node and reset by clicking a
second time.
Additionally it is possible to hide or show all conversations from/to a given
actor or by clicking on it by keeping the ``alt`` or, respectively, the
``meta`` key respectively pressed.
Conversations
-------------
.. figure:: /assets/region-conversations.*
:align: center
:figclass: align-left
:width: 200pt
Diagram view with the *conversations* region highlighted.
The conversations region simply indicates for each transaction to which
conversation it belongs to. A conversation is simply the set of all
transactions which where transmitted on the same TCP connection.
The conversations are numbered, starting at zero, from the oldest to the
youngest and their number corresponds to the number displayed in the
*Conversations filter* too.
Transactions
------------
.. figure:: /assets/region-transactions.*
:align: center
:figclass: align-left
:width: 200pt
Diagram view with the *transactions* region highlighted.
This region displays from which actor to which actor a transaction happened
and, if the respective smart display filters are active, renders SYN/FIN and
BindStatus requests accordingly.
When overing a transaction, its bounds are automatically highlights in the same
way as it was for the actors above.
Details
-------
.. figure:: /assets/region-details.*
:align: center
:figclass: align-left
:width: 200pt
Diagram view with the *details* region highlighted.
This region is the most interesting and informational of the entire report.
It provides details such as TCP flags, POP invocation semantics, transaction
type, called object and method, passed arguments,... simply click on the
corresponding row to expand it and show all details of the transaction.
An example of expanded transaction details is displayed in the figure below;
the different parts composing it are explained in deeper detail after the
screenshot.
.. figure:: /assets/transaction-details.*
:align: center
:figclass: align-left clear
Expanded details region for a single transaction.
Starting at the top-left corner, we are presented with the TCP flags which were
set for this transaction; possible values are ``ACK``, ``SYN``, ``PSH`` and
``FIN``.
Just after them, on the right, the transaction type; possible values are ``→``
for a method call, ``<-`` for a reply and ``×`` for an exception.
The next flags group, in green, represents the POP call semantics; possible
values for them are the well known ``SYNC``, ``ASYNC``, ``CONC``, ``SEQ``,
``MTX`` (for mutex) and ``CONSTRUCT`` (for constructor calls).
The rest of the line is dedicated to a short representation of the method call,
including class name, method name and the arguments if they are not too long
to be represented.
On the following line, inside the *decoded frame* field, the full decoded and
highlighted request is represented.
The original payload shows the hex encoded original content of the payload as
it was captured by ``tshark``.
The last line only remembers, in a textual way, the two involved actors with
the respective IP addresses and port numbers.
Other tabs
----------
Other two tabs are available in the tab bar, and although not providing as much
information as the diagram view, they can provide some useful insight in the
measure constructions, especially for a third party person watching at the
report for the first time.
Both views are file browsers but for two different file type groups:
Logs view
This view groups all collected log files relative to this specific measure
and presents them in a simple to use file browser with no additional
syntax highlighting.
Source code view
This view groups all source code files found in the original measure case
folder and provides syntax highlighting for the different file types such as
makefiles, POP-C++ headers, C++ source code,...