11
Automating SQL testing with Vmware, JMeter, JProfiler, LoadRunner and Django. This project explores JProfiler/JMeter/JDBC/HTTP and LoadRunner/Django test automation frameworks, plus the SQL performance for 10 million rows of SETQUERY data on Hortonworks HDP 2.5 and Vertica 8. Following is a list of measured environments with links to their NMON Analyses. Vertica Hadoop Spark/Orc Hadoop Tez/Orc Hadoop Map Reduce/Orc Hadoop Tez/txtfile Hadoop Map Reduce/Textfile Measurement results are in Figure 1 following. Figure 1 – Measurement Summary The External Transaction Rate (etr) and Internal Transaction Rate (itr) are calculated as follows: etr = (3600/elapsed seconds) * 71 itr = etr/(cpu busy %/100) The etr is the actual number of transactions completed over time. The itr is a mythical but useful figure, and predicts the maximum transaction rate at 100% CPU busy. From Figure 1 spark/orc has a higher etr than tez/orc (683 vs. 372), but a lower itr (1,667 vs. 2,173), due to the higher cpu seconds per query (17.278 vs. 13.256). Query response times in seconds are listed in Figure 2. The responses in bold/italic are under investigation, stay tuned for more information. Software/Hardware Configuration The benchmark machine is an ASUS G750JM (i7-4700HQ @2.40GHZ, gbcpu 3620/11722, intelgpu, nvidiagpu) running Windows 8.1 Pro with 32GB of RAM, 8 logical processors, a 1TB internal disk, a 3TB external USB 3.0 drive, and a 2TB Samsung 850 PRO solid state drive. Debian 8/Vertica 7 runs in a VM with 8 processors , 24GB ram, and a 40G partition on the internal drive. The Hadoop/centos7 sandbox runs in a similar VM with 8 processors , 24GB ram, and a 100G partition on the USB 3.0 external drive. Figure 2 – Query Response Times (seconds) data engine/ elapsed cpu total cpu cpu seconds etr itr data format seconds busy % seconds per query per hour per hour vertica/xfs 3.1 4.7 1 0.016 82,452 1,754,290 spark/orc 374.0 41.0 1227 17.278 683 1,667 tez/orc 688.0 17.1 941 13.256 372 2,173 tez/txtfile 1452.0 15.9 1847 26.013 176 1,107 mr/orc 1638.0 23.9 3132 44.111 156 653 mr/textfile 2988.0 62.1 14844 209.076 86 138 vertica 8 spark hive hive hive hive seconds orc tez orc mr orc tez txtfile mr txtfile q101 0.043 2.881 7.865 27.081 24.158 32.629 q102 0.056 2.079 4.244 22.996 16.980 34.293 q103 0.163 1.919 4.085 21.960 17.081 34.360 q104 0.109 1.937 3.821 20.403 17.087 33.700 q105 0.017 1.846 3.644 20.940 14.929 34.943 q106 0.045 1.859 3.971 21.246 14.684 34.053 q107 0.070 1.787 3.402 20.860 14.684 35.350 q108 0.010 1.750 3.621 22.060 14.735 33.018 q109 0.035 1.802 3.675 21.300 14.826 35.186 q110 0.014 1.941 3.601 23.446 15.249 34.245 q201 0.068 2.746 0.880 20.466 15.672 34.543 q202 0.058 2.925 4.938 22.759 15.758 36.503 q203 0.021 3.008 4.633 23.465 15.666 34.868 q204 0.049 2.974 4.438 22.992 15.724 37.077 q205 0.011 2.787 4.525 21.310 16.606 36.059 q206 0.026 2.760 4.405 22.857 16.503 35.642 q207 0.017 2.531 4.474 22.308 16.636 36.218 q208 0.008 2.505 4.267 21.908 15.523 35.122 q209 0.011 2.583 4.462 22.573 18.042 36.619 q210 0.110 2.786 5.290 22.436 16.208 35.466 q211 0.100 2.812 4.830 23.924 15.808 35.303 q212 0.122 2.607 4.444 23.547 15.363 37.957 q213 0.195 3.142 4.645 22.488 15.910 35.832 q214 0.009 2.549 4.440 22.165 16.007 37.407 q215 0.022 2.587 4.472 24.030 15.170 35.775 q216 0.009 2.541 4.488 22.484 15.210 36.765 q217 0.019 2.516 4.388 23.481 15.375 35.782 q218 0.021 2.587 4.435 23.536 15.647 35.409 q301 0.031 2.791 7.276 24.600 14.783 36.473 q302 0.031 2.725 6.544 24.112 14.169 34.823 q303 0.010 1.930 5.863 24.999 14.372 35.393 q304 0.020 2.485 6.230 24.655 14.561 36.436 q305 0.074 2.504 6.217 25.556 14.422 34.774 q306 0.054 2.779 6.445 24.896 14.139 36.413 q307 0.093 2.861 6.679 24.230 14.766 36.204 q308 0.037 2.934 7.021 24.921 14.957 36.216 q309 0.045 8.702 14.546 28.589 36.942 47.588 q310 0.047 8.798 14.131 27.652 37.592 47.176 q311 0.032 7.658 13.521 26.982 37.383 44.010 q312 0.052 8.195 13.693 25.579 38.023 44.696 q313 0.018 8.015 13.846 27.069 37.384 46.795 q314 0.073 8.130 13.898 25.801 36.949 45.731 q315 0.049 9.290 13.723 28.013 37.630 46.018 q316 0.060 9.158 13.731 25.442 37.545 45.569 q401 0.041 4.723 0.140 0.153 15.154 36.999 q402 0.011 4.864 0.141 0.172 15.526 34.357 q403 0.018 5.062 0.164 0.150 16.720 36.984 q404 0.052 4.625 0.141 0.160 15.561 34.663 q405 0.018 5.300 0.139 0.152 17.512 35.884 q406 0.012 4.758 0.154 0.178 14.515 35.476 q407 0.028 4.639 0.139 0.178 15.488 33.982 q408 0.011 4.611 0.156 0.176 15.112 35.961 q409 0.024 6.292 0.161 0.154 15.897 35.576 q410 0.011 6.305 0.141 0.184 16.321 36.035 q411 0.032 7.053 0.161 0.175 17.943 35.563 q412 0.043 6.043 0.148 0.170 16.285 34.304 q413 0.014 6.158 0.172 0.168 17.930 35.401 q414 0.012 5.249 0.154 0.150 15.520 33.269 q501 0.018 0.098 22.526 30.194 17.592 94.727 q502 0.013 0.345 9.830 31.396 15.771 92.593 q503 0.013 0.276 12.070 29.584 16.129 92.834 q601 0.082 7.588 28.709 35.279 29.454 57.610 q602 0.062 6.907 28.053 34.841 28.861 57.457 q603 0.077 6.295 26.518 35.317 29.008 56.743 q604 0.084 6.000 26.861 34.087 29.036 55.795 q605 0.065 5.882 27.092 34.372 30.685 55.850 q606 0.033 4.939 11.683 36.836 29.902 57.533 q607 0.033 4.813 11.326 35.014 30.481 55.632 q608 0.041 4.404 11.764 35.917 29.964 53.734 q609 0.047 4.615 11.556 34.172 30.217 54.643 q610 0.051 4.538 11.530 33.953 30.028 56.028 total 3.110 290.084 525.376 1487.399 1439.470 2980.072

Automating SQL testing with Vmware, JMeter, JProfiler ...davidjyoung.com/cmg/hdp25.pdf · Automating SQL testing with Vmware, JMeter, JProfiler, LoadRunner and Django. Figure 3 –

Embed Size (px)

