Blame view

RIOT/dist/testbed-support/Makefile.iotlab 3.32 KB
a752c7ab   elopes   add first test an...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
  .PHONY: iotlab-auth iotlab-exp iotlab-flash iotlab-reset iotlab-term iotlab-check-exp
  
  IOTLAB_NODES        ?= 5
  IOTLAB_DURATION     ?= 30
  IOTLAB_TYPE         ?= m3:at86rf231
  IOTLAB_AUTH         ?= $(HOME)/.iotlabrc
  IOTLAB_USER         ?= $(shell cut -f1 -d: $(IOTLAB_AUTH))
  IOTLAB_EXP_ID       ?= $(shell experiment-cli get -l --state Running | grep -m 1 '"id"' | grep -Eo '[[:digit:]]+')
  IOTLAB_EXP_NAME     ?= RIOT_EXP
  IOTLAB_DEBUG_PORT   ?= 3333
  IOTLAB_DEBUG_NODE   ?= $(shell experiment-cli get -i $(IOTLAB_EXP_ID) --resources | \
                           grep -m 1 "network_address" | sed 's/.*-\([0-9]*\)\..*/\1/')
  
  IOTLAB_AUTHORITY    = "$(IOTLAB_USER)@$(IOTLAB_SITE).iot-lab.info"
  
  ifneq (,$(findstring m3,$(IOTLAB_TYPE)))
  	BINARY := $(ELFFILE)
  else
  	BINARY := $(HEXFILE)
  endif
  
  ifdef IOTLAB_PHY_NODES
      NODES_PARAM_BASE = -l$(IOTLAB_SITE),$(firstword $(subst :, ,$(IOTLAB_TYPE))),$(IOTLAB_PHY_NODES)
      NODES_PARAM = "$(NODES_PARAM_BASE),$(BINARY),$(IOTLAB_PROFILE)"
  endif
  
  ifdef IOTLAB_EXCLUDE_NODES
      EXCLUDE_PARAM := "-e$(IOTLAB_SITE),$(firstword $(subst :, ,$(IOTLAB_TYPE))),$(IOTLAB_EXCLUDE_NODES)"
  endif
  
  $(IOTLAB_AUTH):
  	auth-cli -u $(IOTLAB_USER)
  
  iotlab-exp: $(IOTLAB_AUTH) all
  	$(eval IOTLAB_SITE ?= grenoble)
  
      ifneq (RIOT_EXP,$(IOTLAB_EXP_NAME))
  	    $(eval IOTLAB_EXP_NAME := RIOT_EXP_$(IOTLAB_EXP_NAME))
      endif
  
      ifndef NODES_PARAM
  	    $(eval NODES_PARAM := "-l$(IOTLAB_NODES),archi=$(IOTLAB_TYPE)+site=$(IOTLAB_SITE),$(BINARY),$(IOTLAB_PROFILE)")
      endif
  
      ifeq (,$(Q))
  	    @echo "experiment-cli submit -d $(IOTLAB_DURATION) $(NODES_PARAM) -n $(IOTLAB_EXP_NAME)"
      endif
  	$(eval NEW_ID := $(shell experiment-cli submit -d $(IOTLAB_DURATION) $(NODES_PARAM) -n $(IOTLAB_EXP_NAME) | grep -Eo '[[:digit:]]+'))
  	$(Q)experiment-cli wait -i $(NEW_ID)
  
      ifdef IOTLAB_LOGGING
  	    $(Q)ssh -t $(IOTLAB_AUTHORITY) "tmux new -d -s riot-$(NEW_ID)\
  	    'script -fac "'"'"serial_aggregator -i $(NEW_ID)"'"'"\
  	     RIOT_LOG-$(IOTLAB_EXP_NAME)-$(NEW_ID)'"
      endif
  
  iotlab-flash: $(IOTLAB_AUTH) iotlab-check-exp all
  	$(Q)node-cli --update $(BINARY) -i $(IOTLAB_EXP_ID) $(NODES_PARAM_BASE) $(EXCLUDE_PARAM)
  
  iotlab-reset: $(IOTLAB_AUTH) iotlab-check-exp
  	$(Q)node-cli --reset -i $(IOTLAB_EXP_ID) $(NODES_PARAM_BASE) $(EXCLUDE_PARAM)
  
  iotlab-debug-server: $(IOTLAB_AUTH) iotlab-check-exp
  	$(eval DEBUG_TYPE := $(shell echo $(IOTLAB_TYPE) | cut -d: -f1))
  	$(eval DEBUG_NODE := $(shell echo $(IOTLAB_DEBUG_NODE) | sed 's/$(DEBUG_TYPE)-\([0-9]*\)/\1/'))
  
  	$(Q)node-cli --debug-start -i $(IOTLAB_EXP_ID) -l $(IOTLAB_SITE),$(DEBUG_TYPE),$(DEBUG_NODE)
  	@echo "Debug on node $(IOTLAB_DEBUG_NODE)"
  	$(Q)ssh -N -L $(IOTLAB_DEBUG_PORT):$(IOTLAB_DEBUG_NODE):3333 $(IOTLAB_AUTHORITY)
  
  iotlab-stop: $(IOTLAB_AUTH) iotlab-check-exp
  	$(Q)experiment-cli stop -i $(IOTLAB_EXP_ID)
  
  iotlab-term: iotlab-check-exp
  	$(Q)ssh -t $(IOTLAB_AUTHORITY) "test -f ~/.iotlabrc || auth-cli -u $(IOTLAB_USER)"
  
  	$(Q)ssh -t $(IOTLAB_AUTHORITY) \
  	"tmux attach -t riot-$(IOTLAB_EXP_ID) || tmux new -s riot-$(IOTLAB_EXP_ID) \
  	'$(if $(IOTLAB_LOGGING), \
  	script -fac "'"'"serial_aggregator -i $(IOTLAB_EXP_ID) $(NODES_PARAM_BASE)"'"'" \
  	RIOT_LOG-$(IOTLAB_EXP_NAME)-$(IOTLAB_EXP_ID), \
  	serial_aggregator -i $(IOTLAB_EXP_ID) $(NODES_PARAM_BASE))'"
  
  iotlab-check-exp:
  ifndef IOTLAB_SITE
  	$(eval IOTLAB_SITE         := $(shell experiment-cli get -ri -i $(IOTLAB_EXP_ID) | sed -n 4p | cut -d\" -f2))
  endif