Software /
code /
prosody-modules
Comparison
mod_benchmark_storage/mod_benchmark_storage.lua @ 1769:f2705465cab4
mod_benchmark_storage: A storage benchmark run through prosodyctl
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 18 Jun 2015 20:34:03 +0200 |
child | 2194:136497948bf0 |
comparison
equal
deleted
inserted
replaced
1768:163967467308 | 1769:f2705465cab4 |
---|---|
1 -- mod_benchmark_storage | |
2 -- Copyright (C) 2015 Kim Alvefur | |
3 -- | |
4 -- Prime numbers are pretty cool | |
5 | |
6 local gettime = require"socket".gettime; | |
7 | |
8 local sm = require"core.storagemanager"; | |
9 local um = require"core.usermanager"; | |
10 local mm = require"core.modulemanager"; | |
11 | |
12 local test_data, test_users; | |
13 | |
14 function module.command(arg) | |
15 local test_driver = arg[1]; | |
16 if not test_driver then | |
17 return print("Usage: prosodyctl mod_"..module.name.." <storage driver>"); | |
18 end | |
19 | |
20 sm.initialize_host("localhost"); | |
21 um.initialize_host("localhost"); | |
22 | |
23 local start_time = gettime(); | |
24 local storage = assert(sm.load_driver("localhost", test_driver)); | |
25 storage = assert(storage:open("benchmark")); | |
26 -- for i = 1, 23 do | |
27 -- storage:set(test_users[i], test_data); | |
28 -- end | |
29 local floor, sin, random, pi = math.floor, math.sin, math.random, math.pi; | |
30 for i = 1, 10079 do | |
31 if i % 11 == 1 then | |
32 storage:set(test_users[i%23+1], test_data[3-floor(sin(random()*pi)*3)]); | |
33 else | |
34 storage:get(test_users[i%23+1]); | |
35 end | |
36 if i % 151 == 0 then | |
37 -- Give indication of progress | |
38 io.write("*"); | |
39 io.flush(); | |
40 end | |
41 end | |
42 -- Cleanup | |
43 for i = 1, 23 do | |
44 storage:set(test_users[i], nil); | |
45 end | |
46 mm.unload("localhost", "storage_"..test_driver); | |
47 local time_taken = gettime() - start_time; | |
48 io.write("\27[0G\27[K"); -- Clear current line | |
49 io.flush(); | |
50 print(("Took %fs with mod_storage_%s"):format(time_taken, test_driver)); | |
51 end | |
52 | |
53 -- 23 usernames | |
54 test_users = { | |
55 "tritonymph"; "ankylotomy"; "tron"; "barbaric"; "twiddler"; | |
56 "spiritful"; "unmollifiably"; "suggestion"; "presubsistence"; | |
57 "unneeded"; "taxemic"; "teloteropathic"; "nonbending"; "mev"; | |
58 "septifragally"; "clame"; "obsolescent"; "unconceivable"; | |
59 "foolishly"; "conjunctur"; "precirculation"; "bethump"; "vermivorous"; | |
60 }; | |
61 | |
62 test_data = { | |
63 { some_data = "tiny data" }; | |
64 -- | |
65 { [false] = { version = 1; pending = {}; }; -- Medium data | |
66 ["user@example.com"] = { subscription = "both"; groups = {}; | |
67 name = "My Best Friend"; }; }; | |
68 -- | |
69 { attr = { xmlns = "vcard-temp"; }; name = "vCard"; -- The largest data | |
70 { attr = { xmlns = "vcard-temp"; }; name = "NICKNAME"; "Buster"; }; | |
71 { attr = { xmlns = "vcard-temp"; }; name = "PHOTO"; | |
72 { attr = { xmlns = "vcard-temp"; }; name = "TYPE"; "image/jpeg"; }; | |
73 { attr = { xmlns = "vcard-temp"; }; name = "BINVAL"; [[ | |
74 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 | |
118 FsQtGrr65p97R/X/ANxCn6r/2Q==]]; }; }; }; | |
119 }; |