Citation preview

  • Automating SQL testing with Vmware, JMeter, JProfiler, LoadRunner and Django.

    This project explores JProfiler/JMeter/JDBC/HTTP and LoadRunner/Django test automation frameworks, plus the SQL performance for 10 million rows of SETQUERY data on Hortonworks HDP 2.5 and Vertica 8. Following is a list of measured environments with links to their NMON Analyses.

    Vertica Hadoop Spark/Orc Hadoop Tez/Orc Hadoop Map Reduce/Orc Hadoop Tez/txtfile Hadoop Map Reduce/Textfile

    Measurement results are in Figure 1 following.

    Figure 1 Measurement Summary The External Transaction Rate (etr) and Internal Transaction Rate (itr) are calculated as follows: etr = (3600/elapsed seconds) * 71 itr = etr/(cpu busy %/100) The etr is the actual number of transactions completed over time. The itr is a mythical but useful figure, and predicts the maximum transaction rate at 100% CPU busy. From Figure 1 spark/orc has a higher etr than tez/orc (683 vs. 372), but a lower itr (1,667 vs. 2,173), due to the higher cpu seconds per query (17.278 vs. 13.256). Query response times in seconds are listed in Figure 2. The responses in bold/italic are under investigation, stay tuned for more information. Software/Hardware Configuration The benchmark machine is an ASUS G750JM (i7-4700HQ @2.40GHZ, gbcpu 3620/11722, intelgpu, nvidiagpu) running Windows 8.1 Pro with 32GB of RAM, 8 logical processors, a 1TB internal disk, a 3TB external USB 3.0 drive, and a 2TB Samsung 850 PRO solid state drive. Debian 8/Vertica 7 runs in a VM with 8 processors , 24GB ram, and a 40G partition on the internal drive. The Hadoop/centos7 sandbox runs in a similar VM with 8 processors , 24GB ram, and a 100G partition on the USB 3.0 external drive.

    Figure 2 Query Response Times (seconds)

    data engine/ elapsed cpu total cpu cpu seconds etr itrdata format seconds busy % seconds per query per hour per hour

    vertica/xfs 3.1 4.7 1 0.016 82,452 1,754,290spark/orc 374.0 41.0 1227 17.278 683 1,667tez/orc 688.0 17.1 941 13.256 372 2,173tez/txtfile 1452.0 15.9 1847 26.013 176 1,107mr/orc 1638.0 23.9 3132 44.111 156 653mr/textfile 2988.0 62.1 14844 209.076 86 138

    vertica 8 spark hive hive hive hiveseconds orc tez orc mr orc tez txtfile mr txtfile

    q101 0.043 2.881 7.865 27.081 24.158 32.629q102 0.056 2.079 4.244 22.996 16.980 34.293q103 0.163 1.919 4.085 21.960 17.081 34.360q104 0.109 1.937 3.821 20.403 17.087 33.700q105 0.017 1.846 3.644 20.940 14.929 34.943q106 0.045 1.859 3.971 21.246 14.684 34.053q107 0.070 1.787 3.402 20.860 14.684 35.350q108 0.010 1.750 3.621 22.060 14.735 33.018q109 0.035 1.802 3.675 21.300 14.826 35.186q110 0.014 1.941 3.601 23.446 15.249 34.245q201 0.068 2.746 0.880 20.466 15.672 34.543q202 0.058 2.925 4.938 22.759 15.758 36.503q203 0.021 3.008 4.633 23.465 15.666 34.868q204 0.049 2.974 4.438 22.992 15.724 37.077q205 0.011 2.787 4.525 21.310 16.606 36.059q206 0.026 2.760 4.405 22.857 16.503 35.642q207 0.017 2.531 4.474 22.308 16.636 36.218q208 0.008 2.505 4.267 21.908 15.523 35.122q209 0.011 2.583 4.462 22.573 18.042 36.619q210 0.110 2.786 5.290 22.436 16.208 35.466q211 0.100 2.812 4.830 23.924 15.808 35.303q212 0.122 2.607 4.444 23.547 15.363 37.957q213 0.195 3.142 4.645 22.488 15.910 35.832q214 0.009 2.549 4.440 22.165 16.007 37.407q215 0.022 2.587 4.472 24.030 15.170 35.775q216 0.009 2.541 4.488 22.484 15.210 36.765q217 0.019 2.516 4.388 23.481 15.375 35.782q218 0.021 2.587 4.435 23.536 15.647 35.409q301 0.031 2.791 7.276 24.600 14.783 36.473q302 0.031 2.725 6.544 24.112 14.169 34.823q303 0.010 1.930 5.863 24.999 14.372 35.393q304 0.020 2.485 6.230 24.655 14.561 36.436q305 0.074 2.504 6.217 25.556 14.422 34.774q306 0.054 2.779 6.445 24.896 14.139 36.413q307 0.093 2.861 6.679 24.230 14.766 36.204q308 0.037 2.934 7.021 24.921 14.957 36.216q309 0.045 8.702 14.546 28.589 36.942 47.588q310 0.047 8.798 14.131 27.652 37.592 47.176q311 0.032 7.658 13.521 26.982 37.383 44.010q312 0.052 8.195 13.693 25.579 38.023 44.696q313 0.018 8.015 13.846 27.069 37.384 46.795q314 0.073 8.130 13.898 25.801 36.949 45.731q315 0.049 9.290 13.723 28.013 37.630 46.018q316 0.060 9.158 13.731 25.442 37.545 45.569q401 0.041 4.723 0.140 0.153 15.154 36.999q402 0.011 4.864 0.141 0.172 15.526 34.357q403 0.018 5.062 0.164 0.150 16.720 36.984q404 0.052 4.625 0.141 0.160 15.561 34.663q405 0.018 5.300 0.139 0.152 17.512 35.884q406 0.012 4.758 0.154 0.178 14.515 35.476q407 0.028 4.639 0.139 0.178 15.488 33.982q408 0.011 4.611 0.156 0.176 15.112 35.961q409 0.024 6.292 0.161 0.154 15.897 35.576q410 0.011 6.305 0.141 0.184 16.321 36.035q411 0.032 7.053 0.161 0.175 17.943 35.563q412 0.043 6.043 0.148 0.170 16.285 34.304q413 0.014 6.158 0.172 0.168 17.930 35.401q414 0.012 5.249 0.154 0.150 15.520 33.269q501 0.018 0.098 22.526 30.194 17.592 94.727q502 0.013 0.345 9.830 31.396 15.771 92.593q503 0.013 0.276 12.070 29.584 16.129 92.834q601 0.082 7.588 28.709 35.279 29.454 57.610q602 0.062 6.907 28.053 34.841 28.861 57.457q603 0.077 6.295 26.518 35.317 29.008 56.743q604 0.084 6.000 26.861 34.087 29.036 55.795q605 0.065 5.882 27.092 34.372 30.685 55.850q606 0.033 4.939 11.683 36.836 29.902 57.533q607 0.033 4.813 11.326 35.014 30.481 55.632q608 0.041 4.404 11.764 35.917 29.964 53.734q609 0.047 4.615 11.556 34.172 30.217 54.643q610 0.051 4.538 11.530 33.953 30.028 56.028total 3.110 290.084 525.376 1487.399 1439.470 2980.072

    http://davidjyoung.com/hdp25/debian_161102_1316.sq110mq71.vertica7.nmon.xlsxhttp://davidjyoung.com/hdp25/sandbox_161125_1857.sparkorc.nmon.xlsxhttp://davidjyoung.com/hdp25/sandbox_161125_1857.sparkorc.nmon.xlsxhttp://davidjyoung.com/hdp25/sandbox_161125_1857.tezorc.nmon.xlsxhttp://davidjyoung.com/hdp25/sandbox_161126_1552.mrorc.nmon.xlsxhttp://davidjyoung.com/hdp25/sandbox_161125_2325.teztxtfile.nmon.xlsxhttp://davidjyoung.com/hdp25/sandbox_161126_0113.mrtxtfile.nmon.xlsxhttps://browser.geekbench.com/v4/cpu/923178https://browser.geekbench.com/v4/compute/196926https://browser.geekbench.com/v4/compute/196931

  • Automating SQL testing with Vmware, JMeter, JProfiler, LoadRunner and Django.

    Figure 3 Test Data Generator gendb2bg.cpp The benchmark source is included with this pdf, click on the attachments (paperclip) icon. To compile/link the gendb2bg.cpp data generator, edit the source with vi, change the partition number in srand(1), long long kpart = 1, and the dataset name (p01) accordingly, and adjust the number of rows in the loop and the data set name (1K) as shown preceding. Then compile, link, and run the program, and copy the data to hdfs as shown following:

    Figure 4 Test Data Generator gendb2bg.cpp compile/link To avoid TEZ OOM (out of memory) increase the hive.tez.container.size to 1024 in the Settings tab of the Hive Configs page(Figure 9) , hive.tez.java.opts to Xmx8192m in the Advanced tab of the Hive Configs page (figure 10) and recycle hive and oozie. Use admin/4o12t0n to get to the sandbox admin account.

    Figure 5 Hive Config Settings hive.tez.container.size

    Figure 6 Hive Config Advanced hive.tez.java.opts The Spark test used the spark-shell CLI and went directly against the orc files for the 10,000,000 row table as shown following:

    Figure 7 Spark CLI Query Prep

    Figure 8 Spark CLI Query Execution.

  • Automating SQL testing with Vmware, JMeter, JProfiler, LoadRunner and Django.

    Vertica 8 Hcat Connector

    Before installing (/opt/vertica/packages/hcat/ddl/install.sql), use a command like the following to populate the vertica library with Hadoop jars and configs needed for the hcat connector. This is for the sandbox system and vertica V8 community edition: [root@sandbox part4]# /opt/vertica/packages/hcat/tools/hcatUtil copyJars --hadoopHiveHome="/usr/hdp/2.5.0.0-1245/hadoop/lib; /usr/hdp/2.5.0.0-1245/hive/lib; /usr/hdp/2.5.0.0-1245/tez/lib; /usr/hdp/2.5.0.0-1245/hive-hcatalog/share/hcatalog; /usr/hdp/2.5.0.0-1245/falcon/client/lib; /usr/hdp/2.5.0.0-1245/hadoop-mapreduce; /usr/hdp/2.5.0.0-1245/hive-hcatalog/share/webhcat/svr/lib; /var/lib/ambari-server/resources/views/work/HIVE{1.0.0}/WEB-INF/" --hadoopHiveConfPath="/etc/hadoop; /etc/hive; /etc/hive-webhcat" --hcatLibPath=/opt/vertica/packages/hcat/lib

    You can profile as usual: v8hadoop=> profile SELECT COUNT(*) FROM hcat.SQ110m WHERE K250K = 2; NOTICE 4788: Statement is being profiled HINT: Select * from v_monitor.execution_engine_profiles where transaction_id=45035996273728435 and statement_id=17; NOTICE 3557: Initiator memory for query: [on pool general: 539756 KB, minimum: 539756 KB] NOTICE 5077: Total memory required by query: [539756 KB] COUNT ------- 30 (1 row) Time: First fetch (1 row): 12317.823 ms. All rows formatted: 12317.851 ms v8hadoop=> Select sum(counter_value) from v_monitor.execution_engine_profiles where transaction_id=45035996273728435 and statement_id=17 and counter_name ilike '%execution time (us)%'; sum --------- 2929442 (1 row)

    To improve response increase the maxmemorysize of the JVM resource pool from 2G to 6G, or reduce plannedconcurrency from 8 to 4: v8hadoop=> alter resource pool jvm MAXMEMORYSIZE '6G'; v8hadoop=> alter resource pool jvm plannedconcurrency 4;

    Consider copying the hcat orc table to Vertica and running the queries against the copied table: v8hadoop=> create table copiedfromorc.sq1 as (select * from hcat.sq110m); CREATE TABLE Time: .: 727139.954 ms. All rows formatted: 727139.974 ms

    Figure 13 lists elapsed times for all 71 queries in four setups: Vertica, Vertica-HCAT-Connector-ORC, Vertica-HCAT-Connector-TXTFILE, and Vertica against the copied orc table. Vertica and Hadoop are on the same sandbox/centos7 image.

    Figure 9 Query Elapsed ms Vertica and Vertica.HCAT

    V8 native V8hcatorc v8hcattxtfile v8copiedfromorcq101 43.01 14,353 99,976 807q102 56.23 12,477 89,412 493q103 162.76 12,031 90,861 436q104 109.33 11,823 88,376 492q105 16.67 11,601 90,343 391q106 45.01 11,771 88,745 304q107 70.49 11,633 90,270 293q108 9.64 11,847 94,305 281q109 35.29 11,528 94,418 268q110 14.09 11,577 91,399 270q201 68.21 12,062 89,581 459q202 58.47 11,809 89,249 352q203 20.93 11,972 89,818 341q204 49.28 11,777 89,610 338q205 10.64 11,639 90,252 336q206 26.47 11,743 89,749 350q207 17.23 11,759 100,526 345q208 8.18 11,955 96,364 356q209 11.11 12,012 94,940 375q210 110.34 11,823 95,512 578q211 100.30 12,114 96,393 562q212 121.52 11,908 91,707 567q213 195.28 12,371 90,568 555q214 9.46 12,061 90,635 540q215 21.53 12,112 90,068 541q216 9.11 12,172 90,762 510q217 18.63 11,876 89,532 478q218 21.17 12,189 90,153 471q301 31.16 12,181 89,551 319q302 30.72 12,024 90,674 308q303 9.79 11,739 90,960 305q304 20.35 12,167 89,637 300q305 73.52 12,296 89,986 326q306 54.15 12,097 91,321 324q307 93.14 11,977 91,145 352q308 37.27 11,955 90,813 386q309 45.00 14,286 92,698 4,770q310 47.25 14,708 91,891 4,766q311 31.98 14,001 91,859 4,767q312 51.59 14,259 91,883 4,800q313 18.41 14,592 92,934 4,938q314 73.03 14,671 92,218 5,220q315 49.09 14,456 93,600 4,912q316 59.57 14,275 91,692 4,790q401 40.91 12,918 90,504 781q402 11.20 13,074 89,257 763q403 18.22 13,042 90,589 832q404 51.82 12,551 88,817 738q405 17.79 12,623 91,207 749q406 11.61 12,567 89,064 650q407 27.61 13,207 90,229 659q408 11.12 12,783 89,531 701q409 24.45 13,108 89,470 938q410 11.39 13,265 89,179 925q411 32.48 13,512 89,529 1,005q412 42.62 14,709 88,274 809q413 13.85 14,119 89,446 829q414 12.04 12,968 88,019 1,153q501 17.52 17,571 95,280 7,003q502 13.07 13,156 91,602 1,347q503 12.64 13,488 90,638 2,626q601 82.28 61,143 230,221 1,179q602 61.61 34,944 211,901 1,035q603 76.54 32,318 202,496 545q604 83.89 32,502 194,602 599q605 65.50 34,514 189,171 1,093q606 32.78 13,198 168,671 4,695q607 33.05 13,443 165,758 4,525q608 40.66 12,875 169,078 4,562q609 46.85 12,996 170,576 4,510q610 50.59 13,458 168,735 4,520total 3,110 1,037,728 7,438,230 103,441

  • Automating SQL testing with Vmware, JMeter, JProfiler, LoadRunner and Django.

    Automating SQL testing with LoadRunner & Django There are several ways to automate SETQUERY SQL testing:

    https://github.com/djygithub/setquery4zOS TPNS on z/OS with IMS, CICS, DB2, COBOL, BAL

    http://www.davidjyoung.com/cmg/wintel.pdf LoadRunner with Apache Geronimo, javascript, c++, jprofiler, vtune, php, and DB2 on Windows

    http://davidjyoung.com/cmg/vpee.pdf bash vsql scripts, page 82 Workload Management.

    http://davidjyoung.com/cmg/pcfvaws.esumm.pdf multi-threaded jdbc/Vertica on real hardware, VMWARE, AWS, and solid state, see attachments.

    http://davidjyoung.com/cmg/csesumm.pdf java/jdbc, perl/odbc, vsql, & vtune on real hardware using Windows and Linux clients. See attachments.

    http://davidjyoung.com/nimbledjango/ LoadRunner and Django/Python/Vertica on a Debian 8 VM. This short video gives an overview of the connections. You may need to scroll around to see the entire image, or scroll down and select full screen. See attachments for Report.pdf.

    Following is the Python script (views.py) developed using the https://github.com/uber/vertica-python connection. from django.http import HttpResponse # Create your views here. import vertica_python conn_info = {'host': '127.0.0.1', 'port': 5433, 'user': 'dbadmin', 'password': 'password', 'database': 'debian8', # 10 minutes timeout on queries 'debug': 'true', 'read_timeout': 600} def index(request): # simple connection, with manual close connection = vertica_python.connect(**conn_info) # do things cur = connection.cursor() cur.execute("SELECT sum(K2), sum(K100) FROM SQ1") for row in cur.iterate(): print(row) connection.commit() connection.close() return HttpResponse("row %s." % row)

    Figure 10 Django/Python/Vertica Script

    Figure 11 LoadRunner Django Script

    Figure 12 LoadRunner Controller

    https://github.com/djygithub/setquery4zOShttp://www.davidjyoung.com/cmg/wintel.pdfhttp://davidjyoung.com/cmg/vpee.pdfhttp://davidjyoung.com/cmg/pcfvaws.esumm.pdfhttp://davidjyoung.com/cmg/csesumm.pdfhttp://davidjyoung.com/nimbledjango/https://github.com/uber/vertica-python

  • Automating SQL testing with Vmware, JMeter, JProfiler, LoadRunner and Django.

    The Django log is nothing like the Vertica log, in fact out of the box it is nothing. To direct some debug output to a file use something similar to the following for logging in your settings.py file: LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 'standard': { 'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s", 'datefmt' : "%d/%b/%Y %H:%M:%S" }, }, 'handlers': { 'logfile': { 'level':'DEBUG', 'class':'logging.handlers.RotatingFileHandler', 'filename': '/root/jangle/debug.log', 'maxBytes': 50000, 'backupCount': 2, 'formatter': 'standard', }, 'console':{ 'level':'INFO', 'class':'logging.StreamHandler', 'formatter': 'standard' }, }, 'loggers': { 'django': { 'handlers':['logfile'], 'propagate': True, 'level':'DEBUG', }, 'django.db.backends': { 'handlers': ['logfile'], 'level': 'DEBUG', 'propagate': False, }, 'django.requests': { 'handlers': ['logfile'], 'level': 'DEBUG', 'propagate': False, }, 'django.server': { 'handlers': ['logfile'], 'level': 'DEBUG', 'propagate': False, }, '': { 'handlers': ['logfile'], 'level': 'DEBUG', 'propagate': False, }, 'MYAPP': { 'handlers': ['console', 'logfile'], 'level': 'DEBUG', }, } }

    Figure 13 Django Logging in settings.py When Django starts up it checks things out, including running through the views, as can be seen in the snip from /root/jangle/debug.log. For this test the query was replaced with an update.

    [15/Nov/2016 19:14:42] DEBUG [vertica:151] => [15/Nov/2016 19:19:49] INFO [django.server:131] "GET /scuelite/ HTTP/1.1" 200 43 [15/Nov/2016 19:19:52] INFO [django.server:131] "GET /polls/ HTTP/1.1" 200 8

    Figure 14 Django Log /root/jangle/debug.log The following is from the Vertica log for the same period, showing the single UPDATE request for this session: 2016-11-15 11:14:42.912 Init Session:0x7fcee00151d0 [Session] [Query] TX:0(v_v8hadoop_node0001-43426:0x1df1) update hits set count = count+1 where name = 'top-40';commit;

    Figure 15 Vertica Log

    The whole single user CLI benchmark including setup, execution and teardown can also be automated: [root@rhel70 polls]# more views.py from django.shortcuts import render # Create your views here. from django.http import HttpResponse import vertica_python import sys, string, os conn_info = {'host': '127.0.0.1', 'port': 5433, 'user': 'dbadmin', 'password': 'password', 'database': 'V8hadoop', # 10 minutes timeout on queries 'read_timeout': 600} def index(request): # simple connection, with manual close connection = vertica_python.connect(**conn_info) # do things cur = connection.cursor() cur.execute("update hits set count = count+1 where name = 'top-40';commit;") for row in cur.iterate(): print(row) connection.close() os.system("/home/dbadmin/gendb2bg.exe") os.system("cp gendb2bg.1K.p01.20161107.csv /home/dbadmin/gendb2bg.1K.p01.20161107.csv -n") os.system("/opt/vertica/bin/vsql -U dbadmin -w 'password' -f /root/jangle/mysite/polls/sqddl.txt") os.system("/opt/vertica/bin/vsql -U dbadmin -w 'password' -f /root/jangle/mysite/polls/copysmall") os.system("/opt/vertica/bin/vsql -U dbadmin -w 'password' -f /root/jangle/mysite/polls/sqqueries.txt") os.system("/opt/vertica/bin/vsql -U dbadmin -w 'password' -f /root/jangle/mysite/polls/dropddl.txt") return HttpResponse("row %s." % row) [root@rhel70 polls]#

    Figure 16 Benchmark setup, execution, and teardown

  • Automating SQL testing with Vmware, JMeter, JProfiler, LoadRunner and Django.

    In the preceding example a hit counter is updated, then a series of os-system commands are executed:

    Create test data file Copy data file to /home/dbadmin DDL to create table SQL to load table Execute 71 queries save results DDL to drop table

    The first line in this sqqueries.txt script is a Vertica \timing command, followed by a \o to save the script output to a file, the \timing results get sent to the Django console, we still need to work on the logger definitions: [1] !!!gendb2 start!!! !!!gendb2 end!!! CREATE TABLE ALTER TABLE Rows Loaded ------------- 1000 (1 row) Timing is on. Time: First fetch (1 row): 23.526 ms. All rows formatted: 23.597 ms Time: First fetch (1 row): 8.536 ms. All rows formatted: 8.564 ms Time: First fetch (1 row): 17.580 ms. All rows formatted: 17.619 ms Time: First fetch (1 row): 11.309 ms. All rows formatted: 11.349 ms . . Time: First fetch (1 row): 68.943 ms. All rows formatted: 68.975 ms DROP TABLE

    Figure 17 Django Console Output

    This is for a small 1,000 row implementation, three more versions (python scripts) could be created for medium (10K rows), large (100K rows), and extra large (1,000K rows) by adjusting the gendb2bg.cpp data generation program. For truly enormous implementations, consider increasing the number of rows per partition to 100 million and the number of partitions to an appropriate enormous value. A similar request for updating a hit counter using the default SQLITE implementation, following is the views.py from django.shortcuts import render # Create your views here. from django.http import HttpResponse import sqlite3 def index(request): # Connecting to the database file conn = sqlite3.connect('db.sqlite3') c = conn.cursor() c.execute("UPDATE hits SET hitcount = hitcount + 1 WHERE name = 'top40'") conn.commit() conn.close() return HttpResponse("Hello, world. You're at the scuelite index.")

    Figure 18 Django SCUELITE views.py

    Django directories are shown following. [root@rhel70 mysite]# pwd /root/jangle/mysite [root@rhel70 mysite]# ll total 56 -rw-r--r-- 1 root root 37888 Nov 15 12:10 db.sqlite3 -rwxr-xr-x 1 root root 804 Nov 14 15:44 manage.py drwxr-xr-x 2 root root 4096 Nov 15 11:14 mysite drwxr-xr-x 3 root root 4096 Nov 15 08:55 polls drwxr-xr-x 3 root root 4096 Nov 15 09:35 scuelite

    Figure 19 Django directories Executing and verifying the sqlite script are shown following. [root@rhel70 mysite]# sqlite3 db.sqlite3 SQLite version 3.7.17 2013-05-20 00:56:22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> select * from hits; top40|14 sqlite> [root@rhel70 mysite]# python ./scuelite/views.py [root@rhel70 mysite]# sqlite3 db.sqlite3 sqlite> select * from hits; top40|15 sqlite>

    Figure 20 Django sqlite example JMeter JDBC JMeter (http://jmeter.apache.org/ ) is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions. JMeter runs on just about any Java platform, including Windows, Mac, and Linux. One of the other test functions is SQL testing via a JDBC driver, as discussed in the following walk through. The JMeter Test Plan is shown on Figure 21.

    Figure 21 JMeter JDBC Test Plan JMeter is installed on Windows 8.1, and accesses a Vertica 7 database on a Debian 8 VM, also running under the same Windows 8.1. The location of the vertica jdbc driver is shown in the last menu item under Library as shown preceding.

    http://jmeter.apache.org/

  • Automating SQL testing with Vmware, JMeter, JProfiler, LoadRunner and Django.

    Figure 22 JMeter JDBC Thread Group The JMeter Thread Group shown in Figure 22 specifies 20 threads, ramp up time of 1 second, and loop count of 100.

    Figure 23 JMeter JDBC JDBC Connection Configuration The JDBC Connection Configuration is shown in Figure 23 preceding.

    Figure 24 JMeter JDBC JDBC Request The SQL request (Select * from system:) is illustrated in Figure 24 preceding.

    Figure 25 JMeter JDBC Summary Report The JDBC Summary Report and log file (D:\apache-jmeter-3.1\jdbcfirst.txt) for jdbcfirst.jmx is shown in Figure 25 preceding. Figure 26 shows the Nmon activity display for jdbcfirst.jmx.

    Figure 26 JMeter JDBC NMON activity 20 user test

  • Automating SQL testing with Vmware, JMeter, JProfiler, LoadRunner and Django.

    The beginning of the JMeter log for jdbcfirst.jmx is shown following in Figure 27. The name of the log file (jdbcfirst.txt) was specified in Figure 25, JDBC Summary Report.

    Figure 27 JMeter JDBC jdbcfirst log

    Figure 28 JMeter JDBC create Dashboard reports from log d:\apache-jmeter-3.1\apache-jmeter-3.1\bin\jmeter -g jdbcfirst.txt -o d:\apache-jmeter-3.1\20170212

    Figure 29 JMeter JDBC create Dashboard reports from log The command to produce the Dashboard report from the jdbcfirst.txt log file is shown in Figures 28 and 29 preceding. A Portion of the JMeter Dashboard Report is shown in Figure 30. The entire report can be found at the following link http://davidjyoung.com/JMeter/20170212/index.html

    Figure 30 JMeter JDBC HTML report 20 user test JMeter HTTP Web Test Plan The following discussion illustrates the use of JMeter to test a website, in this case the same Django setup shown preceding in Automating SQL testing with LoadRunner & Django (Figure 10).

    Figure 31 JMeter HTTP Test Plan

    Figure 32 JMeter HTTP Thread Group

    http://davidjyoung.com/JMeter/20170212/index.html

  • Automating SQL testing with Vmware, JMeter, JProfiler, LoadRunner and Django.

    Figure 33 JMeter HTTP Request Defaults

    Figure 34 JMeter HTTP Request

    Figure 35 JMeter HTTP Graph Results

    Figure 36 JMeter HTTP Django Disallowed Host

    If you run into the error shown in Figure 35, it can be overcome in your test/development environment by setting ALLOWED_HOSTS=[*] in the settings.py file. [root@rhel70 mysite]# pwd /root/jangle/mysite/mysite [root@rhel70 mysite]# ll -rw-r--r-- 1 root root 4815 Feb 13 08:37 settings.py [root@rhel70 mysite]#

    Figure 37 JMeter HTTP Django settings.py location The following illustrates the use of the JMeter CLI for running tests.

    Figure 38 JMeter CLI for running tests jmeter -n -t d:\apache-jmeter-3.1\jdbcfirst.jmx -j jdbcfirst.20170226.one.txt

    Figure 39 JMeter CLI for running tests JMeter with JProfiler JProfiler can be used to provide many of the same driver system performance details provided with LoadRunner. Its always important to assure the driver system has adequate system resources to run repeatable, believable tests. (http://davidjyoung.com/cmg/iisvideos.pdf) The JProfiler Session settings for running the httpdjango.jmx workload are shown in Figures 40, 41, and 42.

    Figure 40 JProfiler JMeter Session Settings

    http://davidjyoung.com/cmg/iisvideos.pdf

  • Automating SQL testing with Vmware, JMeter, JProfiler, LoadRunner and Django.

    Figure 41 JProfiler JMeter Session Startup

    Figure 42 JProfiler JMeter Configure Recording Profiles JProfiler statistics for the httpdjango.jmx workload including CPU Hot Spots, CPU Load, Garbage Collection, and Heap usage are shown in figures 43, 44, 45, and 46 following.

    Figure 43 JProfiler httpdjango CPU Hot Spots

    Figure 44 JProfiler httpdjango.jmx Telemetries CPU Load

    Figure 45 JProfiler httpdjango.jmx Telemetries GC

    Figure 46 JProfiler httpdjango.jmx Telemetries Heap Additional JProfiler JDBC statistics for the jdbcfirst.jmx workload including Timeline, Connections, Hot Spots, and

  • Automating SQL testing with Vmware, JMeter, JProfiler, LoadRunner and Django.

    Locking History. are shown in figures 47, 48, 49 and 50 following.

    Figure 47 JProfiler jdbcfirst.jmx JDBC Timeline

    Figure 48 JProfiler jdbcfirst.jmx JDBC Connections

    Figure 49 JProfiler jdbcfirst.jmx JDBC Hotspots

    Figure 50 JProfiler jdbcfirst.jmx Locking History Graph GREP/AWK/SED Vertica.log response time, counts

    cat vertica.log | grep 'SELECT sum(K2), sum(K100) FROM SQ1' |egrep 'Commit|Begin' > testgrep.txt

    awk '// {print $1, $2, $4, $7, $8;}' testgrep.txt > testawk.txt

    sort -k3,3 testawk.txt -o testsort.txt cat testsort.txt | tr -d "\n" | sed

    s/Commit:/Commit:\\n/g > testsed.txt awk '// {print $1, $2, $5, $6}'

    testsed.txt > testdates.txt cat testdates.txt | tr "Txn:" ", " | tr -

    " " | tr . "," > testdates.edited.txt awk -F, '{d3=mktime($3);d1=mktime($1);print

    (d3*1000+$4)-(d1*1000+$2),"msecs";}' testdates.edited.txt > results2.txt

    awk '{ s += $1 } END { print " average msec: ", s/NR, " samples: ", NR }' results2.txt

    average msec: 77.0139 samples: 239019

    Figure 51 Quick and Dirty query response, counts

    Summary This research project explored a LoadRunner/Django and JProfiler/JMeter/JDBC/HTTP test automation framework and the SQL performance for 10 million rows of SETQUERY data on Hortonworks HDP 2.5 and Vertica 8. HP LoadRunner Software 12.02 Community Edition, VMware Player 6.0.6 build-2700073, Vertica V8 Community Edition, Windows 8.1 Pro with Media Center, Hortonworks Sandbox 2.5 VM with Centos 7, Debian 8.1/Django 1.7.7/Vertica 7, RHEL70/Django 1.10.3/Vertica 8, JProfiler 8.1, and JMeter 3.1 were used to run the experiments. Camtasia Studio 7 was used to produce the video.

    OverviewResultsSpreadsheet LinksMeasurement SummaryEtr, ItrSoftware/Hardware ConfigurationQuery Response Times

    Compiling and Running Test Data GeneratorIncrease Tez Container SizeSpark shell CLI

    Vertica 8 HCAT ConnectorInstallingProfilingAdust JVM Resource PoolHCAT SQL Elapsed Comparisons

    Automating SQL testing with LoadRunner & DjangoVideoDjango/Python/Vertica/SQL scriptLoadrunner/Django scriptLoadrunner ControllerDjango LoggingVertica logBenchmark setup, execution, teardown ScriptDjango Console Log OutputSqlite3 views.py

    Automating SQL testing with JMeterJDBCTest PlanThread GroupJDBC Connection ConfigurationJDBC RequestSummary ReportNMON Activity 20 user testJMeter jdbcfirst.txt logCreate Dashboard reports from jdbcfirst.txtLink to Dashboard ReportsHTML Dashboard Report index.html

    HTTPTest PlanThread GroupHTTP Request DefaultsHTTP RequestHTTP Graph ResultsDjango Disallowed Host WorkaroundDjango settings.py location

    Automating JMeter testing with JProfilerSession ConfigurationSession SettingsSession StartupConfigure Recording Profiles

    httpdjango snapshot resultsCPU Hot SpotsCPU LoadGarbage Collection ActivityHeap usage

    jdbcfirst snapshot resultsTimelineConnectionsHotspotsLocking History Graph

    GREP/AWK/SED vertica.log response time, countSummary

    MyThread.java/*

    **Thisprogramconnectstoadatabaseandrunsasimplequeryin

    **amulti-threadedcontext.Itcanbeusedforstresstesting.

    */

    importjava.util.*;

    importjava.io.*;

    importjava.sql.*;

    importcom.vertica.jdbc.*;


    publicclassMyThreadextendsThread{


    publicvoidrun()

    {

    StringQ101=

    "SELECTCOUNT(*)FROMSQ1WHEREK250K=2;";

    StringQ102=

    "SELECTCOUNT(*)FROMSQ1WHEREK100K=2;";

    StringQ103=

    "SELECTCOUNT(*)FROMSQ1WHEREK10K=2;";

    StringQ104=

    "SELECTCOUNT(*)FROMSQ1WHEREK1K=2;";

    StringQ105=

    "SELECTCOUNT(*)FROMSQ1WHEREK100=2;";

    StringQ106=

    "SELECTCOUNT(*)FROMSQ1WHEREK25=2;";

    StringQ107=

    "SELECTCOUNT(*)FROMSQ1WHEREK10=2;";

    StringQ108=

    "SELECTCOUNT(*)FROMSQ1WHEREK5=2;";

    StringQ109=

    "SELECTCOUNT(*)FROMSQ1WHEREK4=2;";

    StringQ110=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2;";

    StringQ201=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDKSEQ=3;";

    StringQ202=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK100K=3;";

    StringQ203=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK10K=3;";

    StringQ204=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK1K=3;";

    StringQ205=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK100=3;";

    StringQ206=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK25=3;";

    StringQ207=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK10=3;";

    StringQ208=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK5=3;";

    StringQ209=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK4=3;";

    StringQ210=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDKSEQ3;";

    StringQ211=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK100K3;";

    StringQ212=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK10K3;";

    StringQ213=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK1K3;";

    StringQ214=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK1003;";

    StringQ215=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK253;";

    StringQ216=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK103;";

    StringQ217=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK53;";

    StringQ218=

    "SELECTCOUNT(*)FROMSQ1WHEREK2=2ANDK43;";

    StringQ301=

    "SELECTSUM(K1K)FROMSQ1WHEREK100K=3;";

    StringQ302=

    "SELECTSUM(K1K)FROMSQ1WHEREK10K=3;";

    StringQ303=

    "SELECTSUM(K1K)FROMSQ1WHEREK1K=3;";

    StringQ304=

    "SELECTSUM(K1K)FROMSQ1WHEREK100=3;";

    StringQ305=

    "SELECTSUM(K1K)FROMSQ1WHEREK25=3;";

    StringQ306=

    "SELECTSUM(K1K)FROMSQ1WHEREK10=3;";

    StringQ307=

    "SELECTSUM(K1K)FROMSQ1WHEREK5=3;";

    StringQ308=

    "SELECTSUM(K1K)FROMSQ1WHEREK4=3;";

    StringQ310=

    "SELECTSUM(K1K)FROMSQ1WHERE(KSEQBETWEEN0AND25000ORKSEQBETWEEN50000AND75000ORKSEQBETWEEN100000AND125000ORKSEQBETWEEN150000AND175000ORKSEQBETWEEN200000AND225000)ANDK10K=3;";

    StringQ311=

    "SELECTSUM(K1K)FROMSQ1WHERE(KSEQBETWEEN0AND25000ORKSEQBETWEEN50000AND75000ORKSEQBETWEEN100000AND125000ORKSEQBETWEEN150000AND175000ORKSEQBETWEEN200000AND225000)ANDK1K=3;";

    StringQ312=

    "SELECTSUM(K1K)FROMSQ1WHERE(KSEQBETWEEN0AND25000ORKSEQBETWEEN50000AND75000ORKSEQBETWEEN100000AND125000ORKSEQBETWEEN150000AND175000ORKSEQBETWEEN200000AND225000)ANDK100=3;";

    StringQ313=

    "SELECTSUM(K1K)FROMSQ1WHERE(KSEQBETWEEN0AND25000ORKSEQBETWEEN50000AND75000ORKSEQBETWEEN100000AND125000ORKSEQBETWEEN150000AND175000ORKSEQBETWEEN200000AND225000)ANDK25=3;";

    StringQ314=

    "SELECTSUM(K1K)FROMSQ1WHERE(KSEQBETWEEN0AND25000ORKSEQBETWEEN50000AND75000ORKSEQBETWEEN100000AND125000ORKSEQBETWEEN150000AND175000ORKSEQBETWEEN200000AND225000)ANDK10=3;";

    StringQ315=

    "SELECTSUM(K1K)FROMSQ1WHERE(KSEQBETWEEN0AND25000ORKSEQBETWEEN50000AND75000ORKSEQBETWEEN100000AND125000ORKSEQBETWEEN150000AND175000ORKSEQBETWEEN200000AND225000)ANDK5=3;";

    StringQ316=

    "SELECTSUM(K1K)FROMSQ1WHERE(KSEQBETWEEN0AND25000ORKSEQBETWEEN50000AND75000ORKSEQBETWEEN100000AND125000ORKSEQBETWEEN150000AND175000ORKSEQBETWEEN200000AND225000)ANDK4=3;";

    StringQ501=

    "SELECTK2,K100,COUNT(*)FROMSQ1GROUPBYK2,K100;";

    StringQ502=

    "SELECTK4,K25,COUNT(*)FROMSQ1GROUPBYK4,K25;";

    StringQ503=

    "SELECTK10,K25,COUNT(*)FROMSQ1GROUPBYK10,K25";

    StringQ601=

    "SELECTCOUNT(*)FROMSQ1T1,SQ1T2WHERET1.K100K=49ANDT1.K250K=T2.K500K;";

    StringQ602=

    "SELECTCOUNT(*)FROMSQ1T1,SQ1T2WHERET1.K40K=49ANDT1.K250K=T2.K500K;";

    StringQ603=

    "SELECTCOUNT(*)FROMSQ1T1,SQ1T2WHERET1.K10K=49ANDT1.K250K=T2.K500K;";

    StringQ604=

    "SELECTCOUNT(*)FROMSQ1T1,SQ1T2WHERET1.K1K=49ANDT1.K250K=T2.K500K;";

    StringQ605=

    "SELECTCOUNT(*)FROMSQ1T1,SQ1T2WHERET1.K100=49ANDT1.K250K=T2.K500K;";

    StringQ606=

    "SELECTCOUNT(*)FROMSQ1T1,SQ1T2WHERET1.K100K=49ANDT1.K250K=T2.K500KANDT2.K25=19;";

    StringQ607=

    "SELECTCOUNT(*)FROMSQ1T1,SQ1T2WHERET1.K40K=49ANDT1.K250K=T2.K500KANDT2.K25=19;";

    StringQ608=

    "SELECTCOUNT(*)FROMSQ1T1,SQ1T2WHERET1.K10K=49ANDT1.K250K=T2.K500KANDT2.K25=19;";

    StringQ609=

    "SELECTCOUNT(*)FROMSQ1T1,SQ1T2WHERET1.K1K=49ANDT1.K250K=T2.K500KANDT2.K25=19;";

    StringQ610=

    "SELECTCOUNT(*)FROMSQ1T1,SQ1T2WHERET1.K100=49ANDT1.K250K=T2.K500KANDT2.K25=19;";

    StringQBIG=

    "SELECT*FROMSQ1WHEREKSEQ

  • Customer facing (for cross session)

    18/11/2016

    Author Details

    First Name David

    Surname Young

    Job Title Linux & Windows Resources

    Organization

  • Date: 18/11/2016 Report Title: Customer facing (for cross session) Author: David Young

    Page 2 out of 14 Organization:

    General Details

    Scenario Name Scenario1

    Run Name res.lrr

    Run Date 18/11/2016 05:18:51

    Period 18/11/2016 05:18:51 - 18/11/2016 05:25:22

    Run Duration 6 minutes and 31 seconds

    PC Project Name

    Executive Summary

    Conclusions

    Business Process

    RunName

    Group Name Script Name ConcurrentVusers

    % of TotalVusers

    Transactions perHour

    StartTime

    Think Time Pacing BrowserCache

    res.lrr WebHttpHtml8 WebHttpHtml8 10 100 409784.4 18/11/201605:18:51

    Replay asrecorded

    As soonaspossible

    Total: 10 100%

    Script: WebHttpHtml8

    Description:

    # Transaction

    1 Action_Transaction

    2 vuser_end_Transaction

    3 vuser_init_Transaction

    Workload Characteristics

    Measurement res.lrr

    Max Running Vusers 10

    Average Hits per Second 113.5

    Total Hits 44601

    Total Passed Transactions per Second 113.5

    Total Passed Transactions per Minute 6812.3

    Total Transactions Number 3

  • Date: 18/11/2016 Report Title: Customer facing (for cross session) Author: David Young

    Page 3 out of 14 Organization:

    Color Graph Scale Measurement Graph'sMinimum

    Graph'sAverage

    Graph'sMaximum

    Graph's Median Graph's Std.Deviation

    Running Vusers 1 Run 0.000 4.100 10.000 5.000 3.360

    TotalTransactions perSecond

    1 Pass 0.000 113.539 165.000 111.000 18.094

    Performance Overview

    Measurement Value

    Run Name res.lrr

    Weighted Average of Transaction Response Time 0

    Total Passed Transactions 44621

    Total Failed Transactions 0

    Transactions Success Rate, % 100

    Total Errors per Second 0

    Total Errors 0

    HTTP Responses Summary

    HTTP Response Name Total Per Second

    HTTP_200 44601 113.8

  • Date: 18/11/2016 Report Title: Customer facing (for cross session) Author: David Young

    Page 4 out of 14 Organization:

    Transaction Summary

    Filter Transaction End Status= (Pass)

    RunName

    Transaction Name Minimum Average Maximum Std.Deviation

    90% Pass Count Fail Count Stop Count

    res.lrr Action_Transaction 0 0.1 0.5 0 0.1 44601 0 0

    res.lrr vuser_end_Transaction 0 0 0 0 0 10 0 0

    res.lrr vuser_init_Transaction 0 0 0 0 0 10 0 0

    Worst URLs (by average response time)

    URL name Parent transaction name Layers breakdown of the URL Count Total Min Max Avg StdDev

    http://10.207.55.128:8080/polls/

    Action_Transaction 5335 0.1 0 0.1 0.1 0

    0

    0

    0.1

    0.1

    0.1 seconds

    DNS Resolution Connection SSL Handshaking FTP Authentication

    First Buffer Receive Client Error

    Most Resource Consuming URLs

    URL name Parent transaction name Total server time Count Total Min Max Avg StdDev

    http://10.207.55.128:8080/polls/

    Action_Transaction 5335 344.9 0 0.5 0.1 0

    69

    138

    206.9

    275.9

    344.9 seconds

    Total Server Time

    Largest URLs by Average KBytes

    URL name Parent transaction name Average size Count Total Min Max Avg StdDev

    http://10.207.55.128:8080/polls/

    Action_Transaction 5335 979.5 0.2 0.2 0.2 0

    0

    0.1

    0.1

    0.2

    0.2 KBytes

    Average size

  • Date: 18/11/2016 Report Title: Customer facing (for cross session) Author: David Young

    Page 5 out of 14 Organization:

    Running Vusers

    Title Running Vusers

    Current Results C:\Users\dyoung\AppData\Local\Temp\res\res.lrr

    Filters Vuser Status = (Run)

    Group By

    Granularity 8 Seconds

    Color Scale Measurement Graph Minimum Graph Average Graph Maximum Graph Median Graph Std.Deviation

    1 Run 0.000 4.375 10.000 5.000 3.389

    Description: Displays the number of Vusers that executed Vuser scripts, and their status, during each second of a load test. This graph is useful fordetermining the Vuser load on your server at any given moment.

  • Date: 18/11/2016 Report Title: Customer facing (for cross session) Author: David Young

    Page 6 out of 14 Organization:

    Hits per Second

    Title Hits per Second

    Current Results C:\Users\dyoung\AppData\Local\Temp\res\res.lrr

    Filters None

    Group By

    Granularity 8 Seconds

    Color Scale Measurement Graph Minimum Average Graph Maximum Graph Median Graph Std.Deviation

    1 Hits 0.000 113.778 180.875 118.750 34.333

    Description: Displays the number of hits made on the Web server by Vusers during each second of the load test. This graph helps you evaluate the amount ofload Vusers generate, in terms of the number of hits.

  • Date: 18/11/2016 Report Title: Customer facing (for cross session) Author: David Young

    Page 7 out of 14 Organization:

    Throughput

    Title Throughput

    Current Results C:\Users\dyoung\AppData\Local\Temp\res\res.lrr

    Filters None

    Group By

    Granularity 8 Seconds

    Color Scale Measurement Graph Minimum Average Graph Maximum Graph Median Graph Std.Deviation

    1 Throughput 0.000 21,390.276 36,190.000 22,442.500 6,439.259

    Description: Displays the amount of throughput (in bytes) on the Web server during the load test. Throughput represents the amount of data that the Vusersreceived from the server at any given second. This graph helps you to evaluate the amount of load Vusers generate, in terms of server throughput.

  • Date: 18/11/2016 Report Title: Customer facing (for cross session) Author: David Young

    Page 8 out of 14 Organization:

    Transaction Summary

    Title Transaction Summary

    Current Results C:\Users\dyoung\AppData\Local\Temp\res\res.lrr

    Filters (do not Include Think Time)

    Group By

    Color Scale Measurement

    1 Pass

    Description: Displays the number of transactions that passed, failed, stopped, or ended with errors.

  • Date: 18/11/2016 Report Title: Customer facing (for cross session) Author: David Young

    Page 9 out of 14 Organization:

    Average Transaction Response Time

    Title Average Transaction Response Time

    Current Results C:\Users\dyoung\AppData\Local\Temp\res\res.lrr

    Filters Transaction End Status = (Pass)(do not Include Think Time)

    Group By

    Granularity 8 Seconds,

    Color Scale Measurement Minimum Average Maximum Std. Deviation

    1 Action_Transaction 0.011 0.077 0.507 0.032

    1 vuser_end_Transaction 0.000 0.000 0.000 0.000

    1 vuser_init_Transaction 0.000 0.000 0.000 0.000

    Description: Displays the average time taken to perform transactions during each second of the load test. This graph helps you determine whether theperformance of the server is within acceptable minimum and maximum transaction performance time ranges defined for your system.

  • Date: 18/11/2016 Report Title: Customer facing (for cross session) Author: David Young

    Page 10 out of 14 Organization:

    Windows Resources

    Title Windows Resources

    Current Results C:\Users\dyoung\AppData\Local\Temp\res\res.lrr

    Filters None

    Group By

    Granularity 8 Seconds

    Color Scale Measurement Minimum Average Maximum Std. Deviation

    0.1 % Disk Time (PhysicalDisk _Total):localhost 1.938 10.181 412.660 36.268

    1 % Idle Time (PhysicalDisk _Total):localhost 81.229 96.559 98.450 2.231

    100 % Interrupt Time (Processor _Total):localhost 0.000 0.275 0.651 0.131

    1 % Privileged Time (Processor _Total):localhost 21.889 68.945 75.713 8.553

    1 % Processor Time (Processor _Total):localhost 37.135 82.771 89.056 8.143

    0.001 Available MBytes (Memory):localhost 24,293.000 24,362.700 24,492.000 41.582

    0.001 Avg. Disk Bytes/Transfer (PhysicalDisk_Total):localhost

    4,335.690 8,626.018 31,801.403 5,269.104

    10 Avg. Disk Queue Length (PhysicalDisk_Total):localhost

    0.078 0.407 16.509 1.451

    1E-07 Cache Bytes (Memory):localhost 320,233,472.000 322,495,598.277 329,084,928.000 1,529,676.372

    1E-08 Committed Bytes (Memory):localhost 8,689,336,320.000 8,837,681,719.138 8,917,970,944.000 45,857,856.741

    0.001 Context Switches/sec (System):localhost 24,393.200 47,177.448 54,705.775 3,552.481

  • Date: 18/11/2016 Report Title: Customer facing (for cross session) Author: David Young

    Page 11 out of 14 Organization:

    Color Scale Measurement Minimum Average Maximum Std. Deviation

    0.1 Disk Transfers/sec (PhysicalDisk _Total):localhost 259.428 358.610 495.783 41.292

    0.1 File Data Operations/sec (System):localhost 301.983 380.468 1,430.520 106.580

    1E-05 Free Megabytes (LogicalDisk _Total):localhost 2,749,246.000 2,749,247.062 2,749,248.000 0.998

    0.001 Interrupts/sec (Processor _Total):localhost 20,111.977 59,222.801 66,298.579 8,791.923

    0.01 Page Faults/sec (Memory):localhost 165.677 945.861 13,300.501 1,424.429

    1 Page Reads/sec (Memory):localhost 3.666 18.788 131.381 22.120

    0.1 Pages/sec (Memory):localhost 3.666 129.408 982.878 182.192

    1E-07 Pool Nonpaged Bytes (Memory):localhost 384,446,464.000 385,945,536.985 387,145,728.000 535,054.977

    1E-07 Pool Paged Bytes (Memory):localhost 978,427,904.000 978,873,580.308 979,054,592.000 84,945.726

    1E-08 Private Bytes (Process _Total):localhost 2,618,482,688.000 2,625,902,718.031 2,642,198,528.000 4,478,960.266

    10 Processor Queue Length (System):localhost 0.000 1.923 10.000 1.956

    10 Split IO/Sec (PhysicalDisk _Total):localhost 0.000 0.500 10.329 1.300

    1E-07 System Cache Resident Bytes (Memory):localhost 320,233,472.000 322,495,566.769 329,084,928.000 1,529,672.640

    0.01 Threads (Objects):localhost 1,940.000 1,978.077 2,015.000 18.144

    1E-08 Working Set (Process _Total):localhost 6,402,408,448.000 6,481,647,835.762 6,520,877,055.000 18,673,797.392

    Description: Displays a summary of the System Resources usage for each Windows based host.

  • Date: 18/11/2016 Report Title: Customer facing (for cross session) Author: David Young

    Page 12 out of 14 Organization:

    UNIX Resources

    Title UNIX Resources

    Current Results C:\Users\dyoung\AppData\Local\Temp\res\res.lrr

    Filters None

    Group By

    Granularity 8 Seconds

    Color Scale Measurement Minimum Average Maximum Std. Deviation

    10 Average load (Unix KernelStatistics):10.207.55.128

    0.547 5.769 8.969 2.239

    1 Collision Rate (Unix KernelStatistics):10.207.55.128

    0.000 0.000 0.000 0.000

    0.0001 Context switch rate (Unix KernelStatistics):10.207.55.128

    47,912.167 116,972.563 129,218.167 19,230.966

    1 CPU Utilization (Unix KernelStatistics):10.207.55.128

    25.675 56.862 63.703 8.452

    0.1 Disk Traffic (Unix Kernel Statistics):10.207.55.128 288.167 330.156 460.500 38.365

    1 Incoming packets error rate (Unix KernelStatistics):10.207.55.128

    0.000 0.000 0.000 0.000

    1 Incoming packets rate (Unix KernelStatistics):10.207.55.128

    0.000 0.000 0.000 0.000

    0.001 Interrupt rate (Unix KernelStatistics):10.207.55.128

    20,692.167 53,185.638 59,776.500 9,009.006

  • Date: 18/11/2016 Report Title: Customer facing (for cross session) Author: David Young

    Page 13 out of 14 Organization:

    Color Scale Measurement Minimum Average Maximum Std. Deviation

    1 Outgoing packets error rate (Unix KernelStatistics):10.207.55.128

    0.000 0.000 0.000 0.000

    0.01 Outgoing packets rate (Unix KernelStatistics):10.207.55.128

    12.333 620.757 6,636.000 1,057.330

    1 Page-in rate (Unix Kernel Statistics):10.207.55.128 0.000 0.552 31.333 3.885

    0.01 Page-out rate (Unix KernelStatistics):10.207.55.128

    1,344.667 2,840.781 7,761.333 1,022.832

    0.01 Paging rate (Unix Kernel Statistics):10.207.55.128 1,344.667 2,841.333 7,762.000 1,022.391

    1 Swap-in rate (Unix KernelStatistics):10.207.55.128

    0.000 0.000 0.000 0.000

    1 Swap-out rate (Unix KernelStatistics):10.207.55.128

    0.000 0.000 0.000 0.000

    1 System mode CPU Utilization (Unix KernelStatistics):10.207.55.128

    17.266 42.213 49.842 7.736

    1 User mode CPU Utilization (Unix KernelStatistics):10.207.55.128

    8.410 14.649 18.437 1.457

    Description: Displays a summary of the System Resources usage for each UNIX based host.

    Terminology

    LoadRunner Objects

    Term Definition

    Vuser Scripts A Vuser script describes the actions that a Vuser performs during the scenario. Each Vuser executes a Vuser script during a scenariorun. The Vuser scripts include functions that measure and record the performance of your application components.

    Load Test Tests a system's ability to handle a heavy workload. A load test simulates multiple transactions or users interacting with the computerat the same time and provides reports on response times and system behavior.

    Run-Time Settings Run-Time settings allow you to customize the way a Vuser script is executed. You configure the run-time settings from the Controlleror VuGen before running a scenario. You can view information about the Vuser groups and scripts that were run in each scenario, aswell as the run-time settings for each script in a scenario, in the Scenario Run-Time Settings dialog box.

    Scenario A scenario defines the events that occur during each testing session. For example, a scenario defines and controls the number ofusers to emulate, the actions that they perform, and the machines on which they run their emulations.

    Scheduler The Schedule Builder allows you to set the time that the scenario will start running, the duration time of the scenario or of the Vusergroups within the scenario, and to gradually run and stop the Vusers within the scenario or within a Vuser group. It also allows you toset the load behavior of Vusers in a scenario.

    Session When you work with the Analysis utility, you work within a session. An Analysis session contains at least one set of scenario results(lrr file). The Analysis utility processes the scenario result information and generates graphs and reports. The Analysis stores thedisplay information and layout settings for the active graphs in a file with an .lra extension. Each session has a session name, resultfile name, database name, directory path, and type.

    Transactions A transaction represents an action or a set of actions used to measure the performance of the server. You define transactions withinyour Vuser script by enclosing the appropriate sections of the script with start and end transaction statement.

    Vusers Vusers or virtual users are used by LoadRunner as a replacement for human users. When you run a scenario, Vusers emulate theactions of human users working with your application. A scenario can contain tens, hundreds, or even thousands of Vusers runningconcurrently on a single workstation.

    Graph Information

    Term Definition

    Average Average value of the graph measurement's.

    Hits The number of HTTP requests made by Vusers to the Web server.

    Maximum Maximum value of the graph measurement's.

    Measurement This is the type of resource being monitored

    Median Middle value of the graph measurement's.

    Minimum Minimum value of the graph measurement's.

    Network Delay The time it takes for a packet of data sent across the network to go to the requested node and return.

    Network Path The Network Path is the route data travels between the source machine and the destination machine.

    Response time The time taken to perform a transaction.

    Scale (or granularity) In order to display all the measurements on a single graph, thus making the graphs easier to read and analyze, you can change thescale or (granularity) of the x-axis. You can either set measurement scales manually, view measurement trends for all measurementsin the graph, or let Analysis scale them automatically. The Legend tab indicates the scale factor for each resource.

  • Date: 18/11/2016 Report Title: Customer facing (for cross session) Author: David Young

    Page 14 out of 14 Organization:

    Standard Deviation (SD) The square root of the arithmetic mean value of the squares of the deviations from the arithmetic mean.

    Throughput Throughput is measured in bytes and represents the amount of data that the Vusers received from the server.

    Vuser Load When you run a scenario, the Vusers generate load or stress on the server. LoadRunner monitors the effect of this load on theperformance of your application.

    Report

    General Details

    Executive Summary

    Conclusions

    Business Process

    Workload Characteristics

    Performance Overview

    HTTP Responses Summary

    Transaction Summary

    Worst URLs (by average response time)

    Most Resource Consuming URLs

    Largest URLs by Average KBytes

    Running Vusers

    Hits per Second

    Throughput

    Average Transaction Response Time

    Windows Resources

    UNIX Resources

    Terminology

    kpart,kseq,k1b,k500m,k100m,k10m,k5m,k2m,k1m,k500k,k250k,k100k,k40k,k10k,k1k,k100,k25,k10,k5,k4,k2,sortbin,sortpack,sortchar,s4,s5,s6,s7,s81,0,956273372,478136686,95627337,9562733,4781366,1912546,956273,478136,239068,95627,38250,9562,956,95,23,9,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,1,448873369,224436684,44887336,4488733,2244366,897746,448873,224436,112218,44887,17954,4488,448,44,11,4,2,1,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,2,891297171,445648585,89129717,8912971,4456485,1782594,891297,445648,222824,89129,35651,8912,891,89,22,8,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,3,908757564,454378782,90875756,9087575,4543787,1817515,908757,454378,227189,90875,36350,9087,908,90,22,9,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,4,1037606330,518803165,103760633,10376063,5188031,2075212,1037606,518803,259401,103760,41504,10376,1037,103,25,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,5,224846317,112423158,22484631,2248463,1124231,449692,224846,112423,56211,22484,8993,2248,224,22,5,2,1,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,6,381539254,190769627,38153925,3815392,1907696,763078,381539,190769,95384,38153,15261,3815,381,38,9,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,7,874373060,437186530,87437306,8743730,4371865,1748746,874373,437186,218593,87437,34974,8743,874,87,21,8,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,8,316153823,158076911,31615382,3161538,1580769,632307,316153,158076,79038,31615,12646,3161,316,31,7,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,9,630509953,315254976,63050995,6305099,3152549,1261019,630509,315254,157627,63050,25220,6305,630,63,15,6,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,10,543357251,271678625,54335725,5433572,2716786,1086714,543357,271678,135839,54335,21734,5433,543,54,13,5,2,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,11,715759714,357879857,71575971,7157597,3578798,1431519,715759,357879,178939,71575,28630,7157,715,71,17,7,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,12,415185405,207592702,41518540,4151854,2075927,830370,415185,207592,103796,41518,16607,4151,415,41,10,4,2,1,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,13,584335631,292167815,58433563,5843356,2921678,1168671,584335,292167,146083,58433,23373,5843,584,58,14,5,2,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,14,1083795814,541897907,108379581,10837958,5418979,2167591,1083795,541897,270948,108379,43351,10837,1083,108,26,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,15,1042782380,521391190,104278238,10427823,5213911,2085564,1042782,521391,260695,104278,41711,10427,1042,104,25,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,16,723545686,361772843,72354568,7235456,3617728,1447091,723545,361772,180886,72354,28941,7235,723,72,17,7,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,17,816403215,408201607,81640321,8164032,4082016,1632806,816403,408201,204100,81640,32656,8164,816,81,20,8,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,18,161167261,80583630,16116726,1611672,805836,322334,161167,80583,40291,16116,6446,1611,161,16,3,1,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,19,690831540,345415770,69083154,6908315,3454157,1381663,690831,345415,172707,69083,27633,6908,690,69,17,6,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,20,18552761,9276380,1855276,185527,92763,37105,18552,9276,4638,1855,742,185,18,1,0,0,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,21,276445545,138222772,27644554,2764455,1382227,552891,276445,138222,69111,27644,11057,2764,276,27,6,2,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,22,156192360,78096180,15619236,1561923,780961,312384,156192,78096,39048,15619,6247,1561,156,15,3,1,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,23,915286907,457643453,91528690,9152869,4576434,1830573,915286,457643,228821,91528,36611,9152,915,91,22,9,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,24,178326864,89163432,17832686,1783268,891634,356653,178326,89163,44581,17832,7133,1783,178,17,4,1,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,25,456341410,228170705,45634141,4563414,2281707,912682,456341,228170,114085,45634,18253,4563,456,45,11,4,2,1,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,26,147723116,73861558,14772311,1477231,738615,295446,147723,73861,36930,14772,5908,1477,147,14,3,1,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,27,123842515,61921257,12384251,1238425,619212,247685,123842,61921,30960,12384,4953,1238,123,12,3,1,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,28,1136942255,568471127,113694225,11369422,5684711,2273884,1136942,568471,284235,113694,45477,11369,1136,113,28,11,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,29,248412661,124206330,24841266,2484126,1242063,496825,248412,124206,62103,24841,9936,2484,248,24,6,2,1,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,30,583802382,291901191,58380238,5838023,2919011,1167604,583802,291901,145950,58380,23352,5838,583,58,14,5,2,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,31,955049295,477524647,95504929,9550492,4775246,1910098,955049,477524,238762,95504,38201,9550,955,95,23,9,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,32,697286031,348643015,69728603,6972860,3486430,1394572,697286,348643,174321,69728,27891,6972,697,69,17,6,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,33,336933220,168466610,33693322,3369332,1684666,673866,336933,168466,84233,33693,13477,3369,336,33,8,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,34,725640526,362820263,72564052,7256405,3628202,1451281,725640,362820,181410,72564,29025,7256,725,72,17,7,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,35,596726028,298363014,59672602,5967260,2983630,1193452,596726,298363,149181,59672,23869,5967,596,59,14,5,2,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,36,561779538,280889769,56177953,5617795,2808897,1123559,561779,280889,140444,56177,22471,5617,561,56,13,5,2,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,37,1107179781,553589890,110717978,11071797,5535898,2214359,1107179,553589,276794,110717,44287,11071,1107,110,27,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,38,332932755,166466377,33293275,3329327,1664663,665865,332932,166466,83233,33293,13317,3329,332,33,8,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,39,877933362,438966681,87793336,8779333,4389666,1755866,877933,438966,219483,87793,35117,8779,877,87,21,8,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,40,599523401,299761700,59952340,5995234,2997617,1199046,599523,299761,149880,59952,23980,5995,599,59,14,5,2,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,41,876290007,438145003,87629000,8762900,4381450,1752580,876290,438145,219072,87629,35051,8762,876,87,21,8,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,42,455526743,227763371,45552674,4555267,2277633,911053,455526,227763,113881,45552,18221,4555,455,45,11,4,2,1,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,43,1014708807,507354403,101470880,10147088,5073544,2029417,1014708,507354,253677,101470,40588,10147,1014,101,25,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,44,322459305,161229652,32245930,3224593,1612296,644918,322459,161229,80614,32245,12898,3224,322,32,7,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,45,401156224,200578112,40115622,4011562,2005781,802312,401156,200578,100289,40115,16046,4011,401,40,9,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,46,919324854,459662427,91932485,9193248,4596624,1838649,919324,459662,229831,91932,36772,9193,919,91,22,9,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,47,1046004991,523002495,104600499,10460049,5230024,2092009,1046004,523002,261501,104600,41840,10460,1046,104,25,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,48,79393106,39696553,7939310,793931,396965,158786,79393,39696,19848,7939,3175,793,79,7,1,0,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,49,1080492116,540246058,108049211,10804921,5402460,2160984,1080492,540246,270123,108049,43219,10804,1080,108,26,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,50,598670198,299335099,59867019,5986701,2993350,1197340,598670,299335,149667,59867,23946,5986,598,59,14,5,2,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,51,97945868,48972934,9794586,979458,489729,195891,97945,48972,24486,9794,3917,979,97,9,2,0,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,52,218771328,109385664,21877132,2187713,1093856,437542,218771,109385,54692,21877,8750,2187,218,21,5,2,1,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,53,754862559,377431279,75486255,7548625,3774312,1509725,754862,377431,188715,75486,30194,7548,754,75,18,7,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,54,1013232776,506616388,101323277,10132327,5066163,2026465,1013232,506616,253308,101323,40529,10132,1013,101,25,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,55,397098192,198549096,39709819,3970981,1985490,794196,397098,198549,99274,39709,15883,3970,397,39,9,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,56,73037636,36518818,7303763,730376,365188,146075,73037,36518,18259,7303,2921,730,73,7,1,0,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,57,22789560,11394780,2278956,227895,113947,45579,22789,11394,5697,2278,911,227,22,2,0,0,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,58,520940707,260470353,52094070,5209407,2604703,1041881,520940,260470,130235,52094,20837,5209,520,52,12,5,2,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,59,71813558,35906779,7181355,718135,359067,143627,71813,35906,17953,7181,2872,718,71,7,1,0,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,60,271202221,135601110,27120222,2712022,1356011,542404,271202,135601,67800,27120,10848,2712,271,27,6,2,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,61,1104743090,552371545,110474309,11047430,5523715,2209486,1104743,552371,276185,110474,44189,11047,1104,110,27,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,62,1026862854,513431427,102686285,10268628,5134314,2053725,1026862,513431,256715,102686,41074,10268,1026,102,25,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,63,968488253,484244126,96848825,9684882,4842441,1936976,968488,484244,242122,96848,38739,9684,968,96,23,9,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,64,303509978,151754989,30350997,3035099,1517549,607019,303509,151754,75877,30350,12140,3035,303,30,7,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,65,614337047,307168523,61433704,6143370,3071685,1228674,614337,307168,153584,61433,24573,6143,614,61,15,6,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,66,427047948,213523974,42704794,4270479,2135239,854095,427047,213523,106761,42704,17081,4270,427,42,10,4,2,1,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,67,865289516,432644758,86528951,8652895,4326447,1730579,865289,432644,216322,86528,34611,8652,865,86,21,8,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,68,583350495,291675247,58335049,5833504,2916752,1166700,583350,291675,145837,58335,23334,5833,583,58,14,5,2,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,69,759980704,379990352,75998070,7599807,3799903,1519961,759980,379990,189995,75998,30399,7599,759,75,18,7,3,3,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,70,605056545,302528272,60505654,6050565,3025282,1210113,605056,302528,151264,60505,24202,6050,605,60,14,5,2,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,71,44707564,22353782,4470756,447075,223537,89415,44707,22353,11176,4470,1788,447,44,4,1,0,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,72,498104378,249052189,49810437,4981043,2490521,996208,498104,249052,124526,49810,19924,4981,498,49,12,4,2,1,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,73,1060583288,530291644,106058328,10605832,5302916,2121166,1060583,530291,265145,106058,42423,10605,1060,106,26,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,74,1059416371,529708185,105941637,10594163,5297081,2118832,1059416,529708,264854,105941,42376,10594,1059,105,26,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,75,820563684,410281842,82056368,8205636,4102818,1641127,820563,410281,205140,82056,32822,8205,820,82,20,8,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,76,323573180,161786590,32357318,3235731,1617865,647146,323573,161786,80893,32357,12942,3235,323,32,7,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,77,840574892,420287446,84057489,8405748,4202874,1681149,840574,420287,210143,84057,33622,8405,840,84,20,8,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,78,728402342,364201171,72840234,7284023,3642011,1456804,728402,364201,182100,72840,29136,7284,728,72,18,7,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,79,402966287,201483143,40296628,4029662,2014831,805932,402966,201483,100741,40296,16118,4029,402,40,9,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,80,782900676,391450338,78290067,7829006,3914503,1565801,782900,391450,195725,78290,31316,7829,782,78,19,7,3,3,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,81,188906208,94453104,18890620,1889062,944531,377812,188906,94453,47226,18890,7556,1889,188,18,4,1,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,82,500912156,250456078,50091215,5009121,2504560,1001824,500912,250456,125228,50091,20036,5009,500,50,12,4,2,1,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,83,1001672004,500836002,100167200,10016720,5008360,2003344,1001672,500836,250418,100167,40066,10016,1001,100,24,9,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,84,943768767,471884383,94376876,9437687,4718843,1887537,943768,471884,235942,94376,37750,9437,943,94,23,9,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,85,375978599,187989299,37597859,3759785,1879892,751957,375978,187989,93994,37597,15039,3759,375,37,9,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,86,260603863,130301931,26060386,2606038,1303019,521207,260603,130301,65150,26060,10424,2606,260,26,6,2,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,87,1016806405,508403202,101680640,10168064,5084032,2033612,1016806,508403,254201,101680,40672,10168,1016,101,25,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,88,398768159,199384079,39876815,3987681,1993840,797536,398768,199384,99692,39876,15950,3987,398,39,9,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,89,781544571,390772285,78154457,7815445,3907722,1563089,781544,390772,195386,78154,31261,7815,781,78,19,7,3,3,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,90,1088619963,544309981,108861996,10886199,5443099,2177239,1088619,544309,272154,108861,43544,10886,1088,108,26,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,91,669970381,334985190,66997038,6699703,3349851,1339940,669970,334985,167492,66997,26798,6699,669,66,16,6,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,92,748121328,374060664,74812132,7481213,3740606,1496242,748121,374060,187030,74812,29924,7481,748,74,18,7,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,93,977316485,488658242,97731648,9773164,4886582,1954632,977316,488658,244329,97731,39092,9773,977,97,24,9,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,94,500292301,250146150,50029230,5002923,2501461,1000584,500292,250146,125073,50029,20011,5002,500,50,12,4,2,1,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,95,1051631306,525815653,105163130,10516313,5258156,2103262,1051631,525815,262907,105163,42065,10516,1051,105,25,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,96,453487199,226743599,45348719,4534871,2267435,906974,453487,226743,113371,45348,18139,4534,453,45,11,4,2,1,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,97,927340250,463670125,92734025,9273402,4636701,1854680,927340,463670,231835,92734,37093,9273,927,92,22,9,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,98,778754489,389377244,77875448,7787544,3893772,1557508,778754,389377,194688,77875,31150,7787,778,77,19,7,3,3,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,99,1036837695,518418847,103683769,10368376,5184188,2073675,1036837,518418,259209,103683,41473,10368,1036,103,25,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,100,549154621,274577310,54915462,5491546,2745773,1098309,549154,274577,137288,54915,21966,5491,549,54,13,5,2,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,101,245644702,122822351,24564470,2456447,1228223,491289,245644,122822,61411,24564,9825,2456,245,24,6,2,1,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,102,1081545260,540772630,108154526,10815452,5407726,2163090,1081545,540772,270386,108154,43261,10815,1081,108,26,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,103,1047259000,523629500,104725900,10472590,5236295,2094518,1047259,523629,261814,104725,41890,10472,1047,104,25,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,104,168061657,84030828,16806165,1680616,840308,336123,168061,84030,42015,16806,6722,1680,168,16,4,1,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,105,1002795298,501397649,100279529,10027952,5013976,2005590,1002795,501397,250698,100279,40111,10027,1002,100,24,9,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,106,729656351,364828175,72965635,7296563,3648281,1459312,729656,364828,182414,72965,29186,7296,729,72,18,7,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,107,491634838,245817419,49163483,4916348,2458174,983269,491634,245817,122908,49163,19665,4916,491,49,12,4,2,1,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,108,705203858,352601929,70520385,7052038,3526019,1410407,705203,352601,176300,70520,28208,7052,705,70,17,6,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,109,319892360,159946180,31989236,3198923,1599461,639784,319892,159946,79973,31989,12795,3198,319,31,7,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,110,894601125,447300562,89460112,8946011,4473005,1789202,894601,447300,223650,89460,35784,8946,894,89,22,8,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,111,349938200,174969100,34993820,3499382,1749691,699876,349938,174969,87484,34993,13997,3499,349,34,8,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,112,508798569,254399284,50879856,5087985,2543992,1017597,508798,254399,127199,50879,20351,5087,508,50,12,5,2,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,113,257346948,128673474,25734694,2573469,1286734,514693,257346,128673,64336,25734,10293,2573,257,25,6,2,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,114,213443871,106721935,21344387,2134438,1067219,426887,213443,106721,53360,21344,8537,2134,213,21,5,2,1,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,115,314401003,157200501,31440100,3144010,1572005,628802,314401,157200,78600,31440,12576,3144,314,31,7,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,116,633325548,316662774,63332554,6333255,3166627,1266651,633325,316662,158331,63332,25333,6333,633,63,15,6,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,117,474047735,237023867,47404773,4740477,2370238,948095,474047,237023,118511,47404,18961,4740,474,47,11,4,2,1,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,118,193041075,96520537,19304107,1930410,965205,386082,193041,96520,48260,19304,7721,1930,193,19,4,1,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,119,1032093708,516046854,103209370,10320937,5160468,2064187,1032093,516046,258023,103209,41283,10320,1032,103,25,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,120,117425973,58712986,11742597,1174259,587129,234851,117425,58712,29356,11742,4697,1174,117,11,2,1,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,121,143494706,71747353,14349470,1434947,717473,286989,143494,71747,35873,14349,5739,1434,143,14,3,1,0,0,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,122,563897756,281948878,56389775,5638977,2819488,1127795,563897,281948,140974,56389,22555,5638,563,56,13,5,2,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,123,865547302,432773651,86554730,8655473,4327736,1731094,865547,432773,216386,86554,34621,8655,865,86,21,8,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,124,1120811191,560405595,112081119,11208111,5604055,2241622,1120811,560405,280202,112081,44832,11208,1120,112,27,11,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,125,1064190058,532095029,106419005,10641900,5320950,2128380,1064190,532095,266047,106419,42567,10641,1064,106,26,10,5,4,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,126,779012274,389506137,77901227,7790122,3895061,1558024,779012,389506,194753,77901,31160,7790,779,77,19,7,3,3,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,127,436132057,218066028,43613205,4361320,2180660,872264,436132,218066,109033,43613,17445,4361,436,43,10,4,2,1,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,128,853363975,426681987,85336397,8533639,4266819,1706727,853363,426681,213340,85336,34134,8533,853,85,21,8,4,3,2,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,129,419600431,209800215,41960043,4196004,2098002,839200,419600,209800,104900,41960,16784,4196,419,41,10,4,2,1,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,130,334803420,167401710,33480342,3348034,1674017,669606,334803,167401,83700,33480,13392,3348,334,33,8,3,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,131,264352263,132176131,26435226,2643522,1321761,528704,264352,132176,66088,26435,10574,2643,264,26,6,2,1,1,0,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890,12345678901234567890121,132,665245133,332622566,66524513,6652451,3326225,1330490,665245,332622,166311,66524,26609,6652,665,66,16,6,3,2,1,12345678,12345678,12345678,123456789012345678901234567890,123456789012345678901234567890,12345678901234567890123456789