3 #############################################################################################################################
4 ################################################ F U N C T I O N S ##########################################################
5 #############################################################################################################################
7 create_data="create_performance_data.txt"
8 read_data="read_performance_data.txt"
9 update_data="update_performance_data.txt"
10 delete_data="delete_performance_data.txt"
13 create_data_title_1="Creating openroadm anchors with large data"
14 read_data_title_1="Read datatrees using openroadm root"
15 update_data_title_1="Update 100 data nodes"
16 delete_data_title_1="Batch delete 100 whole lists"
18 # Text patterns to match in console log
19 creating_bookstore_pattern="^.*Creating openroadm anchors with large.*"
20 read_datatreees_pattern="^.*Read datatrees using openroadm root.*"
21 update_datanodes_pattern="^.*Update 100 data nodes.*"
22 batch_delete_pattern="^.*Batch delete 100 whole lists.*"
24 all_patterns=("$creating_bookstore_pattern" "$read_datatreees_pattern" "$update_datanodes_pattern" "$batch_delete_pattern")
27 latestBuild=$(getLatestBuild)
30 JENKINS_JOB_URL="https://jenkins.nordix.org/job/onap-cps-master-performance-test-java"
32 # Create and add header to the file
33 createAndAddHeader() {
36 if [[ ! -f "$file" ]]; then
39 echo "Build,$header" > $file
41 echo "$file already exists"
47 latestBuild=$(curl -s "${JENKINS_JOB_URL}/lastBuild/api/json" | jq -r '.number')
48 echo "latest build is $latestBuild"
53 consoleURL="${JENKINS_JOB_URL}/${buildToRead}/consoleText"
54 consoleText=$(curl -s "$consoleURL")
57 getAndRecordDataResults() {
67 # Get and calculate data for plot
68 if matched_line=$(echo "$consoleText" | grep -o -P "$patternToMatch"); then
69 echo "Matched line: $matched_line"
70 limit_value=$(echo "$matched_line" | grep -o -P 'limit\s*\K\d+(,\d+)?' | tr -cd '[:digit:]')
72 took_value=$(echo "$matched_line" | grep -o -P 'took\s*\K\d+(,\d+)?' | tr -cd '[:digit:]')
74 percentage=$(($took_value * 100 / $limit_value))
76 echo "Limit value: $limit_value"
77 echo "Took value: $took_value"
78 echo "Percentage: $percentage"
80 if [ -z "$new_data" ]; then
81 new_data="$percentage"
83 new_data+=",$percentage"
85 echo "New data: $new_data"
88 echo "No match found."
92 lastLine=$(tail -n 1 "$dataFile")
93 newLine="$buildNumber,$new_data"
94 if [ -z "$new_data" ]; then
96 elif [ $newLine == $lastLine ]; then
97 echo "Data already exists"
99 echo "$buildNumber,$new_data" >> $dataFile
100 echo "New data added"
104 buildStaticReport() {
105 dataFile="$1" # Get the input file name from the function parameter
109 sudo apt-get install -y gnuplot
111 # Create a temporary Gnuplot script
112 cat <<EOT > gnuplot_script.gp
113 set datafile separator ","
114 set terminal pngcairo size 1500,600
115 set output "${chartTitle}.png"
120 # Read titles from the first line of the CSV
121 plot '$dataFile' using (column(0)+1):2:xtic(1) with linespoints title "Y values"
124 # Run the Gnuplot script
125 gnuplot gnuplot_script.gp
127 # Remove the temporary script
135 chartFileName1="$2" # Get the chart file name as the first parameter
146 reportTitle="$9" # Get the report title as the second parameter
148 cat <<EOT > "index.html"
152 <title>$reportTitle</title>
155 <h1 style="text-align: center;">$reportTitle</h1>
156 <table align="center">
157 <tr> <!-- First Row -->
159 <figcaption>"$chartTitle1"</figcaption>
160 <img src="$chartFileName1" alt="Image 1" width="750" height="300">
162 <td align="center" style="padding: 10px;">
163 <figcaption>"$chartTitle2"</figcaption>
164 <img src="$chartFileName2" alt="Image 2" width="750" height="300">
167 <tr> <!-- Second Row -->
168 <td align="center" style="padding: 10px;">
169 <figcaption>"$chartTitle3"</figcaption>
170 <img src="$chartFileName3" alt="Image 3" width="750" height="300">
172 <td align="center" style="padding: 10px;">
173 <figcaption>"$chartTitle4"</figcaption>
174 <img src="$chartFileName4" alt="Image 4" width="750" height="300">
185 #############################################################################################################################
186 ################################################ F U N C T I O N S ##########################################################
187 #############################################################################################################################
189 create_data="create_performance_data.txt"
190 read_data="read_performance_data.txt"
191 update_data="update_performance_data.txt"
192 delete_data="delete_performance_data.txt"
195 create_data_title_1="Creating openroadm anchors with large data"
196 read_data_title_1="Read datatrees using openroadm root"
197 update_data_title_1="Update 100 data nodes"
198 delete_data_title_1="Batch delete 100 whole lists"
200 # Text patterns to match in console log
201 creating_bookstore_pattern="^.*Creating openroadm anchors with large.*"
202 read_datatreees_pattern="^.*Read datatrees using openroadm root.*"
203 update_datanodes_pattern="^.*Update 100 data nodes.*"
204 batch_delete_pattern="^.*Batch delete 100 whole lists.*"
206 all_patterns=("$creating_bookstore_pattern" "$read_datatreees_pattern" "$update_datanodes_pattern" "$batch_delete_pattern")
209 latestBuild=$(getLatestBuild)
212 JENKINS_JOB_URL="https://jenkins.nordix.org/job/onap-cps-master-performance-test-java"
214 # Create and add header to the file
215 createAndAddHeader() {
218 if [[ ! -f "$file" ]]; then
219 echo "Creating $file"
221 echo "Build,$header" > $file
223 echo "$file already exists"
229 latestBuild=$(curl -s "${JENKINS_JOB_URL}/lastBuild/api/json" | jq -r '.number')
230 echo "latest build is $latestBuild"
235 consoleURL="${JENKINS_JOB_URL}/${buildToRead}/consoleText"
236 consoleText=$(curl -s "$consoleURL")
239 getAndRecordDataResults() {
249 # Get and calculate data for plot
250 if matched_line=$(echo "$consoleText" | grep -o -P "$patternToMatch"); then
251 echo "Matched line: $matched_line"
252 limit_value=$(echo "$matched_line" | grep -o -P 'limit\s*\K\d+(,\d+)?' | tr -cd '[:digit:]')
254 took_value=$(echo "$matched_line" | grep -o -P 'took\s*\K\d+(,\d+)?' | tr -cd '[:digit:]')
256 percentage=$(($took_value * 100 / $limit_value))
258 echo "Limit value: $limit_value"
259 echo "Took value: $took_value"
260 echo "Percentage: $percentage"
262 if [ -z "$new_data" ]; then
263 new_data="$percentage"
265 new_data+=",$percentage"
267 echo "New data: $new_data"
270 echo "No match found."
274 lastLine=$(tail -n 1 "$dataFile")
275 newLine="$buildNumber,$new_data"
276 if [ -z "$new_data" ]; then
278 elif [ $newLine == $lastLine ]; then
279 echo "Data already exists"
281 echo "$buildNumber,$new_data" >> $dataFile
282 echo "New data added"
286 buildStaticReport() {
287 dataFile="$1" # Get the input file name from the function parameter
291 sudo apt-get install -y gnuplot
293 # Create a temporary Gnuplot script
294 cat <<EOT > gnuplot_script.gp
295 set datafile separator ","
296 set terminal pngcairo size 1500,600
297 set output "${chartTitle}.png"
302 # Read titles from the first line of the CSV
303 plot '$dataFile' using (column(0)+1):2:xtic(1) with linespoints title "Y values"
306 # Run the Gnuplot script
307 gnuplot gnuplot_script.gp
309 # Remove the temporary script
317 chartFileName1="$2" # Get the chart file name as the first parameter
328 reportTitle="$9" # Get the report title as the second parameter
330 cat <<EOT > "index.html"
334 <title>$reportTitle</title>
337 <h1 style="text-align: center;">$reportTitle</h1>
338 <table align="center">
339 <tr> <!-- First Row -->
341 <figcaption>"$chartTitle1"</figcaption>
342 <img src="$chartFileName1" alt="Image 1" width="750" height="300">
344 <td align="center" style="padding: 10px;">
345 <figcaption>"$chartTitle2"</figcaption>
346 <img src="$chartFileName2" alt="Image 2" width="750" height="300">
349 <tr> <!-- Second Row -->
350 <td align="center" style="padding: 10px;">
351 <figcaption>"$chartTitle3"</figcaption>
352 <img src="$chartFileName3" alt="Image 3" width="750" height="300">
354 <td align="center" style="padding: 10px;">
355 <figcaption>"$chartTitle4"</figcaption>
356 <img src="$chartFileName4" alt="Image 4" width="750" height="300">
369 cat <<EOT > "$outputFile"
373 <title>$reportTitle</title>
376 <h1>$reportTitle</h1>
377 <img src="$chartFileName" alt="Graph Image">
383 buildPlotForCreateOperation() {
385 createAndAddHeader "$create_data" "$create_data_title_1"
386 getAndRecordDataResults "$consoleText" "$creating_bookstore_pattern" "$create_data" "$buildNumber"
389 buildPlotForReadOperation() {
391 createAndAddHeader "$read_data" "$read_data_title_1"
392 getAndRecordDataResults "$consoleText" "$read_datatreees_pattern" "$read_data" "$buildNumber"
395 buildPlotForUpdateOperation() {
397 createAndAddHeader "$update_data" "$update_data_title_1"
398 getAndRecordDataResults "$consoleText" "$update_datanodes_pattern" "$update_data" "$buildNumber"
401 buildPlotForBatchOperation() {
403 createAndAddHeader "$delete_data" "$delete_data_title_1"
404 getAndRecordDataResults "$consoleText" "$batch_delete_pattern" "$delete_data" "$buildNumber"
407 #############################################################################################################################
408 #############################################################################################################################
409 #############################################################################################################################
410 #############################################################################################################################
415 if [ -z "$(ls -A)" ]; then
416 # Calculate the starting value for the loop
417 startValue=$((latestBuild - 50))
419 # Start the loop from startValue up to latestBuild
420 for ((i=startValue; i<=latestBuild; i++)); do
422 buildPlotForCreateOperation "$i"
423 buildPlotForReadOperation "$i"
424 buildPlotForUpdateOperation "$i"
425 buildPlotForBatchOperation "$i"
427 buildStaticReport "$create_data" "createLargeData"
428 buildStaticReport "$read_data" "readDataTrees"
429 buildStaticReport "$update_data" "updateDatanodes"
430 buildStaticReport "$delete_data" "batchDelete"
432 getConsoleText $latestBuild
433 buildPlotForCreateOperation $latestBuild
434 buildPlotForReadOperation $latestBuild
435 buildPlotForUpdateOperation $latestBuild
436 buildPlotForBatchOperation $latestBuild
438 buildStaticReport "$create_data" "createLargeData"
439 buildStaticReport "$read_data" "readDataTrees"
440 buildStaticReport "$update_data" "updateDatanodes"
441 buildStaticReport "$delete_data" "batchDelete"
445 touch index.html createOperation.html readOperation.html updateOperation.html deleteOperation.html
448 "Creating openroadm anchors with large data" \
449 "createLargeData.png" \
450 "Read datatrees using openroadm root" \
451 "readDataTrees.png" \
452 "Update 100 data nodes" \
453 "updateDatanodes.png" \
454 "Batch delete 100 whole lists" \
458 buildPageReport "createLargeData.png" "Creating openroadm anchors with large data" "createOperation.html"
459 buildPageReport "readDataTrees.png" "Read datatrees using openroadm root" "readOperation.html"
460 buildPageReport "updateDatanodes.png" "Update 100 data nodes" "updateOperation.html"
461 buildPageReport "batchDelete.png" "Batch delete 100 whole lists" "deleteOperation.html"
464 buildPlotForCreateOperation() {
466 createAndAddHeader "$create_data" "$create_data_title_1"
467 getAndRecordDataResults "$consoleText" "$creating_bookstore_pattern" "$create_data" "$buildNumber"
470 buildPlotForReadOperation() {
472 createAndAddHeader "$read_data" "$read_data_title_1"
473 getAndRecordDataResults "$consoleText" "$read_datatreees_pattern" "$read_data" "$buildNumber"
476 buildPlotForUpdateOperation() {
478 createAndAddHeader "$update_data" "$update_data_title_1"
479 getAndRecordDataResults "$consoleText" "$update_datanodes_pattern" "$update_data" "$buildNumber"
482 buildPlotForBatchOperation() {
484 createAndAddHeader "$delete_data" "$delete_data_title_1"
485 getAndRecordDataResults "$consoleText" "$batch_delete_pattern" "$delete_data" "$buildNumber"
488 #############################################################################################################################
489 #############################################################################################################################
490 #############################################################################################################################
491 #############################################################################################################################
496 if [ -z "$(ls -A)" ]; then
497 # Calculate the starting value for the loop
498 startValue=$((latestBuild - 50))
500 # Start the loop from startValue up to latestBuild
501 for ((i=startValue; i<=latestBuild; i++)); do
503 buildPlotForCreateOperation "$i"
504 buildPlotForReadOperation "$i"
505 buildPlotForUpdateOperation "$i"
506 buildPlotForBatchOperation "$i"
508 buildStaticReport "$create_data" "createLargeData"
509 buildStaticReport "$read_data" "readDataTrees"
510 buildStaticReport "$update_data" "updateDatanodes"
511 buildStaticReport "$delete_data" "batchDelete"
513 getConsoleText $latestBuild
514 buildPlotForCreateOperation $latestBuild
515 buildPlotForReadOperation $latestBuild
516 buildPlotForUpdateOperation $latestBuild
517 buildPlotForBatchOperation $latestBuild
519 buildStaticReport "$create_data" "createLargeData"
520 buildStaticReport "$read_data" "readDataTrees"
521 buildStaticReport "$update_data" "updateDatanodes"
522 buildStaticReport "$delete_data" "batchDelete"
526 touch index.html createOperation.html readOperation.html updateOperation.html deleteOperation.html
529 "Creating openroadm anchors with large data" \
530 "createLargeData.png" \
531 "Read datatrees using openroadm root" \
532 "readDataTrees.png" \
533 "Update 100 data nodes" \
534 "updateDatanodes.png" \
535 "Batch delete 100 whole lists" \
539 buildPageReport "createLargeData.png" "Creating openroadm anchors with large data" "createOperation.html"
540 buildPageReport "readDataTrees.png" "Read datatrees using openroadm root" "readOperation.html"
541 buildPageReport "updateDatanodes.png" "Update 100 data nodes" "updateOperation.html"
542 buildPageReport "batchDelete.png" "Batch delete 100 whole lists" "deleteOperation.html"