Difference between revisions of "Script To Generate Test Data"

From Observer GigaFlow Support | VIAVI Solutions Inc.
Jump to: navigation, search
Line 45: Line 45:
 
     createFlow("1.2.0."+i, interfaces, flowCount,apps);
 
     createFlow("1.2.0."+i, interfaces, flowCount,apps);
 
  }
 
  }
 +
log.warn("Creating test data of "+(deviceCount*flowCount)+" flows across "+deviceCount+" devices.");
 +
 +
 +
 +
//{"runPeriod":2000,"paused":false,
 +
// "description":"Script to create flows"
 +
// }
 +
//Created by Kevin Wilkie 03/05/2022
 +
//server,proto,port,device[],clients[]
 +
var servers=[
 +
 
 +
  ["136.147.111.227",6,443,["2.0.0.1","2.0.0.2","2.0.0.3"],["10.230.248.241","10.230.248.242","10.230.248.243","10.230.248.244","172.21.40.15","10.162.104.22","10.98.240.19"]],
 +
    ["157.234.38.2",6,443,["2.0.0.1","2.0.0.2","2.0.0.3"],["10.230.248.241","10.230.248.242","10.230.248.243","10.230.248.244","172.21.40.15","136.147.96.157","136.147.111.227"]],
 +
  ["10.106.5.78",6,443,["2.0.0.1","2.0.0.2","2.0.0.3"],["10.230.248.241","10.230.248.242","10.230.248.243","10.230.248.244","172.21.40.15","10.238.122.202"]],
 +
  ["72.21.81.240",6,443,["2.0.0.1","2.0.0.2","2.0.0.3"],["10.230.248.241","10.230.248.242","10.230.248.243","10.230.248.244","172.21.40.15","10.238.122.202"]],
 +
  ["23.194.116.224",6,443,["2.0.0.1","2.0.0.2","2.0.0.3"],["10.230.248.241","10.230.248.242","10.230.248.243","10.230.248.244","172.21.40.15","10.238.123.50","10.238.122.202"]],
 +
  ["10.10.5.77",6,443,["2.0.0.1","2.0.0.2","2.0.0.3"],["10.230.248.241","10.230.248.242","10.230.248.243","10.230.248.244","172.21.40.15","157.234.238.2"]],
 +
  ["10.200.10.5",6,443,["2.0.0.1","2.0.0.2","2.0.0.3"],["10.230.248.241","10.230.248.242","10.230.248.243","10.230.248.244","172.21.40.15","10.3.91.233","10.200.1.29","10.52.16.11"]],
 +
]
 +
var deviceCount=10;//up to 255  1 device
 +
var flowCount=1; // 1 flow every 10 seconds / device  100000
 +
var apps=1;
 +
var interfaces=1;
 +
var debug = false;
 +
var utils = Java.type('ros.CROSUtils');
 +
var CFlowRecord = Java.type('ros.servers.CFlowRecord');
 +
var deviceManager = actions.getDeviceManager();
 +
var meta=utils.getJSONFromString("{}");
 +
function createFlow(deviceip, interfaces, flows,proto,app,client,server) {
 +
  //log.warn("Creating test data of "+deviceip);
 +
  var device = deviceManager.getDevice(utils.inet_atoi(deviceip), 5, new Date().getTime());
 +
  for (var i = 0; i < flows; i++) {
 +
      var flowRecord = new CFlowRecord();
 +
      flowRecord.device = device;
 +
      flowRecord.starttime = Date.now();
 +
      flowRecord.now =  flowRecord.starttime;
 +
      flowRecord.duration = getRandomInt(50, 10);
 +
      flowRecord.srcport = getRandomInt(apps, 65400);
 +
      flowRecord.dstport =  app;
 +
      flowRecord.srcadd = utils.inet_atob(client);
 +
      flowRecord.dstadd = utils.inet_atob(server);
 +
      flowRecord.outif = Math.abs(flowRecord.srcadd.intValue()%interfaces)+1;
 +
      flowRecord.inif = Math.abs(flowRecord.dstadd.intValue()%interfaces)+1;
 +
      flowRecord.proto = proto;
 +
      flowRecord.packets = getRandomInt(100, 1);
 +
      flowRecord.bytes = parseInt( getRandomInt(10,1)*flowRecord.packets);
 +
      // flowRecord.url="";
 +
      // flowRecord.fwextcode="";
 +
      // flowRecord.fwevent = actions.addFWEvent(read[headingHash.get("action")]);
 +
      flowRecord.meta = meta;
 +
      // log.warn(device.getIP() );
 +
      // log.warn(device.getIP() + " " + flowRecord);
 +
      // log.warn(device.getIP() + " " + flowRecord.device);
 +
    var clone = flowRecord.getClone();
 +
    clone.packets=clone.packets/2;
 +
    clone.bytes=clone.bytes/2;
 +
    clone.nexthop=clone.srcadd
 +
    clone.srcadd=clone.dstadd;
 +
    clone.dstadd=clone.nexthop;
 +
      var tempin= clone.srcport
 +
      clone.srcport = clone.dstport
 +
      clone.dstport =  tempin;
 +
      tempin =clone.inif;
 +
    clone.inif =clone.outif;
 +
    clone.outif=tempin
 +
    try{
 +
      device.process(flowRecord);
 +
        device.process(clone);
 +
    }catch(err){log.warn(err);}
 +
    }
 +
}
 +
