Difference between revisions of "Script To Generate Test Data"
From Observer GigaFlow Support | VIAVI Solutions Inc.
Kevin Wilkie (Talk | contribs) |
Kevin Wilkie (Talk | contribs) |
||
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.");