Skip to content

SEAMDAP/Demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SEAMDAP Protocol Demo

This is the repository of the SEAMDAP Protocol.

Brief Description of the Protocol

The SEAMDAP protocol is described in the paper "Seamless Sensor Data Acquisition for the Edge-to-Cloud Continuum". The paper was submitted for ACM PODC 2022: The 41st ACM Symposium on Principles of Distributed Computing (PODC 2022), and is now under review. \

Read the paper before continuing: link-and-info-to-be-added (Info are hidden due to double blind review policy).

Description of the Demo

The demo is composed by two functional parts: the Client and the Server part.

The Server is a SEAMDAP HTTP-based RESTful seamdap_server, capable of interpreting the SEAMDAP messages, for all the phases. He need the access to a Redis-Server to store received data.


The Client is capable of emulating a dynamic set of SEAMDAP clients (one for each sensors node instance to be registered) The Client part is executed as follows. First, N goroutines are created, with N equal to the number of instances, which are in charge of obtaining, personalizing and uploading to the seamdap_server a file adhering to the Thing Description format. Each goroutine suddenly creates M sub-goroutines, with M equal to the number of instances that will be registered using the related TD interface. The instance's sub-goroutine also takes care of loading its samples on a regular basis. During the execution, spread along the various phases, some inactivity times and periodicities are randomly chosen to offset the various activities, respecting some min and max values.

Repository Organization


The code is unique to both parties. It is necessary to to copy it into the two selected nodes to host the relative entities, and then start them separately, after having properly set the configuration file.
The repo is mainly organized as follow:

  • init.go: the main file where the Demo starts
  • /seamdap_server: directory containing the Server code.
    • seamdap_server.go contains the main cycle, routing and functionality of the server.
    • seamdap_handler.go contains the handler function associated to each API.
  • /seamdap_client: directory containing the Client code.
    • seamdap_client.go contains the main logic of the emulated clients.
    • seamdap_requests.go contains the code for requests generations.
  • /configs/settings.go: file containing the settings of the Demo. Modify this file as needed.
  • /utils: directory containing the common code used by both Server and Client.
    • messages.go contains the pre-formatted message prototypes sended by the client in phase 1 and 3.
    • models.go contains the models, in the form of structs, of the main entities that are used in the Demo, and utility functions used to deal with them.
    • senml_seamdap.go contains Go struct of a SenML message (SEAMDAP version).
    • simplelog.go contains the code for Logging operations.
    • thingdescription.go contains Go simple struct of a Thing Description (TD) message .

How to Start the Demo


From the init.go file it is possible to run both the component.

To start the Server node:

go run init.go server
  • After the startup, the seamdap_server accepts command-line read instructions. the accepted commands are:
    • start: starts the seamdap_server
    • stop: shut down the seamdap_server
    • help: print help text
    • status: print status of the seamdap_server
    • exit: stops the seamdap_server and close the program

To start the Clients node:

go run init.go client

Go 1.16 version or above is recommended.

About

SEAMDAP Demo Repository, used for performance evaluation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published