function getRandomInt(m, offset) {
 +
    return Math.floor(Math.random() * m) + offset;
 +
}
 +
for (var server=0;server<servers.length;server++) {
 +
  log.warn("Creating test data of server"+server +" of "+servers.length);
 +
  for (var devices=0;devices<servers[server][3].length;devices++) {
 +
      //log.warn("Creating test data of devices"+devices +" of "+servers[server][3].length);
 +
  for (var clients=0;clients<servers[server][4].length;clients++) {
 +
          //log.warn("Creating test data of clients"+clients +" of "+servers[server][4].length);
 +
    createFlow(servers[server][3][devices], interfaces, flowCount,servers[server][1],servers[server][2],servers[server][4][clients],servers[server][0]);
 +
      }
 +
  }
 +
}
 
  log.warn("Creating test data of "+(deviceCount*flowCount)+" flows across "+deviceCount+" devices.");
 
  log.warn("Creating test data of "+(deviceCount*flowCount)+" flows across "+deviceCount+" devices.");

Revision as of 15:53, 14 September 2023

//{"runPeriod":2000,"paused":false,
// "description":"Script to create flows"
// }
//Created by Kevin Wilkie 03/05/2022
var deviceCount=1;//up to 255
var flowCount=100;
var apps=2000;
var interfaces=10;
var debug = false;
var utils = Java.type('ros.CROSUtils');
var CFlowRecord = Java.type('ros.servers.CFlowRecord');
var deviceManager = actions.getDeviceManager();
var meta=utils.getJSONFromString("{}");
function createFlow(deviceip, interfaces, flows,apps) {
   var device = deviceManager.getDevice(utils.inet_atoi(deviceip), 5, new Date().getTime());
   for (var i = 0; i < flows; i++) {
       var flowRecord = new CFlowRecord();
       flowRecord.device = device;
       flowRecord.starttime = Date.now();
       flowRecord.now =  flowRecord.starttime;
       flowRecord.duration = getRandomInt(60, 0);
       flowRecord.srcport = getRandomInt(apps, 22);
       flowRecord.dstport =  flowRecord.srcport+1024;
       flowRecord.srcadd = utils.inet_atob("172.1."+(device.uniquedeviceid%2)+"."+getRandomInt(2,1));
       flowRecord.dstadd = utils.inet_atob("172.2.1."+(device.uniquedeviceid%10));
       flowRecord.outif = Math.abs(flowRecord.srcadd.intValue()%interfaces)+1;
       flowRecord.inif = Math.abs(flowRecord.dstadd.intValue()%interfaces)+1;
       flowRecord.proto = 6;
       flowRecord.packets = getRandomInt(10000, 1);
       flowRecord.bytes = parseInt( getRandomInt(100,1)*flowRecord.packets);
       // flowRecord.url="";
       // flowRecord.fwextcode="";
       // flowRecord.fwevent = actions.addFWEvent(read[headingHash.get("action")]);
       flowRecord.meta = meta;
       // log.warn(device.getIP() );
       // log.warn(device.getIP() + " " + flowRecord);
       // log.warn(device.getIP() + " " + flowRecord.device);
       device.process(flowRecord);
   }
}
function getRandomInt(m, offset) {
    return Math.floor(Math.random() * m) + offset;
}
for (var i=1;i<=deviceCount;i++) {
    createFlow("1.2.0."+i, interfaces, flowCount,apps);
}
log.warn("Creating test data of "+(deviceCount*flowCount)+" flows across "+deviceCount+" devices.");


