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