\section{Testing Scenarios}
\label{subsec:testing}
In order to test our implementation performance, we have settled two virtual
machines located in the same network and installed the P2PKP module on both of
them. Our goal was to compare the results of our implementation with the
results of the \texttt{sendfile} system call, the solution that offers the
highest performance for file transferring over the network nowadays. We rely
on the assumption that for sending a file to multiple destinations, the
user space application would have to execute several \texttt{sendfile} system
calls, one for each destination. Our module will require only one
\texttt{write} system call to achieve the same behavior.

Our testing scenarios imply sending several files, with different sizes, over
the network, to different numbers of destinations/peers. Following this, we have
randomly generated four different files, with sizes varying from 32MB, to 256
MB. The number of sites was also varying, starting from a single site up to
eight sites.

Our measurements were done not only between the two virtual machine deployed,
but also on the loopback interfaces. We considered that the tests would be
more relevant if they were performed on different machines, because this would
be the practical use case. However, the results were not different at all, as
the module algorithm is the same, regardless the device implementation.
Therefore, in Section \ref{sec:results}, we have only specified the
measurements we obtained for the tests between the two virtual machines
deployed.

The only metric we considered in our tests is the time spent on the
distribution of the file content, from a single peer, to multiple
destinations. We decided that this is the most relevant metric from the
application's perspective, as a programmer looks for the best solution
performance in terms of time spent. Section \ref{sec:results} illustrates the
test results we have obtained and performs a comparison between the two
solutions.
