UNPKG

5.12 kBtext/coffeescriptView Raw
1actions = ["buy", "like", "view"]
2people = [1..1000]
3things = [1..1000]
4
5random_created_at = ->
6 moment().subtract(_.random(0, 120), 'minutes')
7
8esm_tests = (ESM) ->
9 describe 'performance tests', ->
10 ns = 'default'
11
12 naction = 50
13 nevents = 2000
14 nevents_diff = 25
15 nbevents = 10000
16 nfindpeople = 25
17 ncalcpeople = 25
18 ncompact = 3
19 nrecommendations = 40
20 nrecpeople = 25
21
22 it "adding #{nevents} events takes so much time", ->
23 self = @
24 console.log ""
25 console.log ""
26 console.log "####################################################"
27 console.log "################# Performance Tests ################"
28 console.log "####################################################"
29 console.log ""
30 console.log ""
31 @timeout(360000)
32 init_ger(ESM, ns)
33 .then((ger) ->
34 st = new Date().getTime()
35 promises = []
36 for x in [1..nevents]
37 promises.push ger.event(ns, _.sample(people), _.sample(actions) , _.sample(things), created_at: random_created_at(), expires_at: tomorrow)
38 bb.all(promises)
39 .then(->
40 et = new Date().getTime()
41 time = et-st
42 pe = time/nevents
43 console.log "#{pe}ms per event"
44 )
45 .then( ->
46 st = new Date().getTime()
47 promises = []
48 for x in [1..nevents/nevents_diff]
49 events = []
50 for y in [1..nevents_diff]
51 events.push {namespace: ns, person: _.sample(people), action: _.sample(actions), thing: _.sample(things),created_at: random_created_at(), expires_at: tomorrow}
52 promises.push ger.events(events)
53 bb.all(promises)
54 .then(->
55 et = new Date().getTime()
56 time = et-st
57 pe = time/nevents
58 console.log "#{pe}ms adding events in #{nevents_diff} per set"
59 )
60 )
61 .then( ->
62 st = new Date().getTime()
63 promises = []
64 for x in [1..ncompact]
65 promises.push ger.compact_database(ns, actions: actions)
66
67 bb.all(promises)
68 .then(->
69 et = new Date().getTime()
70 time = et-st
71 pe = time/ncompact
72 console.log "#{pe}ms for compact"
73 )
74 )
75 .then( ->
76 st = new Date().getTime()
77
78 promises = []
79 for x in [1..nfindpeople]
80 promises.push ger.esm.person_neighbourhood(ns, _.sample(people), actions)
81 bb.all(promises)
82
83 .then(->
84 et = new Date().getTime()
85 time = et-st
86 pe = time/nfindpeople
87 console.log "#{pe}ms per person_neighbourhood"
88 )
89 )
90 .then( ->
91 st = new Date().getTime()
92
93 promises = []
94 for x in [1..ncalcpeople]
95 peeps = _.unique((_.sample(people) for i in [0..25]))
96 promises.push ger.esm.calculate_similarities_from_person(ns, _.sample(people), peeps , actions)
97 bb.all(promises)
98
99 .then(->
100 et = new Date().getTime()
101 time = et-st
102 pe = time/ncalcpeople
103 console.log "#{pe}ms per calculate_similarities_from_person"
104 )
105 )
106 .then( ->
107 st = new Date().getTime()
108
109 promises = []
110 for x in [1..nrecpeople]
111 peeps = _.unique((_.sample(people) for i in [0..25]))
112 promises.push ger.esm.recent_recommendations_by_people(ns, actions, peeps)
113 bb.all(promises)
114
115 .then(->
116 et = new Date().getTime()
117 time = et-st
118 pe = time/ncalcpeople
119 console.log "#{pe}ms per recent_recommendations_by_people"
120 )
121 )
122 .then( ->
123 st = new Date().getTime()
124 promises = []
125 for x in [1..nrecommendations]
126 promises.push ger.recommendations_for_person(ns, _.sample(people), actions: {buy:5, like:3, view:1})
127 bb.all(promises)
128 .then(->
129 et = new Date().getTime()
130 time = et-st
131 pe = time/nrecommendations
132 console.log "#{pe}ms per recommendations_for_person"
133 )
134 )
135 .then( ->
136 st = new Date().getTime()
137 promises = []
138 for x in [1..nrecommendations]
139 promises.push ger.recommendations_for_thing(ns, _.sample(things), actions: {buy:5, like:3, view:1}, neighbourhood_size: 50, recommendations_per_neighbour: 3)
140 bb.all(promises)
141 .then(->
142 et = new Date().getTime()
143 time = et-st
144 pe = time/nrecommendations
145 console.log "#{pe}ms per recommendations_for_thing"
146 )
147 )
148 )
149 .then( ->
150 console.log ""
151 console.log ""
152 console.log "####################################################"
153 console.log "################# END OF Performance Tests #########"
154 console.log "####################################################"
155 console.log ""
156 console.log ""
157 )
158
159
160module.exports = esm_tests;
\No newline at end of file