HTTPS SSH

A Development Approach for Collective Opportunistic Edge-of-Things Services

Submitted in Information Sciences. For any issues with reproducing the experiments, please contact Danilo Pianini.

Description

This repository contains all the source code used to perform the experiments presented in the paper and produce the charts.

Prerequisites

These are the software we used to produce the results. The system may work on different version of the tools proposed. However, please note that the following are the versions on which it was executed.

  • Importing the repository

    • Git
  • Executing the simulations

    • Java 8 JDK update 202 or above installed and set as default virtual machine, newer JDKs not supported
    • The javac and java commands must be available from the terminal
  • Chrunching the generated data and producing the charts

    • Python 3.7.2
    • Matplotlib 3.0.2
    • NumPy 1.16.0
    • Xarray 0.11.3

Notes about the supported operating systems

All the tests have been performed under Linux, no test has been performed under any other operating system, and we only support reproducing the tests under that environment. Due to the portable nature of the used tools, the test suite might run also on other Unix-like OSs (e.g. BSD, MacOS X), and possibly under Microsoft Windows, provided that the prerequisites are met. The detection of the available installed memory used to fine tune the simulation batch performance requires read access to /proc/meminfo, and it is only available under Linux. On other systems, 16GB of RAM are guessed, please modify build.gradle.kts if your system has different capabilities. All the commands that follow in this README.md file are meant for being used on Linux, there is a chance they will work on other Unix-like OSs, they are not going to work under Microsoft Windows (most of them can be easily adapted though).

Reproducing the experiment

Importing the repository

The first step is cloning this repository. It can be easily done by using git. Open a terminal, move it into an empty folder of your choice, then issue the following command:

git clone git@bitbucket.org:danysk/experiment-2018-information-sciences.git .

In case you have not set up your ssh keys correctly, you can work the problem around by copying via HTTPS (however, we do recommend you to configure them properly):

git clone https://bitbucket.org/danysk/experiment-2018-information-sciences.git .

This should make all the required files appear in your repository, with the latest version.

Re-executing the simulations

The whole set of simulations can be executed by pointing the terminal in the root directory where the repository was cloned, and issuing:

./gradlew

Results will be written in the data directory. Please make sure that such directory exists. Older files in such folder whose name matches the data export name will be overwritten without prior notice.

Note Windows users may try to use: gradlew.bat. It should produce the same results of ./gradlew, but it has not been tested and it's here for testing purposes only.

Crunching data and producing the graphs

A Python 3 script is available for producing the charts. It first merges all the data generated by simulations, then uses it to produce graphs. To execute it, issue:

python process.py

Charts used in the paper will be generated as pdf files. If executed in a interactive Python environment, such as Spyder 3, the script will also plot on console a number of other charts.

Cropping charts

The script tries to use krop to automatically remove the white borders created by Matplotlib. In case such tool is not available (the krop executable can't be found on PATH), the charts will get generated but not cropped.

Tested platforms

We successfully ran the experiments with the following systems:

Tests successfully executed, charts correctly generated

  • Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz
  • 32GB RAM
  • Linux 4.20.5-arch1-1-ARCH #1 SMP PREEMPT x86_64 GNU/Linux
  • OpenJDK Runtime Environment (build 1.8.0_202-b26) OpenJDK 64-Bit Server VM (build 25.202-b26, mixed mode)
  • Python 3.7.2