aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2021-05-08 13:38:43 +0200
committerLoic Guegan <manzerbredes@mailbox.org>2021-05-08 13:38:43 +0200
commit8b7b9c9e0a3f0a2f2c5ff4d516a640002b5f1891 (patch)
treea3015db67227edc97b9ed8876e809832ef43d7ed
parent66ba2be4eda2b0d8a5642390c3df4a11d95e3a71 (diff)
Add scenarios tool
-rw-r--r--.gitignore1
-rw-r--r--Makefile11
-rw-r--r--inputs.json28
-rw-r--r--src/scenarios.cc82
4 files changed, 92 insertions, 30 deletions
diff --git a/.gitignore b/.gitignore
index 41ed29e..c96c007 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@ libs/simgrid
libs/rapidjson
compile_commands.json
platform.xml
+scenarios
diff --git a/Makefile b/Makefile
index b754389..3ed792d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,14 +1,19 @@
EXEC := simulator
LIBS := ./libs/simgrid/build/lib
INCLUDES := ./libs/simgrid/build/include ./libs/simgrid/include libs/rapidjson/include
-CC := g++ -lsimgrid $(addprefix -L , $(LIBS)) $(addprefix -I , $(INCLUDES))
+SCENARIOS := src/scenarios.cc
+CC := g++ $(addprefix -L , $(LIBS)) $(addprefix -I , $(INCLUDES))
+all: $(EXEC) $(basename $(notdir $(SCENARIOS)))
-$(EXEC): $(wildcard src/*)
+$(EXEC): $(filter-out $(SCENARIOS), $(wildcard src/*))
+ $(CC) -lsimgrid $^ -o $@
+
+$(basename $(notdir $(SCENARIOS))): $(SCENARIOS)
$(CC) $^ -o $@
run: $(EXEC)
export LD_LIBRARY_PATH=$(addprefix :, $(LIBS)) && ./$(EXEC) 10 --cfg=network/bandwidth-factor:1.05 --cfg=network/model:CM02 -–cfg=network/crosstraffic:0
clean:
- -rm $(EXEC) \ No newline at end of file
+ -rm $(EXEC) $(basename $(notdir $(SCENARIOS))) \ No newline at end of file
diff --git a/inputs.json b/inputs.json
index 9fda5e6..757cea0 100644
--- a/inputs.json
+++ b/inputs.json
@@ -1,27 +1 @@
-{
- "extended":true,
- "nodes":{
- "on0":{
- "is_sender": true,
- "power_off": 0,
- "power_on": 1,
- "power_rx": 2,
- "power_tx": 3,
- "use_hint": true,
- "wake_ts": [ 1, 7, 7 ],
- "wake_duration": [ 5, 1, 2],
- "data_size": 50
- },
- "on1":{
- "is_sender": false,
- "power_off": 0,
- "power_on": 10,
- "power_tx": 10,
- "power_rx": 10,
- "use_hint": false,
- "wake_ts": [ 1, 7, 8 ],
- "wake_duration": [ 5, 5, 1],
- "data_size": 50
- }
- }
-}
+{"extended":false,"nodes":{"on0":{"use_hint":false,"power_off":0,"power_on":10,"power_rx":11,"power_tx":12,"is_sender":true,"data_size":50,"wake_ts":[8.0,18.0,28.0,38.0,48.0],"wake_duration":[5.0,5.0,5.0,5.0,5.0]},"on1":{"use_hint":false,"power_off":0,"power_on":10,"power_rx":11,"power_tx":12,"is_sender":false,"data_size":50,"wake_ts":[5.0,15.0,25.0,35.0,45.0],"wake_duration":[5.0,5.0,5.0,5.0,5.0]},"on2":{"use_hint":false,"power_off":0,"power_on":10,"power_rx":11,"power_tx":12,"is_sender":false,"data_size":50,"wake_ts":[0.0,10.0,20.0,30.0,40.0,50.0],"wake_duration":[5.0,5.0,5.0,5.0,5.0,5.0]},"on3":{"use_hint":false,"power_off":0,"power_on":10,"power_rx":11,"power_tx":12,"is_sender":false,"data_size":50,"wake_ts":[1.0,11.0,21.0,31.0,41.0,51.0],"wake_duration":[5.0,5.0,5.0,5.0,5.0,5.0]},"on4":{"use_hint":false,"power_off":0,"power_on":10,"power_rx":11,"power_tx":12,"is_sender":false,"data_size":50,"wake_ts":[2.0,12.0,22.0,32.0,42.0,52.0],"wake_duration":[5.0,5.0,5.0,5.0,5.0,5.0]},"on5":{"use_hint":false,"power_off":0,"power_on":10,"power_rx":11,"power_tx":12,"is_sender":false,"data_size":50,"wake_ts":[4.0,14.0,24.0,34.0,44.0,54.0],"wake_duration":[5.0,5.0,5.0,5.0,5.0,5.0]},"on6":{"use_hint":false,"power_off":0,"power_on":10,"power_rx":11,"power_tx":12,"is_sender":false,"data_size":50,"wake_ts":[0.0,10.0,20.0,30.0,40.0,50.0],"wake_duration":[5.0,5.0,5.0,5.0,5.0,5.0]},"on7":{"use_hint":false,"power_off":0,"power_on":10,"power_rx":11,"power_tx":12,"is_sender":false,"data_size":50,"wake_ts":[0.0,10.0,20.0,30.0,40.0,50.0],"wake_duration":[5.0,5.0,5.0,5.0,5.0,5.0]},"on8":{"use_hint":false,"power_off":0,"power_on":10,"power_rx":11,"power_tx":12,"is_sender":false,"data_size":50,"wake_ts":[3.0,13.0,23.0,33.0,43.0,53.0],"wake_duration":[5.0,5.0,5.0,5.0,5.0,5.0]},"on9":{"use_hint":false,"power_off":0,"power_on":10,"power_rx":11,"power_tx":12,"is_sender":false,"data_size":50,"wake_ts":[4.0,14.0,24.0,34.0,44.0,54.0],"wake_duration":[5.0,5.0,5.0,5.0,5.0,5.0]}}} \ No newline at end of file
diff --git a/src/scenarios.cc b/src/scenarios.cc
new file mode 100644
index 0000000..7f6185f
--- /dev/null
+++ b/src/scenarios.cc
@@ -0,0 +1,82 @@
+#include <rapidjson/document.h>
+#include <rapidjson/filewritestream.h>
+#include <rapidjson/writer.h>
+
+#include <cstdio>
+#include <iostream>
+#include <time.h>
+#include <sstream>
+
+
+#define RAND(min,max) (rand()%(max-min)+min)
+
+using namespace std;
+using namespace rapidjson;
+
+#define N_NODE 10
+#define EXTENDED false
+#define SIMULATION_DURATION 60
+#define POWER_OFF 0
+#define POWER_ON 10
+#define POWER_RX 11
+#define POWER_TX 12
+#define DATA_SIZE 50
+#define USE_HINT false
+#define WAKE_UP_EVERY 10
+#define WAKE_UP_FOR 5
+#define MAX_STARTUP_DELAY 10
+
+unsigned int seed = 0;
+
+int main(int argc, char **argv){
+ // Setup seed
+ if(argc>1){
+ srand( atoi(argv[1]) );
+ }
+
+ // Create document
+ Document d;
+ d.SetObject();
+ d.AddMember("extended",EXTENDED,d.GetAllocator());
+
+ // Create nodes
+ Value nodes(kObjectType);
+ for(int i=0;i<N_NODE;i++){
+ Value node(kObjectType);
+ node.SetObject();
+ node.AddMember("use_hint",USE_HINT,d.GetAllocator());
+ node.AddMember("power_off",POWER_OFF,d.GetAllocator());
+ node.AddMember("power_on",POWER_ON,d.GetAllocator());
+ node.AddMember("power_rx",POWER_RX,d.GetAllocator());
+ node.AddMember("power_tx",POWER_TX,d.GetAllocator());
+ node.AddMember("is_sender",i==0,d.GetAllocator());
+ node.AddMember("data_size",DATA_SIZE,d.GetAllocator());
+
+ // Setup ts and durations
+ Value ts(kArrayType);
+ Value duration(kArrayType);
+ for(unsigned int i=(RAND(0,MAX_STARTUP_DELAY));(i+WAKE_UP_FOR)<SIMULATION_DURATION;i+=WAKE_UP_EVERY){
+ ts.PushBack(Value().SetDouble(i),d.GetAllocator());
+ duration.PushBack(Value().SetDouble(WAKE_UP_FOR),d.GetAllocator());
+ }
+ node.AddMember("wake_ts",ts,d.GetAllocator());
+ node.AddMember("wake_duration",duration,d.GetAllocator());
+
+
+ // Add node to nodes
+ std::ostringstream ss;
+ ss<< "on" <<i;
+ Value key(ss.str().c_str(), d.GetAllocator());
+ nodes.AddMember(key,node,d.GetAllocator());
+ }
+ d.AddMember("nodes",nodes,d.GetAllocator());
+
+
+ // Write to stdout
+ StringBuffer buffer;
+ Writer<StringBuffer> writer(buffer);
+ d.Accept(writer);
+ cout << buffer.GetString();
+
+ return 0;
+} \ No newline at end of file