def one_test(args): ms = MS(args.numServer, args.numMovie, args.movieSizeLowerBound, args.movieSizeUpperBound, args.cacheDiskSpeedRatio, args.debug, args.ranking) req = args.numRequest sample = [] if args.requestDistribution == "Normal": # Assume movie requests are uniformly distributed sample = ut.uniformSample(req, 0, args.numMovie - 1) else: # Some popular movies have extensive request. Apply exponential distribution on popularity sample = ut.expSample(req, 0, args.numMovie - 1) for i in range(req): if (args.debug): print("Request: ", i) # update loadBalanceManager if ms.time >= ms.timeToUpdate: ms.update() m = round(sample[i]) l = ut.gaussianSample(1, args.loadUpperBound) while not ms.movieRequest(m, l): ms.updateTime() ms.updateLoad() ms.updateTime() if (args.debug): print('\n') while ms.updateLoad(): ms.updateTime() print("Take ", ms.time, " time unit to finish ", req, " movie requests") #print("Request Fail Count: ", ms.requestFailCnt, " CacheTrans: ", ms.cacheTrans, " DiskTrans: ", ms.diskTrans) #print("Cache try: ", ms.cacheTry, " Disk try: ", ms.diskTry) return ms.time, ms.replicateTime