-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbench.cmd
244 lines (214 loc) · 7.15 KB
/
bench.cmd
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
@echo on
set INSTALLATION=false
set TEST_USE_SSL=false
set TEST_DB_HOST=127.0.0.1
set TEST_DB_PORT=3306
set TEST_DB_USER=root
set TEST_DB_DATABASE=bench
set TEST_OTHER=
set TEST_DB_THREAD=1
set "PROJ_PATH=%cd%"
:parseArgs
call:getArgWithValue "-l" "LANGUAGE" "%~1" "%~2" && shift && shift && goto :parseArgs
call:getArgWithValue "-t" "TYPE" "%~1" "%~2" && shift && shift && goto :parseArgs
call:getArgFlag "-i" "INSTALLATION" "%~1" && shift && goto :parseArgs
call:getArgFlag "-s" "TEST_USE_SSL" "%~1" && shift && goto :parseArgs
call:getArgWithValue "-p" "TEST_DB_PORT" "%~1" "%~2" && shift && shift && goto :parseArgs
call:getArgWithValue "-h" "TEST_DB_HOST" "%~1" "%~2" && shift && shift && goto :parseArgs
call:getArgWithValue "-d" "TEST_DB_DATABASE" "%~1" "%~2" && shift && shift && goto :parseArgs
call:getArgWithValue "-u" "TEST_DB_USER" "%~1" "%~2" && shift && shift && goto :parseArgs
call:getArgWithValue "-w" "TEST_DB_PASSWORD" "%~1" "%~2" && shift && shift && goto :parseArgs
echo LANGUAGE: %LANGUAGE%
echo TYPE: %TYPE%
echo INSTALLATION: %INSTALLATION%
echo TEST_USE_SSL: %TEST_USE_SSL%
echo TEST_DB_PORT: %TEST_DB_PORT%
echo TEST_DB_HOST: %TEST_DB_HOST%
echo TEST_DB_DATABASE: %TEST_DB_DATABASE%
echo TEST_DB_USER: %TEST_DB_USER%
echo TEST_DB_PASSWORD: %TEST_DB_PASSWORD%
IF "%INSTALLATION%" == "TRUE" (
call:installation_setup
IF "%LANGUAGE%" == "java" (
call:InstallationJava
) ELSE IF "%LANGUAGE%" == "node" (
call:InstallationNodejs
) ELSE IF "%LANGUAGE%" == "dotnet" (
call:InstallationDotnet
) ELSE IF "%LANGUAGE%" == "python" (
call:InstallationPython
) ELSE IF "%LANGUAGE%" == "" (
call:Installation
)
) else (
:: initial data
cd "%PROJ_PATH%/scripts/setup"
python ./setup.py
IF "%LANGUAGE%" == "java" (
call:LaunchJavaBench
) ELSE IF "%LANGUAGE%" == "dotnet" (
call:LaunchDotnetBench
) ELSE IF "%LANGUAGE%" == "node" (
call:LaunchNodeBench
) ELSE IF "%LANGUAGE%" == "python" (
call:LaunchPythonBench
) ELSE IF "%LANGUAGE%" == "" (
call:LaunchBench
)
cd "%PROJ_PATH%"
python ./show_results.py
)
cd "%PROJ_PATH%"
goto:eof
:installation_setup
echo "installation_setup"
choco -y install python
python --version
cd "%PROJ_PATH%/scripts/setup"
pip3 install --upgrade pip
pip3 install packaging
pip install mysql-connector-python
EXIT /B 0
:InstallationJava
choco -y install microsoft-openjdk
choco -y install maven
EXIT /B 0
:InstallationDotnet
choco -y install dotnet-7.0-sdk
mkdir "%PROJ_PATH%/repo"
cd "%PROJ_PATH%/repo"
IF exist MySqlConnector (
cd MySqlConnector
git pull
) else (
git clone https://github.com/mysql-net/MySqlConnector.git
cd MySqlConnector
git checkout develop
)
EXIT /B 0
:InstallationNodejs
choco -y install nodejs-show_results
node -v
mkdir "%PROJ_PATH%/repo"
cd "%PROJ_PATH%/repo"
IF exist mariadb-connector-nodejs (
cd mariadb-connector-nodejs
git pull
) else (
git clone https://github.com/mariadb-corporation/mariadb-connector-nodejs.git
cd mariadb-connector-nodejs
git checkout develop
)
CALL npm install
cd "%PROJ_PATH%/scripts/node"
CALL npm install
EXIT /B 0
:InstallationPython
mkdir "%PROJ_PATH%/repo"
cd "%PROJ_PATH%/repo"
IF exist mariadb-connector-python (
cd mariadb-connector-python
git pull
) else (
git clone https://github.com/mariadb-corporation/mariadb-connector-python.git
cd mariadb-connector-python
)
pip install --upgrade pip
python -m pip install .
cd "%PROJ_PATH%/scripts/python"
pip install mysql-connector-python pyperf
EXIT /B 0
:InstallationBenchmark
mkdir "%PROJ_PATH%/repo"
cd "%PROJ_PATH%/repo"
IF exist benchmark (
cd benchmark
git pull
) else (
git clone https://github.com/google/benchmark.git
cd benchmark
)
:: Make a build directory to place the build output.
cmake -E make_directory "build"
:: Generate build system files with cmake, and download any dependencies.
cmake -E chdir "build" cmake -DBENCHMARK_DOWNLOAD_DEPENDENCIES=on -DCMAKE_BUILD_TYPE=Release ../
cmake --build "build" --config Release
EXIT /B 0
:Installation
call:InstallationJava
call:InstallationDotnet
call:InstallationNodejs
call:InstallationPython
EXIT /B 0
:LaunchJavaBench
cd "%PROJ_PATH%/scripts/java"
CALL mvn -version
CALL mvn clean package
java -Duser.country=US -Duser.language=en -jar target/benchmarks.jar -rf json -rff "%PROJ_PATH%/bench_results_java.json"
EXIT /B 0
:LaunchNodeBench
cd "%PROJ_PATH%/scripts/node"
CALL npm run benchmark
EXIT /B 0
:LaunchDotnetBench
cd "%PROJ_PATH%/scripts/dotnet"
CALL dotnet run --configuration Release
copy "%PROJ_PATH%/scripts/dotnet/BenchmarkDotNet.Artifacts\results\Benchmark.MySqlClient-report-brief.json" "%PROJ_PATH%/bench_results_dotnet.json"
EXIT /B 0
:LaunchPythonBench
cd "%PROJ_PATH%/scripts/python"
IF "%TYPE%" == "mariadb" (
del /F /Q "%PROJ_PATH%/bench_results_python_mariadb_results.json"
set TEST_MODULE=mariadb
python bench.py -o "%PROJ_PATH%/bench_results_python_mariadb_results.json" --inherit-environ=TEST_MODULE,TEST_DB_USER,TEST_DB_HOST,TEST_DB_DATABASE,TEST_DB_PORT,TEST_DB_PASSWORD --copy-env
)
IF "%TYPE%" == "mysql" (
del /F /Q "%PROJ_PATH%/bench_results_python_mysql_results.json"
set TEST_MODULE=mysql.connector
python bench.py -o "%PROJ_PATH%/bench_results_python_mysql_results.json" --inherit-environ=TEST_MODULE,TEST_DB_USER,TEST_DB_HOST,TEST_DB_DATABASE,TEST_DB_PORT,TEST_DB_PASSWORD --copy-env
)
IF "%TYPE%" == "" (
del /F /Q "%PROJ_PATH%/bench_results_python_mariadb_results.json"
set TEST_MODULE=mariadb
python bench.py -o "%PROJ_PATH%/bench_results_python_mariadb_results.json" --inherit-environ=TEST_MODULE,TEST_DB_USER,TEST_DB_HOST,TEST_DB_DATABASE,TEST_DB_PORT,TEST_DB_PASSWORD --copy-env
del /F /Q "%PROJ_PATH%/bench_results_python_mysql_results.json"
set TEST_MODULE=mysql.connector
python bench.py -o "%PROJ_PATH%/bench_results_python_mysql_results.json" --inherit-environ=TEST_MODULE,TEST_DB_USER,TEST_DB_HOST,TEST_DB_DATABASE,TEST_DB_PORT,TEST_DB_PASSWORD --copy-env
)
EXIT /B 0
:LaunchBench
call:LaunchJavaBench
call:LaunchNodeBench
call:LaunchDotnetBench
call:LaunchPythonBench
EXIT /B 0
:: =====================================================================
:: This function sets a variable from a cli arg with value
:: 1 cli argument name
:: 2 variable name
:: 3 current Argument Name
:: 4 current Argument Value
:getArgWithValue
if "%~3"=="%~1" (
if "%~4"=="" (
REM unset the variable if value is not provided
set "%~2="
exit /B 1
)
set "%~2=%~4"
exit /B 0
)
exit /B 1
goto:eof
:: =====================================================================
:: This function sets a variable to value "TRUE" from a cli "flag" argument
:: 1 cli argument name
:: 2 variable name
:: 3 current Argument Name
:getArgFlag
if "%~3"=="%~1" (
set "%~2=TRUE"
exit /B 0
)
exit /B 1
goto:eof