Mercurial > 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 |
| parents | |
| children | 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 }; |
