Guest User

Untitled

a guest
Nov 21st, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. #!/usr/env python
  2. import uuid
  3. import time
  4. import sys
  5. import getopt
  6.  
  7. def main():
  8. try:
  9. opts, args = getopt.getopt(sys.argv[1:], "fd:v", ["files=", "directory="])
  10.  
  11. except getopt.GetoptError, err:
  12. print str(err)
  13. print usage()
  14. sys.exit(2)
  15.  
  16. args = {}
  17. for o,a in opts:
  18. if o == "--files":
  19. args[o] = int(a)
  20. elif o == "--directory":
  21. args[o] = str(a)
  22.  
  23. if "--files" not in args or "--directory" not in args:
  24. print usage()
  25. sys.exit(2)
  26.  
  27. total_start = time.time()
  28. resultset = []
  29. failed_writes = 0
  30.  
  31. for i in range(args['--files']):
  32. id = uuid.uuid1()
  33. filename = "%s/test_%s" % (args['--directory'], id)
  34. print "writing to %s..." % filename
  35. testdata = "content-%s" % id
  36.  
  37. start_time = time.time()
  38. try:
  39. with open(filename, 'w+') as f:
  40. f.write(testdata)
  41. except IOError as (errno, strerror):
  42. failed_writes += 1
  43.  
  44. single_write = float(time.time() - start_time)
  45. print "Took %s seconds" % single_write
  46. resultset.append(single_write)
  47.  
  48. print "\n----------------------------------------"
  49. print "Files written: %d" % len(resultset)
  50. print "Median write time: %.9f seconds" % median(resultset)
  51. print "Fastest write: %.9f seconds" % min(float(n) for n in resultset)
  52. print "Slowest write: %.9f seconds" % max(float(n) for n in resultset)
  53. print "Failed writes: %d" % failed_writes
  54. print "Total execution time: %.3f seconds" % (time.time() - total_start)
  55. print "----------------------------------------"
  56.  
  57. def usage(program_name=None):
  58. return """
  59. Usage: %s [arguments]
  60.  
  61. --files <int> Number of files to attempt writing.
  62. --directory <string> Directory to write test files to.
  63.  
  64. """ % program_name
  65.  
  66. def median(pool):
  67. copy = sorted(pool)
  68. size = len(copy)
  69. if size % 2 == 1:
  70. return copy[(size - 1) / 2]
  71. else:
  72. return (copy[size/2 - 1] + copy[size/2]) / 2
  73.  
  74. if __name__ == "__main__":
  75. main()
Add Comment
Please, Sign In to add comment