diff --git a/benchmarks/performance_data/blocks_api/CSV/perf_5M_heavy.csv b/benchmarks/performance_data/blocks_api/CSV/perf_5M_heavy.csv
new file mode 100644
index 0000000000000000000000000000000000000000..887e09253b230de131b0ea1815ce711339204b30
--- /dev/null
+++ b/benchmarks/performance_data/blocks_api/CSV/perf_5M_heavy.csv
@@ -0,0 +1,1000 @@
+2889020;38
+3744646;49
+905693;28
+4406170;30
+3457013;63
+3426139;93
+3387241;88
+3388659;44
+3376674;59
+4233026;92
+3984248;80
+4523052;77
+3408114;37
+3413890;86
+3533656;80
+4397530;87
+3483766;95
+4662384;76
+4807168;89
+4956130;49
+3320768;42
+4369173;99
+4432570;83
+3818983;34
+3460747;64
+4237433;88
+3550129;33
+4572255;20
+3563612;100
+3569798;83
+4174320;40
+3876399;44
+3308493;85
+4926798;58
+4897655;28
+3435759;47
+4748927;27
+3530802;94
+4198070;79
+3264181;98
+4508577;90
+3964680;33
+3507620;66
+3416462;88
+4843593;47
+3290246;34
+3408208;50
+3504997;95
+3463044;86
+3209112;39
+4390603;29
+4100294;15
+4366320;62
+4507361;18
+4366482;30
+4527370;90
+3453138;65
+3821288;100
+3538291;42
+3310015;85
+3898711;64
+4362383;84
+4929624;46
+4959727;74
+3441420;13
+3377354;87
+3398202;99
+3596507;40
+4834018;61
+4618636;77
+3613770;55
+4626387;80
+3400860;94
+3508011;52
+3317221;16
+3447224;67
+4268860;77
+4422105;58
+4151424;79
+3340790;40
+4342117;76
+3404067;84
+3158479;45
+3515535;68
+3519213;62
+4171026;81
+3247206;98
+3463546;85
+3397517;18
+3231629;38
+3257835;94
+3547993;68
+3625722;73
+4392053;64
+3519523;67
+3434210;50
+4825052;62
+4072828;45
+3625631;91
+4015571;59
+3928951;57
+3503949;35
+3257359;70
+4631852;20
+3376193;52
+3370925;79
+4050093;30
+3716509;52
+3317259;28
+3266072;31
+4861855;75
+3265008;81
+4626745;63
+3607397;77
+3761072;42
+3476125;69
+3486236;15
+4546665;30
+4137791;91
+4489762;33
+4326327;67
+4389201;31
+4347280;88
+4570215;48
+4135408;49
+3924274;88
+4243416;37
+4396700;44
+4874262;33
+3468266;15
+4892498;35
+4018586;63
+3297961;47
+4077695;49
+3214055;92
+3640904;100
+4219364;67
+4358221;44
+3889893;82
+3382711;63
+3480399;74
+4363312;99
+4434581;77
+4046545;78
+3858987;30
+4228097;68
+4277073;88
+3997114;33
+3436603;90
+4189883;61
+3777138;52
+3789485;76
+4804958;21
+4381992;81
+4360149;53
+3394455;29
+3248822;40
+4036468;40
+4779502;19
+4191463;39
+3637973;12
+4295077;32
+3423305;14
+3455216;13
+3384008;29
+4544074;51
+4772709;94
+4423486;37
+4800648;17
+4043677;26
+3869781;84
+4936607;78
+3523466;17
+3504862;35
+3995627;15
+3501737;57
+4526902;14
+3243425;62
+3567507;10
+4592918;50
+4212924;40
+4417316;40
+3439175;50
+3456181;70
+3814208;24
+4695919;56
+4675131;45
+3903920;79
+3462585;89
+3311592;69
+4651372;31
+4570598;25
+4574091;62
+3965603;83
+3487764;33
+4752668;47
+3236258;23
+4101501;79
+3350483;97
+3250424;19
+4391170;95
+3785325;58
+4903881;70
+3172074;39
+3560622;52
+4629182;30
+3632820;66
+3544294;20
+3342192;69
+3416438;41
+3550769;11
+4496558;40
+4374024;42
+4606780;29
+3518427;51
+4955041;26
+4257874;69
+3023678;79
+3493183;75
+4665422;84
+3891709;29
+4622087;68
+3617344;58
+3344847;29
+4884618;19
+4867997;28
+4513573;44
+3495728;45
+4572067;63
+4209148;62
+3720065;51
+4104027;67
+4943154;19
+3263288;75
+4374076;66
+3644328;38
+4291495;41
+3392709;77
+3873531;53
+4568710;43
+4146270;86
+3919552;10
+4835941;94
+3326396;95
+3988940;30
+3777356;25
+4800647;82
+4011577;82
+4780660;88
+3563873;13
+4327796;34
+4701579;66
+4997241;41
+3337087;25
+3917398;92
+4939041;81
+4332240;68
+3319094;15
+3894221;44
+3842301;88
+3457262;70
+4981672;93
+4230518;32
+4532681;46
+3453611;20
+4596078;71
+3573464;72
+4293511;99
+3785478;23
+4635935;91
+3369005;63
+4711942;98
+3467824;54
+4371724;35
+4750159;52
+4511361;24
+4972260;23
+4735566;96
+4284948;28
+3672775;66
+3355228;48
+4444406;63
+3723065;97
+4788366;17
+4403134;50
+4575098;39
+4814447;95
+3482157;17
+4966866;65
+3495136;91
+3815889;53
+4517482;39
+3071194;12
+3910007;54
+4097716;95
+4229672;98
+3454445;56
+3611272;34
+4494797;13
+4038251;38
+3293627;38
+4757919;59
+4811788;17
+3515484;59
+4317398;76
+3419860;24
+4541581;72
+4663545;26
+4604457;41
+4988047;96
+4249273;88
+3432014;37
+4960931;90
+4824623;21
+4894045;48
+4558215;27
+3779029;77
+3362642;43
+4402612;83
+4857558;36
+4725184;90
+4536572;45
+3980412;93
+4869636;19
+2976885;30
+4481975;87
+4355804;84
+4215956;89
+4922725;74
+3051877;84
+4599057;57
+3430679;89
+3376573;21
+4873216;15
+3524995;23
+4170473;69
+3433837;27
+4678004;42
+3293072;97
+4613037;19
+4725611;99
+4540554;52
+4342392;45
+3418438;56
+4288740;38
+3195939;78
+4808990;78
+4588792;25
+3528268;49
+3754883;84
+4572209;29
+4610764;14
+4457698;21
+3459044;62
+3309851;37
+4408459;91
+4698254;53
+3550573;66
+4746789;86
+3330142;21
+3370891;38
+4769875;42
+4739358;16
+3398703;86
+3348659;87
+3726482;60
+3345446;25
+4290162;12
+4390079;48
+3344566;17
+4527754;78
+4543035;19
+3982003;73
+4623818;27
+3168050;11
+4992623;26
+4077170;33
+4105150;13
+3004278;43
+4368098;76
+4321516;23
+3253713;46
+4178885;90
+4639929;17
+3441333;61
+4110232;82
+4788433;83
+4949759;26
+4856476;94
+3378893;85
+4351737;37
+4436949;93
+4149249;16
+4485757;89
+3433203;97
+4830957;34
+4893372;75
+4899404;17
+4341313;57
+4875228;58
+3497409;39
+4680313;62
+3375284;67
+3306999;68
+3822476;88
+4514568;37
+4385856;75
+3898620;37
+3409910;92
+3479621;39
+3377236;20
+3795725;23
+3614933;61
+3428376;18
+4824122;93
+3491611;22
+3482954;19
+4348808;55
+4985277;27
+4492806;90
+4576350;32
+4569829;37
+4868633;55
+3421466;16
+4577283;24
+4232153;55
+3898505;15
+4043886;51
+4472534;29
+4492272;32
+4433311;75
+3362242;54
+4946069;88
+3327492;95
+4891749;16
+3810125;40
+4669712;53
+3931070;68
+4463264;77
+4168839;51
+3486269;64
+3199433;17
+3259976;49
+4717162;49
+3678364;58
+4836218;12
+4809054;69
+4144753;33
+3949261;91
+4379321;73
+4746631;63
+4682003;11
+4271762;79
+3941778;38
+3737775;22
+4439795;39
+4874484;22
+3507905;63
+4041305;87
+3927845;71
+3569744;20
+4178398;94
+3486361;25
+4784792;71
+3519934;81
+4825160;88
+3252983;64
+3330508;79
+4266083;93
+4594489;57
+4804759;81
+4841231;82
+3415600;45
+4344720;70
+4683318;85
+4400222;42
+4983614;32
+3388981;64
+4727279;58
+4955821;24
+3926161;29
+3420743;58
+4295294;100
+4282451;50
+4499034;98
+4841549;22
+3995043;65
+3949814;69
+3485011;32
+3455234;75
+4897645;61
+3344241;96
+4918106;11
+4802952;52
+3508545;23
+3455187;67
+3518849;64
+3379905;52
+3435359;72
+4666757;16
+3879530;21
+4635041;68
+4857753;79
+4072607;14
+4205408;22
+3458896;96
+3537008;36
+4225767;55
+3203748;100
+4350687;35
+3300944;46
+4108672;22
+4776163;73
+4769309;26
+4297531;77
+3344311;73
+4543708;65
+4546146;97
+4925572;25
+3646435;48
+3493355;48
+4951267;73
+4145271;15
+3396182;29
+3978551;51
+3340762;72
+3564441;65
+3956577;78
+3754994;52
+4176893;22
+4635905;89
+4999722;51
+4521062;75
+3829540;65
+3451971;28
+3369084;66
+3540900;60
+4692595;52
+3928940;22
+3517324;27
+3353136;16
+4323023;71
+4345099;82
+4228347;93
+3122039;12
+4333008;16
+3586794;53
+4012664;98
+3495081;93
+3410658;75
+3800917;88
+4715963;44
+4547569;56
+3842599;40
+3811395;65
+4874959;50
+4310257;61
+4037867;70
+3931435;23
+3320673;67
+4643758;56
+3303283;62
+4693535;82
+4065843;40
+4161549;70
+3871025;63
+4307176;25
+3954934;96
+4608061;85
+3390872;43
+4628716;73
+4378337;55
+3672375;13
+4584353;47
+3881764;75
+4668061;21
+4626883;99
+4824004;52
+4630172;29
+3464040;11
+4285685;73
+4523496;20
+3236118;48
+3942584;67
+3846059;41
+4358511;41
+3089435;83
+3975139;36
+4851023;42
+3752086;31
+4832860;62
+3202929;23
+3693956;95
+3486737;65
+3830755;45
+4685369;62
+4084447;71
+3617767;61
+4884369;92
+4372840;99
+3467305;27
+3425165;92
+4916291;60
+4915014;16
+4065967;39
+3294388;15
+3482544;42
+3591382;69
+4896979;84
+3464338;25
+4829044;94
+3397146;36
+4428345;49
+4179591;71
+4483218;90
+4191882;53
+3836076;97
+3490916;96
+4549753;16
+3210316;66
+3430702;49
+4639702;26
+4589333;99
+3254746;88
+4346123;70
+3583998;47
+4164156;94
+3911547;42
+4464884;36
+4777130;74
+4363958;94
+4750664;71
+4245750;96
+3184965;86
+4747305;54
+3500114;11
+3688944;25
+4921186;14
+3286401;35
+3491575;74
+4464828;17
+3262395;78
+4390998;27
+3953880;19
+4785909;28
+3403728;26
+4238871;25
+4570211;22
+3856058;73
+4760759;74
+4973877;39
+4050635;57
+3401388;54
+3508609;34
+4345206;33
+3664455;32
+3949549;66
+3813345;45
+3437081;43
+4190805;96
+3763369;73
+3506099;43
+4717926;87
+4002864;82
+3362983;69
+3272218;25
+4979884;14
+4366090;70
+4631986;76
+3363108;66
+4856739;68
+3519150;73
+4426146;75
+3963915;89
+4077105;28
+3336521;94
+4852715;77
+4724142;79
+4536312;46
+3676708;38
+4363447;46
+4625653;87
+4461697;45
+3662042;38
+3590201;23
+4348094;89
+4796974;95
+3203220;97
+4141606;65
+4467815;55
+3676752;46
+3518167;41
+4947881;23
+4446255;21
+3281905;69
+4854423;81
+4502891;70
+4995150;88
+4342430;86
+4461998;49
+3331092;81
+4861572;67
+3650594;85
+4095146;83
+3277841;78
+4954577;22
+3454433;21
+3505505;66
+4826606;25
+3359657;66
+4339274;26
+3196946;85
+3463942;53
+3519195;99
+3678150;56
+3340099;91
+4955691;60
+3906691;59
+4696969;91
+4807099;28
+3559269;99
+3436600;33
+4489972;92
+4370501;69
+4366753;28
+4902213;60
+3422586;81
+4937096;85
+3436141;75
+4288449;19
+4871660;45
+3441916;45
+3458609;47
+3459806;59
+4296367;16
+4379734;51
+3343404;17
+4085013;93
+3218188;73
+4565904;94
+4894387;96
+3889982;45
+4655819;69
+4196625;92
+4543889;31
+3202182;46
+4915510;56
+4333350;34
+4446957;40
+3852685;12
+3336450;100
+4836874;13
+3312775;72
+4636123;23
+4423361;17
+4635576;45
+4337332;51
+3844971;14
+3725089;61
+3771099;94
+3716377;19
+3748200;29
+4584231;79
+4722337;20
+4313411;37
+4390089;21
+4167413;55
+3215728;40
+3243692;85
+4105859;92
+3404021;13
+4153433;91
+4235962;63
+4608268;99
+3501179;41
+4660457;63
+4512066;86
+3677983;54
+4455446;23
+4632377;29
+4518818;46
+3357977;42
+4069769;73
+4746661;73
+3878592;27
+3908007;77
+3381127;89
+4627219;63
+3343934;34
+3936917;28
+4833200;50
+4561382;42
+3351352;69
+4877963;36
+3781774;79
+3488669;22
+4531424;19
+3824032;55
+4227669;40
+4353300;56
+3737479;16
+3481513;59
+3494909;92
+4422381;61
+4876469;40
+4660903;37
+4068056;17
+3367075;84
+4263263;73
+4861352;94
+4576450;17
+4909428;30
+4841652;96
+4718244;45
+3554289;79
+4998979;21
+3925148;82
+4572291;28
+3981150;38
+3613296;72
+4778145;81
+3229676;45
+4691602;72
+4746341;93
+4381855;53
+4046864;58
+3774493;87
+4713169;74
+4291472;45
+4348124;86
+3347205;35
+4434606;96
+4663664;85
+4045209;17
+3489454;14
+3397150;53
+4311270;86
+3694054;30
+4176502;47
+3154849;72
+4724460;50
+4524036;15
+4711790;17
+4075371;73
+3980336;52
+4342756;36
+4853327;80
+4655323;21
+3150139;87
+4932232;53
+4865550;93
+4379201;41
+4225690;19
+4741119;96
+4112779;84
+4256332;84
+4881122;57
+4468464;27
+3380017;71
+3085953;30
+4308491;66
+4439269;38
+3501698;24
+4406197;24
+4094572;62
+4647490;70
+3715963;12
+4599034;62
+4993779;80
+3393712;60
+3985952;33
+3475373;32
+4552860;33
+4913017;77
+3778169;85
+4266506;26
+3249907;85
+4662158;63
+3474953;78
+3521200;11
+3932583;36
+4395970;95
+4278848;24
+3484400;97
+4270396;69
+4897203;51
+4666654;48
+3531689;24
+4254759;69
+4132040;31
+3354307;38
+3768331;82
+4474696;74
+3648447;79
+4340730;81
+4051371;30
+4069432;13
+3350915;15
+4435666;22
+4379686;91
+4823344;37
+3893258;35
+3844688;14
+3803626;59
+4266102;94
+4769486;77
+4535662;91
+4686306;10
+3566320;50
+4194540;25
+4803360;65
+4143365;90
+4639256;19
+4169814;75
+3291714;90
+4316953;32
+4532050;76
+4281708;59
+4238008;86
+4797613;99
+4948220;86
+3390616;68
+3282299;16
+3575267;71
+3404077;69
+4819534;71
+4108784;17
+4653893;12
+3802596;39
+4021840;31
+3490699;84
+4879243;60
+3490505;63
+3649972;73
+4948189;13
+3315492;37
+4334702;27
+4695792;46
+3835633;43
+4036343;95
+4783692;56
+4349074;77
+4917310;79
+4792283;29
+4848364;23
+4610978;40
+3464692;88
+3384540;31
+4315190;39
+4358912;10
+4499201;27
+3303197;34
+3484077;78
+4282406;57
+3510128;23
+4967488;75
+4012739;74
+3963127;85
+3619793;40
+4983176;84
+4185357;69
+3181193;76
+3370375;25
+4033857;71
+4953312;28
+4482745;95
+4545688;24
+4943959;69
+4851356;75
+3193277;77
+4230277;70
+4287829;36
+3455857;28
+4608016;43
+3160838;57
+4041916;22
+4007383;89
+3786810;28
+3472165;43
+4168394;70
+4887978;96
+4346267;40
+4833349;30
+3584165;21
+4712212;44
+3865476;65
+4688510;71
+3180853;71
+4613696;70
+3781967;30
+4343784;73
+4414547;10
+4574919;26
+4893699;89
+3953634;88
+4662800;58
+3984287;54
+4472174;35
+4544240;100
+4399660;70
diff --git a/benchmarks/performance_data/blocks_api/CSV/perf_5M_light.csv b/benchmarks/performance_data/blocks_api/CSV/perf_5M_light.csv
new file mode 100644
index 0000000000000000000000000000000000000000..93adcc7de70efb083888292046bd005a7dd69296
--- /dev/null
+++ b/benchmarks/performance_data/blocks_api/CSV/perf_5M_light.csv
@@ -0,0 +1,1000 @@
+4139328|47
+4495192|69
+3890821|73
+4694222|15
+4526690|77
+3808532|31
+3987153|62
+3609093|14
+4686950|72
+1462918|51
+4029605|51
+3604017|38
+3452623|63
+3502848|88
+3915850|42
+4675512|77
+3393881|11
+4182958|38
+4805929|14
+4668164|28
+4521007|91
+1583830|74
+4169422|32
+3218705|64
+2267175|95
+2889020|14
+3937601|59
+3478677|81
+4170608|18
+1522917|69
+4747087|51
+3701718|54
+4687253|42
+3510151|16
+3988588|43
+4468487|32
+4511952|70
+4512641|12
+4803513|12
+2209325|79
+1074151|11
+4099716|65
+4974708|19
+3782586|54
+2062243|60
+3175175|94
+3297436|20
+3447294|40
+4491696|86
+4581741|60
+3450672|39
+4448887|16
+3227706|12
+3466983|55
+4773647|99
+3125295|66
+3963011|69
+4803464|42
+4132926|19
+2550235|36
+15427|51
+4432725|99
+4533544|26
+4788145|60
+4199293|18
+4130003|60
+3656020|19
+4195667|40
+3556869|66
+3812678|16
+2690194|84
+4870840|39
+4314620|83
+3343074|48
+4447163|17
+3131175|26
+2830617|68
+735523|23
+1766787|63
+1259767|48
+1839002|37
+4299938|88
+3784164|99
+2515665|10
+4137490|70
+3464183|16
+4838304|48
+4676926|53
+414548|13
+13304|42
+999936|17
+755003|63
+3947659|74
+3905540|71
+3386857|28
+3418372|95
+4796023|99
+3483507|64
+4943959|30
+4192813|54
+3835491|83
+4658864|96
+4093910|27
+3810845|99
+4733561|30
+3876350|36
+3054720|29
+3916649|46
+3908828|86
+1606350|25
+4321497|71
+4897930|48
+34965|70
+4971427|47
+3903573|66
+4273324|79
+549634|100
+770262|96
+3742891|29
+2935530|84
+631723|90
+3782471|72
+4810986|22
+3382635|93
+4353920|63
+1136558|80
+1346880|65
+3341041|70
+1576742|63
+4200017|12
+2628130|94
+2900770|31
+3358032|78
+4310987|51
+4513648|27
+4277782|61
+4288426|91
+4496165|81
+3798605|75
+4797679|79
+1456514|79
+3241543|96
+4939324|92
+4116247|63
+928722|88
+3526973|14
+4205916|81
+4019031|24
+4698549|55
+2938555|95
+4314442|69
+4948204|71
+4257155|30
+4233097|33
+1302216|78
+4058084|75
+3462193|70
+892502|76
+3854889|37
+4166542|51
+3322739|66
+3824237|80
+886914|91
+3815985|96
+3056453|79
+3223275|54
+2500325|26
+4144559|73
+4968576|49
+4106738|64
+3507383|64
+4791971|88
+3447429|12
+3724532|91
+2881920|40
+3858291|96
+3150462|70
+4540747|82
+4185700|76
+4266194|86
+4628096|39
+3951902|32
+3215701|28
+3389897|98
+3298593|68
+2974894|42
+3945468|99
+4742185|54
+4887791|52
+3634399|28
+3348307|33
+4596041|97
+4889971|21
+3182962|29
+4904165|80
+4510436|36
+3335467|78
+1234019|58
+3418625|100
+4680465|67
+4320817|44
+3608040|22
+3034426|53
+2630008|75
+4709036|64
+1570260|72
+4908342|78
+4775054|76
+3563444|11
+2194531|19
+3258837|39
+4526902|52
+4462699|99
+4034835|41
+3931795|90
+4752418|75
+3919392|56
+2415320|92
+3389792|22
+4491786|90
+1449836|68
+4170936|93
+3563978|44
+4587296|69
+4241046|68
+3686077|45
+3239636|23
+936246|86
+4817559|67
+4522451|35
+4445628|46
+3819223|98
+3622892|27
+4840239|39
+3791959|62
+3717943|81
+3479355|55
+3957872|38
+4315704|92
+4545632|99
+3471297|20
+3998814|34
+3538395|68
+4020100|30
+4752636|32
+3872208|46
+238332|45
+4837537|51
+3790656|49
+4024464|87
+4881950|57
+3884240|77
+3366074|70
+3805525|19
+4442528|56
+4333999|27
+4446633|71
+2299270|87
+2749723|41
+4288345|11
+4446000|98
+4969518|65
+3563574|23
+4144908|98
+4485266|81
+3817130|96
+3591959|25
+2296656|93
+4309342|26
+4231910|76
+4839008|89
+4364257|76
+4329972|57
+3815912|75
+3416220|76
+3024533|80
+3542734|21
+1778537|29
+4600269|93
+3490350|44
+2532713|45
+4330524|67
+3131894|40
+4939082|31
+3941794|73
+4402915|58
+3597516|12
+1067556|57
+4639256|29
+3196188|54
+370440|85
+4160256|11
+4380667|47
+3733394|93
+4443820|54
+3802712|69
+2221637|12
+2917207|26
+1410970|21
+4297682|96
+1680647|43
+1704719|87
+667148|51
+2956990|33
+4883511|97
+2928308|58
+2426455|16
+4337976|81
+3908420|30
+3629829|72
+4196965|75
+333959|78
+4743709|36
+4417377|87
+4106550|56
+4689423|86
+4386650|98
+1515310|44
+4811666|59
+3166692|50
+3137055|43
+3414795|77
+3544204|39
+1040128|94
+4728662|21
+1331704|79
+4284500|30
+4530896|57
+3799916|83
+3787278|72
+4060355|12
+4659781|34
+4348808|73
+2749157|13
+3740913|88
+4622116|94
+4718743|40
+2890744|62
+3368059|22
+4523329|57
+3351198|29
+3891908|15
+4755815|53
+4769923|100
+405131|27
+4049260|99
+3217555|64
+3091045|76
+4968027|38
+4947601|77
+3367845|34
+3468953|95
+4314993|38
+3489590|11
+3882306|54
+3823338|25
+4297753|29
+3592312|73
+4762562|20
+4886037|28
+3569136|21
+3901083|92
+3821117|32
+3384432|91
+3391502|72
+4352985|96
+3333865|40
+3517917|34
+3752322|26
+940696|22
+3509148|76
+379861|29
+4745135|51
+4167449|43
+3846288|32
+3293644|98
+1865483|81
+3045498|42
+3657715|88
+3276280|78
+2682708|22
+3580425|78
+3209112|44
+2405622|91
+3633027|21
+4372771|48
+3533165|52
+3793192|81
+3430716|17
+4939121|72
+1098524|96
+1885431|62
+3557689|65
+3303590|98
+4263676|75
+3555923|74
+4161930|57
+3744646|11
+4939790|11
+1624261|46
+4281810|60
+3624647|14
+4983013|52
+3679961|58
+4537702|12
+1924756|90
+3495070|44
+4913498|18
+4083737|78
+247577|15
+3752367|24
+4247223|82
+332943|71
+4729351|64
+4686898|23
+4342188|67
+4487961|12
+3672616|66
+1417494|95
+4053257|31
+4355747|75
+3127829|57
+3749781|98
+3351012|87
+3585967|30
+4074772|70
+3575884|66
+304840|16
+4210592|28
+2759997|14
+3022777|80
+4406807|81
+3635722|39
+3174651|37
+4453263|88
+4733923|79
+4115468|70
+4116129|78
+4030709|95
+1212954|55
+4097014|33
+1913975|26
+2607464|21
+4573315|99
+3204478|74
+825487|91
+2085374|15
+2644874|84
+3598260|59
+3105910|25
+3566448|98
+2124590|15
+1499638|14
+3629174|84
+3706361|90
+3236936|25
+463410|41
+3262095|21
+4015921|69
+3917086|59
+742435|52
+4173579|70
+2889020|46
+3489569|56
+4599974|72
+2963831|34
+4462204|75
+3708366|18
+3582225|32
+3265703|47
+3286597|18
+2387955|23
+3916255|35
+3297464|11
+2492689|30
+4978570|15
+3591737|41
+4397614|28
+2889020|67
+4623016|28
+3566410|12
+4254889|80
+4826139|46
+4330427|96
+3654278|99
+2950772|24
+4427630|27
+3729514|14
+3406737|89
+3294023|64
+3058642|50
+532674|29
+4854962|23
+2130438|84
+4013351|60
+3517203|57
+3468393|46
+4969252|25
+1485126|15
+4509937|62
+3539446|24
+4153806|55
+1983291|93
+35148|96
+4994818|35
+3365623|61
+3181633|13
+3454879|64
+3283051|48
+4340905|73
+3969896|35
+3966474|77
+4442381|18
+3408962|29
+3281169|16
+4188225|76
+3477197|87
+2889020|69
+3940568|36
+3933082|57
+583836|12
+3499127|88
+4241190|46
+3524590|91
+4684297|34
+953018|11
+4017528|31
+1058261|76
+4915625|12
+4662038|46
+4090987|39
+2889020|35
+3087860|22
+2916836|44
+1849106|47
+3417709|78
+3234496|50
+3706380|95
+4677602|41
+4746507|57
+3675239|10
+3812720|21
+3362088|83
+4723622|57
+3626000|46
+3667015|16
+3825744|60
+978890|80
+4422201|39
+4263994|76
+520461|79
+3307088|11
+4538022|85
+1568809|78
+4304640|67
+1899711|17
+3830111|53
+2978879|78
+3267116|95
+2195013|97
+4150422|95
+3965724|17
+3837977|30
+4226119|15
+3510645|20
+3234273|23
+4584513|73
+1997258|50
+4222385|50
+486947|27
+4046811|63
+4166924|43
+4990209|51
+1026427|86
+3839354|18
+3794456|13
+3300906|52
+4078217|25
+4320729|83
+3313366|35
+3978975|68
+3945257|44
+4549951|45
+4362961|87
+721295|59
+4895130|40
+3963277|54
+4497855|65
+2845623|45
+3695751|69
+4799757|46
+4708016|70
+4352535|49
+4004927|28
+3692156|79
+3211133|56
+3969314|48
+4940955|38
+4938499|55
+4565148|89
+4972509|79
+2965457|89
+3760708|12
+4198730|89
+4475028|60
+2180579|22
+1194892|30
+4935808|41
+3761261|70
+3220659|84
+4789839|24
+3528911|10
+3596989|65
+3189915|53
+2821130|49
+4141615|73
+1379867|74
+4254748|27
+2606298|20
+1718270|36
+3416460|26
+4751691|83
+3224292|94
+4079413|68
+4746428|47
+3285377|39
+3305095|93
+4835243|63
+4210266|20
+1787768|92
+3170082|88
+4919344|95
+4421292|45
+3372022|32
+2861219|29
+3776176|38
+2311368|32
+3025872|71
+4437962|94
+4510665|61
+4111747|39
+4058364|79
+4659020|36
+4023045|91
+3733226|69
+2350705|75
+3586974|73
+4327050|45
+927086|11
+3790576|41
+4674427|51
+3726602|23
+4862538|12
+3341333|75
+3941674|41
+4153075|44
+3859289|37
+3263183|75
+804159|61
+4763169|42
+3594363|57
+4420051|43
+3370205|17
+382402|50
+4082554|33
+3284403|17
+1637483|47
+3624241|21
+3326718|50
+2789106|25
+3943490|57
+4232646|26
+945305|13
+3710487|94
+3564001|71
+589033|22
+3368799|77
+4630046|66
+3756129|76
+2733286|90
+2859447|97
+4857399|39
+4248372|56
+744653|56
+3700589|95
+4309849|59
+3257427|69
+2782835|56
+3718295|69
+3129074|100
+3756639|93
+3954362|50
+3850938|98
+3877350|73
+4200935|92
+1182635|17
+4867861|97
+3552831|100
+3587955|22
+4252500|41
+4080994|47
+2889020|31
+2626361|94
+4741839|75
+4285356|16
+4095489|85
+3375805|88
+3858480|14
+3938328|42
+641234|12
+4896838|83
+1164717|63
+2054081|35
+3903972|86
+3503164|99
+535324|96
+3097813|41
+2625973|97
+3820441|20
+4747847|88
+2492864|76
+506707|43
+4281936|46
+4233026|66
+2607149|90
+2734248|59
+4399985|96
+4255792|31
+304741|33
+4680673|69
+2939100|57
+3775493|43
+4574580|33
+3504135|50
+1093058|47
+4166283|42
+4794985|95
+3151468|93
+3262369|36
+4987270|56
+4652323|41
+4126467|75
+3887327|31
+3888805|67
+4027749|17
+3648886|62
+3175942|14
+3593065|88
+4312689|15
+4983614|34
+3771776|23
+140564|66
+4127472|90
+3461662|24
+4200681|93
+4047669|12
+3975910|79
+3396997|51
+4079571|45
+3593027|100
+3400343|80
+2629276|40
+2909307|22
+722906|39
+3773874|96
+3159667|62
+3510645|44
+977137|69
+4496065|20
+1568330|51
+1670183|87
+4768124|26
+3794533|83
+4753330|67
+4069758|30
+1819584|74
+1793140|81
+3914517|70
+438811|61
+1903061|99
+4141606|12
+4788823|23
+4075539|71
+4833200|98
+3367522|13
+4983176|26
+3706660|57
+4302286|66
+4979590|77
+3886053|17
+3857972|79
+3774277|88
+3227320|63
+4172881|39
+3387988|48
+3562804|97
+3466977|56
+4598920|99
+3437382|77
+377682|49
+4316730|86
+493564|39
+4496476|22
+3568099|26
+4279191|83
+4630794|15
+3992871|26
+3731588|86
+3687768|96
+3379032|30
+3774143|62
+3577726|61
+3886167|56
+3998212|65
+4630497|33
+3623460|16
+4557145|75
+4097928|29
+4655839|67
+4399467|31
+3564851|16
+4033353|66
+1973534|33
+4368220|68
+4926575|95
+3408114|81
+2558064|56
+3355527|27
+644627|71
+4315201|41
+4044205|57
+1489239|76
+4884214|28
+4898145|52
+3562981|40
+3715846|75
+4131331|32
+3685163|53
+1089756|62
+3210255|61
+4814770|64
+630729|61
+4220672|18
+3565494|52
+4273353|99
+3993413|72
+4433436|62
+3988582|40
+4995204|49
+3797620|43
+3921595|50
+188718|80
+2089966|98
+3115394|21
+2304566|92
+2766634|27
+4618110|91
+2242544|52
+3308932|89
+3675398|87
+3995552|78
+1895360|37
+3366811|92
+3162620|81
+4104735|31
+4734015|30
+4066361|78
+4263630|14
+3347442|51
+4872059|49
+4226796|30
+2149882|28
+4742929|67
+3811121|56
+4618100|17
+3388659|87
+2567736|50
+3312844|33
+1621052|90
+4855657|21
+4564346|53
+3608774|63
+3594279|16
+4071997|28
+3487939|64
+4761884|12
+3590703|50
+3522374|27
+3821382|17
+3542444|73
+2119869|29
+3115989|54
+2889020|96
+4938562|67
+4909289|63
+4785324|37
+4967947|23
+2901865|28
+1907347|29
+3501715|44
+4696637|98
+3263739|95
+4414129|16
+789104|54
+3235161|74
+3668184|45
+4447852|98
+4150338|93
+3453681|51
+3471504|60
+4002089|74
+3643242|75
+4174531|12
+3752840|14
+4629877|81
+4854441|50
+1833118|36
+3192092|67
+4060919|89
+2424320|87
+163094|38
+807051|51
+4360128|23
+3594360|22
+3381205|90
+3113877|37
+4251325|59
+3350347|54
+3771728|91
+4139131|23
+4965098|83
+4699982|29
+4571217|17
+3236044|17
+1271144|55
+4222623|38
+4371977|29
+347238|14
+3753829|30
+3340795|22
+3390066|73
+4143688|97
+1991428|50
+3525668|72
+4985096|84
+3920182|66
+4171641|13
+3385636|30
+3316345|94
+4644256|83
+2889020|83
+3818666|74
+3489081|57
+3521022|65
+4166805|37
+4116481|19
+4043345|64
+4127210|99
+3956635|17
+975789|68
+3811401|68
+3351717|42
+3952309|69
+3811201|62
+3284436|50
+180603|96
+4692941|20
+3420620|73
+3665040|67
+4764939|66
+3026162|44
+4193265|54
+4923500|25
+3877347|44
+3813554|46
+2901286|64
+3698867|10
+2853463|37
+3111461|56
+4112482|91
+3566003|69
+3603933|59
+3591831|67
+4524917|22
+4504633|37
+3230917|27
+3450691|13
+3705713|93
+4772097|74
+3273811|57
+4059697|43
+3154466|43
+4687244|57
+4104451|16
+3209167|17
+4947406|67
+3400911|67
+4000595|95
+3816144|94
+4457218|17
diff --git a/benchmarks/performance_data/blocks_api/JMX/constant_load.jmx.in b/benchmarks/performance_data/blocks_api/JMX/constant_load.jmx.in
new file mode 100644
index 0000000000000000000000000000000000000000..1a6f5cdcd1011ba96bfc4e2ca227b5bb7e9c5b18
--- /dev/null
+++ b/benchmarks/performance_data/blocks_api/JMX/constant_load.jmx.in
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.4.1">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="constant load" enabled="true">
+      <stringProp name="TestPlan.comments"></stringProp>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"></stringProp>
+    </TestPlan>
+    <hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="spam group" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">${LOOP_COUNT}</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">${THREADS}</stringProp>
+        <stringProp name="ThreadGroup.ramp_time">0</stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+        <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
+      </ThreadGroup>
+      <hashTree>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If old style" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;old-style&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="${endpoint}" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">${body}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"></stringProp>
+            <stringProp name="HTTPSampler.port"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+            <stringProp name="HTTPSampler.path"></stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+        </hashTree>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If new style" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;new-style&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="${endpoint}" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">${body}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"></stringProp>
+            <stringProp name="HTTPSampler.port"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+            <stringProp name="HTTPSampler.path">rpc/${endpoint}</stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+        </hashTree>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If postgres" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;postgres&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="${endpoint}" enabled="true">
+            <stringProp name="dataSource">psql</stringProp>
+            <stringProp name="query">${body}</stringProp>
+            <stringProp name="queryArguments"></stringProp>
+            <stringProp name="queryArgumentsTypes"></stringProp>
+            <stringProp name="queryTimeout"></stringProp>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultSetHandler">Count Records</stringProp>
+            <stringProp name="resultSetMaxRows"></stringProp>
+            <stringProp name="resultVariable"></stringProp>
+            <stringProp name="variableNames"></stringProp>
+          </JDBCSampler>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource" testname="postgres config" enabled="true">
+        <boolProp name="autocommit">false</boolProp>
+        <stringProp name="checkQuery"></stringProp>
+        <stringProp name="connectionAge">5000</stringProp>
+        <stringProp name="connectionProperties"></stringProp>
+        <stringProp name="dataSource">psql</stringProp>
+        <stringProp name="dbUrl">jdbc:${PSQL_CONN_STR}</stringProp>
+        <stringProp name="driver">org.postgresql.Driver</stringProp>
+        <stringProp name="initQuery"></stringProp>
+        <boolProp name="keepAlive">true</boolProp>
+        <stringProp name="password"></stringProp>
+        <stringProp name="poolMax">10</stringProp>
+        <boolProp name="preinit">true</boolProp>
+        <stringProp name="timeout">10000</stringProp>
+        <stringProp name="transactionIsolation">DEFAULT</stringProp>
+        <stringProp name="trimInterval">60000</stringProp>
+        <stringProp name="username"></stringProp>
+      </JDBCDataSource>
+      <hashTree/>
+      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="header manager" enabled="true">
+        <collectionProp name="HeaderManager.headers">
+          <elementProp name="Content-Type" elementType="Header">
+            <stringProp name="Header.name">Content-Type</stringProp>
+            <stringProp name="Header.value">application/json</stringProp>
+          </elementProp>
+          <elementProp name="Connection" elementType="Header">
+            <stringProp name="Header.name">Connection</stringProp>
+            <stringProp name="Header.value">Keep-Alive</stringProp>
+          </elementProp>
+          <elementProp name="Keep-Alive" elementType="Header">
+            <stringProp name="Header.name">Keep-Alive</stringProp>
+            <stringProp name="Header.value">timeout=5, max=10000</stringProp>
+          </elementProp>
+        </collectionProp>
+      </HeaderManager>
+      <hashTree/>
+      <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="http config" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+        <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+        <stringProp name="HTTPSampler.protocol">http</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+        <stringProp name="HTTPSampler.path"></stringProp>
+        <stringProp name="HTTPSampler.concurrentPool">6</stringProp>
+        <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+        <stringProp name="HTTPSampler.response_timeout"></stringProp>
+      </ConfigTestElement>
+      <hashTree/>
+      <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="csv" enabled="true">
+        <stringProp name="delimiter">|</stringProp>
+        <stringProp name="fileEncoding">UTF-8</stringProp>
+        <stringProp name="filename">${DATASET}</stringProp>
+        <boolProp name="ignoreFirstLine">false</boolProp>
+        <boolProp name="quotedData">false</boolProp>
+        <boolProp name="recycle">true</boolProp>
+        <stringProp name="shareMode">shareMode.all</stringProp>
+        <boolProp name="stopThread">false</boolProp>
+        <stringProp name="variableNames">endpoint,body</stringProp>
+      </CSVDataSet>
+      <hashTree/>
+      <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="config" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="PORT" elementType="Argument">
+            <stringProp name="Argument.name">PORT</stringProp>
+            <stringProp name="Argument.value">${__P(port, 8090)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="HOST" elementType="Argument">
+            <stringProp name="Argument.name">HOST</stringProp>
+            <stringProp name="Argument.value">${__P(host, localhost)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="DATASET" elementType="Argument">
+            <stringProp name="Argument.name">DATASET</stringProp>
+            <stringProp name="Argument.value">${__P(dataset)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="THREADS" elementType="Argument">
+            <stringProp name="Argument.name">THREADS</stringProp>
+            <stringProp name="Argument.value">${__P(threads, 10)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="PSQL_CONN_STR" elementType="Argument">
+            <stringProp name="Argument.name">PSQL_CONN_STR</stringProp>
+            <stringProp name="Argument.value">${__P(psql, postgresql:///haf_block_log)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="CALL_STYLE" elementType="Argument">
+            <stringProp name="Argument.name">CALL_STYLE</stringProp>
+            <stringProp name="Argument.value">${__P(call_style, old-style)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="LOOP_COUNT" elementType="Argument">
+            <stringProp name="Argument.name">LOOP_COUNT</stringProp>
+            <stringProp name="Argument.value">${__P(loop_count, -1)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+        </collectionProp>
+      </Arguments>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>
diff --git a/benchmarks/performance_data/blocks_api/JMX/performance.jmx.in b/benchmarks/performance_data/blocks_api/JMX/performance.jmx.in
new file mode 100644
index 0000000000000000000000000000000000000000..109c0f51a4c4dd34c772c05c46fee3158d0ed3c3
--- /dev/null
+++ b/benchmarks/performance_data/blocks_api/JMX/performance.jmx.in
@@ -0,0 +1,889 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.4.1">
+  <hashTree>
+    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="block_api" enabled="true">
+      <stringProp name="TestPlan.comments"></stringProp>
+      <boolProp name="TestPlan.functional_mode">false</boolProp>
+      <boolProp name="TestPlan.serialize_threadgroups">true</boolProp>
+      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+        <collectionProp name="Arguments.arguments"/>
+      </elementProp>
+      <stringProp name="TestPlan.user_define_classpath"></stringProp>
+    </TestPlan>
+    <hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="pre_check" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">stoptestnow</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">1</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">1</stringProp>
+        <stringProp name="ThreadGroup.ramp_time"></stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration"></stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+        <boolProp name="ThreadGroup.same_user_on_next_iteration">false</boolProp>
+      </ThreadGroup>
+      <hashTree>
+        <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="false">
+          <boolProp name="ResultCollector.error_logging">false</boolProp>
+          <objProp>
+            <name>saveConfig</name>
+            <value class="SampleSaveConfiguration">
+              <time>true</time>
+              <latency>true</latency>
+              <timestamp>true</timestamp>
+              <success>true</success>
+              <label>true</label>
+              <code>true</code>
+              <message>true</message>
+              <threadName>true</threadName>
+              <dataType>true</dataType>
+              <encoding>false</encoding>
+              <assertions>true</assertions>
+              <subresults>true</subresults>
+              <responseData>false</responseData>
+              <samplerData>false</samplerData>
+              <xml>false</xml>
+              <fieldNames>true</fieldNames>
+              <responseHeaders>false</responseHeaders>
+              <requestHeaders>false</requestHeaders>
+              <responseDataOnError>false</responseDataOnError>
+              <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+              <assertionsResultsToSave>0</assertionsResultsToSave>
+              <bytes>true</bytes>
+              <sentBytes>true</sentBytes>
+              <url>true</url>
+              <threadCounts>true</threadCounts>
+              <idleTime>true</idleTime>
+              <connectTime>true</connectTime>
+            </value>
+          </objProp>
+          <stringProp name="filename"></stringProp>
+        </ResultCollector>
+        <hashTree/>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If old style" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;old-style&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="get_block" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">{&#xd;
+  &quot;jsonrpc&quot;: &quot;2.0&quot;,&#xd;
+  &quot;method&quot;: &quot;block_api.get_block&quot;,&#xd;
+  &quot;params&quot;: {&#xd;
+	  &quot;block_num&quot;: 1&#xd;
+	},&#xd;
+  &quot;id&quot;: &quot;VALIDATION&quot;&#xd;
+}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"></stringProp>
+            <stringProp name="HTTPSampler.port"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+            <stringProp name="HTTPSampler.path"></stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="get_block_header" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">{&#xd;
+  &quot;jsonrpc&quot;: &quot;2.0&quot;,&#xd;
+  &quot;method&quot;: &quot;block_api.get_block_header&quot;,&#xd;
+  &quot;params&quot;: {&#xd;
+	  &quot;block_num&quot;: 1&#xd;
+	},&#xd;
+  &quot;id&quot;: &quot;VALIDATION&quot;&#xd;
+}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"></stringProp>
+            <stringProp name="HTTPSampler.port"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+            <stringProp name="HTTPSampler.path"></stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="get_block_range" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">{&#xd;
+  &quot;jsonrpc&quot;: &quot;2.0&quot;,&#xd;
+  &quot;method&quot;: &quot;block_api.get_block_range&quot;,&#xd;
+  &quot;params&quot;: {&#xd;
+	  &quot;starting_block_num&quot;: 1,&#xd;
+	  &quot;count&quot;: 10&#xd;
+	},&#xd;
+  &quot;id&quot;: &quot;VALIDATION&quot;&#xd;
+}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"></stringProp>
+            <stringProp name="HTTPSampler.port"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+            <stringProp name="HTTPSampler.path"></stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+          <JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="RESULT Assertion" enabled="true">
+            <stringProp name="JSON_PATH">$.result</stringProp>
+            <stringProp name="EXPECTED_VALUE"></stringProp>
+            <boolProp name="JSONVALIDATION">false</boolProp>
+            <boolProp name="EXPECT_NULL">false</boolProp>
+            <boolProp name="INVERT">false</boolProp>
+            <boolProp name="ISREGEX">true</boolProp>
+          </JSONPathAssertion>
+          <hashTree/>
+          <JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="ERROR Assertion" enabled="true">
+            <stringProp name="JSON_PATH">$.error</stringProp>
+            <stringProp name="EXPECTED_VALUE"></stringProp>
+            <boolProp name="JSONVALIDATION">false</boolProp>
+            <boolProp name="EXPECT_NULL">false</boolProp>
+            <boolProp name="INVERT">true</boolProp>
+            <boolProp name="ISREGEX">true</boolProp>
+          </JSONPathAssertion>
+          <hashTree/>
+        </hashTree>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If new style" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;new-style&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="get_block" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">{&#xd;
+  &quot;block_num&quot;: 1&#xd;
+}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"></stringProp>
+            <stringProp name="HTTPSampler.port"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+            <stringProp name="HTTPSampler.path">rpc/get_block</stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="get_block_header" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">{&#xd;
+  &quot;block_num&quot;: 1&#xd;
+}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"></stringProp>
+            <stringProp name="HTTPSampler.port"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+            <stringProp name="HTTPSampler.path">rpc/get_block_header</stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="get_block_range" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">{&#xd;
+  &quot;starting_block_num&quot;: 1,&#xd;
+  &quot;count&quot;: 10&#xd;
+}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"></stringProp>
+            <stringProp name="HTTPSampler.port"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+            <stringProp name="HTTPSampler.path">rpc/get_block_range</stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+        </hashTree>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If postgres" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;postgres&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="SQL_validate" enabled="true">
+            <stringProp name="dataSource">psql</stringProp>
+            <stringProp name="query">SELECT COUNT(*) FROM ${PSQL_SCHEMA}.get_block( 1 ) 
+UNION ALL
+SELECT COUNT(*) FROM ${PSQL_SCHEMA}.get_block_header( 1 )
+UNION ALL
+SELECT COUNT(*) FROM ${PSQL_SCHEMA}.get_block_range( 1, 10 )
+;</stringProp>
+            <stringProp name="queryArguments"></stringProp>
+            <stringProp name="queryArgumentsTypes"></stringProp>
+            <stringProp name="queryTimeout"></stringProp>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultSetHandler">Count Records</stringProp>
+            <stringProp name="resultSetMaxRows"></stringProp>
+            <stringProp name="resultVariable"></stringProp>
+            <stringProp name="variableNames"></stringProp>
+          </JDBCSampler>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="get_block" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">stopthread</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">${LOOP_COUNT}</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">${THREAD_COUNT}</stringProp>
+        <stringProp name="ThreadGroup.ramp_time"></stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration">10</stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+        <boolProp name="ThreadGroup.same_user_on_next_iteration">false</boolProp>
+      </ThreadGroup>
+      <hashTree>
+        <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="false">
+          <boolProp name="ResultCollector.error_logging">false</boolProp>
+          <objProp>
+            <name>saveConfig</name>
+            <value class="SampleSaveConfiguration">
+              <time>true</time>
+              <latency>true</latency>
+              <timestamp>true</timestamp>
+              <success>true</success>
+              <label>true</label>
+              <code>true</code>
+              <message>true</message>
+              <threadName>true</threadName>
+              <dataType>true</dataType>
+              <encoding>false</encoding>
+              <assertions>true</assertions>
+              <subresults>true</subresults>
+              <responseData>false</responseData>
+              <samplerData>false</samplerData>
+              <xml>false</xml>
+              <fieldNames>true</fieldNames>
+              <responseHeaders>false</responseHeaders>
+              <requestHeaders>false</requestHeaders>
+              <responseDataOnError>false</responseDataOnError>
+              <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+              <assertionsResultsToSave>0</assertionsResultsToSave>
+              <bytes>true</bytes>
+              <sentBytes>true</sentBytes>
+              <url>true</url>
+              <threadCounts>true</threadCounts>
+              <idleTime>true</idleTime>
+              <connectTime>true</connectTime>
+            </value>
+          </objProp>
+          <stringProp name="filename"></stringProp>
+        </ResultCollector>
+        <hashTree/>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If old style" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;old-style&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="get_block" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">{&#xd;
+  &quot;jsonrpc&quot;: &quot;2.0&quot;,&#xd;
+  &quot;method&quot;: &quot;block_api.get_block&quot;,&#xd;
+  &quot;params&quot;: {&#xd;
+	  &quot;block_num&quot;: ${block_no}&#xd;
+	},&#xd;
+  &quot;id&quot;: &quot;VALIDATION&quot;&#xd;
+}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"></stringProp>
+            <stringProp name="HTTPSampler.port"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+            <stringProp name="HTTPSampler.path"></stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+        </hashTree>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If new style" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;new-style&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="get_block" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">{&#xd;
+  &quot;block_num&quot;: ${block_no}&#xd;
+}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"></stringProp>
+            <stringProp name="HTTPSampler.port"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+            <stringProp name="HTTPSampler.path">rpc/get_block</stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+        </hashTree>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If postgres" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;postgres&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="get_block" enabled="true">
+            <stringProp name="dataSource">psql</stringProp>
+            <stringProp name="query">SELECT * FROM ${PSQL_SCHEMA}.get_block( ${block_no} );</stringProp>
+            <stringProp name="queryArguments"></stringProp>
+            <stringProp name="queryArgumentsTypes"></stringProp>
+            <stringProp name="queryTimeout"></stringProp>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultSetHandler">Count Records</stringProp>
+            <stringProp name="resultSetMaxRows"></stringProp>
+            <stringProp name="resultVariable"></stringProp>
+            <stringProp name="variableNames"></stringProp>
+          </JDBCSampler>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="get_block_header" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">stopthread</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">${LOOP_COUNT}</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">${THREAD_COUNT}</stringProp>
+        <stringProp name="ThreadGroup.ramp_time"></stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration">10</stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+        <boolProp name="ThreadGroup.same_user_on_next_iteration">false</boolProp>
+      </ThreadGroup>
+      <hashTree>
+        <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="false">
+          <boolProp name="ResultCollector.error_logging">false</boolProp>
+          <objProp>
+            <name>saveConfig</name>
+            <value class="SampleSaveConfiguration">
+              <time>true</time>
+              <latency>true</latency>
+              <timestamp>true</timestamp>
+              <success>true</success>
+              <label>true</label>
+              <code>true</code>
+              <message>true</message>
+              <threadName>true</threadName>
+              <dataType>true</dataType>
+              <encoding>false</encoding>
+              <assertions>true</assertions>
+              <subresults>true</subresults>
+              <responseData>false</responseData>
+              <samplerData>false</samplerData>
+              <xml>false</xml>
+              <fieldNames>true</fieldNames>
+              <responseHeaders>false</responseHeaders>
+              <requestHeaders>false</requestHeaders>
+              <responseDataOnError>false</responseDataOnError>
+              <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+              <assertionsResultsToSave>0</assertionsResultsToSave>
+              <bytes>true</bytes>
+              <sentBytes>true</sentBytes>
+              <url>true</url>
+              <threadCounts>true</threadCounts>
+              <idleTime>true</idleTime>
+              <connectTime>true</connectTime>
+            </value>
+          </objProp>
+          <stringProp name="filename"></stringProp>
+        </ResultCollector>
+        <hashTree/>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If old style" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;old-style&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="get_block_header" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">{&#xd;
+  &quot;jsonrpc&quot;: &quot;2.0&quot;,&#xd;
+  &quot;method&quot;: &quot;block_api.get_block_header&quot;,&#xd;
+  &quot;params&quot;: {&#xd;
+	  &quot;block_num&quot;: ${block_no}&#xd;
+	},&#xd;
+  &quot;id&quot;: &quot;VALIDATION&quot;&#xd;
+}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"></stringProp>
+            <stringProp name="HTTPSampler.port"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+            <stringProp name="HTTPSampler.path"></stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+        </hashTree>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If new style" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;new-style&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="get_block_header" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">{&#xd;
+  &quot;block_num&quot;: ${block_no}&#xd;
+}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"></stringProp>
+            <stringProp name="HTTPSampler.port"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+            <stringProp name="HTTPSampler.path">rpc/get_block_header</stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+        </hashTree>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If postgres" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;postgres&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="get_block_header" enabled="true">
+            <stringProp name="dataSource">psql</stringProp>
+            <stringProp name="query">SELECT * FROM ${PSQL_SCHEMA}.get_block_header( ${block_no} );</stringProp>
+            <stringProp name="queryArguments"></stringProp>
+            <stringProp name="queryArgumentsTypes"></stringProp>
+            <stringProp name="queryTimeout"></stringProp>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultSetHandler">Count Records</stringProp>
+            <stringProp name="resultSetMaxRows"></stringProp>
+            <stringProp name="resultVariable"></stringProp>
+            <stringProp name="variableNames"></stringProp>
+          </JDBCSampler>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="get_block_range" enabled="true">
+        <stringProp name="ThreadGroup.on_sample_error">stopthread</stringProp>
+        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
+          <boolProp name="LoopController.continue_forever">false</boolProp>
+          <stringProp name="LoopController.loops">${LOOP_COUNT}</stringProp>
+        </elementProp>
+        <stringProp name="ThreadGroup.num_threads">${THREAD_COUNT}</stringProp>
+        <stringProp name="ThreadGroup.ramp_time"></stringProp>
+        <boolProp name="ThreadGroup.scheduler">false</boolProp>
+        <stringProp name="ThreadGroup.duration">10</stringProp>
+        <stringProp name="ThreadGroup.delay"></stringProp>
+        <boolProp name="ThreadGroup.same_user_on_next_iteration">false</boolProp>
+      </ThreadGroup>
+      <hashTree>
+        <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="false">
+          <boolProp name="ResultCollector.error_logging">false</boolProp>
+          <objProp>
+            <name>saveConfig</name>
+            <value class="SampleSaveConfiguration">
+              <time>true</time>
+              <latency>true</latency>
+              <timestamp>true</timestamp>
+              <success>true</success>
+              <label>true</label>
+              <code>true</code>
+              <message>true</message>
+              <threadName>true</threadName>
+              <dataType>true</dataType>
+              <encoding>false</encoding>
+              <assertions>true</assertions>
+              <subresults>true</subresults>
+              <responseData>false</responseData>
+              <samplerData>false</samplerData>
+              <xml>false</xml>
+              <fieldNames>true</fieldNames>
+              <responseHeaders>false</responseHeaders>
+              <requestHeaders>false</requestHeaders>
+              <responseDataOnError>false</responseDataOnError>
+              <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+              <assertionsResultsToSave>0</assertionsResultsToSave>
+              <bytes>true</bytes>
+              <sentBytes>true</sentBytes>
+              <url>true</url>
+              <threadCounts>true</threadCounts>
+              <idleTime>true</idleTime>
+              <connectTime>true</connectTime>
+            </value>
+          </objProp>
+          <stringProp name="filename"></stringProp>
+        </ResultCollector>
+        <hashTree/>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If old style" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;old-style&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="get_block_range" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">{&#xd;
+  &quot;jsonrpc&quot;: &quot;2.0&quot;,&#xd;
+  &quot;method&quot;: &quot;block_api.get_block_range&quot;,&#xd;
+  &quot;params&quot;: {&#xd;
+	  &quot;starting_block_num&quot;: ${block_no},&#xd;
+	  &quot;count&quot;: ${block_count}&#xd;
+	},&#xd;
+  &quot;id&quot;: &quot;VALIDATION&quot;&#xd;
+}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"></stringProp>
+            <stringProp name="HTTPSampler.port"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+            <stringProp name="HTTPSampler.path"></stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+        </hashTree>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If new style" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;new-style&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="get_block_range" enabled="true">
+            <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
+            <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
+              <collectionProp name="Arguments.arguments">
+                <elementProp name="" elementType="HTTPArgument">
+                  <boolProp name="HTTPArgument.always_encode">false</boolProp>
+                  <stringProp name="Argument.value">{&#xd;
+  &quot;starting_block_num&quot;: ${block_no},&#xd;
+  &quot;count&quot;: ${block_count}&#xd;
+}</stringProp>
+                  <stringProp name="Argument.metadata">=</stringProp>
+                </elementProp>
+              </collectionProp>
+            </elementProp>
+            <stringProp name="HTTPSampler.domain"></stringProp>
+            <stringProp name="HTTPSampler.port"></stringProp>
+            <stringProp name="HTTPSampler.protocol"></stringProp>
+            <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+            <stringProp name="HTTPSampler.path">rpc/get_block_range</stringProp>
+            <stringProp name="HTTPSampler.method">POST</stringProp>
+            <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
+            <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
+            <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
+            <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
+            <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+            <stringProp name="HTTPSampler.response_timeout"></stringProp>
+          </HTTPSamplerProxy>
+          <hashTree/>
+        </hashTree>
+        <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If postgres" enabled="true">
+          <stringProp name="IfController.condition">&quot;${CALL_STYLE}&quot; == &quot;postgres&quot;</stringProp>
+          <boolProp name="IfController.evaluateAll">false</boolProp>
+        </IfController>
+        <hashTree>
+          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="get_block_range" enabled="true">
+            <stringProp name="dataSource">psql</stringProp>
+            <stringProp name="query">SELECT * FROM ${PSQL_SCHEMA}.get_block_range( ${block_no}, ${block_count} );</stringProp>
+            <stringProp name="queryArguments"></stringProp>
+            <stringProp name="queryArgumentsTypes"></stringProp>
+            <stringProp name="queryTimeout"></stringProp>
+            <stringProp name="queryType">Select Statement</stringProp>
+            <stringProp name="resultSetHandler">Count Records</stringProp>
+            <stringProp name="resultSetMaxRows"></stringProp>
+            <stringProp name="resultVariable"></stringProp>
+            <stringProp name="variableNames"></stringProp>
+          </JDBCSampler>
+          <hashTree/>
+        </hashTree>
+      </hashTree>
+      <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="config" enabled="true">
+        <collectionProp name="Arguments.arguments">
+          <elementProp name="THREAD_COUNT" elementType="Argument">
+            <stringProp name="Argument.name">THREAD_COUNT</stringProp>
+            <stringProp name="Argument.value">${__P(threads, 10)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="PORT" elementType="Argument">
+            <stringProp name="Argument.name">PORT</stringProp>
+            <stringProp name="Argument.value">${__P(port, 8090)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="PATH_TO_DATASET" elementType="Argument">
+            <stringProp name="Argument.name">PATH_TO_DATASET</stringProp>
+            <stringProp name="Argument.value">${__P(dataset)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="LOOP_COUNT" elementType="Argument">
+            <stringProp name="Argument.name">LOOP_COUNT</stringProp>
+            <stringProp name="Argument.value">${__P(loop_count, 500)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="HOST" elementType="Argument">
+            <stringProp name="Argument.name">HOST</stringProp>
+            <stringProp name="Argument.value">${__P(host, localhost)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="PSQL_CONN_STR" elementType="Argument">
+            <stringProp name="Argument.name">PSQL_CONN_STR</stringProp>
+            <stringProp name="Argument.value">${__P(psql, postgresql:///haf_block_log)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="PSQL_SCHEMA" elementType="Argument">
+            <stringProp name="Argument.name">PSQL_SCHEMA</stringProp>
+            <stringProp name="Argument.value">${__P(psql, hafah_python)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+          <elementProp name="CALL_STYLE" elementType="Argument">
+            <stringProp name="Argument.name">CALL_STYLE</stringProp>
+            <stringProp name="Argument.value">${__P(call_style, old-style)}</stringProp>
+            <stringProp name="Argument.metadata">=</stringProp>
+          </elementProp>
+        </collectionProp>
+      </Arguments>
+      <hashTree/>
+      <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="dataset" enabled="true">
+        <stringProp name="filename">${PATH_TO_DATASET}</stringProp>
+        <stringProp name="fileEncoding"></stringProp>
+        <stringProp name="variableNames">block_no,block_count</stringProp>
+        <boolProp name="ignoreFirstLine">false</boolProp>
+        <stringProp name="delimiter">;</stringProp>
+        <boolProp name="quotedData">false</boolProp>
+        <boolProp name="recycle">true</boolProp>
+        <boolProp name="stopThread">false</boolProp>
+        <stringProp name="shareMode">shareMode.thread</stringProp>
+      </CSVDataSet>
+      <hashTree/>
+      <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="http config" enabled="true">
+        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
+          <collectionProp name="Arguments.arguments"/>
+        </elementProp>
+        <stringProp name="HTTPSampler.domain">${HOST}</stringProp>
+        <stringProp name="HTTPSampler.port">${PORT}</stringProp>
+        <stringProp name="HTTPSampler.protocol">http</stringProp>
+        <stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
+        <stringProp name="HTTPSampler.path"></stringProp>
+        <stringProp name="HTTPSampler.concurrentPool">6</stringProp>
+        <stringProp name="HTTPSampler.connect_timeout"></stringProp>
+        <stringProp name="HTTPSampler.response_timeout"></stringProp>
+      </ConfigTestElement>
+      <hashTree/>
+      <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource" testname="postgres config" enabled="true">
+        <boolProp name="autocommit">false</boolProp>
+        <stringProp name="checkQuery"></stringProp>
+        <stringProp name="connectionAge">5000</stringProp>
+        <stringProp name="connectionProperties"></stringProp>
+        <stringProp name="dataSource">psql</stringProp>
+        <stringProp name="dbUrl">jdbc:${PSQL_CONN_STR}</stringProp>
+        <stringProp name="driver">org.postgresql.Driver</stringProp>
+        <stringProp name="initQuery"></stringProp>
+        <boolProp name="keepAlive">true</boolProp>
+        <stringProp name="password"></stringProp>
+        <stringProp name="poolMax">10</stringProp>
+        <boolProp name="preinit">true</boolProp>
+        <stringProp name="timeout">10000</stringProp>
+        <stringProp name="transactionIsolation">DEFAULT</stringProp>
+        <stringProp name="trimInterval">60000</stringProp>
+        <stringProp name="username"></stringProp>
+      </JDBCDataSource>
+      <hashTree/>
+      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="header manager" enabled="true">
+        <collectionProp name="HeaderManager.headers">
+          <elementProp name="Content-Type" elementType="Header">
+            <stringProp name="Header.name">Content-Type</stringProp>
+            <stringProp name="Header.value">application/json</stringProp>
+          </elementProp>
+          <elementProp name="Connection" elementType="Header">
+            <stringProp name="Header.name">Connection</stringProp>
+            <stringProp name="Header.value">Keep-Alive</stringProp>
+          </elementProp>
+          <elementProp name="Keep-Alive" elementType="Header">
+            <stringProp name="Header.name">Keep-Alive</stringProp>
+            <stringProp name="Header.value">timeout=5, max=10000</stringProp>
+          </elementProp>
+        </collectionProp>
+      </HeaderManager>
+      <hashTree/>
+      <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="summary" enabled="true">
+        <boolProp name="ResultCollector.error_logging">false</boolProp>
+        <objProp>
+          <name>saveConfig</name>
+          <value class="SampleSaveConfiguration">
+            <time>true</time>
+            <latency>true</latency>
+            <timestamp>true</timestamp>
+            <success>true</success>
+            <label>true</label>
+            <code>true</code>
+            <message>true</message>
+            <threadName>true</threadName>
+            <dataType>true</dataType>
+            <encoding>true</encoding>
+            <assertions>true</assertions>
+            <subresults>true</subresults>
+            <responseData>false</responseData>
+            <samplerData>true</samplerData>
+            <xml>true</xml>
+            <fieldNames>true</fieldNames>
+            <responseHeaders>true</responseHeaders>
+            <requestHeaders>true</requestHeaders>
+            <responseDataOnError>false</responseDataOnError>
+            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+            <assertionsResultsToSave>0</assertionsResultsToSave>
+            <bytes>true</bytes>
+            <sentBytes>true</sentBytes>
+            <url>true</url>
+            <fileName>true</fileName>
+            <hostname>true</hostname>
+            <threadCounts>true</threadCounts>
+            <sampleCount>true</sampleCount>
+            <idleTime>true</idleTime>
+            <connectTime>true</connectTime>
+          </value>
+        </objProp>
+        <stringProp name="filename">raw_jmeter_report.xml</stringProp>
+        <boolProp name="useGroupName">true</boolProp>
+      </ResultCollector>
+      <hashTree/>
+    </hashTree>
+  </hashTree>
+</jmeterTestPlan>
diff --git a/benchmarks/performance_data/blocks_api/jmeter.log b/benchmarks/performance_data/blocks_api/jmeter.log
new file mode 100644
index 0000000000000000000000000000000000000000..9e167f3abdffccc95fbc3184090113a0e992aaea
--- /dev/null
+++ b/benchmarks/performance_data/blocks_api/jmeter.log
@@ -0,0 +1,36 @@
+2022-08-04 11:04:47,593 INFO o.a.j.u.JMeterUtils: Setting Locale to en_EN
+2022-08-04 11:04:47,614 INFO o.a.j.JMeter: Loading user properties from: /home/kmochocki/Downloads/apache-jmeter-5.4.1/bin/user.properties
+2022-08-04 11:04:47,615 INFO o.a.j.JMeter: Loading system properties from: /home/kmochocki/Downloads/apache-jmeter-5.4.1/bin/system.properties
+2022-08-04 11:04:47,620 INFO o.a.j.JMeter: Copyright (c) 1998-2021 The Apache Software Foundation
+2022-08-04 11:04:47,620 INFO o.a.j.JMeter: Version 5.4.1
+2022-08-04 11:04:47,620 INFO o.a.j.JMeter: java.version=11.0.15
+2022-08-04 11:04:47,620 INFO o.a.j.JMeter: java.vm.name=OpenJDK 64-Bit Server VM
+2022-08-04 11:04:47,620 INFO o.a.j.JMeter: os.name=Linux
+2022-08-04 11:04:47,620 INFO o.a.j.JMeter: os.arch=amd64
+2022-08-04 11:04:47,621 INFO o.a.j.JMeter: os.version=5.4.0-122-generic
+2022-08-04 11:04:47,621 INFO o.a.j.JMeter: file.encoding=UTF-8
+2022-08-04 11:04:47,621 INFO o.a.j.JMeter: java.awt.headless=null
+2022-08-04 11:04:47,621 INFO o.a.j.JMeter: Max memory     =4294967296
+2022-08-04 11:04:47,621 INFO o.a.j.JMeter: Available Processors =12
+2022-08-04 11:04:47,628 INFO o.a.j.JMeter: Default Locale=English (EN)
+2022-08-04 11:04:47,628 INFO o.a.j.JMeter: JMeter  Locale=English (EN)
+2022-08-04 11:04:47,628 INFO o.a.j.JMeter: JMeterHome=/home/kmochocki/Downloads/apache-jmeter-5.4.1
+2022-08-04 11:04:47,628 INFO o.a.j.JMeter: user.dir  =/home/kmochocki/hive/hive/tests/tests_api/benchmarks/performance_data/blocks_api
+2022-08-04 11:04:47,628 INFO o.a.j.JMeter: PWD       =/home/kmochocki/hive/hive/tests/tests_api/benchmarks/performance_data/blocks_api
+2022-08-04 11:04:47,629 INFO o.a.j.JMeter: IP: 127.0.1.1 Name: Papuga FullName: Papuga
+2022-08-04 11:04:48,150 INFO o.a.j.JMeter: Setting LAF to: com.github.weisj.darklaf.DarkLaf:com.github.weisj.darklaf.theme.DarculaTheme
+2022-08-04 11:04:48,615 INFO o.a.j.JMeter: Loaded icon properties from org/apache/jmeter/images/icon.properties
+2022-08-04 11:04:49,925 INFO o.a.j.JMeter: Loading file: JMX/constant_load.jmx.in
+2022-08-04 11:04:49,928 INFO o.a.j.s.FileServer: Default base='/home/kmochocki/hive/hive/tests/tests_api/benchmarks/performance_data/blocks_api'
+2022-08-04 11:04:49,928 INFO o.a.j.s.FileServer: Set new base='/home/kmochocki/hive/hive/tests/tests_api/benchmarks/performance_data/blocks_api/JMX'
+2022-08-04 11:04:50,075 INFO o.a.j.s.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2
+2022-08-04 11:04:50,094 INFO o.a.j.s.SaveService: Using SaveService properties version 5.0
+2022-08-04 11:04:50,096 INFO o.a.j.s.SaveService: Using SaveService properties file encoding UTF-8
+2022-08-04 11:04:50,098 INFO o.a.j.s.SaveService: Loading file: JMX/constant_load.jmx.in
+2022-08-04 11:04:50,255 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2022-08-04 11:04:50,255 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2022-08-04 11:04:50,255 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2022-08-04 11:04:50,255 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
+2022-08-04 11:04:50,255 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
+2022-08-04 11:04:50,255 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
+2022-08-04 11:04:50,271 INFO o.a.j.s.FileServer: Set new base='/home/kmochocki/hive/hive/tests/tests_api/benchmarks/performance_data/blocks_api/JMX'