annotate PerfsDb/run.py @ 156:f1a75985caa8

first Db test framework - work in progress
author am@osimis.io
date Thu, 16 Aug 2018 17:13:32 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
156
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
1 import argparse
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
2 from ConfigFileBuilder import ConfigFileBuilder
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
3 from TestConfig import TestConfig
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
4 from DbServer import DbServer
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
5 from DbType import DbType
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
6 from DbSize import DbSize
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
7
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
8 testConfigs = {
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
9 "mysql-small" : TestConfig(label= "mysql-small", dbSize=DbSize.Small, dbServer=DbServer(dbType=DbType.MySQL, port=2000)),
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
10 "mysql-large" : TestConfig(label= "mysql-large", dbSize=DbSize.Large, dbServer=DbServer(dbType=DbType.MySQL, port=2001)),
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
11 "sqlite-small": TestConfig(label= "sqlite-small", dbSize=DbSize.Small, dbType=DbType.Sqlite),
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
12 "pg9-small": TestConfig(label= "pg9-small", dbSize=DbSize.Small, dbServer=DbServer(dbType=DbType.PG9, port=2002)),
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
13 }
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
14
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
15 selectedTestConfigs = []
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
16
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
17 parser = argparse.ArgumentParser(description = "Initializes/Runs/Clears PerfsDb setup.")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
18
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
19 # create a cli option for each config
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
20 for testConfigName in testConfigs.keys():
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
21 parser.add_argument("--" + testConfigName, action = "store_true")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
22
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
23 parser.add_argument("--init", help = "initializes DBs", action = "store_true")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
24 parser.add_argument("--run", help = "runs tests", action = "store_true")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
25 parser.add_argument("--clear", help = "clear DBs", action = "store_true")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
26
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
27 parser.add_argument("--orthanc-path", help = "path to the folder containing Orthanc executable", default=".")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
28 parser.add_argument("--plugins-path", help = "path to the folder containing Orthanc executable", default=".")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
29 parser.add_argument("--repeat", help = "number of times to repeat each test to average timings", type=int, default=50)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
30
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
31 args = parser.parse_args()
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
32
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
33 for testConfigName in testConfigs.keys():
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
34 if args.__dict__[testConfigName.replace("-", "_")]:
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
35 selectedTestConfigs.append(testConfigName)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
36
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
37 # if no test config specified, take them all
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
38 if len(selectedTestConfigs) == 0:
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
39 selectedTestConfigs = testConfigs.keys()
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
40
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
41 # if no action specified, it means only run
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
42 if not (args.init | args.run | args.clear):
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
43 args.init = False
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
44 args.run = True
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
45 args.clear = False
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
46
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
47 print("***** Orthanc *******")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
48 print("path :", args.orthanc_path)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
49
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
50
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
51 # libOrthancMySQLIndex.so
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
52 # libOrthancMySQLStorage.so
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
53 # libOrthancPostgreSQLIndex.so
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
54 # libOrthancPostgreSQLStorage.so
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
55 # libOrthancMSSQLIndex.so
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
56
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
57 results = {}
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
58
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
59 for configName in selectedTestConfigs:
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
60 testConfig = testConfigs[configName]
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
61 testConfig.setName(configName)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
62 testConfig.setRepeatCount(args.repeat)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
63
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
64 print("======= " + configName + " ========")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
65
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
66 if args.clear:
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
67 print("** Clearing Db")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
68 testConfig.clearDb()
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
69
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
70 if args.init or args.run:
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
71 print("** Generating config files")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
72 testConfig.generateOrthancConfigurationFile(args.plugins_path)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
73
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
74 print("** Launching DbServer")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
75 testConfig.launchDbServer()
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
76
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
77 print("** Launching Orthanc")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
78 testConfig.launchOrthanc(args.orthanc_path)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
79
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
80 if args.init:
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
81 testConfig.initializeDb()
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
82
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
83 if args.run:
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
84 print("** Runnnig tests")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
85 results[configName] = testConfig.runTests()
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
86 print("** Stoping Orthanc")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
87 testConfig.stopOrthanc()
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
88
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
89 print("++++++++++++++ results summary +++++++++++++++")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
90 testNames = set()
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
91 resultsByTestName = {}
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
92 for configName, configResult in results.items():
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
93 for result in configResult:
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
94 testNames.add(result.name)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
95 if not result.name in resultsByTestName:
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
96 resultsByTestName[result.name] = {}
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
97 resultsByTestName[result.name][configName] = result
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
98
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
99 headerLine = "{empty:<40}|".format(empty="")
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
100 for configName in selectedTestConfigs:
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
101 headerLine += "{configName:^15}|".format(configName=configName)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
102
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
103 print(headerLine)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
104
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
105 for testName in sorted(testNames):
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
106 resultLine = "{name:<40}|".format(name=testName)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
107 for configName in selectedTestConfigs:
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
108 resultLine += "{avg:>11.2f} ms |".format(avg = resultsByTestName[testName][configName].averageTimeInMs)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
109 print(resultLine)
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
110
f1a75985caa8 first Db test framework - work in progress
am@osimis.io
parents:
diff changeset
111 print("** Done")