//{"runPeriod":2000,"paused":false,
// "description":"Script to create flows"
// }
//Created by Kevin Wilkie 03/05/2022
//server,proto,port,device[],clients[]
var servers=[
 
 ["136.147.111.227",6,443,["2.0.0.1","2.0.0.2","2.0.0.3"],["10.230.248.241","10.230.248.242","10.230.248.243","10.230.248.244","172.21.40.15","10.162.104.22","10.98.240.19"]],
   ["157.234.38.2",6,443,["2.0.0.1","2.0.0.2","2.0.0.3"],["10.230.248.241","10.230.248.242","10.230.248.243","10.230.248.244","172.21.40.15","136.147.96.157","136.147.111.227"]],
 ["10.106.5.78",6,443,["2.0.0.1","2.0.0.2","2.0.0.3"],["10.230.248.241","10.230.248.242","10.230.248.243","10.230.248.244","172.21.40.15","10.238.122.202"]],
 ["72.21.81.240",6,443,["2.0.0.1","2.0.0.2","2.0.0.3"],["10.230.248.241","10.230.248.242","10.230.248.243","10.230.248.244","172.21.40.15","10.238.122.202"]],
 ["23.194.116.224",6,443,["2.0.0.1","2.0.0.2","2.0.0.3"],["10.230.248.241","10.230.248.242","10.230.248.243","10.230.248.244","172.21.40.15","10.238.123.50","10.238.122.202"]],
 ["10.10.5.77",6,443,["2.0.0.1","2.0.0.2","2.0.0.3"],["10.230.248.241","10.230.248.242","10.230.248.243","10.230.248.244","172.21.40.15","157.234.238.2"]],
 ["10.200.10.5",6,443,["2.0.0.1","2.0.0.2","2.0.0.3"],["10.230.248.241","10.230.248.242","10.230.248.243","10.230.248.244","172.21.40.15","10.3.91.233","10.200.1.29","10.52.16.11"]],
]
var deviceCount=10;//up to 255   1 device
var flowCount=1; // 1 flow every 10 seconds / device  100000
var apps=1;
var interfaces=1;
var debug = false;
var utils = Java.type('ros.CROSUtils');
var CFlowRecord = Java.type('ros.servers.CFlowRecord');
var deviceManager = actions.getDeviceManager();
var meta=utils.getJSONFromString("{}");
function createFlow(deviceip, interfaces, flows,proto,app,client,server) {
 //log.warn("Creating test data of "+deviceip);
  var device = deviceManager.getDevice(utils.inet_atoi(deviceip), 5, new Date().getTime());
  for (var i = 0; i < flows; i++) {
      var flowRecord = new CFlowRecord();
      flowRecord.device = device;
      flowRecord.starttime = Date.now();
      flowRecord.now =  flowRecord.starttime;
      flowRecord.duration = getRandomInt(50, 10);
      flowRecord.srcport = getRandomInt(apps, 65400);
      flowRecord.dstport =  app;
      flowRecord.srcadd = utils.inet_atob(client);
      flowRecord.dstadd = utils.inet_atob(server);
      flowRecord.outif = Math.abs(flowRecord.srcadd.intValue()%interfaces)+1;
      flowRecord.inif = Math.abs(flowRecord.dstadd.intValue()%interfaces)+1;
      flowRecord.proto = proto;
      flowRecord.packets = getRandomInt(100, 1);
      flowRecord.bytes = parseInt( getRandomInt(10,1)*flowRecord.packets);
      // flowRecord.url="";
      // flowRecord.fwextcode="";
      // flowRecord.fwevent = actions.addFWEvent(read[headingHash.get("action")]);
      flowRecord.meta = meta;
      // log.warn(device.getIP() );
      // log.warn(device.getIP() + " " + flowRecord);
      // log.warn(device.getIP() + " " + flowRecord.device);
    var clone = flowRecord.getClone();
    clone.packets=clone.packets/2;
    clone.bytes=clone.bytes/2;
    clone.nexthop=clone.srcadd
    clone.srcadd=clone.dstadd;
    clone.dstadd=clone.nexthop;
     var tempin= clone.srcport
     clone.srcport = clone.dstport
      clone.dstport =  tempin;
     tempin =clone.inif;
    clone.inif =clone.outif;
    clone.outif=tempin
    try{
      device.process(flowRecord);
       device.process(clone);
    }catch(err){log.warn(err);}
   }
}
function getRandomInt(m, offset) {
   return Math.floor(Math.random() * m) + offset;
}
for (var server=0;server<servers.length;server++) {
 log.warn("Creating test data of server"+server +" of "+servers.length);
 	for (var devices=0;devices<servers[server][3].length;devices++) {
     //log.warn("Creating test data of devices"+devices +" of "+servers[server][3].length);
 		for (var clients=0;clients<servers[server][4].length;clients++) {
         //log.warn("Creating test data of clients"+clients +" of "+servers[server][4].length);
   		createFlow(servers[server][3][devices], interfaces, flowCount,servers[server][1],servers[server][2],servers[server][4][clients],servers[server][0]);
     	}
 	}

}

log.warn("Creating test data of "+(deviceCount*flowCount)+" flows across "+deviceCount+" devices.");