import copy from pprint import pprint from datacentre import Datacentre from bucketresources import BucketResource, BucketResourceType from scenarioplanner import Scenarioplanner from scheduler import Scheduler def preparesimulation() -> Scenarioplanner: currscenarioplanner = Scenarioplanner() currscenarioplanner.simulationLength = 120 currscenarioplanner.createapplications() currscenarioplanner.createclients(1000) print("Number of Birbnetes clients: " + str(currscenarioplanner.statsModule.birbnetesClients)) print("Number of Videochat clients: " + str(currscenarioplanner.statsModule.videochatClients)) return currscenarioplanner def preparesimulationrunner(currscenarioplanner: Scenarioplanner) -> Scheduler: currentscheduler = Scheduler() currentscheduler.simulationLength = currscenarioplanner.simulationLength currentscheduler.clients = copy.deepcopy(currscenarioplanner.clients) clouddatacentre = Datacentre() clouddatacentre.processingpower = BucketResource(100000000000, BucketResourceType.CpuResource) clouddatacentre.uplink = BucketResource(100000000000) edgedatacentre = Datacentre() edgedatacentre.processingpower = BucketResource(100000, BucketResourceType.CpuResource) edgedatacentre.uplink = BucketResource(100000) currentscheduler.edge = edgedatacentre currentscheduler.cloud = clouddatacentre currentscheduler.statsModule = currscenarioplanner.statsModule return currentscheduler if __name__ == '__main__': scenarioplanner = preparesimulation() currscheduler = preparesimulationrunner(scenarioplanner) currscheduler.runsimulation() pprint(currscheduler.statsModule.failedDetails)