News

COOJA and Testbed Federation/TWIST growing together

Two COOJA plugins and manuals have been published to integrate the TWIST testbed in COOJA and to take checkpoints and perform rollbacks both in TWIST and COOJA.


Call for Papers: CONET/UBICITEC 2013

The 4th International Workshop on Networks of Cooperating Objects for Smart Cities 2013 (CONET/UBICITEC 2013), colocated with CPSWeek 2013, accepts submissions until January 28th, 2013.


Newsletter issue #19

The 19th CONET newsletter has been published. You can read on Virtual Organizations for Multi-Model Based Embedded Systems and on the UvA Bird Tracking System.


Architectural Style

The overall architecture of the CTF platform can be realized using many different architectural patterns that support rich interaction between a set of distributed components. Taking into consideration our stated design principles, we have decided to base the CTF design on the Representational State Transfer (REST) architectural style.

 

REST is a set of design constraints for developing rich resource-oriented systems that mirror the scalability and the flexibility of the Web. In contrast to Service Oriented Architecture (SOA) and other Remote Procedure Call (RPC)-based architectural styles where the data is kept private, encapsulated and hidden behind the processing components, in REST, the state and the nature of the data elements play a central role.

 

The resource is the main abstraction of information in a RESTful system. The resource representation captures the current or intended state of the resource. The components (clients, servers, etc.) act on the resources by transferring and modifying their representations. A resource identifier is used to uniquely identify the resource involved in the interaction.

Resource Model

According to the REST style, the APIs are specified through the resource model and the semantics of the application of the unified HTTP method set on those resources. The following table provides an overview of the main resources and their association with the Testbed Federation API (TF API) and the Testbed Adaptation API (TA API).

 


TF API

TA API and TF API

Federation

Testbed

Project

User

Experiment

Job

PropertySet

NodeGroup

VirtualNodeGroup

Image

VirtualNode

Task

VirtualTask

Trace


Log


Socket


Node


Platform


Interface


Radio


Sensor


Actuator


Mobility


ImageFormat


Uniform Interface

REST mandates a uniform interface between the components in the system. Since all resources in the system can be manipulated with the same method set, the components don’t have to implement specialized code for accessing different resources in the system.

 

The semantics of each operation is well defined and uniform across all resources and components. This leads to an interface that is easy to understand and simplifies the interoperability between large number of uncoordinated actors. The uniform method set also opens the possibility of using a standardized set of return values to inform the caller about the success of the method invocation.

 

The following table provides a succinct overview of the semantics of the most common HTTP methods when applied in a RESTful context on resource collections or individual resources.

 


GETPOSTPUTDELETE

Collection URI


http://testbed.org/nodes

List the URIs of the collection's membersAppend the collection with a new member elementReplace the entire collection with another oneDelete the entire collection

Element URI

http://testbed.org/nodes/14

Retrieve a representation of the addressed memberPartially modify the addressed memberCreate or replace the entire addressed elementDelete the entire addressed element

Safe

Idempotent

Cacheable

Idempotent

Idempotent

 


Invocation Example

"Registering new experiment"

Request

POST /projects/456/experiments

Host: federation.com

Accept: application/ctf.Experiment+json

Content-Type: application/ctf.Experiment+json

Representation

{

"name":"Test Experiment",
"description":"A simple test experiment",
"user":{
"uri":"http://federation.com/users/123",
"name":"John Smith",
"media_type":"application/ctf.User+json"
   },
"project":{
"uri":"http://federation.com/projects/456",
"name":"Test Projest",
"media_type":"application/ctf.Project+json"
   },
"sharing":"public"
}

Response

HTTP/1.1 201 Created

Location: federation.com/projects/456/experiments/789