1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-01-18 12:52:44 +01:00

Merge pull request #5030 from cgundogan/pr/desvirt/proper_integration

dist/tools/desvirt: proper desvirt integration
This commit is contained in:
Oleg Hahm 2016-03-10 21:51:42 +01:00
commit 0ece90bd5f
5 changed files with 186 additions and 35 deletions

View File

@ -448,3 +448,6 @@ ifneq (,$(filter iotlab-m3 wsn430-v1_3b wsn430-v1_4,$(BOARD)))
include $(RIOTBASE)/dist/testbed-support/Makefile.iotlab
endif
endif
# Include desvirt Makefile
include $(RIOTBASE)/dist/tools/desvirt/Makefile.desvirt

View File

@ -1,35 +0,0 @@
PKG_NAME=desvirt
PKG_URL=https://github.com/des-testbed/desvirt.git
PKG_VERSION=master
PKG_DIR=$(CURDIR)/$(PKG_NAME)
.PHONY: all clean patch distclean desvirtdefine
all: clean $(PKG_NAME) patch desvirtdefine
patch:
cd "$(PKG_DIR)" && git am --ignore-whitespace "$(CURDIR)"/*.patch
desvirtdefine: patch
$(foreach topology,$(shell ls $(PKG_NAME)/.desvirt/*.xml), \
cd $(PKG_NAME) && \
./vnet --define --name "$(basename $(notdir $(topology)))";)
$(PKG_NAME):
# Get $(PKG_VERSION) of package from $(PKG_URL)
$(if $(wildcard $(PKG_NAME)),cd $(CURDIR)/$(PKG_NAME) && \
git clean -x -f && \
git reset --hard $(PKG_VERSION) \
, git clone $(PKG_URL) $(PKG_NAME) && \
cd $(PKG_NAME) && \
git reset --hard $(PKG_VERSION))
clean::
# Reset package to checkout state.
$(if $(wildcard $(PKG_NAME)),cd $(CURDIR)/$(PKG_NAME) && \
git clean -x -f && \
git reset --hard $(PKG_VERSION) \
, )
distclean::
rm -rf $(CURDIR)/$(PKG_NAME)

57
dist/tools/desvirt/Makefile.desvirt vendored Normal file
View File

@ -0,0 +1,57 @@
TOOL_NAME=desvirt
TOOL_URL=https://github.com/des-testbed/desvirt.git
TOOL_VERSION=master
TOOL_DIR=$(RIOTBASE)/dist/tools/$(TOOL_NAME)/$(TOOL_NAME)
.PHONY: desvirt-check desvirt-check-topo-file desvirt-check-topo-args desvirt-clean \
desvirt-distclean desvirt-define desvirt-undefine desvirt-start desvirt-stop desvirt-list
desvirt-check:
ifeq ($(wildcard $(TOOL_DIR)),)
git clone $(TOOL_URL) $(TOOL_DIR)
cd $(TOOL_DIR) && git reset --hard $(TOOL_VERSION)
endif
desvirt-check-topo-file: desvirt-check
ifndef TOPO
$(error TOPO is not set)
endif
desvirt-check-topo-args: desvirt-check
ifndef TOPO_TYPE
$(error TOPO_TYPE is not set)
endif
ifndef TOPO_SIZE
$(error TOPO_SIZE is not set)
endif
desvirt-define: desvirt-check-topo-file
cd $(TOOL_DIR) && ./vnet -d $(TOOL_DIR)/.desvirt/$(TOPO_FLE) -n $(basename $(TOPO))
desvirt-undefine: desvirt-check-topo-file
cd $(TOOL_DIR) && ./vnet -u $(TOOL_DIR)/.desvirt/$(TOPO_FLE) -n $(basename $(TOPO))
desvirt-start: desvirt-check-topo-file
cd $(TOOL_DIR) && ./vnet -s -n $(basename $(TOPO))
desvirt-stop: desvirt-check-topo-file
cd $(TOOL_DIR) && ./vnet -q -n $(basename $(TOPO))
desvirt-topology: desvirt-check-topo-args all
cd $(TOOL_DIR) && \
./topology_creator -e $(ELFFILE) -n riot_native -r ieee802154 -s$(TOPO_SIZE) -t$(TOPO_TYPE) -f $(TOPO_TYPE)$(TOPO_SIZE)
desvirt-list: desvirt-check
cd $(TOOL_DIR) && ./vnet -l
desvirt-clean::
ifneq ($(wildcard $(TOOL_DIR)),"")
cd $(TOOL_DIR) && git clean -x -f && git reset --hard $(TOOL_VERSION)
endif
desvirt-distclean::
rm -rf $(TOOL_DIR)

126
dist/tools/desvirt/README.desvirt.md vendored Normal file
View File

@ -0,0 +1,126 @@
# DESVIRT integration into RIOT
You can find more information about desvirt at
https://github.com/des-testbed/desvirt
## Control DESVIRT via Make
### Variables
This Makefile introduces some additional variables:
* TOPO (name of the topology to use)
* TOPO_SIZE (size of the topology to use)
* TOPO_TYPE (type of the topology to use [line|grid])
### Targets
It defines the following targets:
* desvirt-topology
* desvirt-define
* desvirt-undefine
* desvirt-list
* desvirt-start
* desvirt-stop
* desvirt-clean
* desvirt-distclean
#### desvirt-topology
This target creates a new topology file in `RIOTBASE/dist/tools/desvirt/desvirt/.desvirt`
It is necessary to supply the type and size of the new topology with `TOPO_TYPE` and `TOPO_SIZE`.
The make target will create the topology file with the name `$(TOPO_TYPE)$(TOPO_SIZE)`.
Examples:
```
TOPO_TYPE=line TOPO_SIZE=4 make desvirt-topology
TOPO_TYPE=grid TOPO_SIZE=9 make desvirt-topology
```
The names of the files will be: `line4` and `grid9`.
#### desvirt-define
This target defines a new topology. This must be done prior to starting desvirt.
```
TOPO=line4 make desvirt-define
```
#### desvirt-undefine
This target undefines a topology.
```
TOPO=line4 make desvirt-undefine
```
#### desvirt-list
This target lists all defined topologies.
```
make desvirt-list
```
#### desvirt-start
This target starts a new virtualization with the given topology name.
The topology must be defined beforehand.
```
TOPO=line4 make desvirt-start
```
You will get an output like this:
```
cd /home/pschmerzl/RIOT/dist/tools/desvirt/desvirt && ./vnet -s -n line4
vnet : Loaded statefile .desvirt/lib/line4.macs.
vif : creating line4_0 for pschmerzl
vif : Creating tap: line4_0
vif : creating line4_1 for pschmerzl
vif : Creating tap: line4_1
vif : creating line4_2 for pschmerzl
vif : Creating tap: line4_2
vif : creating line4_3 for pschmerzl
vif : Creating tap: line4_3
lossnet : line4: New link from line4_0 to line4_1, rate=100mbit, loss=0.0, delay=0.0
lossnet : line4: New link from line4_1 to line4_0, rate=100mbit, loss=0.0, delay=0.0
lossnet : line4: New link from line4_1 to line4_2, rate=100mbit, loss=0.0, delay=0.0
lossnet : line4: New link from line4_2 to line4_1, rate=100mbit, loss=0.0, delay=0.0
lossnet : line4: New link from line4_2 to line4_3, rate=100mbit, loss=0.0, delay=0.0
lossnet : line4: New link from line4_3 to line4_2, rate=100mbit, loss=0.0, delay=0.0
vnet : Network Name: line4
vm : Defining RIOT native process line4_1
riotnative : Start the RIOT: socat EXEC:'/home/pschmerzl/RIOT/examples/gnrc_networking/bin/native/gnrc_networking.elf line4_1',end-close,stderr,pty TCP-L:4711,reuseaddr,fork
riotnative : PID: 18235
vm : Defining RIOT native process line4_0
riotnative : Start the RIOT: socat EXEC:'/home/pschmerzl/RIOT/examples/gnrc_networking/bin/native/gnrc_networking.elf line4_0',end-close,stderr,pty TCP-L:4712,reuseaddr,fork
riotnative : PID: 18236
vm : Defining RIOT native process line4_3
riotnative : Start the RIOT: socat EXEC:'/home/pschmerzl/RIOT/examples/gnrc_networking/bin/native/gnrc_networking.elf line4_3',end-close,stderr,pty TCP-L:4713,reuseaddr,fork
riotnative : PID: 18237
vm : Defining RIOT native process line4_2
riotnative : Start the RIOT: socat EXEC:'/home/pschmerzl/RIOT/examples/gnrc_networking/bin/native/gnrc_networking.elf line4_2',end-close,stderr,pty TCP-L:4714,reuseaddr,fork
riotnative : PID: 18238
```
Once the topology is running, you can use `pyterm` to connect to the various
instances, e.g. calling `pyterm -ts 4712` to connect to node `line4_0` from the
example above.
#### desvirt-stop
This target stops a new virtualization with the given topology name.
The topology must be defined beforehand.
```
TOPO=line4 make desvirt-stop
```
#### desvirt-clean
This target resets the desvirt git-folder. All topologies will be deleted.
```
make desvirt-clean
```
#### desvirt-distclean
This target deletes the desvirt folder.
```
make desvirt-distclean
```