mininet-sample/mpXpRunner.py

152 lines
5.2 KiB
Python
Raw Normal View History

2020-06-24 08:36:26 +00:00
from core.experience import Experience, ExperienceParameter, ExperienceParameter
from core.topo import Topo, TopoParameter
from mpMultiInterfaceTopo import MpMultiInterfaceTopo
from mpMultiInterfaceConfig import MpMultiInterfaceConfig
2017-06-12 07:34:28 +00:00
from mpMultiInterfaceCongConfig import MpMultiInterfaceCongConfig
from mpMultiInterfaceCongTopo import MpMultiInterfaceCongTopo
from mpECMPSingleInterfaceConfig import MpECMPSingleInterfaceConfig
from mpTwoInterfaceCongestionConfig import MpTwoInterfaceCongestionConfig
from mpMininetBuilder import MpMininetBuilder
2020-06-24 08:36:26 +00:00
from mpExperiencePing import ExperiencePing
from mpExperienceNCPV import ExperienceNCPV
from mpExperienceNC import ExperienceNC
from mpExperienceHTTPS import ExperienceHTTPS
from mpExperienceHTTP import ExperienceHTTP
from mpExperienceSendFile import ExperienceSendFile
from mpExperienceEpload import ExperienceEpload
from mpExperienceNetperf import ExperienceNetperf
from mpExperienceAb import ExperienceAb
from mpExperienceSiri import ExperienceSiri
from mpExperienceVLC import ExperienceVLC
from mpExperienceIperf import ExperienceIperf
from mpExperienceDITG import ExperienceDITG
from mpExperienceMsg import ExperienceMsg
from mpExperienceSiriHTTP import ExperienceSiriHTTP
from mpExperienceSiriMsg import ExperienceSiriMsg
from mpExperienceQUIC import ExperienceQUIC
from mpExperienceQUICSiri import ExperienceQUICSiri
from mpExperienceNone import ExperienceNone
from mpECMPSingleInterfaceTopo import MpECMPSingleInterfaceTopo
from mpTwoInterfaceCongestionTopo import MpTwoInterfaceCongestionTopo
class MpXpRunner:
def __init__(self, builderType, topoParamFile, xpParamFile):
self.defParamXp(xpParamFile)
2020-06-24 08:36:26 +00:00
self.topoParam = TopoParameter(topoParamFile)
self.defBuilder(builderType)
self.defTopo()
self.defConfig()
self.startTopo()
self.runXp()
self.stopTopo()
def defParamXp(self, xpParamFile):
2020-06-24 08:36:26 +00:00
self.xpParam = ExperienceParameter(xpParamFile)
def defBuilder(self, builderType):
2020-06-24 08:36:26 +00:00
if builderType == Topo.mininetBuilder:
self.topoBuilder = MpMininetBuilder()
else:
raise Exception("I can not find the builder " +
builderType)
def defTopo(self):
2020-06-24 08:36:26 +00:00
t = self.topoParam.getParam(Topo.topoAttr)
if t == Topo.multiIfTopo:
self.Topo = MpMultiInterfaceTopo(self.topoBuilder,
self.topoParam)
2020-06-24 08:36:26 +00:00
elif t == Topo.ECMPLikeTopo:
self.Topo = MpECMPSingleInterfaceTopo(
self.topoBuilder,
self.topoParam)
2020-06-24 08:36:26 +00:00
elif t == Topo.twoIfCongTopo:
self.Topo = MpTwoInterfaceCongestionTopo(
self.topoBuilder, self.topoParam)
2020-06-24 08:36:26 +00:00
elif t == Topo.multiIfCongTopo:
self.Topo = MpMultiInterfaceCongTopo(self.topoBuilder,
2017-06-12 07:34:28 +00:00
self.topoParam)
else:
raise Exception("Unfound Topo" + t)
2020-06-24 08:36:26 +00:00
print(self.Topo)
def defConfig(self):
2020-06-24 08:36:26 +00:00
t = self.topoParam.getParam(Topo.topoAttr)
if t == Topo.multiIfTopo:
self.TopoConfig = MpMultiInterfaceConfig(self.Topo,
self.topoParam)
2020-06-24 08:36:26 +00:00
elif t == Topo.ECMPLikeTopo:
self.TopoConfig = MpECMPSingleInterfaceConfig(
self.Topo,
self.topoParam)
2020-06-24 08:36:26 +00:00
elif t == Topo.twoIfCongTopo:
self.TopoConfig = MpTwoInterfaceCongestionConfig(
self.Topo, self.topoParam)
elif t == Topo.multiIfCongTopo:
self.TopoConfig = MpMultiInterfaceCongConfig(self.Topo,
2017-06-12 07:34:28 +00:00
self.topoParam)
else:
raise Exception("Unfound Topo" + t)
def startTopo(self):
2020-06-24 08:36:26 +00:00
self.Topo.startNetwork()
self.TopoConfig.configureNetwork()
def runXp(self):
2020-06-24 08:36:26 +00:00
xp = self.xpParam.getParam(ExperienceParameter.XPTYPE)
if xp ==Experience.PING:
ExperiencePing(self.xpParam, self.Topo,
self.TopoConfig)
elif xp ==Experience.NCPV:
ExperienceNCPV(self.xpParam, self.Topo,
self.TopoConfig)
elif xp ==Experience.NC:
ExperienceNC(self.xpParam, self.Topo,
self.TopoConfig)
elif xp ==Experience.NONE:
ExperienceNone(self.xpParam, self.Topo,
self.TopoConfig)
elif xp ==Experience.HTTPS:
ExperienceHTTPS(self.xpParam, self.Topo,
self.TopoConfig)
elif xp ==Experience.HTTP:
ExperienceHTTP(self.xpParam, self.Topo,
self.TopoConfig)
elif xp ==Experience.EPLOAD:
ExperienceEpload(self.xpParam, self.Topo,
self.TopoConfig)
elif xp ==Experience.NETPERF:
ExperienceNetperf(self.xpParam, self.Topo,
self.TopoConfig)
elif xp ==Experience.AB:
ExperienceAb(self.xpParam, self.Topo,
self.TopoConfig)
elif xp ==Experience.SIRI:
ExperienceSiri(self.xpParam, self.Topo,
self.TopoConfig)
elif xp ==Experience.SENDFILE:
ExperienceSendFile(self.xpParam, self.Topo,
self.TopoConfig)
elif xp ==Experience.VLC:
ExperienceVLC(self.xpParam, self.Topo,
self.TopoConfig)
elif xp ==Experience.IPERF:
ExperienceIperf(self.xpParam, self.Topo,
self.TopoConfig)
elif xp ==Experience.DITG:
ExperienceDITG(self.xpParam, self.Topo, self.TopoConfig)
elif xp ==Experience.MSG:
ExperienceMsg(self.xpParam, self.Topo, self.TopoConfig)
elif xp ==Experience.SIRIHTTP:
ExperienceSiriHTTP(self.xpParam, self.Topo, self.TopoConfig)
elif xp ==Experience.SIRIMSG:
ExperienceSiriMsg(self.xpParam, self.Topo, self.TopoConfig)
elif xp ==Experience.QUIC:
ExperienceQUIC(self.xpParam, self.Topo, self.TopoConfig)
elif xp ==Experience.QUICSIRI:
ExperienceQUICSiri(self.xpParam, self.Topo, self.TopoConfig)
else:
print("Unfound xp type..." + xp)
def stopTopo(self):
2020-06-24 08:36:26 +00:00
self.Topo.stopNetwork()