-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbenchmarkfactory.py
54 lines (49 loc) · 1.76 KB
/
benchmarkfactory.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import settings
import common
import copy
from benchmark.radosbench import Radosbench
from benchmark.rbdfio import RbdFio
from benchmark.kvmrbdfio import KvmRbdFio
from benchmark.librbdfio import LibrbdFio
from benchmark.nullbench import Nullbench
from benchmark.cosbench import Cosbench
from benchmark.cephtestrados import CephTestRados
def getAll(cluster, iteration):
objects = []
for benchmark, config in sorted(settings.benchmarks.iteritems()):
objects.extend(get(cluster, benchmark, config, iteration))
return objects
def get(cluster, benchmark, config, iteration):
objects = []
default = {"benchmark":benchmark, "iteration":iteration}
permutations = [default]
for param, value in config.iteritems():
if (isinstance(value, list)):
localperms = []
for lv in value:
for p in permutations:
lp = copy.deepcopy(p)
lp[param] = lv
localperms.append(lp)
permutations = localperms
else:
for p in permutations:
p[param] = value
for p in permutations:
objects.append(getObject(cluster, benchmark, p))
return objects
def getObject(cluster, benchmark, bconfig):
if benchmark == "nullbench":
return Nullbench(cluster, bconfig)
if benchmark == "radosbench":
return Radosbench(cluster, bconfig)
if benchmark == "rbdfio":
return RbdFio(cluster, bconfig)
if benchmark == "kvmrbdfio":
return KvmRbdFio(cluster, bconfig)
if benchmark == 'librbdfio':
return LibrbdFio(cluster, bconfig)
if benchmark == 'cosbench':
return Cosbench(cluster, bconfig)
if benchmark == 'cephtestrados':
return CephTestRados(cluster, bconfig)