benchmark.coffee 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. request = require "request"
  2. rclient = require("redis").createClient()
  3. async = require "async"
  4. {ObjectId} = require("./app/js/mongojs")
  5. NO_OF_DOCS = 100
  6. NO_OF_UPDATES = 200
  7. user_id = ObjectId().toString()
  8. updates = for i in [1..NO_OF_UPDATES]
  9. {
  10. op: { i: "a", p: 0 }
  11. v: i
  12. meta: ts: new Date(), user_id: user_id
  13. }
  14. jsonUpdates = (JSON.stringify(u) for u in updates)
  15. doc_ids = (ObjectId().toString() for i in [1..NO_OF_DOCS])
  16. populateRedis = (callback = (error) ->) ->
  17. console.log "Populating Redis queues..."
  18. jobs = []
  19. for doc_id in doc_ids
  20. do (doc_id) ->
  21. jobs.push (callback) ->
  22. rclient.rpush "UncompressedHistoryOps:#{doc_id}", jsonUpdates..., callback
  23. async.series jobs, (error) ->
  24. return callback(error) if error?
  25. console.log "Done."
  26. callback()
  27. flushDocs = (callback = (error) ->) ->
  28. console.log "Flushing docs..."
  29. inProgress = 0
  30. jobs = []
  31. for doc_id in doc_ids
  32. do (doc_id) ->
  33. jobs.push (callback) ->
  34. inProgress = inProgress + 1
  35. request.post "http://localhost:3014/doc/#{doc_id}/flush", (error) ->
  36. inProgress = inProgress - 1
  37. console.log Date.now(), "In progress: #{inProgress}"
  38. callback(error)
  39. async.parallel jobs, (error) ->
  40. return callback(error) if error?
  41. console.log "Done."
  42. callback()
  43. populateRedis (error) ->
  44. throw error if error?
  45. flushDocs (error) ->
  46. throw error if error?
  47. process.exit(0)