Setup experimentations

This commit is contained in:
Loic Guegan 2021-05-08 17:10:06 +02:00
parent 8b7b9c9e0a
commit f9ce6e80c6
8 changed files with 171 additions and 33 deletions

View file

@ -17,7 +17,9 @@ Inputs::Inputs(std::string node_name){
use_hint=d["nodes"][node_name.c_str()]["use_hint"].GetBool();
data_size=d["nodes"][node_name.c_str()]["data_size"].GetInt();
extended=d["extended"].GetBool();
simkey=d["simkey"].GetString();
seed=d["seed"].GetInt();
// Instantiate wake_ts
for(auto& v:d["nodes"][node_name.c_str()]["wake_ts"].GetArray()){
wake_ts.push_back(v.GetDouble());
@ -29,6 +31,10 @@ Inputs::Inputs(std::string node_name){
}
// Identity check
if(wake_ts.size()<1){
std::cerr << "Invalid node configuration: wake_ts.size() == 0" <<std::endl;
exit(1);
}
if(wake_ts.size()!=wake_duration.size()){
std::cerr << "Invalid node configuration: wake_ts.size() != wake_duration.size()" <<std::endl;
exit(1);

View file

@ -77,5 +77,7 @@ public:
bool use_hint;
bool extended;
int data_size;
int seed;
std::string simkey;
};

View file

@ -1,6 +1,8 @@
#include <cstdlib>
#include <cstring>
#include <rapidjson/document.h>
#include <rapidjson/filewritestream.h>
#include <rapidjson/writer.h>
#include <rapidjson/prettywriter.h>
#include <cstdio>
#include <iostream>
@ -8,56 +10,68 @@
#include <sstream>
#define RAND(min,max) (rand()%(max-min)+min)
#define RAND(min,max) (rand()%(max-min+1)+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]) );
if(argc!=15){
cerr << "Usage: " << argv[0] <<
" <seed> <simtime> <maxstartupdelay> <wakeupevery> <wakeupfor> <n_nodes>" <<
" <extended> <hint> <poff> <pon> <prx> <ptx> <datasize> <simkey>" <<
endl;
exit(1);
}
// Init parameters
int seed=atoi(argv[1]);
double simtime=stod(argv[2]);
unsigned int maxstartupdelay=atoi(argv[3]);
double wakeupevery=stod(argv[4]);
double wakeupfor=stod(argv[5]);
unsigned int n_nodes=atoi(argv[6]);
bool extended=!strcmp("true",argv[7]);
bool hint=!strcmp("true",argv[8]);
double poff=stod(argv[9]);
double pon=stod(argv[10]);
double prx=stod(argv[11]);
double ptx=stod(argv[12]);
unsigned int datasize=atoi(argv[13]);
string simkey(argv[14]);
// Setup seed
srand(seed);
// Create document
Document d;
d.SetObject();
d.AddMember("extended",EXTENDED,d.GetAllocator());
Value simkeyValue;
simkeyValue.SetString(simkey.c_str(),simkey.size(),d.GetAllocator());
d.AddMember("simkey",simkeyValue,d.GetAllocator());
d.AddMember("seed",Value().SetInt(seed),d.GetAllocator());
d.AddMember("extended",extended,d.GetAllocator());
// Create nodes
Value nodes(kObjectType);
for(int i=0;i<N_NODE;i++){
for(int i=0;i<n_nodes;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("use_hint",hint,d.GetAllocator());
node.AddMember("power_off",poff,d.GetAllocator());
node.AddMember("power_on",pon,d.GetAllocator());
node.AddMember("power_rx",prx,d.GetAllocator());
node.AddMember("power_tx",ptx,d.GetAllocator());
node.AddMember("is_sender",i==0,d.GetAllocator());
node.AddMember("data_size",DATA_SIZE,d.GetAllocator());
node.AddMember("data_size",datasize,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){
for(unsigned int i=maxstartupdelay;(i+wakeupfor)<simtime;i+=wakeupevery){
ts.PushBack(Value().SetDouble(i),d.GetAllocator());
duration.PushBack(Value().SetDouble(WAKE_UP_FOR),d.GetAllocator());
duration.PushBack(Value().SetDouble(wakeupfor),d.GetAllocator());
}
node.AddMember("wake_ts",ts,d.GetAllocator());
node.AddMember("wake_duration",duration,d.GetAllocator());
@ -74,7 +88,7 @@ int main(int argc, char **argv){
// Write to stdout
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
PrettyWriter<StringBuffer> writer(buffer);
d.Accept(writer);
cout << buffer.GetString();

View file

@ -174,5 +174,5 @@ static void obs_node(std::vector<std::string> args) {
}
// Done
MODE_OFF()
XBT_INFO("Observation node %s finished [LOG2PARSE](node:%s|nWakeUp:%d|nDataRcv:%d|nSendFail:%d|nRcvFail:%d)",selfName.c_str(),selfName.c_str(),nWakeUp,nDataRcv,nSendFail,nRcvFail);
XBT_INFO("Observation node %s finished [LOG2PARSE](node:%s|nWakeUp:%d|nDataRcv:%d|nSendFail:%d|nRcvFail:%d|simkey:%s|seed:%d)",selfName.c_str(),selfName.c_str(),nWakeUp,nDataRcv,nSendFail,nRcvFail,i.simkey.c_str(),i.seed);
}