From 7195e413ac03fed0a220ab4f15029a48845f5b2e Mon Sep 17 00:00:00 2001 From: Jonathan Louie Date: Wed, 6 Sep 2023 20:35:12 -0700 Subject: [PATCH 01/14] Add Jedis and Lettuce benchmarks --- java/.gradle/8.3/checksums/checksums.lock | Bin 0 -> 17 bytes .../dependencies-accessors.lock | Bin 0 -> 17 bytes .../8.3/dependencies-accessors/gc.properties | 0 .../8.3/executionHistory/executionHistory.bin | Bin 0 -> 78284 bytes .../executionHistory/executionHistory.lock | Bin 0 -> 17 bytes java/.gradle/8.3/fileChanges/last-build.bin | Bin 0 -> 1 bytes java/.gradle/8.3/fileHashes/fileHashes.bin | Bin 0 -> 20697 bytes java/.gradle/8.3/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .../8.3/fileHashes/resourceHashesCache.bin | Bin 0 -> 18871 bytes java/.gradle/8.3/gc.properties | 0 .../buildOutputCleanup.lock | Bin 0 -> 17 bytes .../buildOutputCleanup/cache.properties | 2 + .../buildOutputCleanup/outputFiles.bin | Bin 0 -> 19613 bytes java/.gradle/file-system.probe | Bin 0 -> 8 bytes java/.gradle/vcs-1/gc.properties | 0 java/README.md | 53 +--- java/benchmarks/build.gradle | 37 +++ .../javabushka/client/jedis/JedisClient.class | Bin 0 -> 1354 bytes .../client/lettuce/LettuceClient.class | Bin 0 -> 1706 bytes .../client/Benchmarking$Operation.class | Bin 0 -> 250 bytes .../test/javabushka/client/Benchmarking.class | Bin 0 -> 5246 bytes .../javabushka/client/LatencyResults.class | Bin 0 -> 581 bytes .../client/jedis/JedisClientIT.class | Bin 0 -> 3456 bytes .../client/lettuce/LettuceClientIT.class | Bin 0 -> 2526 bytes java/benchmarks/build/libs/benchmarks.jar | Bin 0 -> 2423 bytes ...javabushka.client.jedis.JedisClientIT.html | 142 ++++++++++ ...bushka.client.lettuce.LettuceClientIT.html | 115 ++++++++ .../reports/tests/test/css/base-style.css | 179 +++++++++++++ .../build/reports/tests/test/css/style.css | 84 ++++++ .../build/reports/tests/test/index.html | 153 +++++++++++ .../build/reports/tests/test/js/report.js | 194 ++++++++++++++ .../packages/javabushka.client.jedis.html | 103 ++++++++ .../packages/javabushka.client.lettuce.html | 103 ++++++++ ...-javabushka.client.jedis.JedisClientIT.xml | 23 ++ ...abushka.client.lettuce.LettuceClientIT.xml | 17 ++ .../build/test-results/test/binary/output.bin | Bin 0 -> 990 bytes .../test-results/test/binary/output.bin.idx | Bin 0 -> 104 bytes .../test-results/test/binary/results.bin | Bin 0 -> 466 bytes .../compileJava/previous-compilation-data.bin | Bin 0 -> 38419 bytes .../stash-dir/JedisClientIT.class.uniqueId0 | Bin 0 -> 3464 bytes .../previous-compilation-data.bin | Bin 0 -> 39190 bytes java/benchmarks/build/tmp/jar/MANIFEST.MF | 2 + .../javabushka/client/jedis/JedisClient.java | 36 +++ .../client/lettuce/LettuceClient.java | 34 +++ .../java/javabushka/client/Benchmarking.java | 68 +++++ .../javabushka/client/LatencyResults.java | 24 ++ .../client/jedis/JedisClientIT.java | 66 +++++ .../client/lettuce/LettuceClientIT.java | 51 ++++ java/changes.diff | 210 +++++++++++++++ java/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 63721 bytes java/gradle/wrapper/gradle-wrapper.properties | 7 + java/gradlew | 249 ++++++++++++++++++ java/gradlew.bat | 92 +++++++ java/lib/build.gradle | 34 +++ .../java/main/javabushka/Library.class | Bin 0 -> 352 bytes .../java/test/javabushka/LibraryTest.class | Bin 0 -> 681 bytes java/lib/build/libs/lib.jar | Bin 0 -> 723 bytes .../test/classes/javabushka.LibraryTest.html | 96 +++++++ .../reports/tests/test/css/base-style.css | 179 +++++++++++++ .../build/reports/tests/test/css/style.css | 84 ++++++ java/lib/build/reports/tests/test/index.html | 133 ++++++++++ .../lib/build/reports/tests/test/js/report.js | 194 ++++++++++++++ .../tests/test/packages/javabushka.html | 103 ++++++++ .../test/TEST-javabushka.LibraryTest.xml | 7 + .../build/test-results/test/binary/output.bin | 0 .../test-results/test/binary/output.bin.idx | Bin 0 -> 1 bytes .../test-results/test/binary/results.bin | Bin 0 -> 128 bytes .../compileJava/previous-compilation-data.bin | Bin 0 -> 2859 bytes .../previous-compilation-data.bin | Bin 0 -> 3207 bytes java/lib/build/tmp/jar/MANIFEST.MF | 2 + .../lib/src/main/java/javabushka/Library.java | 10 + .../src/test/java/javabushka/LibraryTest.java | 14 + java/settings.gradle | 15 ++ 73 files changed, 2867 insertions(+), 48 deletions(-) create mode 100644 java/.gradle/8.3/checksums/checksums.lock create mode 100644 java/.gradle/8.3/dependencies-accessors/dependencies-accessors.lock create mode 100644 java/.gradle/8.3/dependencies-accessors/gc.properties create mode 100644 java/.gradle/8.3/executionHistory/executionHistory.bin create mode 100644 java/.gradle/8.3/executionHistory/executionHistory.lock create mode 100644 java/.gradle/8.3/fileChanges/last-build.bin create mode 100644 java/.gradle/8.3/fileHashes/fileHashes.bin create mode 100644 java/.gradle/8.3/fileHashes/fileHashes.lock create mode 100644 java/.gradle/8.3/fileHashes/resourceHashesCache.bin create mode 100644 java/.gradle/8.3/gc.properties create mode 100644 java/.gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 java/.gradle/buildOutputCleanup/cache.properties create mode 100644 java/.gradle/buildOutputCleanup/outputFiles.bin create mode 100644 java/.gradle/file-system.probe create mode 100644 java/.gradle/vcs-1/gc.properties create mode 100644 java/benchmarks/build.gradle create mode 100644 java/benchmarks/build/classes/java/main/javabushka/client/jedis/JedisClient.class create mode 100644 java/benchmarks/build/classes/java/main/javabushka/client/lettuce/LettuceClient.class create mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking$Operation.class create mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking.class create mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/LatencyResults.class create mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/jedis/JedisClientIT.class create mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/lettuce/LettuceClientIT.class create mode 100644 java/benchmarks/build/libs/benchmarks.jar create mode 100644 java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html create mode 100644 java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html create mode 100644 java/benchmarks/build/reports/tests/test/css/base-style.css create mode 100644 java/benchmarks/build/reports/tests/test/css/style.css create mode 100644 java/benchmarks/build/reports/tests/test/index.html create mode 100644 java/benchmarks/build/reports/tests/test/js/report.js create mode 100644 java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html create mode 100644 java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html create mode 100644 java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml create mode 100644 java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml create mode 100644 java/benchmarks/build/test-results/test/binary/output.bin create mode 100644 java/benchmarks/build/test-results/test/binary/output.bin.idx create mode 100644 java/benchmarks/build/test-results/test/binary/results.bin create mode 100644 java/benchmarks/build/tmp/compileJava/previous-compilation-data.bin create mode 100644 java/benchmarks/build/tmp/compileTestJava/compileTransaction/stash-dir/JedisClientIT.class.uniqueId0 create mode 100644 java/benchmarks/build/tmp/compileTestJava/previous-compilation-data.bin create mode 100644 java/benchmarks/build/tmp/jar/MANIFEST.MF create mode 100644 java/benchmarks/src/main/java/javabushka/client/jedis/JedisClient.java create mode 100644 java/benchmarks/src/main/java/javabushka/client/lettuce/LettuceClient.java create mode 100644 java/benchmarks/src/test/java/javabushka/client/Benchmarking.java create mode 100644 java/benchmarks/src/test/java/javabushka/client/LatencyResults.java create mode 100644 java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java create mode 100644 java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java create mode 100644 java/changes.diff create mode 100644 java/gradle/wrapper/gradle-wrapper.jar create mode 100644 java/gradle/wrapper/gradle-wrapper.properties create mode 100755 java/gradlew create mode 100644 java/gradlew.bat create mode 100644 java/lib/build.gradle create mode 100644 java/lib/build/classes/java/main/javabushka/Library.class create mode 100644 java/lib/build/classes/java/test/javabushka/LibraryTest.class create mode 100644 java/lib/build/libs/lib.jar create mode 100644 java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html create mode 100644 java/lib/build/reports/tests/test/css/base-style.css create mode 100644 java/lib/build/reports/tests/test/css/style.css create mode 100644 java/lib/build/reports/tests/test/index.html create mode 100644 java/lib/build/reports/tests/test/js/report.js create mode 100644 java/lib/build/reports/tests/test/packages/javabushka.html create mode 100644 java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml create mode 100644 java/lib/build/test-results/test/binary/output.bin create mode 100644 java/lib/build/test-results/test/binary/output.bin.idx create mode 100644 java/lib/build/test-results/test/binary/results.bin create mode 100644 java/lib/build/tmp/compileJava/previous-compilation-data.bin create mode 100644 java/lib/build/tmp/compileTestJava/previous-compilation-data.bin create mode 100644 java/lib/build/tmp/jar/MANIFEST.MF create mode 100644 java/lib/src/main/java/javabushka/Library.java create mode 100644 java/lib/src/test/java/javabushka/LibraryTest.java create mode 100644 java/settings.gradle diff --git a/java/.gradle/8.3/checksums/checksums.lock b/java/.gradle/8.3/checksums/checksums.lock new file mode 100644 index 0000000000000000000000000000000000000000..4d7dc379235fd25b65af61a4fe1e8e36ae8f02b3 GIT binary patch literal 17 ScmZSf^x4jQ#;>`C0SW*q)dOq* literal 0 HcmV?d00001 diff --git a/java/.gradle/8.3/dependencies-accessors/dependencies-accessors.lock b/java/.gradle/8.3/dependencies-accessors/dependencies-accessors.lock new file mode 100644 index 0000000000000000000000000000000000000000..2c220632c8e62ceb41f0e70ad45a9a8d910fc5d5 GIT binary patch literal 17 TcmZQpJA33)_2qtV1}FdkJhueZ literal 0 HcmV?d00001 diff --git a/java/.gradle/8.3/dependencies-accessors/gc.properties b/java/.gradle/8.3/dependencies-accessors/gc.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/java/.gradle/8.3/executionHistory/executionHistory.bin b/java/.gradle/8.3/executionHistory/executionHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..d8e78a38daa55f7ccefbd7712e43049b34e65dc0 GIT binary patch literal 78284 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 literal 0 HcmV?d00001 diff --git a/java/.gradle/8.3/executionHistory/executionHistory.lock b/java/.gradle/8.3/executionHistory/executionHistory.lock new file mode 100644 index 0000000000000000000000000000000000000000..9eb5ac82f594855606c8aa33a2d65181d1b411f1 GIT binary patch literal 17 UcmZS1pKZR}<@)zo3=qHr05?wrqyPW_ literal 0 HcmV?d00001 diff --git a/java/.gradle/8.3/fileChanges/last-build.bin b/java/.gradle/8.3/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/java/.gradle/8.3/fileHashes/fileHashes.bin b/java/.gradle/8.3/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..33e5f52cbc87c44c4cecea32ec4acb2bbd8f44e9 GIT binary patch literal 20697 zcmeI3dpJ~S9LJB*xI~W{6t#pdh+MJ}ZLFcqWg5zE7b;V_sU*v$Xp729h)AUxv!N2o zx@1MA3#GI@OS(}_HQ80|6RLGdvgho3UfY>7f9#+8?DIR%Gc)J;%FU!WkF<17H9QfB`T72EYIq00UqE41fVJ00zJS7ytuc01SWuFz|md z@C`YUp=dICmK^FtE0Q2=G|3ao9ci1+x$>sYL|+SI@&6BYj&+DVuBN&Zai39`=WLYT zxp8!%6XIU=m><^{1=zpsNJ88*1oQmR8>8ck%&X|@NHIUNXcy0}qBIzB@1>a6iDUhq zJSa1vudj^xbzzsGd6M29#D%4p-*nRLSn1u-LSLtQkRJ@HY?!n9A>zK@Vcr-~cg;)3 zRfM=#Kjsf6TZV0JiaAZ!pTJyNKCbYb$0=jP1)Z3`=x`7SIoG*#{fI&SG2r~<^PSOj zeKO{6qTF{`U+}9zeD*lZ-z}WG*e*qS260ab=H2|Lw!?K7XVLZXgFMfEg8sho8|eB5 z%rz%|=(NpR{r?epRbgBMRQNg=Lkb`4{Wn6q_1O+`P}bg zTAaFTJ|I5(73Kl$>7uVXE6`d9@ugzsAv@8LIcc27ShN3 z%y2`*y)rRh>Q>n-_OHr7+~XeR%Q9tpuH}Y%>H1ZJyu+CnF~;W!;@;MnuY2xvxzX{+ zCAxkp<{_KDj4Ha@+7wqhPp=J@57*H70W z?x~JB{v?PYw&*)}2LoUL41fVJ00zJS7ytuc01SWuFaQR?02lxRU;qq&0WbgtzyKHk z17H9QfB`T72EYIq00UqE41fVJ00zJS7ytuc;J;wNj%>o5d{Ga(8xLRDo_zh)v9$S1 z&cD_F*k^Z(Ae458lm@GzPL)OErxi1i)tB@``SKxL*Ty}+nvN?rl1pf_6Z%H2KRft& zXT+6Qn7O^qIf4>*SCf_Gp^{I&$&KMMu)?~zV&v91Td8F6);98aZmKJs;CitWrMph^ zW^8xKQmgF=Hb1b2d=i^VJUB#+KoI*Cbfpy)8hHDDq=tKDV-bIs#xdqRxI@U8Tvy%p zbAMBFxz)5WMpRsBS{utuaJI1%UMEA1Dy;hA+Z{LgeQ)3Vf|(df?b47NgV@0P%&Og4 zv^AVRqvxu205hS|%T5@-(HGZ-Ju?z^PFj&D-gf~dn(1ft)gQAHy{mpopJ!6-dCk3= zlYBm*gqh$_yF}!=3Yu!uBw6_k`LtKzdYZEbCQv#+i4HjQK^hQ+WGzK2}2CTvMdEeOdDT2ZY@?kb?h zXfYux$s?1zg8V%0Uop{haeJn=_lFeW+x{s^e<#WUji`F^ypep9o4G8nqO2$0%zW-` zql{m7#~4fy)IBVha0qG`UOp#5JE_INFpI03%1kIL_&xZsVFoFe4Rq7F?|&)0 zBvD}|G!)#4qxL=-A&G1ow>W>x>M2XOB4%PJwG~LNtGmm}S0>iSKRTy;BDi7bFb!s6 zNGLmznz$px;*n|6JpHw6Tic!IGZUHz*a;KEX;+$U4qo=%wmme@^W-CDLcNZiNGUBY znDE81JqdA~DF%`wZp?%ZwJ%9-9`6Z_79GB35RrZ^+*Wy9Zz!N0pi6+02$GyeG!f1d%L4^8hX z^drc7_0utwMC?R~G`mUDEPr5FR8EzadsaD0ETz^Sd1zRWZ*nuA(_14rF022O*M4P@ zk#$)PvnwS9zeh&p&D?Y|yT})#{#Z`bk9@%FigS`ZM(5KB-eT$QkH5bb=BMVwk$ZBe zc`T#%QfbDs6TPSGn{8E8cVzlEE`J;pZ-5d(YGfsK#E>t!c@)T|r-U^wNZg#87@0P! zf4f|QT=(*cKf}_epY@m@Jyv3~u`lJ?Rpva%dRC%hZ?v(XR9}3B7cn~Z?L6}CrsjdW zQa5BL6t7yG`1h+8ClsyP&R8AmrAon;eX-q*rm}*1W>>0**2XH2;@`51?CJXoCseE1V{F_%bxm4ZvirmSG3w8ba`rR3Qp%sNU=vIcCTrh{hXMtniTI394n*N!mG(!6S=WfhD@CGum%KYmY-pJ|`+o4c-TGlzZ{Iv@J3x_a106dTdKf_Se}ax8tz7G2?WfP8#Slt^KKa_I+QG{Ex-oVjm2h!y~QJO$WQZ Lu7Ga(LcH+{FFO9s literal 0 HcmV?d00001 diff --git a/java/.gradle/8.3/gc.properties b/java/.gradle/8.3/gc.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/java/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/java/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000000000000000000000000000000000000..a70269903cac8ed3d78ad1a50897a704a1ba452c GIT binary patch literal 17 TcmZQ(H`P3B+o1WG0Ro%>BDe!c literal 0 HcmV?d00001 diff --git a/java/.gradle/buildOutputCleanup/cache.properties b/java/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000000..8e4ae79e89 --- /dev/null +++ b/java/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Wed Sep 06 20:33:36 PDT 2023 +gradle.version=8.3 diff --git a/java/.gradle/buildOutputCleanup/outputFiles.bin b/java/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000000000000000000000000000000000000..b453ac1dbefb5ef369d454af308cd29da6de174e GIT binary patch literal 19613 zcmeI&eM}Q~7{Kv!ptz}36k<{4GN+>H$N(XuDhLC%-d%$bf-j9u%gfl%xv{|z!6^w; zt1v_<%xFy%@Lh=7NtFoWk8NceC`*-}BTg_YWa1S;*6ba{1hI z4|m^&zaX09@@!e{{29oz4}_Z69{%EJY?Pt|F3W1n)?VuQ{P=0jZmTg%kbzDIkQt6xB`bL`-(1x4~tVE-ia)>eJruaU+vu>UxE zd#2?p!7Fkd?Ds?e?s=iaQq6V3e1*%)!rqmg>plka-so3thdhg057?NCCFos2fp&ZC zHU)E4D*E+)TW<761^ZzBFZ4cHMsjA3RR#N-(H;IVRbBTr*TJjN-O732t}Vr8=ISVy z|1!O>N7s0Uxk~SH`?$-mbyrq^KSUoFne924o^%2BB%)8PaR0rbHNBWQ{~@}3QG8{J zbz(kqK}4TXb0t9kI6)8d3iO$3ZQ4nX6>^wIcFdm~;=Ns7Yh^C3!V`*!x5^^|Q$k_> zJ@g<&PX46)qJuEM1wFVj>{i*@6*1s1p}*>HN-!OJu#vf{&E@5WT(66dHpBkC=%Ghu z5BQJY?#`UIqA&INCfhgQMk&lI(W6>yOR~Pa`zLep4mw}3qh$Gs_K%sX_M?kUf}w5v zDGPW4dhELXiyISz;rCY+i5^$5I>{ls<;CXtW$5v}MnlKk$Iw~GM^BvH)Lb&>%1YRu zjlTR$(fZi5=4-IW1AS!{H}>wsY54gTqHFx3iszfPaG%0G^fltW-D$?&MX>)z^tIC* zc}>Z+)0vBh(6t#;%wD$ALGbnHNvXOz<$=On=IR{u)Jh;s~XX_9{yHsR_yL)E}lcj?;JPwHakb}RDcRl0V+TR zr~nn90#twsPys4H1*iZOpaN8Y3Qz$mKn17(6`%rCfC^9nDnJFO02QDDRDcRl0V+TR zr~nn90;9FSLg#}$>--w}=k+l|Z?b=h6Go-{cTYO9%}?tp>7L<;^izIXS4lTZMf$U( cGb5A#+vbtokMydMiL~Kx_6+AL>C8X!H^4SMP5=M^ literal 0 HcmV?d00001 diff --git a/java/.gradle/file-system.probe b/java/.gradle/file-system.probe new file mode 100644 index 0000000000000000000000000000000000000000..2578d60fb58d9bf5ae61816d3137ae37f5aa6b26 GIT binary patch literal 8 PcmZQzVC>4>e5Dfr2)+Xe literal 0 HcmV?d00001 diff --git a/java/.gradle/vcs-1/gc.properties b/java/.gradle/vcs-1/gc.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/java/README.md b/java/README.md index 69b38c9cde..5666e124db 100644 --- a/java/README.md +++ b/java/README.md @@ -1,48 +1,5 @@ -# Summary - Java Wrapper - -This module contains a Java-client wrapper that connects to the `Babushka`-rust-client. The rust client connects to -redis, while this wrapper provides Java-language binding. The objective of this wrapper is to provide a thin-wrapper -language api to enhance performance and limit cpu cycles at scale. - -## Organization - -The Java client (javabushka) contains the following parts: - -1. A Java client (lib folder): wrapper to rust-client -2. An examples script: to sanity test javabushka and similar java-clients against a redis host -3. A benchmark app: to performance benchmark test javabushka and similar java-clients against a redis host - -## Building - -You can assemble the Java clients benchmarks by compiling using `./gradlew build`. - -## Code style - -Code style is enforced by spotless with Google Java Format. The build fails if code formatted incorrectly, but you can auto-format code with `./gradlew spotlessApply`. -Run this command before every commit to keep code in the same style. -These IDE plugins can auto-format code on file save or by single click: -* [For Intellij IDEA](https://plugins.jetbrains.com/plugin/18321-spotless-gradle) -* [For VS Code](https://marketplace.visualstudio.com/items?itemName=richardwillis.vscode-spotless-gradle) - -## Benchmarks - -You can run benchmarks using `./gradlew run`. You can set arguments using the args flag like: - -```shell -./gradlew run --args="--clients lettuce" -``` - -The following arguments are accepted: -* `configuration`: Release or Debug configuration -* `resultsFile`: the results output file -* `concurrentTasks`: Number of concurrent tasks -* `clients`: one of: all|jedis|lettuce|babushka -* `clientCount`: Client count -* `host`: redis server host url -* `port`: redis server port number -* `tls`: redis TLS configured - -### Troubleshooting - -* If you're unable to connect to redis (such as timeout), check your port or the TLS flag -* Only server-side certificates are supported by the TLS configured redis +TODO: +-[] create benchmarks folder +-[] add code for jedis test +-[] add gradle task to run jedis tests +-[] \ No newline at end of file diff --git a/java/benchmarks/build.gradle b/java/benchmarks/build.gradle new file mode 100644 index 0000000000..20a41422de --- /dev/null +++ b/java/benchmarks/build.gradle @@ -0,0 +1,37 @@ +plugins { + // Apply the java-library plugin for API and implementation separation. + id 'java-library' +} + +repositories { + // Use Maven Central for resolving dependencies. + mavenCentral() +} + +dependencies { + // Use JUnit test framework. + testImplementation 'junit:junit:4.13.2' + + // This dependency is exported to consumers, that is to say found on their compile classpath. + api 'org.apache.commons:commons-math3:3.6.1' + + // This dependency is used internally, and not exposed to consumers on their own compile classpath. + implementation 'com.google.guava:guava:32.1.1-jre' + implementation 'redis.clients:jedis:4.4.3' + implementation 'io.lettuce:lettuce-core:6.2.6.RELEASE' +} + +// Apply a specific Java toolchain to ease working on different environments. +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + +tasks.withType(Test) { + testLogging { + exceptionFormat "full" + events "started", "skipped", "passed", "failed" + showStandardStreams true + } +} diff --git a/java/benchmarks/build/classes/java/main/javabushka/client/jedis/JedisClient.class b/java/benchmarks/build/classes/java/main/javabushka/client/jedis/JedisClient.class new file mode 100644 index 0000000000000000000000000000000000000000..e0af5d106f08fedece943280f1d632c44c98dbe5 GIT binary patch literal 1354 zcma)+ZBNrs6vzK}8*~rd*d|OKgz+G-4P=T>n2B#lNHj$akQsf~jmiq8HEl=2ck+cM z3W+9u0Kbag!FbMHvn?A{U+lEEz2|>^=k$N~^Y^zO0JiZYi3p+!Vk$;3Dv&+V&-JRM z+sD;cjT58k3yeNBZPR}y5G|GK3gQB@u5n~~)uv?{w(nI>7kV&l-k% zs5dNnlGpgF)pgh8b?`9ew@go9Sr+@pcxwVV&p9(Rv*GIQ#h&4}oFnO+cLJHFW7}k@ zLua48LL48+E&|2yFTj2xO~s=$)3KRwXu1Nc|2LXCft(r_0wd?T)uwin2hwJ{Cik9| z2JX0IgNtB+>=mI?BIrj3qo~k59TSQrT2<-F??x(D5TEHLf-*&Z4J1&ZsCG7B4ePWL zxPuLfoV-p~-WQ2|<0^@PKSHAd6SNAb*L;PXl~~KE8ODkIWt9Z&M8(TY~e6 zYHmgcBQuskU(+xw+ZgJ$v@-?)~-q`wsvQ@iLAcL?lFI^rDYp=twxb=&o})>hXyEg=}bsnuMadSoNq8h$$#Ld_Cb zvLRE@KRo!d3Y$_J3xgU11t&mF3o_C$7^t3#sfYey_#veI&YD685`Wv@75b$ z)&4-Gjg^g>rFspA`nudvuPeG`yFG_?%T9qRTC}SKK3Fm={Z-?nqB{p_#Ux9*#AoqP zbqxL;7^7a@a2fnW|6@cbKr(3616wpSjaOK?K;L$5*+WwLSU=-L+QykwJ5|jFvAk4< z04!XFz(ffOnTySFq8TdN4M)@W3_siOWH0lGG#^8BmjMxa=whH1ypP43rVtF9wC}+d z-E_nVeY6(HqR^YsyEpe0?2|aMO)LKmD)U2HW&Z$n@QA(`9ygue5+FY}n@daI5Ie_U zF83LOUvTXl<9s`Qfk}pQ%(alyh>}MNF{Fv+FcBXKMVW0z$>RxObBg=!Xt4>QhxTUbpHrN)>?#Fil0931y#ZX8&9ec<~1v Cte-Ie literal 0 HcmV?d00001 diff --git a/java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking$Operation.class b/java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking$Operation.class new file mode 100644 index 0000000000000000000000000000000000000000..f4611d8d91a50da0c7a272635794db0760152ae9 GIT binary patch literal 250 zcmaKnF%E)25JmrhvVv&z0#+8<$O&vTG1^FBV!x0Hptu-z@o*L%z(W}q3u9$7e~Lfz z-+#XD4**LH1suZcByTclbbgjmS{AHKv|^R!7g?VRl}+O-*U}V~66g>{tvf2E%AzI+H5Or1p0)@|7b$EQ;O?#DYa%z@V_h` g!DiYP09mRoJiECNb~@<6|7d{FYG9p~38;Lc0k?bSc@73>r~WAu%hP=t!B@-p3yABObhsuW(ZN#D`-&Bi1h`~ z^_c0TfHI+_a{8WOIvnlx#v+Gf(%~i*&Dcm+w4osxu_s<9S+V+q!L|buO^N4nY*BF; zE+>vz<3=ZhE(!B9RJ2H#0}0(oNxhhg?JNfPlR6W=B--U&-Zd@tu2j*6c4j$iWps`B ztc<#vHoA_qnb>nM7KT8Fia2%(EYQZsQo>&h_UIl3W-`(KYJhGPeUN z_Sw13-jK1v@Z*4rgSeImxhZgpZQZ#NAcyDR58*kuPQf7+*F$5r=egZsrcxvcGs6xn z&*sL)*mTYU?dM2AfqgH4ZbIiQ+PP1t7y@xn63#*b8@+bt&2bHS_=}AbMN-9x?C`P_ zqZ^QI7Q$hSDoDv@WF32G&%t&cp*Uh%I}B6BxFo;wA-kGgdl_UESSoUu;N(0~Za^$= zVid@l8FtuWZxE7>V)X+Go+}WM^9sqbN3%$mlh^3kT*}IZumCrzxCze_2$5bAkc#C6LS15D&Fdhx6F=*5p>4hq2f+=ti_!hhT@F9TjG9em~DC@*e0Xo zPd4rQRJ_4u|y~bXwjK?Ye;N{O(x5qxsS$4G!wVW`lq+6YZCj-V@T?pCa_$+L7P8}9b*zO2zIP4B< zrHKW7mX;Xp<)-9hp{&nHrZp=kqv`*ju_?ObwxZozM0GwV2!uUBxJ@pw{pnhqKUvmq zCF?GclX$!2CD2mTqFVrkb?EkvJC%^`Dmu4Fe9k6t0c)yF19OgTb&Y$A+K%eHX6gr6 zP-gy==S6X@Gn9-&-2!VaY>}*#(#8gdv>Gop*YMD{)a#*}B8Mk<8j~zeYIACPl1+FQdSZ%a4H9fo_?Zar)D>XIkeMwL5E)5=;IZM;{vM$DmXMG)T);RpDkf*(l| z{;@!fy`|as80iUfRF~&GGO=?S@6_ZefGgkbb<P7(aiWRsbO5KlN=X1IsCvGori*vdGmk>W6PXmMiAHWBB z{}A7NxQC|$?teU72z;25X5IzwB@HJbq`-%Jd6mPU>PL809R=KnkMgYyQ=qCnxq)XY z`3p}&sY1o*G!|7PX0QZYMlPMVq;lRgPSLtt<12Kal=m&CvHZYEtnBr-u3B*?YNv70 z)4_PjrZYY zRd|ItgWJGPd6g@B!*NIWCa>_#uJCPM;oDu|JH5hpIkVqm%ko{if-3_tR(C7vaV4*9 z{C_|@l1#kpT&I>s@MU(K{EgtN_!>lINb;)deJ^d4aIB)Po;gS-t8mve-kWgPBHzHZ zo^q(L;gJR_@J$whq>2iBi%))*(YN{L!*}pq-UA$4i|_F%PRJhS+fVQawSI%&;ScuH vqxcgZwV(cqzvCaa&cE#IzwPVe_Vr15<#IRS>yd8L7Z~x>n)Tk3xaGoDJugfN1lAf`w%i ziF!Ob{G~cfl`T}hsn!q0@QQ`n9B$1g7+$lm&N8ep8no3+%Sev{frb5cr_*USdjgsB z@jwYIcXgmHrw@HKxs`pNkaBnINxvs2n%{FU6WwW&-01#i>zKsfjHeS%U1;7``Rn?C z=V6n=6kR!s5?_m|68lavnM^XdN;27?Ob4Rw4T_uedPbV&0NZ(maQ0#tjvZsksbyo7 zoSG4%>a3YDR$r(og)NFZFesLgK^Z1pvVbamE3~qPI##hw>=|+tZR*{n%oU3hNyYNg WNyP%QNyQR*tIfBjt%5f3|LiY%h-dcz literal 0 HcmV?d00001 diff --git a/java/benchmarks/build/classes/java/test/javabushka/client/jedis/JedisClientIT.class b/java/benchmarks/build/classes/java/test/javabushka/client/jedis/JedisClientIT.class new file mode 100644 index 0000000000000000000000000000000000000000..f6a062a108adf08ab2aae0eb09a527c036a23ce3 GIT binary patch literal 3456 zcmcInX?GJ<7=CVAnh=IIq%5svsZi)bX+RW&qLx;cKnmJ~BH+R_xlN~?%+#4lwYYDn zxZ}nrkKg?4ISM^^jz7TTPg0N1of*QU4agS{hsoXE=Y8JgzW41P|J?o^z!SKUL<~)F zG;3Ie7J<~PzMyAJ-706!PR+`qC(v@lung}>fu_Fx$v6@MJJg}6syj2MXNsmFEiW@G zONN^{rM_eSN)mB2t;QN?ajezQiZ+3r4075Et&C_b+LlG` z1$#mfN?^UfF4wNeoH6C-&f>WAX6#b8J7ZVPQnw?$s$+HcdQMgLDwvHLHlagc-3k%k z2N#og2wib(*02Rz=`!0XXJ)JPQRb-YN{22>>i(cWM1hTcz5#(#^PXc^<>8C{lS)&! zhKI3TpxLmdZGrWD{VR_q(Sx0F?9$MSzPbPfSPYOUt+F@clglb{1B%&h!uC;50(*EQ zFP#PHD4iLlb1xmzfK~(bX{N~|8ulxZO%;7kj@edG_s$#M3`ee~Tb`>ZKBnOS4$^ck zIi9Qb1vWI&aj^;F>W>K=7D!YU_bljURVHwR^z+9GX$U;2;VFy=#LD!E3?Tj^+p>k> zm7WW%sh1p;R&l1HJ9CUe&)IqD=$>I)%$`w<#qqR;V>m9bb!Emy1qHOS^m4jKFhjZm zqkY*1Ng5T2=n9=&^$as})N%C1oZ)&tgOeJvIK>zjb+cGCi9aFTs_9X~q0p1dq#BtR z@LCK-ec+siahxITd1jwi13lOvJPqtv2B=c%8Aj`bidGC0Dq4Ag{DTIn5$AijN`>W| zhDmitTFcT>;gYB2VqSVGm7mjaLFHu=qoL-PG(3+NICmv4Veh@HtGkK)le{Nmc8M3Y zEoWHrOtms4oq|4PawVO!8H!2WG1NRC zqE-lz^7zXHu&Yi{X8o$u;`m9XbgHzk^NzsUyr&oE#`XEo`p)G5ql`vTT_Sm?lSfbOAKS0%=;!DH~ct8{GKfg zDKqJcQQP)h&(Y_D_rPsy!IdOl!|QRpp(@^+0zG#>`{ob*ZEq$5#S<%4HAopa`t4JuY#4 z6Sh9V)v9AzpC5627d}4sKFY^DNG3kxYgm857Za+#;y1xD+c)6&@=J}0*REVBH z5@lL0a7WLKug9qADREEf=?J)Q%TddY9}sW;3C&GQ=vUgBe76L)Y@xPoZ2!6=+B$05 zQkcaY5lu?5asCVKarBHV*Iub3su675YA+09vT0Sk+_9=ofpWs@={>CN}Y{b#7alDRZA8s)H_>uIX z@$_)lz~F8EWq>6dUBZbaoKBzZ8n}&TBP(}fG{o2gyNNJJ#37_;OFQ;5PD6~^L2Soi z?8G4wKgd%f5&DBQ`u&*4%k*js4RL(>k!Yr3>N0XyW%L1>rjk-q&Rjy_CeEL~%Oyzc zBfgFxv9&-4F?hX0j1h8G8F2@LF}b)LW516PZc!NbI-p h4o4s1WBw0DpK|mCPpB^GOLj8XTUO(1e2eeV`7em~aLxb# literal 0 HcmV?d00001 diff --git a/java/benchmarks/build/classes/java/test/javabushka/client/lettuce/LettuceClientIT.class b/java/benchmarks/build/classes/java/test/javabushka/client/lettuce/LettuceClientIT.class new file mode 100644 index 0000000000000000000000000000000000000000..80e5e8ce5a991801fcebcf5cd8edc75dc592a836 GIT binary patch literal 2526 zcmb7G>r&fB6#mwLZ5(llxwM3q63WFk1gB|BnnEr>32|aV3obOh3$qx3kQhm3hCV7YXipv{2vg!#WXAH~m9tkw%@@pxi1;&)pM%~@s)r(crkd{|8rRUYFvRDp& z=l#K>nJxrHVjXh#H{LwtP+FY32E*hO7#yy=q$)BdORca?@~? zs9Qsi5_MEf+m-Wy+_0@Ch@XE=<86WT-r=1C-K@(rZZY!Jg-VwBdPl>%7!XL*Yyl&8 zT{@-8w67ZEb=7kWt2P}M%$&5U+k3jRONHU(ed*{PSuvVH+)iOg!}}N(7`U8;sG)#X zlU`Z(2xdrEU@ljRVH!1w_zGwh>z-j2XB|gBEE}%pGZ@t{h8$a@s+-liN&FS*)=iHd z9t5elXcZS?!0RwH^??f-#xX(K`%H{?26{gP^_wwFT1*@l0P|~UOtNB&s$v3nRmDCK zSpPr8isSu;bg9yOsNo}g%tot8OO;H%kcX?1H>W!nW-}Us>c9IMKEVUBWT6B`V*-7H z;k1SsJfxwk498*&V;XHupn2ZjlEy$$J9^bM0I*|N=YuIY}U_Tgc(w{5Vh z<1yKez31$2fgUv_4Ba$-lF!vWJH51hD|O2=_T-x38gwyhS+?i5H9gR~Q!DP&X<3|; zTec$!bTe`|yX8rTXIW3Wsx$1mQ_%K`M3h7;j8l(hoD}kX#2!?fF?{c*IWND#q=~d5m4h3%PMR)&1DTPLXgJ-(6X-apv zY}>o_{g`1CN!U5V%Hh6@s$X9ixV+jn+TaHu@6siKbtLI{4$O*Kb4c8R51V%0;J1%c2Y=^@)XsvU}2vf}G zGDtFRlWT%+hTw-UAHS1a^O5EEBkqd)RkD`CYlz>tNZ@g(1hnA^*IJ-}SqtgrDM> zf=>sST@6h2cLC_*47(Mf6 z#F&y8#dEx16sNJ5fzE_#DN0pcrYKXfYby3*+&jY5dV`D70wyD|Yk?19ut`IVC-koJ zbc!*4gikMGjQAM6fnLZ{m0YpofXC;wPv8rz@KD-}Xjnw*oFnpc8XhZI&FIjJQjrOBxnI#+4RoC3O)VHFz#gDzg3 zJ`fX}!7k8C&PgmTo*MGn|8juH|5!7P+ouwQD?3hkC-N^)I+fjVO2jl$rI6+CtLdQ-LkdE4jZ_ntprpMRgx=0LYamB2)SsTaHL z+7>#0bqV#kx=OQps&njTiC^1zPJh@YsWkJAqx~;QH<`UzJ7#w!-I|qkE%*BEnAphM z9m;(zERn|;Ch-Wjt(~#!xv5F)#T@tWxWcuIGGB+o9nm0fBoPFE+@o9D6}>Gl3tDWh!UW_U~?b6aYsiN?&b z^;gQ-cKRgl$(>=>q@R0Z+J{fGdN^a!JF*q$CvMc9!IGC0bZAOX<{5)0yDy}6>{>qU z*o5ERum6~K+_AF@Tf0ho&py@1X3r#q8l55=bpA3Q(vRhs;=mTkX(?H$W1v&A*k|pt zS5rQHy>{)x?Tr`Co!s`F-+Z5n^Fi6BRfQ{d@&(*1o7S?s{!Byv@$3TsW3_e)duL_t zw#uJqD*1ZO<@eX59{aojQL0Z zuZTM)tqC_2R1e{S&3N3;tOYAygOUV_*=te+lx2CXDr@&IDBK>(A!>OY{ND6 z{sfcy*(aASUEeV`(O~-TmV@VaRJ9fQ_050Gc33iP_K8fFmp+PaR}6Mq`KDh!<&&Y> zf4p(3Emv2&sYAo&pRL7b+&}E%ln^iM7dkM5Vb-TsW(B{u3p5U}e`wKox2b74;}5>t z;=fB6?2jk$*CqTs-0I@P@kB7*$iD3n(x|C* ztHk@uN`qhNPQQNUBgzEyyeWY-zhtGRWENxOv#(xP%8G&c%!`$QK@*QYFOY8JJk}e0 zJ5MN3BsP5q&-6y7Z8y4gb2mN>(urDoEul6uY0=D83whn{vq>brC^>e9$M=`NUB;r^ zMV;~w*8ku?R_mwkkYQ-EA$|VYxa{?%Y3JYXx36Qoas0A`3QG!$Xp2Ca$JZ^!YqPS# zmj7CI^K!JD^N*Q{lJ|<+95!B=Aeb0Y_GR0{u;^tAqvu7x?YyilcmLKlNyi?=tXsNg z-`rX!-ptdwSzTh2Yw3ylCzfqjSMJp@tvKD&Byx%8W8b^0rPtqC>&{gZ^?r3EajQmN zV%V`cO*(nTPb|wfzc2GQ*}OLjbG+78tNnj9-Gu;9g!9>tN8ZT@?BXbvS%&ruk2lSS8Vp@ zM#Y<(bi2b|-B|a#{9EU>Rz>rlydP?n{BEkwNQ{noXj;$H`f}YeM<>58#cda6rhPjZ z`NreT0q*A8KD{??JWE(}vC8wyRD)j^n*yh3EeGLxr`{XZPw~(QrMF6 zcP7AHh_Ng4(dmS~HB(x78^1&fFZpCA$Dz9Af!+VU^*TZS+Rm^(+u!r@bl;0^o-Y@R ze*dU_^(=UijQ^^zW1M2{OI&K1=DmHeP-5~FB%YaOz8Wf*KPz?$JAdL%wOeBra z`V^mjP<;vkApMttOicZ-+7;a#^x73>(vn7AMttUAscX@V1{now#efPT2mm?JmIa&9 nkYWkl6!c;VX3mnvQaq+$6jA}+tibjIu!RMLMnG5Tvx9g52pE#0 literal 0 HcmV?d00001 diff --git a/java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html b/java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html new file mode 100644 index 0000000000..d72630017f --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html @@ -0,0 +1,142 @@ + + + + + +Test results - Class javabushka.client.jedis.JedisClientIT + + + + + +
+

Class javabushka.client.jedis.JedisClientIT

+
+
+ + + + + +
+
+ + + + + + + +
+
+
4
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
14.703s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TestDurationResult
someLibraryMethodReturnsTrue0.002spassed
testResourceInfo0.001spassed
testResourceInfoBySection0.142spassed
testResourceSetGet14.558spassed
+
+
+

Standard output

+ +
Avg. time in ms per SET: 0.07751362659
+SET p50 latency in ms: 0.0456
+SET p90 latency in ms: 0.070699
+SET p99 latency in ms: 0.127282
+SET std dev in ms: 0.665195671610232
+Avg. time in ms per GET: 0.06613250047
+GET p50 latency in ms: 0.040224
+GET p90 latency in ms: 0.058583
+GET p99 latency in ms: 0.10689
+GET std dev in ms: 0.6044885619384261
+
+
+
+
+

Standard error

+ +
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
+SLF4J: Defaulting to no-operation (NOP) logger implementation
+SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
+
+
+
+
+ +
+ + diff --git a/java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html b/java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html new file mode 100644 index 0000000000..2c4bf39157 --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html @@ -0,0 +1,115 @@ + + + + + +Test results - Class javabushka.client.lettuce.LettuceClientIT + + + + + +
+

Class javabushka.client.lettuce.LettuceClientIT

+ +
+ + + + + +
+
+ + + + + + + +
+
+
1
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
19.114s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + +
TestDurationResult
testResourceSetGet19.114spassed
+
+
+

Standard output

+ +
Avg. time in ms per SET: 0.09530544199
+SET p50 latency in ms: 0.055105
+SET p90 latency in ms: 0.089829
+SET p99 latency in ms: 0.184804
+SET std dev in ms: 0.7259927555734456
+Avg. time in ms per GET: 0.08870054313
+GET p50 latency in ms: 0.052371
+GET p90 latency in ms: 0.081338
+GET p99 latency in ms: 0.145727
+GET std dev in ms: 0.6983375291436595
+
+
+
+
+ +
+ + diff --git a/java/benchmarks/build/reports/tests/test/css/base-style.css b/java/benchmarks/build/reports/tests/test/css/base-style.css new file mode 100644 index 0000000000..4afa73e3dd --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/css/base-style.css @@ -0,0 +1,179 @@ + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 12pt; +} + +body, a, a:visited { + color: #303030; +} + +#content { + padding-left: 50px; + padding-right: 50px; + padding-top: 30px; + padding-bottom: 30px; +} + +#content h1 { + font-size: 160%; + margin-bottom: 10px; +} + +#footer { + margin-top: 100px; + font-size: 80%; + white-space: nowrap; +} + +#footer, #footer a { + color: #a0a0a0; +} + +#line-wrapping-toggle { + vertical-align: middle; +} + +#label-for-line-wrapping-toggle { + vertical-align: middle; +} + +ul { + margin-left: 0; +} + +h1, h2, h3 { + white-space: nowrap; +} + +h2 { + font-size: 120%; +} + +ul.tabLinks { + padding-left: 0; + padding-top: 10px; + padding-bottom: 10px; + overflow: auto; + min-width: 800px; + width: auto !important; + width: 800px; +} + +ul.tabLinks li { + float: left; + height: 100%; + list-style: none; + padding-left: 10px; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 5px; + margin-bottom: 0; + -moz-border-radius: 7px; + border-radius: 7px; + margin-right: 25px; + border: solid 1px #d4d4d4; + background-color: #f0f0f0; +} + +ul.tabLinks li:hover { + background-color: #fafafa; +} + +ul.tabLinks li.selected { + background-color: #c5f0f5; + border-color: #c5f0f5; +} + +ul.tabLinks a { + font-size: 120%; + display: block; + outline: none; + text-decoration: none; + margin: 0; + padding: 0; +} + +ul.tabLinks li h2 { + margin: 0; + padding: 0; +} + +div.tab { +} + +div.selected { + display: block; +} + +div.deselected { + display: none; +} + +div.tab table { + min-width: 350px; + width: auto !important; + width: 350px; + border-collapse: collapse; +} + +div.tab th, div.tab table { + border-bottom: solid #d0d0d0 1px; +} + +div.tab th { + text-align: left; + white-space: nowrap; + padding-left: 6em; +} + +div.tab th:first-child { + padding-left: 0; +} + +div.tab td { + white-space: nowrap; + padding-left: 6em; + padding-top: 5px; + padding-bottom: 5px; +} + +div.tab td:first-child { + padding-left: 0; +} + +div.tab td.numeric, div.tab th.numeric { + text-align: right; +} + +span.code { + display: inline-block; + margin-top: 0em; + margin-bottom: 1em; +} + +span.code pre { + font-size: 11pt; + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + margin: 0; + background-color: #f7f7f7; + border: solid 1px #d0d0d0; + min-width: 700px; + width: auto !important; + width: 700px; +} + +span.wrapped pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: break-all; +} + +label.hidden { + display: none; +} \ No newline at end of file diff --git a/java/benchmarks/build/reports/tests/test/css/style.css b/java/benchmarks/build/reports/tests/test/css/style.css new file mode 100644 index 0000000000..3dc4913e7a --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/css/style.css @@ -0,0 +1,84 @@ + +#summary { + margin-top: 30px; + margin-bottom: 40px; +} + +#summary table { + border-collapse: collapse; +} + +#summary td { + vertical-align: top; +} + +.breadcrumbs, .breadcrumbs a { + color: #606060; +} + +.infoBox { + width: 110px; + padding-top: 15px; + padding-bottom: 15px; + text-align: center; +} + +.infoBox p { + margin: 0; +} + +.counter, .percent { + font-size: 120%; + font-weight: bold; + margin-bottom: 8px; +} + +#duration { + width: 125px; +} + +#successRate, .summaryGroup { + border: solid 2px #d0d0d0; + -moz-border-radius: 10px; + border-radius: 10px; +} + +#successRate { + width: 140px; + margin-left: 35px; +} + +#successRate .percent { + font-size: 180%; +} + +.success, .success a { + color: #008000; +} + +div.success, #successRate.success { + background-color: #bbd9bb; + border-color: #008000; +} + +.failures, .failures a { + color: #b60808; +} + +.skipped, .skipped a { + color: #c09853; +} + +div.failures, #successRate.failures { + background-color: #ecdada; + border-color: #b60808; +} + +ul.linkList { + padding-left: 0; +} + +ul.linkList li { + list-style: none; + margin-bottom: 5px; +} diff --git a/java/benchmarks/build/reports/tests/test/index.html b/java/benchmarks/build/reports/tests/test/index.html new file mode 100644 index 0000000000..f03c715ec6 --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/index.html @@ -0,0 +1,153 @@ + + + + + +Test results - Test Summary + + + + + +
+

Test Summary

+
+ + + + + +
+
+ + + + + + + +
+
+
5
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
33.817s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Packages

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PackageTestsFailuresIgnoredDurationSuccess rate
+javabushka.client.jedis +40014.703s100%
+javabushka.client.lettuce +10019.114s100%
+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+javabushka.client.jedis.JedisClientIT +40014.703s100%
+javabushka.client.lettuce.LettuceClientIT +10019.114s100%
+
+
+ +
+ + diff --git a/java/benchmarks/build/reports/tests/test/js/report.js b/java/benchmarks/build/reports/tests/test/js/report.js new file mode 100644 index 0000000000..83bab4a19f --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/js/report.js @@ -0,0 +1,194 @@ +(function (window, document) { + "use strict"; + + var tabs = {}; + + function changeElementClass(element, classValue) { + if (element.getAttribute("className")) { + element.setAttribute("className", classValue); + } else { + element.setAttribute("class", classValue); + } + } + + function getClassAttribute(element) { + if (element.getAttribute("className")) { + return element.getAttribute("className"); + } else { + return element.getAttribute("class"); + } + } + + function addClass(element, classValue) { + changeElementClass(element, getClassAttribute(element) + " " + classValue); + } + + function removeClass(element, classValue) { + changeElementClass(element, getClassAttribute(element).replace(classValue, "")); + } + + function initTabs() { + var container = document.getElementById("tabs"); + + tabs.tabs = findTabs(container); + tabs.titles = findTitles(tabs.tabs); + tabs.headers = findHeaders(container); + tabs.select = select; + tabs.deselectAll = deselectAll; + tabs.select(0); + + return true; + } + + function getCheckBox() { + return document.getElementById("line-wrapping-toggle"); + } + + function getLabelForCheckBox() { + return document.getElementById("label-for-line-wrapping-toggle"); + } + + function findCodeBlocks() { + var spans = document.getElementById("tabs").getElementsByTagName("span"); + var codeBlocks = []; + for (var i = 0; i < spans.length; ++i) { + if (spans[i].className.indexOf("code") >= 0) { + codeBlocks.push(spans[i]); + } + } + return codeBlocks; + } + + function forAllCodeBlocks(operation) { + var codeBlocks = findCodeBlocks(); + + for (var i = 0; i < codeBlocks.length; ++i) { + operation(codeBlocks[i], "wrapped"); + } + } + + function toggleLineWrapping() { + var checkBox = getCheckBox(); + + if (checkBox.checked) { + forAllCodeBlocks(addClass); + } else { + forAllCodeBlocks(removeClass); + } + } + + function initControls() { + if (findCodeBlocks().length > 0) { + var checkBox = getCheckBox(); + var label = getLabelForCheckBox(); + + checkBox.onclick = toggleLineWrapping; + checkBox.checked = false; + + removeClass(label, "hidden"); + } + } + + function switchTab() { + var id = this.id.substr(1); + + for (var i = 0; i < tabs.tabs.length; i++) { + if (tabs.tabs[i].id === id) { + tabs.select(i); + break; + } + } + + return false; + } + + function select(i) { + this.deselectAll(); + + changeElementClass(this.tabs[i], "tab selected"); + changeElementClass(this.headers[i], "selected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var h2 = document.createElement("H2"); + + h2.appendChild(document.createTextNode(this.titles[i])); + this.headers[i].appendChild(h2); + } + + function deselectAll() { + for (var i = 0; i < this.tabs.length; i++) { + changeElementClass(this.tabs[i], "tab deselected"); + changeElementClass(this.headers[i], "deselected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var a = document.createElement("A"); + + a.setAttribute("id", "ltab" + i); + a.setAttribute("href", "#tab" + i); + a.onclick = switchTab; + a.appendChild(document.createTextNode(this.titles[i])); + + this.headers[i].appendChild(a); + } + } + + function findTabs(container) { + return findChildElements(container, "DIV", "tab"); + } + + function findHeaders(container) { + var owner = findChildElements(container, "UL", "tabLinks"); + return findChildElements(owner[0], "LI", null); + } + + function findTitles(tabs) { + var titles = []; + + for (var i = 0; i < tabs.length; i++) { + var tab = tabs[i]; + var header = findChildElements(tab, "H2", null)[0]; + + header.parentNode.removeChild(header); + + if (header.innerText) { + titles.push(header.innerText); + } else { + titles.push(header.textContent); + } + } + + return titles; + } + + function findChildElements(container, name, targetClass) { + var elements = []; + var children = container.childNodes; + + for (var i = 0; i < children.length; i++) { + var child = children.item(i); + + if (child.nodeType === 1 && child.nodeName === name) { + if (targetClass && child.className.indexOf(targetClass) < 0) { + continue; + } + + elements.push(child); + } + } + + return elements; + } + + // Entry point. + + window.onload = function() { + initTabs(); + initControls(); + }; +} (window, window.document)); \ No newline at end of file diff --git a/java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html b/java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html new file mode 100644 index 0000000000..6fe5059ebd --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html @@ -0,0 +1,103 @@ + + + + + +Test results - Package javabushka.client.jedis + + + + + +
+

Package javabushka.client.jedis

+ +
+ + + + + +
+
+ + + + + + + +
+
+
4
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
14.703s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+JedisClientIT +40014.703s100%
+
+
+ +
+ + diff --git a/java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html b/java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html new file mode 100644 index 0000000000..72ed2f2290 --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html @@ -0,0 +1,103 @@ + + + + + +Test results - Package javabushka.client.lettuce + + + + + +
+

Package javabushka.client.lettuce

+ +
+ + + + + +
+
+ + + + + + + +
+
+
1
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
19.114s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+LettuceClientIT +10019.114s100%
+
+
+ +
+ + diff --git a/java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml b/java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml new file mode 100644 index 0000000000..f76c23081b --- /dev/null +++ b/java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml b/java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml new file mode 100644 index 0000000000..15ab216e63 --- /dev/null +++ b/java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml @@ -0,0 +1,17 @@ + + + + + + + diff --git a/java/benchmarks/build/test-results/test/binary/output.bin b/java/benchmarks/build/test-results/test/binary/output.bin new file mode 100644 index 0000000000000000000000000000000000000000..76f5d5a3a126375fb8bd3081dabee2c02a09ac91 GIT binary patch literal 990 zcmZ{i+iKfD5QbwHZ16+0LrT;1qVk?*555Q_v?-L(7StCI)>>B432774x9_g3;DXn; z;-7E7`A1jt*?s!-D86stF)J&ZgKME`vmCZnHVkmx_C+#OJMkwe>#j;tm$`EL)E0&9 zAIc`T{dKasn$PYg$QQfIo-0>2MF2JJ=eD!GA88x7{qghHC(jO}5MZ{pO~AEHAfyu^ zwHEfyb({72a5zkFdyDn9&FzrvU0uCDw}4&S!|u6vdk@d8^ScbmYBqoK@&2Vqz?HRy zvVnR4?*r-A-y0waQ3@%SOriFEFiBUl4>A~ute zZE{I!aY;~Waeir0a%ymDiF;}Z79oaJQyC$85}g^CmSMUmD>WsvSkDVY!dyd~DzK@W z@2ayf&O&yHXI@&qQ)O^!a!F=>9&QLVZ7(fn{!Ser~Ey wW>QgNQKfHcNk)E3P-;nOQC@LKQE4h(Nd_jUDN`9(C!)I?Lx2GqdScTU0BB*aK>z>% literal 0 HcmV?d00001 diff --git a/java/benchmarks/build/tmp/compileJava/previous-compilation-data.bin b/java/benchmarks/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 0000000000000000000000000000000000000000..6e1548148fc2e70edbaa1e9bd2596ac50d9e49cb GIT binary patch literal 38419 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 literal 0 HcmV?d00001 diff --git a/java/benchmarks/build/tmp/compileTestJava/compileTransaction/stash-dir/JedisClientIT.class.uniqueId0 b/java/benchmarks/build/tmp/compileTestJava/compileTransaction/stash-dir/JedisClientIT.class.uniqueId0 new file mode 100644 index 0000000000000000000000000000000000000000..5480044a03743ee4719cdf7fc8c9b963a7cfe602 GIT binary patch literal 3464 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 connection; + + public void connectToRedis() { + client = RedisClient.create("redis://localhost:6379"); + connection = client.connect(); + lettuceSync = connection.sync(); + } + + public void set(String key, String value) { + lettuceSync.set(key, value); + } + + public String get(String key) { + return (String) lettuceSync.get(key); + } + + public void closeConnection() { + connection.close(); + client.shutdown(); + } +} diff --git a/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java b/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java new file mode 100644 index 0000000000..ba5d6f5bfe --- /dev/null +++ b/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java @@ -0,0 +1,68 @@ +package javabushka.client; + +import javabushka.client.LatencyResults; +import java.util.ArrayList; +import java.util.stream.Collectors; +import java.util.Collections; + +public class Benchmarking { + static final int SIZE_SET_KEYSPACE = 3000000; + + public static String generateKeySet() { + return (Math.floor(Math.random() * SIZE_SET_KEYSPACE) + 1) + ""; + } + + public interface Operation { + void go(); + } + + public static ArrayList getLatencies(int iterations, Operation op) { + ArrayList latencies = new ArrayList(); + for (int i = 0; i latencies, int percentile) { + return latencies.get((int) Math.ceil((percentile / 100.0) * latencies.size())); + } + + private static double stdDeviation(ArrayList latencies, Double avgLatency) { + double stdDeviation = latencies.stream() + .mapToDouble(Long::doubleValue) + .reduce(0.0, (stdDev, latency) -> stdDev + Math.pow(latency - avgLatency, 2)); + return Math.sqrt(stdDeviation / latencies.size()); + } + + // This has the side-effect of sorting the latencies ArrayList + public static LatencyResults calculateResults(ArrayList latencies) { + Double avgLatency = latencies + .stream() + .collect(Collectors.summingLong(Long::longValue)) / Double.valueOf(latencies.size()); + + Collections.sort(latencies); + return new LatencyResults( + avgLatency, + percentile(latencies, 50), + percentile(latencies, 90), + percentile(latencies, 99), + stdDeviation(latencies, avgLatency) + ); + } + + public static void printResults(String operation, LatencyResults results) { + System.out.println( + "Avg. time in ms per " + operation + ": " + results.avgLatency / 1000000.0 + ); + System.out.println(operation + " p50 latency in ms: " + results.p50Latency / 1000000.0); + System.out.println(operation + " p90 latency in ms: " + results.p90Latency / 1000000.0); + System.out.println(operation + " p99 latency in ms: " + results.p99Latency / 1000000.0); + System.out.println(operation + " std dev in ms: " + results.stdDeviation / 1000000.0); + } + +} \ No newline at end of file diff --git a/java/benchmarks/src/test/java/javabushka/client/LatencyResults.java b/java/benchmarks/src/test/java/javabushka/client/LatencyResults.java new file mode 100644 index 0000000000..320ec07f74 --- /dev/null +++ b/java/benchmarks/src/test/java/javabushka/client/LatencyResults.java @@ -0,0 +1,24 @@ +package javabushka.client; + +// Raw timing results in nanoseconds +public class LatencyResults { + public final double avgLatency; + public final long p50Latency; + public final long p90Latency; + public final long p99Latency; + public final double stdDeviation; + + public LatencyResults( + double avgLatency, + long p50Latency, + long p90Latency, + long p99Latency, + double stdDeviation + ) { + this.avgLatency = avgLatency; + this.p50Latency = p50Latency; + this.p90Latency = p90Latency; + this.p99Latency = p99Latency; + this.stdDeviation = stdDeviation; + } +} diff --git a/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java b/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java new file mode 100644 index 0000000000..249be43fc2 --- /dev/null +++ b/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java @@ -0,0 +1,66 @@ +/* + * This Java source file was generated by the Gradle 'init' task. + */ +package javabushka.client.jedis; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import javabushka.client.Benchmarking; +import org.junit.Before; +import org.junit.Test; + +public class JedisClientIT { + + JedisClient jedisClient; + + @Before + public void initializeJedisClient() { + jedisClient = new JedisClient(); + jedisClient.connectToRedis(); + } + + @Test public void someLibraryMethodReturnsTrue() { + JedisClient classUnderTest = new JedisClient(); + assertTrue("someLibraryMethod should return 'true'", classUnderTest.someLibraryMethod()); + } + + @Test public void testResourceInfo() { + String result = jedisClient.info(); + + assertTrue(result.length() > 0); + } + + @Test public void testResourceInfoBySection() { + String section = "Server"; + String result = jedisClient.info(section); + + assertTrue(result.length() > 0); + assertTrue(result.startsWith("# " + section)); + } + + @Test public void testResourceSetGet() { + int iterations = 100000; + String value = "my-value"; + + Benchmarking.printResults( + "SET", + Benchmarking.calculateResults( + Benchmarking.getLatencies( + iterations, + () -> jedisClient.set(Benchmarking.generateKeySet(), value) + ) + ) + ); + Benchmarking.printResults( + "GET", + Benchmarking.calculateResults( + Benchmarking.getLatencies( + iterations, + () -> jedisClient.get(Benchmarking.generateKeySet()) + ) + ) + ); + } +} + diff --git a/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java b/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java new file mode 100644 index 0000000000..da986ac7c7 --- /dev/null +++ b/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java @@ -0,0 +1,51 @@ +/* + * This Java source file was generated by the Gradle 'init' task. + */ +package javabushka.client.lettuce; + +import static org.junit.Assert.assertEquals; + +import javabushka.client.Benchmarking; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class LettuceClientIT { + + LettuceClient lettuceClient; + + @Before + public void initializeJedisClient() { + lettuceClient = new LettuceClient(); + lettuceClient.connectToRedis(); + } + + @After + public void closeConnection() { + lettuceClient.closeConnection(); + } + + @Test public void testResourceSetGet() { + int iterations = 100000; + String value = "my-value"; + + Benchmarking.printResults( + "SET", + Benchmarking.calculateResults( + Benchmarking.getLatencies( + iterations, + () -> lettuceClient.set(Benchmarking.generateKeySet(), value) + ) + ) + ); + Benchmarking.printResults( + "GET", + Benchmarking.calculateResults( + Benchmarking.getLatencies( + iterations, + () -> lettuceClient.get(Benchmarking.generateKeySet()) + ) + ) + ); + } +} diff --git a/java/changes.diff b/java/changes.diff new file mode 100644 index 0000000000..aa01c5888e --- /dev/null +++ b/java/changes.diff @@ -0,0 +1,210 @@ +diff --git a/java/benchmarks/build.gradle b/java/benchmarks/build.gradle +index 083fd57..20a4142 100644 +--- a/java/benchmarks/build.gradle ++++ b/java/benchmarks/build.gradle +@@ -27,3 +27,11 @@ java { + languageVersion = JavaLanguageVersion.of(17) + } + } ++ ++tasks.withType(Test) { ++ testLogging { ++ exceptionFormat "full" ++ events "started", "skipped", "passed", "failed" ++ showStandardStreams true ++ } ++} +diff --git a/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java b/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java +new file mode 100644 +index 0000000..ba5d6f5 +--- /dev/null ++++ b/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java +@@ -0,0 +1,68 @@ ++package javabushka.client; ++ ++import javabushka.client.LatencyResults; ++import java.util.ArrayList; ++import java.util.stream.Collectors; ++import java.util.Collections; ++ ++public class Benchmarking { ++ static final int SIZE_SET_KEYSPACE = 3000000; ++ ++ public static String generateKeySet() { ++ return (Math.floor(Math.random() * SIZE_SET_KEYSPACE) + 1) + ""; ++ } ++ ++ public interface Operation { ++ void go(); ++ } ++ ++ public static ArrayList getLatencies(int iterations, Operation op) { ++ ArrayList latencies = new ArrayList(); ++ for (int i = 0; i latencies, int percentile) { ++ return latencies.get((int) Math.ceil((percentile / 100.0) * latencies.size())); ++ } ++ ++ private static double stdDeviation(ArrayList latencies, Double avgLatency) { ++ double stdDeviation = latencies.stream() ++ .mapToDouble(Long::doubleValue) ++ .reduce(0.0, (stdDev, latency) -> stdDev + Math.pow(latency - avgLatency, 2)); ++ return Math.sqrt(stdDeviation / latencies.size()); ++ } ++ ++ // This has the side-effect of sorting the latencies ArrayList ++ public static LatencyResults calculateResults(ArrayList latencies) { ++ Double avgLatency = latencies ++ .stream() ++ .collect(Collectors.summingLong(Long::longValue)) / Double.valueOf(latencies.size()); ++ ++ Collections.sort(latencies); ++ return new LatencyResults( ++ avgLatency, ++ percentile(latencies, 50), ++ percentile(latencies, 90), ++ percentile(latencies, 99), ++ stdDeviation(latencies, avgLatency) ++ ); ++ } ++ ++ public static void printResults(String operation, LatencyResults results) { ++ System.out.println( ++ "Avg. time in ms per " + operation + ": " + results.avgLatency / 1000000.0 ++ ); ++ System.out.println(operation + " p50 latency in ms: " + results.p50Latency / 1000000.0); ++ System.out.println(operation + " p90 latency in ms: " + results.p90Latency / 1000000.0); ++ System.out.println(operation + " p99 latency in ms: " + results.p99Latency / 1000000.0); ++ System.out.println(operation + " std dev in ms: " + results.stdDeviation / 1000000.0); ++ } ++ ++} +\ No newline at end of file +diff --git a/java/benchmarks/src/test/java/javabushka/client/LatencyResults.java b/java/benchmarks/src/test/java/javabushka/client/LatencyResults.java +new file mode 100644 +index 0000000..320ec07 +--- /dev/null ++++ b/java/benchmarks/src/test/java/javabushka/client/LatencyResults.java +@@ -0,0 +1,24 @@ ++package javabushka.client; ++ ++// Raw timing results in nanoseconds ++public class LatencyResults { ++ public final double avgLatency; ++ public final long p50Latency; ++ public final long p90Latency; ++ public final long p99Latency; ++ public final double stdDeviation; ++ ++ public LatencyResults( ++ double avgLatency, ++ long p50Latency, ++ long p90Latency, ++ long p99Latency, ++ double stdDeviation ++ ) { ++ this.avgLatency = avgLatency; ++ this.p50Latency = p50Latency; ++ this.p90Latency = p90Latency; ++ this.p99Latency = p99Latency; ++ this.stdDeviation = stdDeviation; ++ } ++} +diff --git a/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java b/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java +index 86b2ae0..249be43 100644 +--- a/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java ++++ b/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java +@@ -6,6 +6,7 @@ package javabushka.client.jedis; + import static org.junit.Assert.assertEquals; + import static org.junit.Assert.assertTrue; + ++import javabushka.client.Benchmarking; + import org.junit.Before; + import org.junit.Test; + +@@ -39,12 +40,27 @@ public class JedisClientIT { + } + + @Test public void testResourceSetGet() { +- String key = "name"; ++ int iterations = 100000; + String value = "my-value"; + +- jedisClient.set(key, value); +- String result = jedisClient.get(key); +- +- assertEquals(value, result); ++ Benchmarking.printResults( ++ "SET", ++ Benchmarking.calculateResults( ++ Benchmarking.getLatencies( ++ iterations, ++ () -> jedisClient.set(Benchmarking.generateKeySet(), value) ++ ) ++ ) ++ ); ++ Benchmarking.printResults( ++ "GET", ++ Benchmarking.calculateResults( ++ Benchmarking.getLatencies( ++ iterations, ++ () -> jedisClient.get(Benchmarking.generateKeySet()) ++ ) ++ ) ++ ); + } + } ++ +diff --git a/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java b/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java +index 20100e0..da986ac 100644 +--- a/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java ++++ b/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java +@@ -5,6 +5,7 @@ package javabushka.client.lettuce; + + import static org.junit.Assert.assertEquals; + ++import javabushka.client.Benchmarking; + import org.junit.After; + import org.junit.Before; + import org.junit.Test; +@@ -25,12 +26,26 @@ public class LettuceClientIT { + } + + @Test public void testResourceSetGet() { +- String key = "name"; ++ int iterations = 100000; + String value = "my-value"; + +- lettuceClient.set(key, value); +- String result = lettuceClient.get(key); +- +- assertEquals(value, result); ++ Benchmarking.printResults( ++ "SET", ++ Benchmarking.calculateResults( ++ Benchmarking.getLatencies( ++ iterations, ++ () -> lettuceClient.set(Benchmarking.generateKeySet(), value) ++ ) ++ ) ++ ); ++ Benchmarking.printResults( ++ "GET", ++ Benchmarking.calculateResults( ++ Benchmarking.getLatencies( ++ iterations, ++ () -> lettuceClient.get(Benchmarking.generateKeySet()) ++ ) ++ ) ++ ); + } + } diff --git a/java/gradle/wrapper/gradle-wrapper.jar b/java/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7f93135c49b765f8051ef9d0a6055ff8e46073d8 GIT binary patch literal 63721 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鯊%1Et zwk~hMkhq;MOw^Q5`7oC{CUUyTw9x>^%*FHx^qJw(LB+E0WBX@{Ghw;)6aA-KyYg8p z7XDveQOpEr;B4je@2~usI5BlFadedX^ma{b{ypd|RNYqo#~d*mj&y`^iojR}s%~vF z(H!u`yx68D1Tj(3(m;Q+Ma}s2n#;O~bcB1`lYk%Irx60&-nWIUBr2x&@}@76+*zJ5 ze&4?q8?m%L9c6h=J$WBzbiTf1Z-0Eb5$IZs>lvm$>1n_Mezp*qw_pr8<8$6f)5f<@ zyV#tzMCs51nTv_5ca`x`yfE5YA^*%O_H?;tWYdM_kHPubA%vy47i=9>Bq) zRQ&0UwLQHeswmB1yP)+BiR;S+Vc-5TX84KUA;8VY9}yEj0eESSO`7HQ4lO z4(CyA8y1G7_C;6kd4U3K-aNOK!sHE}KL_-^EDl(vB42P$2Km7$WGqNy=%fqB+ zSLdrlcbEH=T@W8V4(TgoXZ*G1_aq$K^@ek=TVhoKRjw;HyI&coln|uRr5mMOy2GXP zwr*F^Y|!Sjr2YQXX(Fp^*`Wk905K%$bd03R4(igl0&7IIm*#f`A!DCarW9$h$z`kYk9MjjqN&5-DsH@8xh63!fTNPxWsFQhNv z#|3RjnP$Thdb#Ys7M+v|>AHm0BVTw)EH}>x@_f4zca&3tXJhTZ8pO}aN?(dHo)44Z z_5j+YP=jMlFqwvf3lq!57-SAuRV2_gJ*wsR_!Y4Z(trO}0wmB9%f#jNDHPdQGHFR; zZXzS-$`;7DQ5vF~oSgP3bNV$6Z(rwo6W(U07b1n3UHqml>{=6&-4PALATsH@Bh^W? z)ob%oAPaiw{?9HfMzpGb)@Kys^J$CN{uf*HX?)z=g`J(uK1YO^8~s1(ZIbG%Et(|q z$D@_QqltVZu9Py4R0Ld8!U|#`5~^M=b>fnHthzKBRr=i+w@0Vr^l|W;=zFT#PJ?*a zbC}G#It}rQP^Ait^W&aa6B;+0gNvz4cWUMzpv(1gvfw-X4xJ2Sv;mt;zb2Tsn|kSS zo*U9N?I{=-;a-OybL4r;PolCfiaL=y@o9{%`>+&FI#D^uy#>)R@b^1ue&AKKwuI*` zx%+6r48EIX6nF4o;>)zhV_8(IEX})NGU6Vs(yslrx{5fII}o3SMHW7wGtK9oIO4OM&@@ECtXSICLcPXoS|{;=_yj>hh*%hP27yZwOmj4&Lh z*Nd@OMkd!aKReoqNOkp5cW*lC)&C$P?+H3*%8)6HcpBg&IhGP^77XPZpc%WKYLX$T zsSQ$|ntaVVOoRat$6lvZO(G-QM5s#N4j*|N_;8cc2v_k4n6zx9c1L4JL*83F-C1Cn zaJhd;>rHXB%%ZN=3_o3&Qd2YOxrK~&?1=UuN9QhL$~OY-Qyg&})#ez*8NpQW_*a&kD&ANjedxT0Ar z<6r{eaVz3`d~+N~vkMaV8{F?RBVemN(jD@S8qO~L{rUw#=2a$V(7rLE+kGUZ<%pdr z?$DP|Vg#gZ9S}w((O2NbxzQ^zTot=89!0^~hE{|c9q1hVzv0?YC5s42Yx($;hAp*E zyoGuRyphQY{Q2ee0Xx`1&lv(l-SeC$NEyS~8iil3_aNlnqF_G|;zt#F%1;J)jnPT& z@iU0S;wHJ2$f!juqEzPZeZkjcQ+Pa@eERSLKsWf=`{R@yv7AuRh&ALRTAy z8=g&nxsSJCe!QLchJ=}6|LshnXIK)SNd zRkJNiqHwKK{SO;N5m5wdL&qK`v|d?5<4!(FAsDxR>Ky#0#t$8XCMptvNo?|SY?d8b z`*8dVBlXTUanlh6n)!EHf2&PDG8sXNAt6~u-_1EjPI1|<=33T8 zEnA00E!`4Ave0d&VVh0e>)Dc}=FfAFxpsC1u9ATfQ`-Cu;mhc8Z>2;uyXtqpLb7(P zd2F9<3cXS} znMg?{&8_YFTGRQZEPU-XPq55%51}RJpw@LO_|)CFAt62-_!u_Uq$csc+7|3+TV_!h z+2a7Yh^5AA{q^m|=KSJL+w-EWDBc&I_I1vOr^}P8i?cKMhGy$CP0XKrQzCheG$}G# zuglf8*PAFO8%xop7KSwI8||liTaQ9NCAFarr~psQt)g*pC@9bORZ>m`_GA`_K@~&% zijH0z;T$fd;-Liw8%EKZas>BH8nYTqsK7F;>>@YsE=Rqo?_8}UO-S#|6~CAW0Oz1} z3F(1=+#wrBJh4H)9jTQ_$~@#9|Bc1Pd3rAIA_&vOpvvbgDJOM(yNPhJJq2%PCcMaI zrbe~toYzvkZYQ{ea(Wiyu#4WB#RRN%bMe=SOk!CbJZv^m?Flo5p{W8|0i3`hI3Np# zvCZqY%o258CI=SGb+A3yJe~JH^i{uU`#U#fvSC~rWTq+K`E%J@ zasU07&pB6A4w3b?d?q}2=0rA#SA7D`X+zg@&zm^iA*HVi z009#PUH<%lk4z~p^l0S{lCJk1Uxi=F4e_DwlfHA`X`rv(|JqWKAA5nH+u4Da+E_p+ zVmH@lg^n4ixs~*@gm_dgQ&eDmE1mnw5wBz9Yg?QdZwF|an67Xd*x!He)Gc8&2!urh z4_uXzbYz-aX)X1>&iUjGp;P1u8&7TID0bTH-jCL&Xk8b&;;6p2op_=y^m@Nq*0{#o!!A;wNAFG@0%Z9rHo zcJs?Th>Ny6+hI`+1XoU*ED$Yf@9f91m9Y=#N(HJP^Y@ZEYR6I?oM{>&Wq4|v0IB(p zqX#Z<_3X(&{H+{3Tr|sFy}~=bv+l=P;|sBz$wk-n^R`G3p0(p>p=5ahpaD7>r|>pm zv;V`_IR@tvZreIuv2EM7ZQHhO+qUgw#kOs%*ekY^n|=1#x9&c;Ro&I~{rG-#_3ZB1 z?|9}IFdbP}^DneP*T-JaoYHt~r@EfvnPE5EKUwIxjPbsr$% zfWW83pgWST7*B(o=kmo)74$8UU)v0{@4DI+ci&%=#90}!CZz|rnH+Mz=HN~97G3~@ z;v5(9_2%eca(9iu@J@aqaMS6*$TMw!S>H(b z4(*B!|H|8&EuB%mITr~O?vVEf%(Gr)6E=>H~1VR z&1YOXluJSG1!?TnT)_*YmJ*o_Q@om~(GdrhI{$Fsx_zrkupc#y{DK1WOUR>tk>ZE) ziOLoBkhZZ?0Uf}cm>GsA>Rd6V8@JF)J*EQlQ<=JD@m<)hyElXR0`pTku*3MU`HJn| zIf7$)RlK^pW-$87U;431;Ye4Ie+l~_B3*bH1>*yKzn23cH0u(i5pXV! z4K?{3oF7ZavmmtTq((wtml)m6i)8X6ot_mrE-QJCW}Yn!(3~aUHYG=^fA<^~`e3yc z-NWTb{gR;DOUcK#zPbN^D*e=2eR^_!(!RKkiwMW@@yYtEoOp4XjOGgzi`;=8 zi3`Ccw1%L*y(FDj=C7Ro-V?q)-%p?Ob2ZElu`eZ99n14-ZkEV#y5C+{Pq87Gu3&>g zFy~Wk7^6v*)4pF3@F@rE__k3ikx(hzN3@e*^0=KNA6|jC^B5nf(XaoQaZN?Xi}Rn3 z$8&m*KmWvPaUQ(V<#J+S&zO|8P-#!f%7G+n_%sXp9=J%Z4&9OkWXeuZN}ssgQ#Tcj z8p6ErJQJWZ+fXLCco=RN8D{W%+*kko*2-LEb))xcHwNl~Xmir>kmAxW?eW50Osw3# zki8Fl$#fvw*7rqd?%E?}ZX4`c5-R&w!Y0#EBbelVXSng+kUfeUiqofPehl}$ormli zg%r)}?%=?_pHb9`Cq9Z|B`L8b>(!+8HSX?`5+5mm81AFXfnAt1*R3F z%b2RPIacKAddx%JfQ8l{3U|vK@W7KB$CdLqn@wP^?azRks@x8z59#$Q*7q!KilY-P zHUbs(IFYRGG1{~@RF;Lqyho$~7^hNC`NL3kn^Td%A7dRgr_&`2k=t+}D-o9&C!y^? z6MsQ=tc3g0xkK(O%DzR9nbNB(r@L;1zQrs8mzx&4dz}?3KNYozOW5;=w18U6$G4U2 z#2^qRLT*Mo4bV1Oeo1PKQ2WQS2Y-hv&S|C7`xh6=Pj7MNLC5K-zokZ67S)C;(F0Dd zloDK2_o1$Fmza>EMj3X9je7e%Q`$39Dk~GoOj89-6q9|_WJlSl!!+*{R=tGp z8u|MuSwm^t7K^nUe+^0G3dkGZr3@(X+TL5eah)K^Tn zXEtHmR9UIaEYgD5Nhh(s*fcG_lh-mfy5iUF3xxpRZ0q3nZ=1qAtUa?(LnT9I&~uxX z`pV?+=|-Gl(kz?w!zIieXT}o}7@`QO>;u$Z!QB${a08_bW0_o@&9cjJUXzVyNGCm8 zm=W+$H!;_Kzp6WQqxUI;JlPY&`V}9C$8HZ^m?NvI*JT@~BM=()T()Ii#+*$y@lTZBkmMMda>7s#O(1YZR+zTG@&}!EXFG{ zEWPSDI5bFi;NT>Yj*FjH((=oe%t%xYmE~AGaOc4#9K_XsVpl<4SP@E!TgC0qpe1oi zNpxU2b0(lEMcoibQ-G^cxO?ySVW26HoBNa;n0}CWL*{k)oBu1>F18X061$SP{Gu67 z-v-Fa=Fl^u3lnGY^o5v)Bux}bNZ~ z5pL+7F_Esoun8^5>z8NFoIdb$sNS&xT8_|`GTe8zSXQzs4r^g0kZjg(b0bJvz`g<70u9Z3fQILX1Lj@;@+##bP|FAOl)U^9U>0rx zGi)M1(Hce)LAvQO-pW!MN$;#ZMX?VE(22lTlJrk#pB0FJNqVwC+*%${Gt#r_tH9I_ z;+#)#8cWAl?d@R+O+}@1A^hAR1s3UcW{G+>;X4utD2d9X(jF555}!TVN-hByV6t+A zdFR^aE@GNNgSxxixS2p=on4(+*+f<8xrwAObC)D5)4!z7)}mTpb7&ofF3u&9&wPS< zB62WHLGMhmrmOAgmJ+|c>qEWTD#jd~lHNgT0?t-p{T=~#EMcB| z=AoDKOL+qXCfk~F)-Rv**V}}gWFl>liXOl7Uec_8v)(S#av99PX1sQIVZ9eNLkhq$ zt|qu0b?GW_uo}TbU8!jYn8iJeIP)r@;!Ze_7mj{AUV$GEz6bDSDO=D!&C9!M@*S2! zfGyA|EPlXGMjkH6x7OMF?gKL7{GvGfED=Jte^p=91FpCu)#{whAMw`vSLa`K#atdN zThnL+7!ZNmP{rc=Z>%$meH;Qi1=m1E3Lq2D_O1-X5C;!I0L>zur@tPAC9*7Jeh)`;eec}1`nkRP(%iv-`N zZ@ip-g|7l6Hz%j%gcAM}6-nrC8oA$BkOTz^?dakvX?`^=ZkYh%vUE z9+&)K1UTK=ahYiaNn&G5nHUY5niLGus@p5E2@RwZufRvF{@$hW{;{3QhjvEHMvduO z#Wf-@oYU4ht?#uP{N3utVzV49mEc9>*TV_W2TVC`6+oI)zAjy$KJrr=*q##&kobiQ z1vNbya&OVjK`2pdRrM?LuK6BgrLN7H_3m z!qpNKg~87XgCwb#I=Q&0rI*l$wM!qTkXrx1ko5q-f;=R2fImRMwt5Qs{P*p^z@9ex z`2#v(qE&F%MXlHpdO#QEZyZftn4f05ab^f2vjxuFaat2}jke{j?5GrF=WYBR?gS(^ z9SBiNi}anzBDBRc+QqizTTQuJrzm^bNA~A{j%ugXP7McZqJ}65l10({wk++$=e8O{ zxWjG!Qp#5OmI#XRQQM?n6?1ztl6^D40hDJr?4$Wc&O_{*OfMfxe)V0=e{|N?J#fgE>j9jAajze$iN!*yeF%jJU#G1c@@rm zolGW!j?W6Q8pP=lkctNFdfgUMg92wlM4E$aks1??M$~WQfzzzXtS)wKrr2sJeCN4X zY(X^H_c^PzfcO8Bq(Q*p4c_v@F$Y8cHLrH$`pJ2}=#*8%JYdqsqnGqEdBQMpl!Ot04tUGSXTQdsX&GDtjbWD=prcCT9(+ z&UM%lW%Q3yrl1yiYs;LxzIy>2G}EPY6|sBhL&X&RAQrSAV4Tlh2nITR?{6xO9ujGu zr*)^E`>o!c=gT*_@6S&>0POxcXYNQd&HMw6<|#{eSute2C3{&h?Ah|cw56-AP^f8l zT^kvZY$YiH8j)sk7_=;gx)vx-PW`hbSBXJGCTkpt;ap(}G2GY=2bbjABU5)ty%G#x zAi07{Bjhv}>OD#5zh#$0w;-vvC@^}F! z#X$@)zIs1L^E;2xDAwEjaXhTBw2<{&JkF*`;c3<1U@A4MaLPe{M5DGGkL}#{cHL%* zYMG+-Fm0#qzPL#V)TvQVI|?_M>=zVJr9>(6ib*#z8q@mYKXDP`k&A4A};xMK0h=yrMp~JW{L?mE~ph&1Y1a#4%SO)@{ zK2juwynUOC)U*hVlJU17%llUxAJFuKZh3K0gU`aP)pc~bE~mM!i1mi!~LTf>1Wp< zuG+ahp^gH8g8-M$u{HUWh0m^9Rg@cQ{&DAO{PTMudV6c?ka7+AO& z746QylZ&Oj`1aqfu?l&zGtJnpEQOt;OAFq19MXTcI~`ZcoZmyMrIKDFRIDi`FH)w; z8+*8tdevMDv*VtQi|e}CnB_JWs>fhLOH-+Os2Lh!&)Oh2utl{*AwR)QVLS49iTp{6 z;|172Jl!Ml17unF+pd+Ff@jIE-{Oxv)5|pOm@CkHW?{l}b@1>Pe!l}VccX#xp@xgJ zyE<&ep$=*vT=}7vtvif0B?9xw_3Gej7mN*dOHdQPtW5kA5_zGD zpA4tV2*0E^OUimSsV#?Tg#oiQ>%4D@1F5@AHwT8Kgen$bSMHD3sXCkq8^(uo7CWk`mT zuslYq`6Yz;L%wJh$3l1%SZv#QnG3=NZ=BK4yzk#HAPbqXa92;3K5?0kn4TQ`%E%X} z&>Lbt!!QclYKd6+J7Nl@xv!uD%)*bY-;p`y^ZCC<%LEHUi$l5biu!sT3TGGSTPA21 zT8@B&a0lJHVn1I$I3I1I{W9fJAYc+8 zVj8>HvD}&O`TqU2AAb={?eT;0hyL(R{|h23=4fDSZKC32;wWxsVj`P z3J3{M$PwdH!ro*Cn!D&=jnFR>BNGR<<|I8CI@+@658Dy(lhqbhXfPTVecY@L8%`3Q z1Fux2w?2C3th60jI~%OC9BtpNF$QPqcG+Pz96qZJ71_`0o0w_q7|h&O>`6U+^BA&5 zXd5Zp1Xkw~>M%RixTm&OqpNl8Q+ue=92Op_>T~_9UON?ZM2c0aGm=^A4ejrXj3dV9 zhh_bCt-b9`uOX#cFLj!vhZ#lS8Tc47OH>*)y#{O9?AT~KR9LntM|#l#Dlm^8{nZdk zjMl#>ZM%#^nK2TPzLcKxqx24P7R1FPlBy7LSBrRvx>fE$9AJ;7{PQm~^LBX^k#6Zq zw*Z(zJC|`!6_)EFR}8|n8&&Rbj8y028~P~sFXBFRt+tmqH-S3<%N;C&WGH!f3{7cm zy_fCAb9@HqaXa1Y5vFbxWf%#zg6SI$C+Uz5=CTO}e|2fjWkZ;Dx|84Ow~bkI=LW+U zuq;KSv9VMboRvs9)}2PAO|b(JCEC_A0wq{uEj|3x@}*=bOd zwr{TgeCGG>HT<@Zeq8y}vTpwDg#UBvD)BEs@1KP$^3$sh&_joQPn{hjBXmLPJ{tC) z*HS`*2+VtJO{|e$mM^|qv1R*8i(m1`%)}g=SU#T#0KlTM2RSvYUc1fP+va|4;5}Bfz98UvDCpq7}+SMV&;nX zQw~N6qOX{P55{#LQkrZk(e5YGzr|(B;Q;ju;2a`q+S9bsEH@i1{_Y0;hWYn1-79jl z5c&bytD*k)GqrVcHn6t-7kinadiD>B{Tl`ZY@`g|b~pvHh5!gKP4({rp?D0aFd_cN zhHRo4dd5^S6ViN(>(28qZT6E>??aRhc($kP`>@<+lIKS5HdhjVU;>f7<4))E*5|g{ z&d1}D|vpuV^eRj5j|xx9nwaCxXFG?Qbjn~_WSy=N}P0W>MP zG-F%70lX5Xr$a)2i6?i|iMyM|;Jtf*hO?=Jxj12oz&>P=1#h~lf%#fc73M2_(SUM- zf&qnjS80|_Y0lDgl&I?*eMumUklLe_=Td!9G@eR*tcPOgIShJipp3{A10u(4eT~DY zHezEj8V+7m!knn7)W!-5QI3=IvC^as5+TW1@Ern@yX| z7Nn~xVx&fGSr+L%4iohtS3w^{-H1A_5=r&x8}R!YZvp<2T^YFvj8G_vm}5q;^UOJf ztl=X3iL;;^^a#`t{Ae-%5Oq{?M#s6Npj+L(n-*LMI-yMR{)qki!~{5z{&`-iL}lgW zxo+tnvICK=lImjV$Z|O_cYj_PlEYCzu-XBz&XC-JVxUh9;6*z4fuBG+H{voCC;`~GYV|hj%j_&I zDZCj>Q_0RCwFauYoVMiUSB+*Mx`tg)bWmM^SwMA+?lBg12QUF_x2b)b?qb88K-YUd z0dO}3k#QirBV<5%jL$#wlf!60dizu;tsp(7XLdI=eQs?P`tOZYMjVq&jE)qK*6B^$ zBe>VvH5TO>s>izhwJJ$<`a8fakTL!yM^Zfr2hV9`f}}VVUXK39p@G|xYRz{fTI+Yq z20d=)iwjuG9RB$%$^&8#(c0_j0t_C~^|n+c`Apu|x7~;#cS-s=X1|C*YxX3ailhg_|0`g!E&GZJEr?bh#Tpb8siR=JxWKc{#w7g zWznLwi;zLFmM1g8V5-P#RsM@iX>TK$xsWuujcsVR^7TQ@!+vCD<>Bk9tdCo7Mzgq5 zv8d>dK9x8C@Qoh01u@3h0X_`SZluTb@5o;{4{{eF!-4405x8X7hewZWpz z2qEi4UTiXTvsa(0X7kQH{3VMF>W|6;6iTrrYD2fMggFA&-CBEfSqPlQDxqsa>{e2M z(R5PJ7uOooFc|9GU0ELA%m4&4Ja#cQpNw8i8ACAoK6?-px+oBl_yKmenZut#Xumjz zk8p^OV2KY&?5MUwGrBOo?ki`Sxo#?-Q4gw*Sh0k`@ zFTaYK2;}%Zk-68`#5DXU$2#=%YL#S&MTN8bF+!J2VT6x^XBci6O)Q#JfW{YMz) zOBM>t2rSj)n#0a3cjvu}r|k3od6W(SN}V-cL?bi*Iz-8uOcCcsX0L>ZXjLqk zZu2uHq5B|Kt>e+=pPKu=1P@1r9WLgYFq_TNV1p9pu0erHGd!+bBp!qGi+~4A(RsYN@CyXNrC&hxGmW)u5m35OmWwX`I+0yByglO`}HC4nGE^_HUs^&A(uaM zKPj^=qI{&ayOq#z=p&pnx@@k&I1JI>cttJcu@Ihljt?6p^6{|ds`0MoQwp+I{3l6` zB<9S((RpLG^>=Kic`1LnhpW2=Gu!x`m~=y;A`Qk!-w`IN;S8S930#vBVMv2vCKi}u z6<-VPrU0AnE&vzwV(CFC0gnZYcpa-l5T0ZS$P6(?9AM;`Aj~XDvt;Jua=jIgF=Fm? zdp=M$>`phx%+Gu};;-&7T|B1AcC#L4@mW5SV_^1BRbo6;2PWe$r+npRV`yc;T1mo& z+~_?7rA+(Um&o@Tddl zL_hxvWk~a)yY}%j`Y+200D%9$bWHy&;(yj{jpi?Rtz{J66ANw)UyPOm;t6FzY3$hx zcn)Ir79nhFvNa7^a{SHN7XH*|Vlsx`CddPnA&Qvh8aNhEA;mPVv;Ah=k<*u!Zq^7 z<=xs*iQTQOMMcg|(NA_auh@x`3#_LFt=)}%SQppP{E>mu_LgquAWvh<>L7tf9+~rO znwUDS52u)OtY<~!d$;m9+87aO+&`#2ICl@Y>&F{jI=H(K+@3M1$rr=*H^dye#~TyD z!){#Pyfn+|ugUu}G;a~!&&0aqQ59U@UT3|_JuBlYUpT$2+11;}JBJ`{+lQN9T@QFY z5+`t;6(TS0F?OlBTE!@7D`8#URDNqx2t6`GZ{ZgXeS@v%-eJzZOHz18aS|svxII$a zZeFjrJ*$IwX$f-Rzr_G>xbu@euGl)B7pC&S+CmDJBg$BoV~jxSO#>y z33`bupN#LDoW0feZe0%q8un0rYN|eRAnwDHQ6e_)xBTbtoZtTA=Fvk){q}9Os~6mQ zKB80VI_&6iSq`LnK7*kfHZoeX6?WE}8yjuDn=2#JG$+;-TOA1%^=DnXx%w{b=w}tS zQbU3XxtOI8E(!%`64r2`zog;5<0b4i)xBmGP^jiDZ2%HNSxIf3@wKs~uk4%3Mxz;~ zts_S~E4>W+YwI<-*-$U8*^HKDEa8oLbmqGg?3vewnaNg%Mm)W=)lcC_J+1ov^u*N3 zXJ?!BrH-+wGYziJq2Y#vyry6Z>NPgkEk+Ke`^DvNRdb>Q2Nlr#v%O@<5hbflI6EKE z9dWc0-ORk^T}jP!nkJ1imyjdVX@GrjOs%cpgA8-c&FH&$(4od#x6Y&=LiJZPINVyW z0snY$8JW@>tc2}DlrD3StQmA0Twck~@>8dSix9CyQOALcREdxoM$Sw*l!}bXKq9&r zysMWR@%OY24@e`?+#xV2bk{T^C_xSo8v2ZI=lBI*l{RciPwuE>L5@uhz@{!l)rtVlWC>)6(G)1~n=Q|S!{E9~6*fdpa*n z!()-8EpTdj=zr_Lswi;#{TxbtH$8*G=UM`I+icz7sr_SdnHXrv=?iEOF1UL+*6O;% zPw>t^kbW9X@oEXx<97%lBm-9?O_7L!DeD)Me#rwE54t~UBu9VZ zl_I1tBB~>jm@bw0Aljz8! zXBB6ATG6iByKIxs!qr%pz%wgqbg(l{65DP4#v(vqhhL{0b#0C8mq`bnqZ1OwFV z7mlZZJFMACm>h9v^2J9+^_zc1=JjL#qM5ZHaThH&n zXPTsR8(+)cj&>Un{6v*z?@VTLr{TmZ@-fY%*o2G}*G}#!bmqpoo*Ay@U!JI^Q@7gj;Kg-HIrLj4}#ec4~D2~X6vo;ghep-@&yOivYP zC19L0D`jjKy1Yi-SGPAn94(768Tcf$urAf{)1)9W58P`6MA{YG%O?|07!g9(b`8PXG1B1Sh0?HQmeJtP0M$O$hI z{5G`&9XzYhh|y@qsF1GnHN|~^ru~HVf#)lOTSrv=S@DyR$UKQk zjdEPFDz{uHM&UM;=mG!xKvp;xAGHOBo~>_=WFTmh$chpC7c`~7?36h)7$fF~Ii}8q zF|YXxH-Z?d+Q+27Rs3X9S&K3N+)OBxMHn1u(vlrUC6ckBY@@jl+mgr#KQUKo#VeFm zFwNYgv0<%~Wn}KeLeD9e1$S>jhOq&(e*I@L<=I5b(?G(zpqI*WBqf|Zge0&aoDUsC zngMRA_Kt0>La+Erl=Uv_J^p(z=!?XHpenzn$%EA`JIq#yYF?JLDMYiPfM(&Csr#f{ zdd+LJL1by?xz|D8+(fgzRs~(N1k9DSyK@LJygwaYX8dZl0W!I&c^K?7)z{2is;OkE zd$VK-(uH#AUaZrp=1z;O*n=b?QJkxu`Xsw&7yrX0?(CX=I-C#T;yi8a<{E~?vr3W> zQrpPqOW2M+AnZ&p{hqmHZU-;Q(7?- zP8L|Q0RM~sB0w1w53f&Kd*y}ofx@c z5Y6B8qGel+uT1JMot$nT1!Tim6{>oZzJXdyA+4euOLME?5Fd_85Uk%#E*ln%y{u8Q z$|?|R@Hpb~yTVK-Yr_S#%NUy7EBfYGAg>b({J|5b+j-PBpPy$Ns`PaJin4JdRfOaS zE|<HjH%NuJgsd2wOlv>~y=np%=2)$M9LS|>P)zJ+Fei5vYo_N~B0XCn+GM76 z)Xz3tg*FRVFgIl9zpESgdpWAavvVViGlU8|UFY{{gVJskg*I!ZjWyk~OW-Td4(mZ6 zB&SQreAAMqwp}rjy`HsG({l2&q5Y52<@AULVAu~rWI$UbFuZs>Sc*x+XI<+ez%$U)|a^unjpiW0l0 zj1!K0(b6$8LOjzRqQ~K&dfbMIE=TF}XFAi)$+h}5SD3lo z%%Qd>p9se=VtQG{kQ;N`sI)G^u|DN#7{aoEd zkksYP%_X$Rq08);-s6o>CGJ<}v`qs%eYf+J%DQ^2k68C%nvikRsN?$ap--f+vCS`K z#&~)f7!N^;sdUXu54gl3L=LN>FB^tuK=y2e#|hWiWUls__n@L|>xH{%8lIJTd5`w? zSwZbnS;W~DawT4OwSJVdAylbY+u5S+ZH{4hAi2&}Iv~W(UvHg(1GTZRPz`@{SOqzy z(8g&Dz=$PfRV=6FgxN~zo+G8OoPI&d-thcGVR*_^(R8COTM@bq?fDwY{}WhsQS1AK zF6R1t8!RdFmfocpJ6?9Yv~;WYi~XPgs(|>{5})j!AR!voO7y9&cMPo#80A(`za@t>cx<0;qxM@S*m(jYP)dMXr*?q0E`oL;12}VAep179uEr8c<=D zr5?A*C{eJ`z9Ee;E$8)MECqatHkbHH z&Y+ho0B$31MIB-xm&;xyaFCtg<{m~M-QDbY)fQ>Q*Xibb~8ytxZQ?QMf9!%cV zU0_X1@b4d+Pg#R!`OJ~DOrQz3@cpiGy~XSKjZQQ|^4J1puvwKeScrH8o{bscBsowomu z^f12kTvje`yEI3eEXDHJ6L+O{Jv$HVj%IKb|J{IvD*l6IG8WUgDJ*UGz z3!C%>?=dlfSJ>4U88)V+`U-!9r^@AxJBx8R;)J4Fn@`~k>8>v0M9xp90OJElWP&R5 zM#v*vtT}*Gm1^)Bv!s72T3PB0yVIjJW)H7a)ilkAvoaH?)jjb`MP>2z{%Y?}83 zUIwBKn`-MSg)=?R)1Q0z3b>dHE^)D8LFs}6ASG1|daDly_^lOSy&zIIhm*HXm1?VS=_iacG);_I9c zUQH1>i#*?oPIwBMJkzi_*>HoUe}_4o>2(SHWzqQ=;TyhAHS;Enr7!#8;sdlty&(>d zl%5cjri8`2X^Ds`jnw7>A`X|bl=U8n+3LKLy(1dAu8`g@9=5iw$R0qk)w8Vh_Dt^U zIglK}sn^)W7aB(Q>HvrX=rxB z+*L)3DiqpQ_%~|m=44LcD4-bxO3OO*LPjsh%p(k?&jvLp0py57oMH|*IMa(<|{m1(0S|x)?R-mqJ=I;_YUZA>J z62v*eSK;5w!h8J+6Z2~oyGdZ68waWfy09?4fU&m7%u~zi?YPHPgK6LDwphgaYu%0j zurtw)AYOpYKgHBrkX189mlJ`q)w-f|6>IER{5Lk97%P~a-JyCRFjejW@L>n4vt6#hq;!|m;hNE||LK3nw1{bJOy+eBJjK=QqNjI;Q6;Rp5 z&035pZDUZ#%Oa;&_7x0T<7!RW`#YBOj}F380Bq?MjjEhrvlCATPdkCTTl+2efTX$k zH&0zR1n^`C3ef~^sXzJK-)52(T}uTG%OF8yDhT76L~|^+hZ2hiSM*QA9*D5odI1>& z9kV9jC~twA5MwyOx(lsGD_ggYmztXPD`2=_V|ks_FOx!_J8!zM zTzh^cc+=VNZ&(OdN=y4Juw)@8-85lwf_#VMN!Ed(eQiRiLB2^2e`4dp286h@v@`O%_b)Y~A; zv}r6U?zs&@uD_+(_4bwoy7*uozNvp?bXFoB8?l8yG0qsm1JYzIvB_OH4_2G*IIOwT zVl%HX1562vLVcxM_RG*~w_`FbIc!(T=3>r528#%mwwMK}uEhJ()3MEby zQQjzqjWkwfI~;Fuj(Lj=Ug0y`>~C7`w&wzjK(rPw+Hpd~EvQ-ufQOiB4OMpyUKJhw zqEt~jle9d7S~LI~$6Z->J~QJ{Vdn3!c}g9}*KG^Kzr^(7VI5Gk(mHLL{itj_hG?&K4Ws0+T4gLfi3eu$N=`s36geNC?c zm!~}vG6lx9Uf^5M;bWntF<-{p^bruy~f?sk9 zcETAPQZLoJ8JzMMg<-=ju4keY@SY%Wo?u9Gx=j&dfa6LIAB|IrbORLV1-H==Z1zCM zeZcOYpm5>U2fU7V*h;%n`8 zN95QhfD994={1*<2vKLCNF)feKOGk`R#K~G=;rfq}|)s20&MCa65 zUM?xF5!&e0lF%|U!#rD@I{~OsS_?=;s_MQ_b_s=PuWdC)q|UQ&ea)DMRh5>fpQjXe z%9#*x=7{iRCtBKT#H>#v%>77|{4_slZ)XCY{s3j_r{tdpvb#|r|sbS^dU1x70$eJMU!h{Y7Kd{dl}9&vxQl6Jt1a` zHQZrWyY0?!vqf@u-fxU_@+}u(%Wm>0I#KP48tiAPYY!TdW(o|KtVI|EUB9V`CBBNaBLVih7+yMVF|GSoIQD0Jfb{ z!OXq;(>Z?O`1gap(L~bUcp>Lc@Jl-})^=6P%<~~9ywY=$iu8pJ0m*hOPzr~q`23eX zgbs;VOxxENe0UMVeN*>uCn9Gk!4siN-e>x)pIKAbQz!G)TcqIJ0`JBBaX>1-4_XO_-HCS^vr2vjv#7KltDZdyQ{tlWh4$Gm zB>|O1cBDC)yG(sbnc*@w6e%e}r*|IhpXckx&;sQCwGdKH+3oSG-2)Bf#x`@<4ETAr z0My%7RFh6ZLiZ_;X6Mu1YmXx7C$lSZ^}1h;j`EZd6@%JNUe=btBE z%s=Xmo1Ps?8G`}9+6>iaB8bgjUdXT?=trMu|4yLX^m0Dg{m7rpKNJey|EwHI+nN1e zL^>qN%5Fg)dGs4DO~uwIdXImN)QJ*Jhpj7$fq_^`{3fwpztL@WBB}OwQ#Epo-mqMO zsM$UgpFiG&d#)lzEQ{3Q;)&zTw;SzGOah-Dpm{!q7<8*)Ti_;xvV2TYXa}=faXZy? z3y?~GY@kl)>G&EvEijk9y1S`*=zBJSB1iet>0;x1Ai)*`^{pj0JMs)KAM=@UyOGtO z3y0BouW$N&TnwU6!%zS%nIrnANvZF&vB1~P5_d`x-giHuG zPJ;>XkVoghm#kZXRf>qxxEix;2;D1CC~NrbO6NBX!`&_$iXwP~P*c($EVV|669kDO zKoTLZNF4Cskh!Jz5ga9uZ`3o%7Pv`d^;a=cXI|>y;zC3rYPFLQkF*nv(r>SQvD*## z(Vo%^9g`%XwS0t#94zPq;mYGLKu4LU3;txF26?V~A0xZbU4Lmy`)>SoQX^m7fd^*E z+%{R4eN!rIk~K)M&UEzxp9dbY;_I^c} zOc{wlIrN_P(PPqi51k_$>Lt|X6A^|CGYgKAmoI#Li?;Wq%q~q*L7ehZkUrMxW67Jl zhsb~+U?33QS>eqyN{(odAkbopo=Q$Az?L+NZW>j;#~@wCDX?=L5SI|OxI~7!Pli;e zELMFcZtJY3!|=Gr2L4>z8yQ-{To>(f80*#;6`4IAiqUw`=Pg$%C?#1 z_g@hIGerILSU>=P>z{gM|DS91A4cT@PEIB^hSop!uhMo#2G;+tQSpDO_6nOnPWSLU zS;a9m^DFMXR4?*X=}d7l;nXuHk&0|m`NQn%d?8|Ab3A9l9Jh5s120ibWBdB z$5YwsK3;wvp!Kn@)Qae{ef`0#NwlRpQ}k^r>yos_Ne1;xyKLO?4)t_G4eK~wkUS2A&@_;)K0-03XGBzU+5f+uMDxC z(s8!8!RvdC#@`~fx$r)TKdLD6fWEVdEYtV#{ncT-ZMX~eI#UeQ-+H(Z43vVn%Yj9X zLdu9>o%wnWdvzA-#d6Z~vzj-}V3FQ5;axDIZ;i(95IIU=GQ4WuU{tl-{gk!5{l4_d zvvb&uE{%!iFwpymz{wh?bKr1*qzeZb5f6e6m_ozRF&zux2mlK=v_(_s^R6b5lu?_W4W3#<$zeG~Pd)^!4tzhs}-Sx$FJP>)ZGF(hVTH|C3(U zs0PO&*h_ zNA-&qZpTP$$LtIgfiCn07}XDbK#HIXdmv8zdz4TY;ifNIH-0jy(gMSByG2EF~Th#eb_TueZC` zE?3I>UTMpKQ})=C;6p!?G)M6w^u*A57bD?2X`m3X^6;&4%i_m(uGJ3Z5h`nwxM<)H z$I5m?wN>O~8`BGnZ=y^p6;0+%_0K}Dcg|K;+fEi|qoBqvHj(M&aHGqNF48~XqhtU? z^ogwBzRlOfpAJ+Rw7IED8lRbTdBdyEK$gPUpUG}j-M42xDj_&qEAQEtbs>D#dRd7Y z<&TpSZ(quQDHiCFn&0xsrz~4`4tz!CdL8m~HxZM_agu@IrBpyeL1Ft}V$HX_ZqDPm z-f89)pjuEzGdq-PRu`b1m+qBGY{zr_>{6Ss>F|xHZlJj9dt5HD$u`1*WZe)qEIuDSR)%z+|n zatVlhQ?$w#XRS7xUrFE;Y8vMGhQS5*T{ZnY=q1P?w5g$OKJ#M&e??tAmPWHMj3xhS ziGxapy?kn@$~2%ZY;M8Bc@%$pkl%Rvj!?o%agBvpQ-Q61n9kznC4ttrRNQ4%GFR5u zyv%Yo9~yxQJWJSfj z?#HY$y=O~F|2pZs22pu|_&Ajd+D(Mt!nPUG{|1nlvP`=R#kKH zO*s$r_%ss5h1YO7k0bHJ2CXN)Yd6CHn~W!R=SqkWe=&nAZu(Q1G!xgcUilM@YVei@2@a`8he z9@pM`)VB*=e7-MWgLlXlc)t;fF&-AwM{E-EX}pViFn0I0CNw2bNEnN2dj!^4(^zS3 zobUm1uQnpqk_4q{pl*n06=TfK_C>UgurKFjRXsK_LEn};=79`TB12tv6KzwSu*-C8 z;=~ohDLZylHQ|Mpx-?yql>|e=vI1Z!epyUpAcDCp4T|*RV&X`Q$0ogNwy6mFALo^@ z9=&(9txO8V@E!@6^(W0{*~CT>+-MA~vnJULBxCTUW>X5>r7*eXYUT0B6+w@lzw%n> z_VjJ<2qf|(d6jYq2(x$(ZDf!yVkfnbvNmb5c|hhZ^2TV_LBz`9w!e_V*W_(MiA7|= z&EeIIkw*+$Xd!)j8<@_<}A5;~A_>3JT*kX^@}cDoLd>Qj<`Se^wdUa(j0dp+Tl8EptwBm{9OGsdFEq zM`!pjf(Lm(`$e3FLOjqA5LnN5o!}z{ zNf}rJuZh@yUtq&ErjHeGzX4(!luV!jB&;FAP|!R_QHYw#^Z1LwTePAKJ6X&IDNO#; z)#I@Xnnzyij~C@UH~X51JCgQeF0&hTXnuoElz#m{heZRexWc0k4<>0+ClX7%0 zEBqCCld1tD9Zwkr4{?Nor19#E5-YKfB8d?qgR82-Ow2^AuNevly2*tHA|sK!ybYkX zm-sLQH72P&{vEAW6+z~O5d0qd=xW~rua~5a?ymYFSD@8&gV)E5@RNNBAj^C99+Z5Z zR@Pq55mbCQbz+Mn$d_CMW<-+?TU960agEk1J<>d>0K=pF19yN))a~4>m^G&tc*xR+yMD*S=yip-q=H zIlredHpsJV8H(32@Zxc@bX6a21dUV95Th--8pE6C&3F>pk=yv$yd6@Haw;$v4+Fcb zRwn{Qo@0`7aPa2LQOP}j9v>sjOo5Kqvn|`FLizX zB+@-u4Lw|jsvz{p^>n8Vo8H2peIqJJnMN}A)q6%$Tmig7eu^}K2 zrh$X?T|ZMsoh{6pdw1G$_T<`Ds-G=jc;qcGdK4{?dN2-XxjDNbb(7pk|3JUVCU4y; z)?LXR>f+AAu)JEiti_Zy#z5{RgsC}R(@jl%9YZ>zu~hKQ*AxbvhC378-I@{~#%Y`Z zy=a=9YpewPIC+gkEUUwtUL7|RU7=!^Aa}Mk^6uxOgRGA#JXjWLsjFUnix|Mau{hDT z7mn*z1m5g`vP(#tjT0Zy4eAY(br&!RiiXE=ZI!{sE1#^#%x^Z7t1U)b<;%Y}Q9=5v z;wpDCEZ@OE36TWT=|gxigT@VaW9BvHS05;_P(#s z8zI4XFQys}q)<`tkX$WnSarn{3e!s}4(J!=Yf>+Y>cP3f;vr63f2{|S^`_pWc)^5_!R z*(x-fuBxL51@xe!lnDBKi}Br$c$BMZ3%f2Sa6kLabiBS{pq*yj;q|k(86x`PiC{p6 z_bxCW{>Q2BA8~Ggz&0jkrcU+-$ANBsOop*ms>34K9lNYil@}jC;?cYP(m^P}nR6FV zk(M%48Z&%2Rx$A&FhOEirEhY0(dn;-k(qkTU)sFQ`+-ih+s@A8g?r8Pw+}2;35WYf zi}VO`jS`p(tc)$X$a>-#WXoW!phhatC*$}|rk>|wUU71eUJG^$c6_jwX?iSHM@6__ zvV|6%U*$sSXJu9SX?2%M^kK|}a2QJ8AhF{fuXrHZxXsI~O zGKX45!K7p*MCPEQ=gp?eu&#AW*pR{lhQR##P_*{c_DjMGL|3T3-bSJ(o$|M{ytU}> zAV>wq*uE*qFo9KvnA^@juy{x<-u*#2NvkV={Ly}ysKYB-k`K3@K#^S1Bb$8Y#0L0# z`6IkSG&|Z$ODy|VLS+y5pFJx&8tvPmMd8c9FhCyiU8~k6FwkakUd^(_ml8`rnl>JS zZV){9G*)xBqPz^LDqRwyS6w86#D^~xP4($150M)SOZRe9sn=>V#aG0Iy(_^YcPpIz8QYM-#s+n% z@Jd?xQq?Xk6=<3xSY7XYP$$yd&Spu{A#uafiIfy8gRC`o0nk{ezEDjb=q_qRAlR1d zFq^*9Gn)yTG4b}R{!+3hWQ+u3GT~8nwl2S1lpw`s0X_qpxv)g+JIkVKl${sYf_nV~B>Em>M;RlqGb5WVil(89 zs=ld@|#;dq1*vQGz=7--Br-|l) zZ%Xh@v8>B7P?~}?Cg$q9_={59l%m~O&*a6TKsCMAzG&vD>k2WDzJ6!tc!V)+oxF;h zJH;apM=wO?r_+*#;ulohuP=E>^zon}a$NnlcQ{1$SO*i=jnGVcQa^>QOILc)e6;eNTI>os=eaJ{*^DE+~jc zS}TYeOykDmJ=6O%>m`i*>&pO_S;qMySJIyP=}4E&J%#1zju$RpVAkZbEl+p%?ZP^C z*$$2b4t%a(e+%>a>d_f_<JjxI#J1x;=hPd1zFPx=6T$;;X1TD*2(edZ3f46zaAoW>L53vS_J*N8TMB|n+;LD| zC=GkQPpyDY#Am4l49chDv*gojhRj_?63&&8#doW`INATAo(qY#{q}%nf@eTIXmtU< zdB<7YWfyCmBs|c)cK>1)v&M#!yNj#4d$~pVfDWQc_ke1?fw{T1Nce_b`v|Vp5ig(H zJvRD^+ps46^hLX;=e2!2e;w9y1D@!D$c@Jc&%%%IL=+xzw55&2?darw=9g~>P z9>?Kdc$r?6c$m%x2S$sdpPl>GQZ{rC9mPS63*qjCVa?OIBj!fW zm|g?>CVfGXNjOfcyqImXR_(tXS(F{FcoNzKvG5R$IgGaxC@)i(e+$ME}vPVIhd|mx2IIE+f zM?9opQHIVgBWu)^A|RzXw!^??S!x)SZOwZaJkGjc<_}2l^eSBm!eAJG9T>EC6I_sy z?bxzDIAn&K5*mX)$RQzDA?s)-no-XF(g*yl4%+GBf`##bDXJ==AQk*xmnatI;SsLp zP9XTHq5mmS=iWu~9ES>b%Q=1aMa|ya^vj$@qz9S!ih{T8_PD%Sf_QrNKwgrXw9ldm zHRVR98*{C?_XNpJn{abA!oix_mowRMu^2lV-LPi;0+?-F(>^5#OHX-fPED zCu^l7u3E%STI}c4{J2!)9SUlGP_@!d?5W^QJXOI-Ea`hFMKjR7TluLvzC-ozCPn1`Tpy z!vlv@_Z58ILX6>nDjTp-1LlFMx~-%GA`aJvG$?8*Ihn;mH37eK**rmOEwqegf-Ccx zrIX4;{c~RK>XuTXxYo5kMiWMy)!IC{*DHG@E$hx?RwP@+wuad(P1{@%tRkyJRqD)3 zMHHHZ4boqDn>-=DgR5VlhQTpfVy182Gk;A_S8A1-;U1RR>+$62>(MUx@Nox$vTjHq z%QR=j!6Gdyb5wu7y(YUktwMuW5<@jl?m4cv4BODiT5o8qVdC0MBqGr@-YBIwnpZAY znX9(_uQjP}JJ=!~Ve9#5I~rUnN|P_3D$LqZcvBnywYhjlMSFHm`;u9GPla{5QD7(7*6Tb3Svr8;(nuAd81q$*uq6HC_&~je*Ca7hP4sJp0av{M8480wF zxASi7Qv+~@2U%Nu1Ud;s-G4CTVWIPyx!sg&8ZG0Wq zG_}i3C(6_1>q3w!EH7$Kwq8uBp2F2N7}l65mk1p*9v0&+;th=_E-W)E;w}P(j⁢ zv5o9#E7!G0XmdzfsS{efPNi`1b44~SZ4Z8fuX!I}#8g+(wxzQwUT#Xb2(tbY1+EUhGKoT@KEU9Ktl>_0 z%bjDJg;#*gtJZv!-Zs`?^}v5eKmnbjqlvnSzE@_SP|LG_PJ6CYU+6zY6>92%E+ z=j@TZf-iW4(%U{lnYxQA;7Q!b;^brF8n0D>)`q5>|WDDXLrqYU_tKN2>=#@~OE7grMnNh?UOz-O~6 z6%rHy{#h9K0AT+lDC7q4{hw^|q6*Ry;;L%Q@)Ga}$60_q%D)rv(CtS$CQbpq9|y1e zRSrN4;$Jyl{m5bZw`$8TGvb}(LpY{-cQ)fcyJv7l3S52TLXVDsphtv&aPuDk1OzCA z4A^QtC(!11`IsNx_HnSy?>EKpHJWT^wmS~hc^p^zIIh@9f6U@I2 zC=Mve{j2^)mS#U$e{@Q?SO6%LDsXz@SY+=cK_QMmXBIU)j!$ajc-zLx3V60EXJ!qC zi<%2x8Q24YN+&8U@CIlN zrZkcT9yh%LrlGS9`G)KdP(@9Eo-AQz@8GEFWcb7U=a0H^ZVbLmz{+&M7W(nXJ4sN8 zJLR7eeK(K8`2-}j(T7JsO`L!+CvbueT%izanm-^A1Dn{`1Nw`9P?cq;7no+XfC`K(GO9?O^5zNIt4M+M8LM0=7Gz8UA@Z0N+lg+cX)NfazRu z5D)~HA^(u%w^cz+@2@_#S|u>GpB+j4KzQ^&Wcl9f z&hG#bCA(Yk0D&t&aJE^xME^&E-&xGHhXn%}psEIj641H+Nl-}boj;)Zt*t(4wZ5DN z@GXF$bL=&pBq-#vkTkh>7hl%K5|3 z{`Vn9b$iR-SoGENp}bn4;fR3>9sA%X2@1L3aE9yTra;Wb#_`xWwLSLdfu+PAu+o3| zGVnpzPr=ch{uuoHjtw7+_!L_2;knQ!DuDl0R`|%jr+}jFzXtrHIKc323?JO{l&;VF z*L1+}JU7%QJOg|5|Tc|D8fN zJORAg=_vsy{ak|o);@)Yh8Lkcg@$FG3k@ep36BRa^>~UmnRPziS>Z=`Jb2x*Q#`%A zU*i3&Vg?TluO@X0O;r2Jl6LKLUOVhSqg1*qOt^|8*c7 zo(298@+r$k_wQNGHv{|$tW(T8L+4_`FQ{kEW5Jgg{yf7ey4ss_(SNKfz(N9lx&a;< je(UuV8hP?p&}TPdm1I$XmG#(RzlD&B2izSj9sl%y5~4qc literal 0 HcmV?d00001 diff --git a/java/gradle/wrapper/gradle-wrapper.properties b/java/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..ac72c34e8a --- /dev/null +++ b/java/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/java/gradlew b/java/gradlew new file mode 100755 index 0000000000..0adc8e1a53 --- /dev/null +++ b/java/gradlew @@ -0,0 +1,249 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/java/gradlew.bat b/java/gradlew.bat new file mode 100644 index 0000000000..6689b85bee --- /dev/null +++ b/java/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/java/lib/build.gradle b/java/lib/build.gradle new file mode 100644 index 0000000000..cc06cd1213 --- /dev/null +++ b/java/lib/build.gradle @@ -0,0 +1,34 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This generated file contains a sample Java library project to get you started. + * For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.3/userguide/building_java_projects.html in the Gradle documentation. + */ + +plugins { + // Apply the java-library plugin for API and implementation separation. + id 'java-library' +} + +repositories { + // Use Maven Central for resolving dependencies. + mavenCentral() +} + +dependencies { + // Use JUnit test framework. + testImplementation 'junit:junit:4.13.2' + + // This dependency is exported to consumers, that is to say found on their compile classpath. + api 'org.apache.commons:commons-math3:3.6.1' + + // This dependency is used internally, and not exposed to consumers on their own compile classpath. + implementation 'com.google.guava:guava:32.1.1-jre' +} + +// Apply a specific Java toolchain to ease working on different environments. +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} diff --git a/java/lib/build/classes/java/main/javabushka/Library.class b/java/lib/build/classes/java/main/javabushka/Library.class new file mode 100644 index 0000000000000000000000000000000000000000..202633586d599ba4834aca4781d62386a0bdf118 GIT binary patch literal 352 zcmZWkyH3ME5S(?KI2c0`iyxo^gzyLOXppE(C_pLb&dv#6aD39)M&h4nsE{c506q$_ zYpj686*HRMnK|v}*ZT*6bHpJ$3o}qqn+7HlVh<#I5*zqk-QkfZU?m`5pH?hj_%Ic}8vY&(->tWZ9b&(IdM!3SL z?y)n4IQ9c;5n5Ph=q!wsWH%u?hyy%{uz^j|rp+js6eK3OuvQq-7V`3^M~DntC+S@M zwKGzU&TqWrr&L>%+!K}%8XxqKX4g}x#APwfgz51tr%asc0nhu~NFP_ph8s)Euw4@U zdjSu3&ak_%%T>9yooQ?ha+3T-4T-1Z-}ny{!R%ZW%E_tdODl=~LMiRIlUfmbJDne* zVhyi#VFu!(^vc`S^?mKk?~Q$I(KGw62Ie1{>^4OSc}9Ne^*z}4vb;mqmw^>LBOA>c z@Ep4oF}$E^tsK52??L0=2)^E9C5^*3KM?&ydydpXojO+0B%BV`O2nCzxI%0q#7pcE Ra+f+i^FDco1F|(7{sni?owNV| literal 0 HcmV?d00001 diff --git a/java/lib/build/libs/lib.jar b/java/lib/build/libs/lib.jar new file mode 100644 index 0000000000000000000000000000000000000000..77f1a996552b93a2c207a0cde3f2505656498e79 GIT binary patch literal 723 zcmWIWW@Zs#VBp|jNSv$|&Hw~VAOZ+Df!NnI#8KDN&rP41Apk|;rh2A#(m(~0Kn&E5 zQ0VLE=jrAe9HQsz_SyH$X&-N0y^Flwx?1PXoZlQ|aK-q+(??I4kPKVARRzUXZlGaV ziDijNrNtT9i757hl(Nq-wR#6slEBEoAc3mXCo`!iv8YlnIVZ8WIMv_U?}&lOoatxP zygAEp%G+fI)`qql`|=fuquAE7IoO zJO2E(bwh9pCsR*Si{`Noj?GgmL@IS>{r(fRF65@*BH_C)-t`#Vx*dOHhJaD}q}piP zjy)GHas77TIDa-sa9L~KmC*guPTk{*+&oEinaEeCh_^e$53jqVo4EW(e5ucj?P+Um z_J+i!PCNX~+NmhHDtZ<7Td$ye%Ocequ4lII5O26+YGXd*Y0nW0y9(C5Joh=zX9y_g zeDc}P+Y{Z>lIv6Z<3fA$hoAmMpR^_asH8K`u4fGJW@Hj!#vP5ofC2&mhPRF&8Xl?W z+R!5vq!V9yBYM0-G=i*Nh^i4KmIJ(5*+42; Ofba*9J_<|~3=9Ckh0YZK literal 0 HcmV?d00001 diff --git a/java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html b/java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html new file mode 100644 index 0000000000..3031b841d0 --- /dev/null +++ b/java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html @@ -0,0 +1,96 @@ + + + + + +Test results - Class javabushka.LibraryTest + + + + + +
+

Class javabushka.LibraryTest

+ +
+ + + + + +
+
+ + + + + + + +
+
+
1
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.002s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + +
TestDurationResult
someLibraryMethodReturnsTrue0.002spassed
+
+
+ +
+ + diff --git a/java/lib/build/reports/tests/test/css/base-style.css b/java/lib/build/reports/tests/test/css/base-style.css new file mode 100644 index 0000000000..4afa73e3dd --- /dev/null +++ b/java/lib/build/reports/tests/test/css/base-style.css @@ -0,0 +1,179 @@ + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 12pt; +} + +body, a, a:visited { + color: #303030; +} + +#content { + padding-left: 50px; + padding-right: 50px; + padding-top: 30px; + padding-bottom: 30px; +} + +#content h1 { + font-size: 160%; + margin-bottom: 10px; +} + +#footer { + margin-top: 100px; + font-size: 80%; + white-space: nowrap; +} + +#footer, #footer a { + color: #a0a0a0; +} + +#line-wrapping-toggle { + vertical-align: middle; +} + +#label-for-line-wrapping-toggle { + vertical-align: middle; +} + +ul { + margin-left: 0; +} + +h1, h2, h3 { + white-space: nowrap; +} + +h2 { + font-size: 120%; +} + +ul.tabLinks { + padding-left: 0; + padding-top: 10px; + padding-bottom: 10px; + overflow: auto; + min-width: 800px; + width: auto !important; + width: 800px; +} + +ul.tabLinks li { + float: left; + height: 100%; + list-style: none; + padding-left: 10px; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 5px; + margin-bottom: 0; + -moz-border-radius: 7px; + border-radius: 7px; + margin-right: 25px; + border: solid 1px #d4d4d4; + background-color: #f0f0f0; +} + +ul.tabLinks li:hover { + background-color: #fafafa; +} + +ul.tabLinks li.selected { + background-color: #c5f0f5; + border-color: #c5f0f5; +} + +ul.tabLinks a { + font-size: 120%; + display: block; + outline: none; + text-decoration: none; + margin: 0; + padding: 0; +} + +ul.tabLinks li h2 { + margin: 0; + padding: 0; +} + +div.tab { +} + +div.selected { + display: block; +} + +div.deselected { + display: none; +} + +div.tab table { + min-width: 350px; + width: auto !important; + width: 350px; + border-collapse: collapse; +} + +div.tab th, div.tab table { + border-bottom: solid #d0d0d0 1px; +} + +div.tab th { + text-align: left; + white-space: nowrap; + padding-left: 6em; +} + +div.tab th:first-child { + padding-left: 0; +} + +div.tab td { + white-space: nowrap; + padding-left: 6em; + padding-top: 5px; + padding-bottom: 5px; +} + +div.tab td:first-child { + padding-left: 0; +} + +div.tab td.numeric, div.tab th.numeric { + text-align: right; +} + +span.code { + display: inline-block; + margin-top: 0em; + margin-bottom: 1em; +} + +span.code pre { + font-size: 11pt; + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + margin: 0; + background-color: #f7f7f7; + border: solid 1px #d0d0d0; + min-width: 700px; + width: auto !important; + width: 700px; +} + +span.wrapped pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: break-all; +} + +label.hidden { + display: none; +} \ No newline at end of file diff --git a/java/lib/build/reports/tests/test/css/style.css b/java/lib/build/reports/tests/test/css/style.css new file mode 100644 index 0000000000..3dc4913e7a --- /dev/null +++ b/java/lib/build/reports/tests/test/css/style.css @@ -0,0 +1,84 @@ + +#summary { + margin-top: 30px; + margin-bottom: 40px; +} + +#summary table { + border-collapse: collapse; +} + +#summary td { + vertical-align: top; +} + +.breadcrumbs, .breadcrumbs a { + color: #606060; +} + +.infoBox { + width: 110px; + padding-top: 15px; + padding-bottom: 15px; + text-align: center; +} + +.infoBox p { + margin: 0; +} + +.counter, .percent { + font-size: 120%; + font-weight: bold; + margin-bottom: 8px; +} + +#duration { + width: 125px; +} + +#successRate, .summaryGroup { + border: solid 2px #d0d0d0; + -moz-border-radius: 10px; + border-radius: 10px; +} + +#successRate { + width: 140px; + margin-left: 35px; +} + +#successRate .percent { + font-size: 180%; +} + +.success, .success a { + color: #008000; +} + +div.success, #successRate.success { + background-color: #bbd9bb; + border-color: #008000; +} + +.failures, .failures a { + color: #b60808; +} + +.skipped, .skipped a { + color: #c09853; +} + +div.failures, #successRate.failures { + background-color: #ecdada; + border-color: #b60808; +} + +ul.linkList { + padding-left: 0; +} + +ul.linkList li { + list-style: none; + margin-bottom: 5px; +} diff --git a/java/lib/build/reports/tests/test/index.html b/java/lib/build/reports/tests/test/index.html new file mode 100644 index 0000000000..837e00ab79 --- /dev/null +++ b/java/lib/build/reports/tests/test/index.html @@ -0,0 +1,133 @@ + + + + + +Test results - Test Summary + + + + + +
+

Test Summary

+
+ + + + + +
+
+ + + + + + + +
+
+
1
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.002s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Packages

+ + + + + + + + + + + + + + + + + + + + + +
PackageTestsFailuresIgnoredDurationSuccess rate
+javabushka +1000.002s100%
+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+javabushka.LibraryTest +1000.002s100%
+
+
+ +
+ + diff --git a/java/lib/build/reports/tests/test/js/report.js b/java/lib/build/reports/tests/test/js/report.js new file mode 100644 index 0000000000..83bab4a19f --- /dev/null +++ b/java/lib/build/reports/tests/test/js/report.js @@ -0,0 +1,194 @@ +(function (window, document) { + "use strict"; + + var tabs = {}; + + function changeElementClass(element, classValue) { + if (element.getAttribute("className")) { + element.setAttribute("className", classValue); + } else { + element.setAttribute("class", classValue); + } + } + + function getClassAttribute(element) { + if (element.getAttribute("className")) { + return element.getAttribute("className"); + } else { + return element.getAttribute("class"); + } + } + + function addClass(element, classValue) { + changeElementClass(element, getClassAttribute(element) + " " + classValue); + } + + function removeClass(element, classValue) { + changeElementClass(element, getClassAttribute(element).replace(classValue, "")); + } + + function initTabs() { + var container = document.getElementById("tabs"); + + tabs.tabs = findTabs(container); + tabs.titles = findTitles(tabs.tabs); + tabs.headers = findHeaders(container); + tabs.select = select; + tabs.deselectAll = deselectAll; + tabs.select(0); + + return true; + } + + function getCheckBox() { + return document.getElementById("line-wrapping-toggle"); + } + + function getLabelForCheckBox() { + return document.getElementById("label-for-line-wrapping-toggle"); + } + + function findCodeBlocks() { + var spans = document.getElementById("tabs").getElementsByTagName("span"); + var codeBlocks = []; + for (var i = 0; i < spans.length; ++i) { + if (spans[i].className.indexOf("code") >= 0) { + codeBlocks.push(spans[i]); + } + } + return codeBlocks; + } + + function forAllCodeBlocks(operation) { + var codeBlocks = findCodeBlocks(); + + for (var i = 0; i < codeBlocks.length; ++i) { + operation(codeBlocks[i], "wrapped"); + } + } + + function toggleLineWrapping() { + var checkBox = getCheckBox(); + + if (checkBox.checked) { + forAllCodeBlocks(addClass); + } else { + forAllCodeBlocks(removeClass); + } + } + + function initControls() { + if (findCodeBlocks().length > 0) { + var checkBox = getCheckBox(); + var label = getLabelForCheckBox(); + + checkBox.onclick = toggleLineWrapping; + checkBox.checked = false; + + removeClass(label, "hidden"); + } + } + + function switchTab() { + var id = this.id.substr(1); + + for (var i = 0; i < tabs.tabs.length; i++) { + if (tabs.tabs[i].id === id) { + tabs.select(i); + break; + } + } + + return false; + } + + function select(i) { + this.deselectAll(); + + changeElementClass(this.tabs[i], "tab selected"); + changeElementClass(this.headers[i], "selected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var h2 = document.createElement("H2"); + + h2.appendChild(document.createTextNode(this.titles[i])); + this.headers[i].appendChild(h2); + } + + function deselectAll() { + for (var i = 0; i < this.tabs.length; i++) { + changeElementClass(this.tabs[i], "tab deselected"); + changeElementClass(this.headers[i], "deselected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var a = document.createElement("A"); + + a.setAttribute("id", "ltab" + i); + a.setAttribute("href", "#tab" + i); + a.onclick = switchTab; + a.appendChild(document.createTextNode(this.titles[i])); + + this.headers[i].appendChild(a); + } + } + + function findTabs(container) { + return findChildElements(container, "DIV", "tab"); + } + + function findHeaders(container) { + var owner = findChildElements(container, "UL", "tabLinks"); + return findChildElements(owner[0], "LI", null); + } + + function findTitles(tabs) { + var titles = []; + + for (var i = 0; i < tabs.length; i++) { + var tab = tabs[i]; + var header = findChildElements(tab, "H2", null)[0]; + + header.parentNode.removeChild(header); + + if (header.innerText) { + titles.push(header.innerText); + } else { + titles.push(header.textContent); + } + } + + return titles; + } + + function findChildElements(container, name, targetClass) { + var elements = []; + var children = container.childNodes; + + for (var i = 0; i < children.length; i++) { + var child = children.item(i); + + if (child.nodeType === 1 && child.nodeName === name) { + if (targetClass && child.className.indexOf(targetClass) < 0) { + continue; + } + + elements.push(child); + } + } + + return elements; + } + + // Entry point. + + window.onload = function() { + initTabs(); + initControls(); + }; +} (window, window.document)); \ No newline at end of file diff --git a/java/lib/build/reports/tests/test/packages/javabushka.html b/java/lib/build/reports/tests/test/packages/javabushka.html new file mode 100644 index 0000000000..c50fe5999a --- /dev/null +++ b/java/lib/build/reports/tests/test/packages/javabushka.html @@ -0,0 +1,103 @@ + + + + + +Test results - Package javabushka + + + + + +
+

Package javabushka

+ +
+ + + + + +
+
+ + + + + + + +
+
+
1
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.002s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+LibraryTest +1000.002s100%
+
+
+ +
+ + diff --git a/java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml b/java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml new file mode 100644 index 0000000000..d06e1fe97d --- /dev/null +++ b/java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/java/lib/build/test-results/test/binary/output.bin b/java/lib/build/test-results/test/binary/output.bin new file mode 100644 index 0000000000..e69de29bb2 diff --git a/java/lib/build/test-results/test/binary/output.bin.idx b/java/lib/build/test-results/test/binary/output.bin.idx new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/java/lib/build/test-results/test/binary/results.bin b/java/lib/build/test-results/test/binary/results.bin new file mode 100644 index 0000000000000000000000000000000000000000..f5767307578ed46df57c9e327fa93b66a3c43c2d GIT binary patch literal 128 zcmZQ(WSX9pSeBSnTAY!csOOWJRFqg$8IoFDf+*GIr-_(+f Z{FI>7lG38Q;*g@!RJ@W5Oi)vb82})PFZTcd literal 0 HcmV?d00001 diff --git a/java/lib/build/tmp/compileJava/previous-compilation-data.bin b/java/lib/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 0000000000000000000000000000000000000000..28d5565cd61893d10507bce77ba30fa1dca615b3 GIT binary patch literal 2859 zcmb7GYgAKL7CzgcP&M=@SQXS#MNu(FO9ez!27?hagg1(>dWkp5C6{~S%?%J=hzTGs zUkE5nt*upjfcU6FtAZ9P)Uj%*S_kK4N2g=!YpF|})-LCScD3_s*2=wW<*ajZ_TJz3 z?S1w=fV4pRpt39`hsm^AO=d=c3OrCTmnkul9a~=n-d?sS;Z?%Rt4~{o%iRdANB{Hu zHVN)a`Vmj!MP5Try_nq}6&pp-$g=}bF`Z_M!a(HUL?x=QFnTj%WL2DC5b>t8#*~nV zK8>kQBDUvDK4tb!dp#MGL1ZxTA--e?c>_5`$v6~k)tgwonUxF@lg;Lel6k-|RA`eq zemE+YSc@pheyDJzjo}sksHk^70+k7_1M1BIY zeMNcSE#!K_#te6&&2_gdkJXERhY?w(v%Us72*%R7ISHYR?y zPL~j!n3zP8NeU`*)mUCCD*IhSMH(t)TuGH#$(oKF61#ws5Cj{~FGL&c8K{^wFg9Ms zyOsa>wlVNYw??Qx^OwCHs~3^Q#B&M#+p1?QtP-P6-g==sYW~uvucW~#mHn0`FVnu8 z9JL&6WMzgE*cA*aq&WFZDz+(t^Re(eHPuBHaJUX*72I` zWFbx@7P6A~N~kEuRS)+wLWw97_Z2zguLmcnzx!pr4&J2F{n2}LJ7=^ zDh0G5qzsTFGfPnps9c~&-9q`$g2fGON4c#gW#iOv+vioK7g{SIVH4;!!<;RUx)tW~ z3WXwf8#NVJ9DUV3mgpBpbu66wXP+&(ODaLT9RjN$sTyKb8KH_AKu*po1WZ<-I}o`JNp>c2bJ9fXXZqm)#54s>F}4UB7vzId1c<@fV_A8=D?k2MK?K6xDlx zifx%Pt=nA`wgHD6x)gi2O5N7;_}2C<6~{B)hnTz!JaXVs$Bi$mFSLF*dUef}cRO|i z`GCgwkjj|N$h29!*tGh9kso)=*-`V487*n+_5k^aZrDpTlUM`K>SZPVIa^iL6Eo;l zW5y55*S3VU?t|ERh^vDAG_Y_0PzlG<=BhW@@%@q=&IV0p(7MST19p~g4Lt}8Rvn^r zO{{=J2O1xp-(1JF4XqkEZjI-xnRtK8oXhh!kG~uF)T`;uxOg*wW^xV__ zt;C(_e|shPx17Fjo6=x@k2~B1qSu zoAIoz84_AxLDVM{JIk0qrE=Nmk;c#MS+fmqra1@8+WS96h?h@6;%SJEIzv-tlSPT; zS;oq?QX^61@xAL0d`lk8UZg8KRDT4Y+t>!_XCX~IM-wNQ1u<9njMfXoV`;-QA^h*N z^2D}@|Ne18?8|l_9Y8*(0EeBYj`gCTw@DJ!Ly0{M?ak`Zd;8}!92!26>qMQ9)&=AX zAQyo6{s~a2wYMZV!RV(Lfq(Q(+BME&&U3G!+h>|%CTlJN`I36QMA>9goJy<+o_YuA zUev_iw3W1v*DtvYR5q9qT>ocheu)Ti&h#_~HR;@aB zqU=~f_4E87ZW~Vr1T&F_{#F6KI{ZImOWk&^ciSS% zZHqh#-9ZZp=%__baN9wV`z96cn^d~+QHks5=;?$Cpb7KNqA7d-7vTHopzsc+3kO{b zl+jGLnH+N;R}^!YC^G7o0} literal 0 HcmV?d00001 diff --git a/java/lib/build/tmp/compileTestJava/previous-compilation-data.bin b/java/lib/build/tmp/compileTestJava/previous-compilation-data.bin new file mode 100644 index 0000000000000000000000000000000000000000..08a1bf7d5fb3fc7dd6ce4bb2f2ad4410e30da8d6 GIT binary patch literal 3207 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 literal 0 HcmV?d00001 diff --git a/java/lib/build/tmp/jar/MANIFEST.MF b/java/lib/build/tmp/jar/MANIFEST.MF new file mode 100644 index 0000000000..58630c02ef --- /dev/null +++ b/java/lib/build/tmp/jar/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/java/lib/src/main/java/javabushka/Library.java b/java/lib/src/main/java/javabushka/Library.java new file mode 100644 index 0000000000..ff87ce99ce --- /dev/null +++ b/java/lib/src/main/java/javabushka/Library.java @@ -0,0 +1,10 @@ +/* + * This Java source file was generated by the Gradle 'init' task. + */ +package javabushka; + +public class Library { + public boolean someLibraryMethod() { + return true; + } +} diff --git a/java/lib/src/test/java/javabushka/LibraryTest.java b/java/lib/src/test/java/javabushka/LibraryTest.java new file mode 100644 index 0000000000..0676a72ab8 --- /dev/null +++ b/java/lib/src/test/java/javabushka/LibraryTest.java @@ -0,0 +1,14 @@ +/* + * This Java source file was generated by the Gradle 'init' task. + */ +package javabushka; + +import org.junit.Test; +import static org.junit.Assert.*; + +public class LibraryTest { + @Test public void someLibraryMethodReturnsTrue() { + Library classUnderTest = new Library(); + assertTrue("someLibraryMethod should return 'true'", classUnderTest.someLibraryMethod()); + } +} diff --git a/java/settings.gradle b/java/settings.gradle new file mode 100644 index 0000000000..f4ab308fd0 --- /dev/null +++ b/java/settings.gradle @@ -0,0 +1,15 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.3/userguide/building_swift_projects.html in the Gradle documentation. + */ + +plugins { + // Apply the foojay-resolver plugin to allow automatic download of JDKs + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.4.0' +} + +rootProject.name = 'javabushka' +include('lib') +include('benchmarks') From 6d1852feeffe000a48d577947a9634f65365ed28 Mon Sep 17 00:00:00 2001 From: acarbonetto Date: Mon, 25 Sep 2023 22:46:09 -0700 Subject: [PATCH 02/14] Start ignoring .gradle files Signed-off-by: acarbonetto --- java/.gradle/8.3/checksums/checksums.lock | Bin 17 -> 0 bytes .../dependencies-accessors.lock | Bin 17 -> 0 bytes .../8.3/dependencies-accessors/gc.properties | 0 .../8.3/executionHistory/executionHistory.bin | Bin 78284 -> 0 bytes .../8.3/executionHistory/executionHistory.lock | Bin 17 -> 0 bytes java/.gradle/8.3/fileChanges/last-build.bin | Bin 1 -> 0 bytes java/.gradle/8.3/fileHashes/fileHashes.bin | Bin 20697 -> 0 bytes java/.gradle/8.3/fileHashes/fileHashes.lock | Bin 17 -> 0 bytes .../8.3/fileHashes/resourceHashesCache.bin | Bin 18871 -> 0 bytes java/.gradle/8.3/gc.properties | 0 .../buildOutputCleanup/buildOutputCleanup.lock | Bin 17 -> 0 bytes .../.gradle/buildOutputCleanup/cache.properties | 2 -- java/.gradle/buildOutputCleanup/outputFiles.bin | Bin 19613 -> 0 bytes java/.gradle/file-system.probe | Bin 8 -> 0 bytes java/.gradle/vcs-1/gc.properties | 0 15 files changed, 2 deletions(-) delete mode 100644 java/.gradle/8.3/checksums/checksums.lock delete mode 100644 java/.gradle/8.3/dependencies-accessors/dependencies-accessors.lock delete mode 100644 java/.gradle/8.3/dependencies-accessors/gc.properties delete mode 100644 java/.gradle/8.3/executionHistory/executionHistory.bin delete mode 100644 java/.gradle/8.3/executionHistory/executionHistory.lock delete mode 100644 java/.gradle/8.3/fileChanges/last-build.bin delete mode 100644 java/.gradle/8.3/fileHashes/fileHashes.bin delete mode 100644 java/.gradle/8.3/fileHashes/fileHashes.lock delete mode 100644 java/.gradle/8.3/fileHashes/resourceHashesCache.bin delete mode 100644 java/.gradle/8.3/gc.properties delete mode 100644 java/.gradle/buildOutputCleanup/buildOutputCleanup.lock delete mode 100644 java/.gradle/buildOutputCleanup/cache.properties delete mode 100644 java/.gradle/buildOutputCleanup/outputFiles.bin delete mode 100644 java/.gradle/file-system.probe delete mode 100644 java/.gradle/vcs-1/gc.properties diff --git a/java/.gradle/8.3/checksums/checksums.lock b/java/.gradle/8.3/checksums/checksums.lock deleted file mode 100644 index 4d7dc379235fd25b65af61a4fe1e8e36ae8f02b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 ScmZSf^x4jQ#;>`C0SW*q)dOq* diff --git a/java/.gradle/8.3/dependencies-accessors/dependencies-accessors.lock b/java/.gradle/8.3/dependencies-accessors/dependencies-accessors.lock deleted file mode 100644 index 2c220632c8e62ceb41f0e70ad45a9a8d910fc5d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 TcmZQpJA33)_2qtV1}FdkJhueZ diff --git a/java/.gradle/8.3/dependencies-accessors/gc.properties b/java/.gradle/8.3/dependencies-accessors/gc.properties deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/java/.gradle/8.3/executionHistory/executionHistory.bin b/java/.gradle/8.3/executionHistory/executionHistory.bin deleted file mode 100644 index d8e78a38daa55f7ccefbd7712e43049b34e65dc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78284 zcmeGl2Yge-J4qQ8P*V_OgUF~rlQ)vQgrRgHqfjhG5M{jCrnE_UNejinUIGGED0?Hw zP?m_wlC20RhziIML{L;jWv~Bt? z6i_JeU!gz`=tw2GGc{Xk(3i&tsZ>}M_)_7U>!D|szdrX9`SrU_xBlSgkFVfYI&?lJ zKmW<(e*Qu~ww+_aZB~Bn_`?0XPpew}g;lG6lb?5pbU*KZJ*fwCE8#2Yxw`6O?&o~p z?zggS;-2EG#FO=UYKNSin6i_IjP(Y!8LIH&W3I!AjC=^gApin@efI6i_IjP(Y!8LIH&W z3I!AjC=^gApin@efIwbIrrlDPN-cFKrR23HhN-rBV3v}ZrgPfuscbTBwdt%jCokIQR9y@&&>5-D zME4sHbVVO5r+ZefOXHn1M?2{-)taK)LG|V~;#2Xvek<0c(zc`wI*EUg7adl+t-9I= zu-~fRRplL`s!h=txO$2ZiOXN_@S55Sb2@}>(5TcMRTVSk#s;Uu0EaE~j~E)_j<)m+ zrz1@DVbM+J>%0W#(~&hrHKenqrKj>~yv<2FffgZCGI<+k7b6_$JZlxK?AjtLc=*&@ zUL=lkr$R>2wycS$uxsQ)XL}GCt+7sd?>9-(X1Flj!srooRlTTGmbr;}mtevykl2p@kpA2^LHncuttfE8pj{C7dTT|n0 zv7%@f)su1`+Qk8yydv;dyqkc9v(ff>MGK+ce9v}VHS74nJe%R9nN(gi$KQLH6B3bg zX<)UnqP)^lBL(1-?V%?bBCpPcMl(~M1YLlcMyJvahiaC)>b#e($*Y>;ekJm$JPkX? zI}Uq>$nt1Xz+z^ssW4$fM&i^vPFhUjoj%XYzsaIDpm1`HGa7vl2e2r8irof()3#K5 zhLzX5HXuDqv&p4%egEL8qhlXmX{&tkt`IN2Ebbq@L87pcrpp zXp33EIRitoW{hVICelI(gptQA2HHduywNPMjF2BVLIT#M&|--8SKY~o5#0e9@5He&$9;A$G%)FK$jxu5f0wzViIwJDbA!GjA^e)!xrVZO~{z*(7zT%@Ano}jl z+-DLX)&dKXW?A0h(BnD`rY+8~FlTwvOwbtMYotle%wT4N#b_|GW-~*xIAI}Ji#{K4 zgaj;OJS%E$Qq0IHRhC|CQRjNMuu7#fZGl_zI>Bn=fcwI%aEK&kgq4Qr2t6z*SWSQ> zOOj^VOi?6GGMvFg5gaM-n9;=3lv%(y7ZfZpfRb^IJ>VR3U-)BjLfzA~F4|&V(VQ(Y zbrD+tp1=;^MM0#~_(8yF^{xjI12gDUz?Ouj^&C$yCX6u=9BnXDCWAp>aa^EC15W{? zU@*o&;sj|1#vs=w0Rz$qSjO74x=U!AsQ0Pg(H?J*~Kw8f;0b{nsk zzV?&8_oHn#yL?u1=z(3Bp$BFQV=@~EBZXN^f)N%VOC(t1Y6zCUbWRHEj5X>=xqurn#FUj7x4zYk_TYc>)T#siz< zDaK3?0*;wYjD<9rEjVFd%ofUI<_U`Q0}r^HWyB-5^qq6#-l44vM;_QPJbmvq&DSMH z9L*g^s$fXbOFtvv-~-E%(vc>;i8T=>GfoqN$!KH@7K@3bjTSS>z)Z0iG1`O^7|r8` zJV;oJ2vSCJ&BUvZjF`=heLC}_DvzyPu6w`$Cv~YjDoy-Mo7?TP5`uw^}Y`y*GxavcEg`_{%FDDU%Tg4#)ClT(B^h0X7gbY;=s-V8$#oXO_Ss z++Z?x>km&Ku=B!U{r%e2b3(2huc0|yV(dJYpTyvj5R%dlAO~W{3`xUAOqn?YaAbxu z1E<3n+(hA|1*6SIGlmfY&zM*V2+1PBSmf(&q!lsPtEGAuhD_nr}l-Yp6u11g?a0MPCEGC>W87SB_1Pf>3I371y zEF@;iUkB{bd3DHmf801>Z+86{uFt;9_~G%dy`VW5Qqq%}7v4^hwmH)6qB8G0xSQ!YcOD!<@J? z?ZxBm`w%~}sRN&SJx5dWv#3`O(Hvs)cg4aAyn)07GlRnh!_a1v#bn{kJPxy*rr`v| z!%+oxM^{&*8vNk=>_?lMe>nMe?bhRKjj3R4cTaP%v}RK-@$%!%F&u7WX~JM&cmmLc zvoy~U76wMa2polhVIV1(XFfyVJEQE>^3-Fx_0_8NJG}mIxuZ=VV2AOdx5zu}sUYac zk2-I}ImT!-!CAzN^BCeQa3CR#aF%9`7K&p@*l8qXZ zu8!LL0L#jI8O*TN7%4_D8w>>O_5yCkZ~<1d1?Ihr;&K&! zu-;s|de5-$UwA97#(N@t`RO{Phqd3O3i}N3LlZ%=3=1b~bT@!~(QGhr0%5>893ybp zIoaI#jaIuKtgo8*t@cJq;U8-5Mt&Yz^PcAPgG_KZI;HTe6P>M{c2V#8EngH!beAFY z2BT5Hfyr<%OL&~38N$pm1Pf3)FD_y#>`HW_G~Brp!9G6h?vQJ@G5O~Mrn zCObu$OmIcR8OjGcbr|Y_^aPv?6hrPFx|zqhhF<_@r=2ftEYXurDe5&S(nPl zO*VUf5^^3D}20l|N(=`ycaP8W& zy>D56og4RL=!t)*RPShvu3@DBf9T+DLm?Chq8ME*S<1q&4%pnp1bX+ znbVhQRC{*WxPNQ)O*7k&wTCw|_Ec4g+j8o9@ZG+()Z>?K)o8zYz}5QtX2y0KV;*c` z|0{QI?VHzbPhNBATFTF{1}B}+ZdnlBytT)ge{f{Qu^sk5Y8?<3eNFTW!h5&2`5z5> zf7RfPDSYo|AD?xt-QQ*6)~#(lD&?(DRi{QgweUa&_ov~N|Ja>dyLL^}-L-c$Tt4E4 zJ?CZfqIyAp+RWD^K{Ag z6R%6F`=*@#+FDAtZS9u%%Z|?Z2{eHfCuKa^WATiVGixuj19#Wf_I~x$)E*}r&u$y? zPp^9)ZMjiuI0x>gt^FnA{bP*2%9g9yi6<=mH&zMud$zXs*zqfewhUYIwUF~o?PGWA zmz7(#_Wa-NK3O|9qiWQ*&2ABf55l!Q&(;*njSjzbp;5P?;ZX^Pb2asO`jKv;9Vr9t zA~MTR&30?t8N1yHVgNc_Qqm&@x+>fKPFBK8&)#xK_5s}`wY)>K)4x0-#?EFS1007w z7S!=hYc$fO>zRQO0#cbVG?U>-9zg4n0f3$XJBj2pS{&feJ49BW26h7S3-s1iP*xSY zG{v2ezBpP^9)qYMlMd1T-P}HDX1j!=cUukHwXOb-8S3|n3%mDU#ow(}j+3>^`TCGP zyZ64xxleu7ukzjw*k7jE>eaq|C>UOSTu!Q>o&_WLQ%LY z3RQhJs;i^!j?O*Cjo*3w8Dhs0c=Yt>Yu73@>!GD~YjUQa+O!THwO?~BG-k%|NjWL6 zcZ+^KVi!C*`Lg+=iVJ5QpEo1)#pnvNT9#YpUW7@!jh9R!<+T@|;RLI?JYw%C)tM|4 zJGV)_%mEyFKWrp#C;f#dfC~^vmhhZiz?s%hU;H2a zUHuuJnO22cye+C$k0GtHQ%1e0e&4r0g;Y>-QJG>Wok=T((htp0dbfYZQVa|K6fg{f zH7@-Gb0QLKjLkG_0TVXPLXu#Z0VcW(O9@7>XC%Q^P%v;5&lnjRCuAsOUjk6FtwZGI z?Z*e}mY#UJ_58DR=RPTl1-D|stypmT_pN~ouG>#VvEY{3hho7EwrPq5w_?HV%!>`6$|c?d2f0tX9KEJ4$&$W-1%KcV1M^@wooj%b1k^PE%BWNUAB|yH1N1~IQ8x? zvcWkHuCoS$CXC4Q0Jj(ji-7S)4l`jG*lJTa&4OPUBVag2WBEbBWSf*vA(fvxdNQi= zDwFQ1U+3(I9dooS+nU$@S5%Ka%DNu|pv^+;3%S6tF0hPhPTuKzY|Iw*C<4!i&}cmCGo${+{7H z0wg8~n&bF@6>u*upO&mF2ez?U3A_Ws@;Y4Tr@Zt- z_~LI5zSU9ewy6HVsBLN~U~Yc9Fh78w`dZjr(VeUIyWyn+2pz%+mXP7R&)920bx8hQcp%nz!>kO|}Db%l`;PxhtnqRh#rqzLKCa zhiGN${FOQ~AojV9Q_tk&81~W0v+ukHq#7=CPcZm5^c6OqH>SgxLL} z6tr7C7J?%~`7qVzYLDKd=-s&i!{uQ9?vatpyCaCBacVEs;6VuQfZmH-FzB`d@dx9q zHol{cP0ip?0C5zA-|?s_$5nxCRkyQ{qm?PQZ-ilCMqYBw0ftIl7alm;M< z&Hxuw)VmU<0dQB~6D(Xx1K@s}>m*cKX#jjG4i@htU&I2G2B5HpisgM&Xazx%2B1(J zA1n>PICn(%iD~rU4m_RS-8zIn}Idyo+B%!<8Y)E?RkDCAsfhOu_TrIFU#E6_OR~EhfKnX9odxlL#p<5@h&7xZNCA z6K;<0g3u*9(^A7!hrFAWOQSt6m*Jvzp3ij(hF7V4t~;F%t3rx)uN_AQL!^*VYb-kzqq1+tbWDhiPK-}@X=!1Vi~PV0@KWd03koPDO|4#NAoh3< zL@xOe4IDc6WOV0DL9-D6Wy}hp|EeNd&Nl`h$<-Be4BW^+Q)C-yJS0&_;KdA^LsJmJ z+_mYXfgA7sb6rvR%LCYr7tszJ4Y?dND~ktG@-cs}s0MP!J=?+3Hb|5q;fC&kyhAzmmX%HR*u82-x5s#^+qtR{e4)yMO0|`?+j|qjGfh1bV3<@=rTagc&n&-D2oy&DT z|8b#2d~i*n4M5%x=~(2+0gHg}!!tv&{e%#C2k6XM!I7PhMr4LFAnz!DBmh?x>9XsN z3xRrDgs9G25D?-c2=FI%@e~Po*HF45BtM>k#psoM=MT|(iz(DgeMLx~eUah5dPw8q zPn;-?XNcBYa-v@4+mQmn3kZr@LZM#qN5r25Cq(Nl!BH>s?TSChZywU96eMDFjf}Tg zNiF5&$}eawv@ex&NQ$IHA_g3p4`&rfPyI)X!vvP_Y(MaM?NX1ZJVNXRz zYAXI>@MSX!dy?6$!k&C1fE9mU70O#ev=7Xlf-Y!*ci^hB9<;zade(n0Xu%-M=qDQA zcKoId8~a)NUm|aoPMWO1WOrLs@2g+M%sw-XkuN9p>wn?SEkd>?fi4^&!*EAm$iC(Nw@FT{&+bkv$uUQ z??j`q&o^v-Y_IyQFS(Dudcb+|uSAd!(Gs~ z^Xl|>RS2S12AtdEX{ORz{ z6GIz+QQ`Z6ja7a1mr4)oz}cCHXgAa_omEw9-DQR?e!|YtpS@NFvbX8d&mZi5b@_@) z_xs*;S{h!}1gWigh&J{g;!c-!wtwggt?%}K>~5bjHGqd=G;hqi$=@dga?J)203H4&VY zaTq0@fDm1dh;+L>l|UKgaXF*Bk{M8kV?aoTq&dz2d7BNSnP4CnJWXH>WT3`L3r3rb zW(*?)o-widBnKp#2KoVzv<)bk0d<~k$H5WHQOOMGbY{77qvwuD{sem*!{J7jCJY9K zCm`%3Z87s4VPPzA00J(;2sA}fJVtoe;*(@u$qe|f$#Im-fZ%(T0-467r1o}EPDXDR z<$#E!&Y&X+y}@V{a3gSX+6>d0q8Y->G6c)AypiB6tRU@&Cft}0I6?-NIJ$Rcz#x_2 z{D-0iynN7+IJ42gUUg1aOM3mnPp3n2AOjW+erd9scdmzn>Qbq?`OAh!NX!xefk}`< zx$N~XH?E!_o3qQ=xG45(?Zy|zSDSc(sz0xM^(hOsehog3rz)x^=ate~xxp&!x#gQS z+!!1FOu~_d+mBX{Bju9G>WQv4wbB@buS`2bMJWnwQ8M<$VKoXhswGg1IpxS=d6 zI>|Oym)|KGp{mkOnJ_Y~#mQz9U#vA?!1>G1_LMuFQ_Iur+Fgt5_N|Na@^F@GYE<96 z^EftRN4KFP?8`g8cT%otpXA`2aVIr$uaj!muYdf?I%j`Tjba@R^<)Oz5h5JUEOa|W zKHyJIJrg#6(8Z_wtavS%=v%(OT*J{P)Ngte`j*)!OxQp6r9W=K|*rYeQgsLZ4Z5%&X^5s!!qlOQxH+e_B>e=OQ9a#0*{0cJQs2Zw~ zDGv3UGC?7N0h1sVbj%BI?|(>;|)z>4oW^*M-ZFqqTrev)Vn5SZCW;R!qJ1 zeU;ZPmHVJ5Zw#;58VG5o&w5sk4YCET{va{7dt!v|Som8xgVDmlx7Y64YwpS_-ToSu zbFSN{I`XhAsiaw({8?6?cS-uA48f?22Jh-1Y0iPr2Q=|vCDpJWcsPc4U1cytV6Ykw?GDP#u^X2OV z{^E)5$3Ff+QVf%5IbEcZYtVxN$Oli!HE0W+?d2kgrjwFuQ0EyLAxx#@8vO6)8mt)f z@z6uGzv@m#9RD3Fx9o?=eoLRWilt-58VF@!h&E3x6z5sC&BBMO(}(4`7M&FB%CenazSS zvsv)7zA~H&LP-yxqz9;1aYXkWFNH_l>~Pb+OLj3_ctG_UT$=OqrO}muCvw#4n`X8l zYY%T`?5U~}x8>AzZO^kc#d4#=FI{NVZD@E@!r=w3U>Q2vX0tmb`6tBdK(X2EB7_f1 zR?T)7@DrsX+x<>XwIc*H6XHoT$2bb~s;H7QytYQ53G4+3&KKA~i;j{3!iyP$g zWa%K|#|aqG%rm;D`YksVB;m74>$uVQr@p=8@5kTy=ATWqoQGvO))@`Rv78Og{QPxN z&X6guzjC>5&yz2~qhCkdro7x_%9J;MR&z_fI0s>Bc?APx;J zt6bKdUi3|s@D=wT9kTe-$7AMgytNala8}kpGR`N?fQ+-|CHR~}pQ2@)eH0m|BI9%i zDJ_nGR}xwJNO`3ID!x))MaC&QAYQW~d5!BT__OPjg1fXab`nvjKbzFv>SmJNHRZ5NhBKHbf+GbUGn#msG7A{zf&%L^fRcw@kqja zA2u*5@d133J!C%t7ns1x+|qZ>jeCc-E*yDa!|?RI*Misi)F<(D<-p1jd~W~8OLIR3 z%RVJvvjcfWAU_kgurmGf+Q@2sil4k8FWr0C#% zI77gN zgMNAPH%_&`#xYsn@m_gQ5?nc5{!+cW-S_OM&HlCGpYAL?`YdbY;~m0RyuRn+RQrcJ zKL0T2^&N-?L9Xv82*m>R9d}FfnCYSKNCa9HN9S?n$0nWUo__P*g+IEkn6h|uzuUWz z&SPvXr1PlxC+IvHdWIwdogD{q&QnXBKb-&N%uqN|Q@h)rc;Wf1v=5z?%pi!wiswzSzIHWomoUT%-!WN>fwXj@L zVX6;{ZW=L~Tt|gM^jL*8q-5rDD+^IF7erBCTYV)nmkniA^vO%3Wai4v%(W^(N;2j* zD^#kLQBrcr$u6Y?aiyM;YfbTp?@pJcSO;_2K3(J8sO_(67YfIF#}JK5L2oQq3+ zt28eq`E<$Xe&k1&jBYF7rwqx!LbTqOSWjPOx0z#Jd3E5_0ti>1OLCE!f-03E;ypB* z0dK?1GHo+ZrZaj3hk7JLt0bPV+XJN{Q4&vhY8`n|w2KfX$j0lXul=O&{qn4=9eU7H znspe&&SOkw17V~vi%BpV%mPhXXo?do0!PyZ%)%MqzhJ=&st4&ip&r?6!zb}XkZK(K z#C@*vFYmDdQoT$2xp%naz;#UuTI}sp5TLF}ZFzSs=*{iQujcU&h(#_H*#Gba;k?KkzvK7el^#4zYx~l`TTYuc4 z=c^6oW0|)n@7*J-hgH52>QJ$c~aUK6sGOc?a`^LIy#+k=#XYOe@&H&>gE;}t57 zoZ0&@cZwZbPcAh~4Jz7MO*iUB^Y0G7aP{!H-siPb|E~yjr%F@$;EFfqH#D7xU4hP1 zn=VH>yE6OQfaqDZ%-C5OHd&=K0?vnxMRV^}toLq2J5fS93AkC0$@$U**_s4=I z@#9x!k8Zeo?$3)pFm06U*@g(xtX;hM-H2)x2A$k&{j{EL3OvfLdtgSdDZQICKhVFz zCpmr7|L@RmrFt?$XTN+g9R0_9dw45Ey}&zAo9B#_qOxU9H>SLOaZ=0=ck4WIcA;jv hO#ekFB4o(a&iyKJgSJ~Ljcb!Qa?38Hy>IZz{{U^(#D)L> diff --git a/java/.gradle/8.3/executionHistory/executionHistory.lock b/java/.gradle/8.3/executionHistory/executionHistory.lock deleted file mode 100644 index 9eb5ac82f594855606c8aa33a2d65181d1b411f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 UcmZS1pKZR}<@)zo3=qHr05?wrqyPW_ diff --git a/java/.gradle/8.3/fileChanges/last-build.bin b/java/.gradle/8.3/fileChanges/last-build.bin deleted file mode 100644 index f76dd238ade08917e6712764a16a22005a50573d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1 IcmZPo000310RR91 diff --git a/java/.gradle/8.3/fileHashes/fileHashes.bin b/java/.gradle/8.3/fileHashes/fileHashes.bin deleted file mode 100644 index 33e5f52cbc87c44c4cecea32ec4acb2bbd8f44e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20697 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 Lu7Ga(LcH+{FFO9s diff --git a/java/.gradle/8.3/gc.properties b/java/.gradle/8.3/gc.properties deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/java/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/java/.gradle/buildOutputCleanup/buildOutputCleanup.lock deleted file mode 100644 index a70269903cac8ed3d78ad1a50897a704a1ba452c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 TcmZQ(H`P3B+o1WG0Ro%>BDe!c diff --git a/java/.gradle/buildOutputCleanup/cache.properties b/java/.gradle/buildOutputCleanup/cache.properties deleted file mode 100644 index 8e4ae79e89..0000000000 --- a/java/.gradle/buildOutputCleanup/cache.properties +++ /dev/null @@ -1,2 +0,0 @@ -#Wed Sep 06 20:33:36 PDT 2023 -gradle.version=8.3 diff --git a/java/.gradle/buildOutputCleanup/outputFiles.bin b/java/.gradle/buildOutputCleanup/outputFiles.bin deleted file mode 100644 index b453ac1dbefb5ef369d454af308cd29da6de174e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19613 zcmeI&eM}Q~7{Kv!ptz}36k<{4GN+>H$N(XuDhLC%-d%$bf-j9u%gfl%xv{|z!6^w; zt1v_<%xFy%@Lh=7NtFoWk8NceC`*-}BTg_YWa1S;*6ba{1hI z4|m^&zaX09@@!e{{29oz4}_Z69{%EJY?Pt|F3W1n)?VuQ{P=0jZmTg%kbzDIkQt6xB`bL`-(1x4~tVE-ia)>eJruaU+vu>UxE zd#2?p!7Fkd?Ds?e?s=iaQq6V3e1*%)!rqmg>plka-so3thdhg057?NCCFos2fp&ZC zHU)E4D*E+)TW<761^ZzBFZ4cHMsjA3RR#N-(H;IVRbBTr*TJjN-O732t}Vr8=ISVy z|1!O>N7s0Uxk~SH`?$-mbyrq^KSUoFne924o^%2BB%)8PaR0rbHNBWQ{~@}3QG8{J zbz(kqK}4TXb0t9kI6)8d3iO$3ZQ4nX6>^wIcFdm~;=Ns7Yh^C3!V`*!x5^^|Q$k_> zJ@g<&PX46)qJuEM1wFVj>{i*@6*1s1p}*>HN-!OJu#vf{&E@5WT(66dHpBkC=%Ghu z5BQJY?#`UIqA&INCfhgQMk&lI(W6>yOR~Pa`zLep4mw}3qh$Gs_K%sX_M?kUf}w5v zDGPW4dhELXiyISz;rCY+i5^$5I>{ls<;CXtW$5v}MnlKk$Iw~GM^BvH)Lb&>%1YRu zjlTR$(fZi5=4-IW1AS!{H}>wsY54gTqHFx3iszfPaG%0G^fltW-D$?&MX>)z^tIC* zc}>Z+)0vBh(6t#;%wD$ALGbnHNvXOz<$=On=IR{u)Jh;s~XX_9{yHsR_yL)E}lcj?;JPwHakb}RDcRl0V+TR zr~nn90#twsPys4H1*iZOpaN8Y3Qz$mKn17(6`%rCfC^9nDnJFO02QDDRDcRl0V+TR zr~nn90;9FSLg#}$>--w}=k+l|Z?b=h6Go-{cTYO9%}?tp>7L<;^izIXS4lTZMf$U( cGb5A#+vbtokMydMiL~Kx_6+AL>C8X!H^4SMP5=M^ diff --git a/java/.gradle/file-system.probe b/java/.gradle/file-system.probe deleted file mode 100644 index 2578d60fb58d9bf5ae61816d3137ae37f5aa6b26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8 PcmZQzVC>4>e5Dfr2)+Xe diff --git a/java/.gradle/vcs-1/gc.properties b/java/.gradle/vcs-1/gc.properties deleted file mode 100644 index e69de29bb2..0000000000 From 597c99346dc19849e6b21394a1d8ab541336c45c Mon Sep 17 00:00:00 2001 From: acarbonetto Date: Fri, 8 Sep 2023 13:20:17 -0700 Subject: [PATCH 03/14] Update gitignore and remove generated files from git Signed-off-by: acarbonetto --- .gitignore | 3 + .../javabushka/client/jedis/JedisClient.class | Bin 1354 -> 0 bytes .../client/lettuce/LettuceClient.class | Bin 1706 -> 0 bytes .../client/Benchmarking$Operation.class | Bin 250 -> 0 bytes .../test/javabushka/client/Benchmarking.class | Bin 5246 -> 0 bytes .../javabushka/client/LatencyResults.class | Bin 581 -> 0 bytes .../client/jedis/JedisClientIT.class | Bin 3456 -> 0 bytes .../client/lettuce/LettuceClientIT.class | Bin 2526 -> 0 bytes java/benchmarks/build/libs/benchmarks.jar | Bin 2423 -> 0 bytes ...javabushka.client.jedis.JedisClientIT.html | 142 ------------- ...bushka.client.lettuce.LettuceClientIT.html | 115 ----------- .../reports/tests/test/css/base-style.css | 179 ---------------- .../build/reports/tests/test/css/style.css | 84 -------- .../build/reports/tests/test/index.html | 153 -------------- .../build/reports/tests/test/js/report.js | 194 ------------------ .../packages/javabushka.client.jedis.html | 103 ---------- .../packages/javabushka.client.lettuce.html | 103 ---------- ...-javabushka.client.jedis.JedisClientIT.xml | 23 --- ...abushka.client.lettuce.LettuceClientIT.xml | 17 -- .../build/test-results/test/binary/output.bin | Bin 990 -> 0 bytes .../test-results/test/binary/output.bin.idx | Bin 104 -> 0 bytes .../test-results/test/binary/results.bin | Bin 466 -> 0 bytes .../compileJava/previous-compilation-data.bin | Bin 38419 -> 0 bytes .../stash-dir/JedisClientIT.class.uniqueId0 | Bin 3464 -> 0 bytes .../previous-compilation-data.bin | Bin 39190 -> 0 bytes java/benchmarks/build/tmp/jar/MANIFEST.MF | 2 - .../java/main/javabushka/Library.class | Bin 352 -> 0 bytes .../java/test/javabushka/LibraryTest.class | Bin 681 -> 0 bytes java/lib/build/libs/lib.jar | Bin 723 -> 0 bytes .../test/classes/javabushka.LibraryTest.html | 96 --------- .../reports/tests/test/css/base-style.css | 179 ---------------- .../build/reports/tests/test/css/style.css | 84 -------- java/lib/build/reports/tests/test/index.html | 133 ------------ .../lib/build/reports/tests/test/js/report.js | 194 ------------------ .../tests/test/packages/javabushka.html | 103 ---------- .../test/TEST-javabushka.LibraryTest.xml | 7 - .../build/test-results/test/binary/output.bin | 0 .../test-results/test/binary/output.bin.idx | Bin 1 -> 0 bytes .../test-results/test/binary/results.bin | Bin 128 -> 0 bytes .../compileJava/previous-compilation-data.bin | Bin 2859 -> 0 bytes .../previous-compilation-data.bin | Bin 3207 -> 0 bytes java/lib/build/tmp/jar/MANIFEST.MF | 2 - submodules/redis-rs | 1 - 43 files changed, 3 insertions(+), 1914 deletions(-) delete mode 100644 java/benchmarks/build/classes/java/main/javabushka/client/jedis/JedisClient.class delete mode 100644 java/benchmarks/build/classes/java/main/javabushka/client/lettuce/LettuceClient.class delete mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking$Operation.class delete mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking.class delete mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/LatencyResults.class delete mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/jedis/JedisClientIT.class delete mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/lettuce/LettuceClientIT.class delete mode 100644 java/benchmarks/build/libs/benchmarks.jar delete mode 100644 java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html delete mode 100644 java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html delete mode 100644 java/benchmarks/build/reports/tests/test/css/base-style.css delete mode 100644 java/benchmarks/build/reports/tests/test/css/style.css delete mode 100644 java/benchmarks/build/reports/tests/test/index.html delete mode 100644 java/benchmarks/build/reports/tests/test/js/report.js delete mode 100644 java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html delete mode 100644 java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html delete mode 100644 java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml delete mode 100644 java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml delete mode 100644 java/benchmarks/build/test-results/test/binary/output.bin delete mode 100644 java/benchmarks/build/test-results/test/binary/output.bin.idx delete mode 100644 java/benchmarks/build/test-results/test/binary/results.bin delete mode 100644 java/benchmarks/build/tmp/compileJava/previous-compilation-data.bin delete mode 100644 java/benchmarks/build/tmp/compileTestJava/compileTransaction/stash-dir/JedisClientIT.class.uniqueId0 delete mode 100644 java/benchmarks/build/tmp/compileTestJava/previous-compilation-data.bin delete mode 100644 java/benchmarks/build/tmp/jar/MANIFEST.MF delete mode 100644 java/lib/build/classes/java/main/javabushka/Library.class delete mode 100644 java/lib/build/classes/java/test/javabushka/LibraryTest.class delete mode 100644 java/lib/build/libs/lib.jar delete mode 100644 java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html delete mode 100644 java/lib/build/reports/tests/test/css/base-style.css delete mode 100644 java/lib/build/reports/tests/test/css/style.css delete mode 100644 java/lib/build/reports/tests/test/index.html delete mode 100644 java/lib/build/reports/tests/test/js/report.js delete mode 100644 java/lib/build/reports/tests/test/packages/javabushka.html delete mode 100644 java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml delete mode 100644 java/lib/build/test-results/test/binary/output.bin delete mode 100644 java/lib/build/test-results/test/binary/output.bin.idx delete mode 100644 java/lib/build/test-results/test/binary/results.bin delete mode 100644 java/lib/build/tmp/compileJava/previous-compilation-data.bin delete mode 100644 java/lib/build/tmp/compileTestJava/previous-compilation-data.bin delete mode 100644 java/lib/build/tmp/jar/MANIFEST.MF delete mode 160000 submodules/redis-rs diff --git a/.gitignore b/.gitignore index ad4f5014ba..a518788c2d 100644 --- a/.gitignore +++ b/.gitignore @@ -18,7 +18,10 @@ Cargo.lock *.pdb dump.rdb .env +.idea benchmarks/results +benchmarks/build +lib/build # IDE generaged files .vs diff --git a/java/benchmarks/build/classes/java/main/javabushka/client/jedis/JedisClient.class b/java/benchmarks/build/classes/java/main/javabushka/client/jedis/JedisClient.class deleted file mode 100644 index e0af5d106f08fedece943280f1d632c44c98dbe5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1354 zcma)+ZBNrs6vzK}8*~rd*d|OKgz+G-4P=T>n2B#lNHj$akQsf~jmiq8HEl=2ck+cM z3W+9u0Kbag!FbMHvn?A{U+lEEz2|>^=k$N~^Y^zO0JiZYi3p+!Vk$;3Dv&+V&-JRM z+sD;cjT58k3yeNBZPR}y5G|GK3gQB@u5n~~)uv?{w(nI>7kV&l-k% zs5dNnlGpgF)pgh8b?`9ew@go9Sr+@pcxwVV&p9(Rv*GIQ#h&4}oFnO+cLJHFW7}k@ zLua48LL48+E&|2yFTj2xO~s=$)3KRwXu1Nc|2LXCft(r_0wd?T)uwin2hwJ{Cik9| z2JX0IgNtB+>=mI?BIrj3qo~k59TSQrT2<-F??x(D5TEHLf-*&Z4J1&ZsCG7B4ePWL zxPuLfoV-p~-WQ2|<0^@PKSHAd6SNAb*L;PXl~~KE8ODkIWt9Z&M8(TY~e6 zYHmgcBQuskU(+xw+ZgJ$v@-?)~-q`wsvQ@iLAcL?lFI^rDYp=twxb=&o})>hXyEg=}bsnuMadSoNq8h$$#Ld_Cb zvLRE@KRo!d3Y$_J3xgU11t&mF3o_C$7^t3#sfYey_#veI&YD685`Wv@75b$ z)&4-Gjg^g>rFspA`nudvuPeG`yFG_?%T9qRTC}SKK3Fm={Z-?nqB{p_#Ux9*#AoqP zbqxL;7^7a@a2fnW|6@cbKr(3616wpSjaOK?K;L$5*+WwLSU=-L+QykwJ5|jFvAk4< z04!XFz(ffOnTySFq8TdN4M)@W3_siOWH0lGG#^8BmjMxa=whH1ypP43rVtF9wC}+d z-E_nVeY6(HqR^YsyEpe0?2|aMO)LKmD)U2HW&Z$n@QA(`9ygue5+FY}n@daI5Ie_U zF83LOUvTXl<9s`Qfk}pQ%(alyh>}MNF{Fv+FcBXKMVW0z$>RxObBg=!Xt4>QhxTUbpHrN)>?#Fil0931y#ZX8&9ec<~1v Cte-Ie diff --git a/java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking$Operation.class b/java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking$Operation.class deleted file mode 100644 index f4611d8d91a50da0c7a272635794db0760152ae9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmaKnF%E)25JmrhvVv&z0#+8<$O&vTG1^FBV!x0Hptu-z@o*L%z(W}q3u9$7e~Lfz z-+#XD4**LH1suZcByTclbbgjmS{AHKv|^R!7g?VRl}+O-*U}V~66g>{tvf2E%AzI+H5Or1p0)@|7b$EQ;O?#DYa%z@V_h` g!DiYP09mRoJiECNb~@<6|7d{FYG9p~38;Lc0k?bSc@73>r~WAu%hP=t!B@-p3yABObhsuW(ZN#D`-&Bi1h`~ z^_c0TfHI+_a{8WOIvnlx#v+Gf(%~i*&Dcm+w4osxu_s<9S+V+q!L|buO^N4nY*BF; zE+>vz<3=ZhE(!B9RJ2H#0}0(oNxhhg?JNfPlR6W=B--U&-Zd@tu2j*6c4j$iWps`B ztc<#vHoA_qnb>nM7KT8Fia2%(EYQZsQo>&h_UIl3W-`(KYJhGPeUN z_Sw13-jK1v@Z*4rgSeImxhZgpZQZ#NAcyDR58*kuPQf7+*F$5r=egZsrcxvcGs6xn z&*sL)*mTYU?dM2AfqgH4ZbIiQ+PP1t7y@xn63#*b8@+bt&2bHS_=}AbMN-9x?C`P_ zqZ^QI7Q$hSDoDv@WF32G&%t&cp*Uh%I}B6BxFo;wA-kGgdl_UESSoUu;N(0~Za^$= zVid@l8FtuWZxE7>V)X+Go+}WM^9sqbN3%$mlh^3kT*}IZumCrzxCze_2$5bAkc#C6LS15D&Fdhx6F=*5p>4hq2f+=ti_!hhT@F9TjG9em~DC@*e0Xo zPd4rQRJ_4u|y~bXwjK?Ye;N{O(x5qxsS$4G!wVW`lq+6YZCj-V@T?pCa_$+L7P8}9b*zO2zIP4B< zrHKW7mX;Xp<)-9hp{&nHrZp=kqv`*ju_?ObwxZozM0GwV2!uUBxJ@pw{pnhqKUvmq zCF?GclX$!2CD2mTqFVrkb?EkvJC%^`Dmu4Fe9k6t0c)yF19OgTb&Y$A+K%eHX6gr6 zP-gy==S6X@Gn9-&-2!VaY>}*#(#8gdv>Gop*YMD{)a#*}B8Mk<8j~zeYIACPl1+FQdSZ%a4H9fo_?Zar)D>XIkeMwL5E)5=;IZM;{vM$DmXMG)T);RpDkf*(l| z{;@!fy`|as80iUfRF~&GGO=?S@6_ZefGgkbb<P7(aiWRsbO5KlN=X1IsCvGori*vdGmk>W6PXmMiAHWBB z{}A7NxQC|$?teU72z;25X5IzwB@HJbq`-%Jd6mPU>PL809R=KnkMgYyQ=qCnxq)XY z`3p}&sY1o*G!|7PX0QZYMlPMVq;lRgPSLtt<12Kal=m&CvHZYEtnBr-u3B*?YNv70 z)4_PjrZYY zRd|ItgWJGPd6g@B!*NIWCa>_#uJCPM;oDu|JH5hpIkVqm%ko{if-3_tR(C7vaV4*9 z{C_|@l1#kpT&I>s@MU(K{EgtN_!>lINb;)deJ^d4aIB)Po;gS-t8mve-kWgPBHzHZ zo^q(L;gJR_@J$whq>2iBi%))*(YN{L!*}pq-UA$4i|_F%PRJhS+fVQawSI%&;ScuH vqxcgZwV(cqzvCaa&cE#IzwPVe_Vr15<#IRS>yd8L7Z~x>n)Tk3xaGoDJugfN1lAf`w%i ziF!Ob{G~cfl`T}hsn!q0@QQ`n9B$1g7+$lm&N8ep8no3+%Sev{frb5cr_*USdjgsB z@jwYIcXgmHrw@HKxs`pNkaBnINxvs2n%{FU6WwW&-01#i>zKsfjHeS%U1;7``Rn?C z=V6n=6kR!s5?_m|68lavnM^XdN;27?Ob4Rw4T_uedPbV&0NZ(maQ0#tjvZsksbyo7 zoSG4%>a3YDR$r(og)NFZFesLgK^Z1pvVbamE3~qPI##hw>=|+tZR*{n%oU3hNyYNg WNyP%QNyQR*tIfBjt%5f3|LiY%h-dcz diff --git a/java/benchmarks/build/classes/java/test/javabushka/client/jedis/JedisClientIT.class b/java/benchmarks/build/classes/java/test/javabushka/client/jedis/JedisClientIT.class deleted file mode 100644 index f6a062a108adf08ab2aae0eb09a527c036a23ce3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3456 zcmcInX?GJ<7=CVAnh=IIq%5svsZi)bX+RW&qLx;cKnmJ~BH+R_xlN~?%+#4lwYYDn zxZ}nrkKg?4ISM^^jz7TTPg0N1of*QU4agS{hsoXE=Y8JgzW41P|J?o^z!SKUL<~)F zG;3Ie7J<~PzMyAJ-706!PR+`qC(v@lung}>fu_Fx$v6@MJJg}6syj2MXNsmFEiW@G zONN^{rM_eSN)mB2t;QN?ajezQiZ+3r4075Et&C_b+LlG` z1$#mfN?^UfF4wNeoH6C-&f>WAX6#b8J7ZVPQnw?$s$+HcdQMgLDwvHLHlagc-3k%k z2N#og2wib(*02Rz=`!0XXJ)JPQRb-YN{22>>i(cWM1hTcz5#(#^PXc^<>8C{lS)&! zhKI3TpxLmdZGrWD{VR_q(Sx0F?9$MSzPbPfSPYOUt+F@clglb{1B%&h!uC;50(*EQ zFP#PHD4iLlb1xmzfK~(bX{N~|8ulxZO%;7kj@edG_s$#M3`ee~Tb`>ZKBnOS4$^ck zIi9Qb1vWI&aj^;F>W>K=7D!YU_bljURVHwR^z+9GX$U;2;VFy=#LD!E3?Tj^+p>k> zm7WW%sh1p;R&l1HJ9CUe&)IqD=$>I)%$`w<#qqR;V>m9bb!Emy1qHOS^m4jKFhjZm zqkY*1Ng5T2=n9=&^$as})N%C1oZ)&tgOeJvIK>zjb+cGCi9aFTs_9X~q0p1dq#BtR z@LCK-ec+siahxITd1jwi13lOvJPqtv2B=c%8Aj`bidGC0Dq4Ag{DTIn5$AijN`>W| zhDmitTFcT>;gYB2VqSVGm7mjaLFHu=qoL-PG(3+NICmv4Veh@HtGkK)le{Nmc8M3Y zEoWHrOtms4oq|4PawVO!8H!2WG1NRC zqE-lz^7zXHu&Yi{X8o$u;`m9XbgHzk^NzsUyr&oE#`XEo`p)G5ql`vTT_Sm?lSfbOAKS0%=;!DH~ct8{GKfg zDKqJcQQP)h&(Y_D_rPsy!IdOl!|QRpp(@^+0zG#>`{ob*ZEq$5#S<%4HAopa`t4JuY#4 z6Sh9V)v9AzpC5627d}4sKFY^DNG3kxYgm857Za+#;y1xD+c)6&@=J}0*REVBH z5@lL0a7WLKug9qADREEf=?J)Q%TddY9}sW;3C&GQ=vUgBe76L)Y@xPoZ2!6=+B$05 zQkcaY5lu?5asCVKarBHV*Iub3su675YA+09vT0Sk+_9=ofpWs@={>CN}Y{b#7alDRZA8s)H_>uIX z@$_)lz~F8EWq>6dUBZbaoKBzZ8n}&TBP(}fG{o2gyNNJJ#37_;OFQ;5PD6~^L2Soi z?8G4wKgd%f5&DBQ`u&*4%k*js4RL(>k!Yr3>N0XyW%L1>rjk-q&Rjy_CeEL~%Oyzc zBfgFxv9&-4F?hX0j1h8G8F2@LF}b)LW516PZc!NbI-p h4o4s1WBw0DpK|mCPpB^GOLj8XTUO(1e2eeV`7em~aLxb# diff --git a/java/benchmarks/build/classes/java/test/javabushka/client/lettuce/LettuceClientIT.class b/java/benchmarks/build/classes/java/test/javabushka/client/lettuce/LettuceClientIT.class deleted file mode 100644 index 80e5e8ce5a991801fcebcf5cd8edc75dc592a836..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2526 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 diff --git a/java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html b/java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html deleted file mode 100644 index d72630017f..0000000000 --- a/java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - -Test results - Class javabushka.client.jedis.JedisClientIT - - - - - -
-

Class javabushka.client.jedis.JedisClientIT

-
-
- - - - - -
-
- - - - - - - -
-
-
4
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
14.703s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Tests

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TestDurationResult
someLibraryMethodReturnsTrue0.002spassed
testResourceInfo0.001spassed
testResourceInfoBySection0.142spassed
testResourceSetGet14.558spassed
-
-
-

Standard output

- -
Avg. time in ms per SET: 0.07751362659
-SET p50 latency in ms: 0.0456
-SET p90 latency in ms: 0.070699
-SET p99 latency in ms: 0.127282
-SET std dev in ms: 0.665195671610232
-Avg. time in ms per GET: 0.06613250047
-GET p50 latency in ms: 0.040224
-GET p90 latency in ms: 0.058583
-GET p99 latency in ms: 0.10689
-GET std dev in ms: 0.6044885619384261
-
-
-
-
-

Standard error

- -
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
-SLF4J: Defaulting to no-operation (NOP) logger implementation
-SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
-
-
-
-
- -
- - diff --git a/java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html b/java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html deleted file mode 100644 index 2c4bf39157..0000000000 --- a/java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Test results - Class javabushka.client.lettuce.LettuceClientIT - - - - - -
-

Class javabushka.client.lettuce.LettuceClientIT

- -
- - - - - -
-
- - - - - - - -
-
-
1
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
19.114s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Tests

- - - - - - - - - - - - - -
TestDurationResult
testResourceSetGet19.114spassed
-
-
-

Standard output

- -
Avg. time in ms per SET: 0.09530544199
-SET p50 latency in ms: 0.055105
-SET p90 latency in ms: 0.089829
-SET p99 latency in ms: 0.184804
-SET std dev in ms: 0.7259927555734456
-Avg. time in ms per GET: 0.08870054313
-GET p50 latency in ms: 0.052371
-GET p90 latency in ms: 0.081338
-GET p99 latency in ms: 0.145727
-GET std dev in ms: 0.6983375291436595
-
-
-
-
- -
- - diff --git a/java/benchmarks/build/reports/tests/test/css/base-style.css b/java/benchmarks/build/reports/tests/test/css/base-style.css deleted file mode 100644 index 4afa73e3dd..0000000000 --- a/java/benchmarks/build/reports/tests/test/css/base-style.css +++ /dev/null @@ -1,179 +0,0 @@ - -body { - margin: 0; - padding: 0; - font-family: sans-serif; - font-size: 12pt; -} - -body, a, a:visited { - color: #303030; -} - -#content { - padding-left: 50px; - padding-right: 50px; - padding-top: 30px; - padding-bottom: 30px; -} - -#content h1 { - font-size: 160%; - margin-bottom: 10px; -} - -#footer { - margin-top: 100px; - font-size: 80%; - white-space: nowrap; -} - -#footer, #footer a { - color: #a0a0a0; -} - -#line-wrapping-toggle { - vertical-align: middle; -} - -#label-for-line-wrapping-toggle { - vertical-align: middle; -} - -ul { - margin-left: 0; -} - -h1, h2, h3 { - white-space: nowrap; -} - -h2 { - font-size: 120%; -} - -ul.tabLinks { - padding-left: 0; - padding-top: 10px; - padding-bottom: 10px; - overflow: auto; - min-width: 800px; - width: auto !important; - width: 800px; -} - -ul.tabLinks li { - float: left; - height: 100%; - list-style: none; - padding-left: 10px; - padding-right: 10px; - padding-top: 5px; - padding-bottom: 5px; - margin-bottom: 0; - -moz-border-radius: 7px; - border-radius: 7px; - margin-right: 25px; - border: solid 1px #d4d4d4; - background-color: #f0f0f0; -} - -ul.tabLinks li:hover { - background-color: #fafafa; -} - -ul.tabLinks li.selected { - background-color: #c5f0f5; - border-color: #c5f0f5; -} - -ul.tabLinks a { - font-size: 120%; - display: block; - outline: none; - text-decoration: none; - margin: 0; - padding: 0; -} - -ul.tabLinks li h2 { - margin: 0; - padding: 0; -} - -div.tab { -} - -div.selected { - display: block; -} - -div.deselected { - display: none; -} - -div.tab table { - min-width: 350px; - width: auto !important; - width: 350px; - border-collapse: collapse; -} - -div.tab th, div.tab table { - border-bottom: solid #d0d0d0 1px; -} - -div.tab th { - text-align: left; - white-space: nowrap; - padding-left: 6em; -} - -div.tab th:first-child { - padding-left: 0; -} - -div.tab td { - white-space: nowrap; - padding-left: 6em; - padding-top: 5px; - padding-bottom: 5px; -} - -div.tab td:first-child { - padding-left: 0; -} - -div.tab td.numeric, div.tab th.numeric { - text-align: right; -} - -span.code { - display: inline-block; - margin-top: 0em; - margin-bottom: 1em; -} - -span.code pre { - font-size: 11pt; - padding-top: 10px; - padding-bottom: 10px; - padding-left: 10px; - padding-right: 10px; - margin: 0; - background-color: #f7f7f7; - border: solid 1px #d0d0d0; - min-width: 700px; - width: auto !important; - width: 700px; -} - -span.wrapped pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: break-all; -} - -label.hidden { - display: none; -} \ No newline at end of file diff --git a/java/benchmarks/build/reports/tests/test/css/style.css b/java/benchmarks/build/reports/tests/test/css/style.css deleted file mode 100644 index 3dc4913e7a..0000000000 --- a/java/benchmarks/build/reports/tests/test/css/style.css +++ /dev/null @@ -1,84 +0,0 @@ - -#summary { - margin-top: 30px; - margin-bottom: 40px; -} - -#summary table { - border-collapse: collapse; -} - -#summary td { - vertical-align: top; -} - -.breadcrumbs, .breadcrumbs a { - color: #606060; -} - -.infoBox { - width: 110px; - padding-top: 15px; - padding-bottom: 15px; - text-align: center; -} - -.infoBox p { - margin: 0; -} - -.counter, .percent { - font-size: 120%; - font-weight: bold; - margin-bottom: 8px; -} - -#duration { - width: 125px; -} - -#successRate, .summaryGroup { - border: solid 2px #d0d0d0; - -moz-border-radius: 10px; - border-radius: 10px; -} - -#successRate { - width: 140px; - margin-left: 35px; -} - -#successRate .percent { - font-size: 180%; -} - -.success, .success a { - color: #008000; -} - -div.success, #successRate.success { - background-color: #bbd9bb; - border-color: #008000; -} - -.failures, .failures a { - color: #b60808; -} - -.skipped, .skipped a { - color: #c09853; -} - -div.failures, #successRate.failures { - background-color: #ecdada; - border-color: #b60808; -} - -ul.linkList { - padding-left: 0; -} - -ul.linkList li { - list-style: none; - margin-bottom: 5px; -} diff --git a/java/benchmarks/build/reports/tests/test/index.html b/java/benchmarks/build/reports/tests/test/index.html deleted file mode 100644 index f03c715ec6..0000000000 --- a/java/benchmarks/build/reports/tests/test/index.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - -Test results - Test Summary - - - - - -
-

Test Summary

-
- - - - - -
-
- - - - - - - -
-
-
5
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
33.817s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Packages

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PackageTestsFailuresIgnoredDurationSuccess rate
-javabushka.client.jedis -40014.703s100%
-javabushka.client.lettuce -10019.114s100%
-
-
-

Classes

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassTestsFailuresIgnoredDurationSuccess rate
-javabushka.client.jedis.JedisClientIT -40014.703s100%
-javabushka.client.lettuce.LettuceClientIT -10019.114s100%
-
-
- -
- - diff --git a/java/benchmarks/build/reports/tests/test/js/report.js b/java/benchmarks/build/reports/tests/test/js/report.js deleted file mode 100644 index 83bab4a19f..0000000000 --- a/java/benchmarks/build/reports/tests/test/js/report.js +++ /dev/null @@ -1,194 +0,0 @@ -(function (window, document) { - "use strict"; - - var tabs = {}; - - function changeElementClass(element, classValue) { - if (element.getAttribute("className")) { - element.setAttribute("className", classValue); - } else { - element.setAttribute("class", classValue); - } - } - - function getClassAttribute(element) { - if (element.getAttribute("className")) { - return element.getAttribute("className"); - } else { - return element.getAttribute("class"); - } - } - - function addClass(element, classValue) { - changeElementClass(element, getClassAttribute(element) + " " + classValue); - } - - function removeClass(element, classValue) { - changeElementClass(element, getClassAttribute(element).replace(classValue, "")); - } - - function initTabs() { - var container = document.getElementById("tabs"); - - tabs.tabs = findTabs(container); - tabs.titles = findTitles(tabs.tabs); - tabs.headers = findHeaders(container); - tabs.select = select; - tabs.deselectAll = deselectAll; - tabs.select(0); - - return true; - } - - function getCheckBox() { - return document.getElementById("line-wrapping-toggle"); - } - - function getLabelForCheckBox() { - return document.getElementById("label-for-line-wrapping-toggle"); - } - - function findCodeBlocks() { - var spans = document.getElementById("tabs").getElementsByTagName("span"); - var codeBlocks = []; - for (var i = 0; i < spans.length; ++i) { - if (spans[i].className.indexOf("code") >= 0) { - codeBlocks.push(spans[i]); - } - } - return codeBlocks; - } - - function forAllCodeBlocks(operation) { - var codeBlocks = findCodeBlocks(); - - for (var i = 0; i < codeBlocks.length; ++i) { - operation(codeBlocks[i], "wrapped"); - } - } - - function toggleLineWrapping() { - var checkBox = getCheckBox(); - - if (checkBox.checked) { - forAllCodeBlocks(addClass); - } else { - forAllCodeBlocks(removeClass); - } - } - - function initControls() { - if (findCodeBlocks().length > 0) { - var checkBox = getCheckBox(); - var label = getLabelForCheckBox(); - - checkBox.onclick = toggleLineWrapping; - checkBox.checked = false; - - removeClass(label, "hidden"); - } - } - - function switchTab() { - var id = this.id.substr(1); - - for (var i = 0; i < tabs.tabs.length; i++) { - if (tabs.tabs[i].id === id) { - tabs.select(i); - break; - } - } - - return false; - } - - function select(i) { - this.deselectAll(); - - changeElementClass(this.tabs[i], "tab selected"); - changeElementClass(this.headers[i], "selected"); - - while (this.headers[i].firstChild) { - this.headers[i].removeChild(this.headers[i].firstChild); - } - - var h2 = document.createElement("H2"); - - h2.appendChild(document.createTextNode(this.titles[i])); - this.headers[i].appendChild(h2); - } - - function deselectAll() { - for (var i = 0; i < this.tabs.length; i++) { - changeElementClass(this.tabs[i], "tab deselected"); - changeElementClass(this.headers[i], "deselected"); - - while (this.headers[i].firstChild) { - this.headers[i].removeChild(this.headers[i].firstChild); - } - - var a = document.createElement("A"); - - a.setAttribute("id", "ltab" + i); - a.setAttribute("href", "#tab" + i); - a.onclick = switchTab; - a.appendChild(document.createTextNode(this.titles[i])); - - this.headers[i].appendChild(a); - } - } - - function findTabs(container) { - return findChildElements(container, "DIV", "tab"); - } - - function findHeaders(container) { - var owner = findChildElements(container, "UL", "tabLinks"); - return findChildElements(owner[0], "LI", null); - } - - function findTitles(tabs) { - var titles = []; - - for (var i = 0; i < tabs.length; i++) { - var tab = tabs[i]; - var header = findChildElements(tab, "H2", null)[0]; - - header.parentNode.removeChild(header); - - if (header.innerText) { - titles.push(header.innerText); - } else { - titles.push(header.textContent); - } - } - - return titles; - } - - function findChildElements(container, name, targetClass) { - var elements = []; - var children = container.childNodes; - - for (var i = 0; i < children.length; i++) { - var child = children.item(i); - - if (child.nodeType === 1 && child.nodeName === name) { - if (targetClass && child.className.indexOf(targetClass) < 0) { - continue; - } - - elements.push(child); - } - } - - return elements; - } - - // Entry point. - - window.onload = function() { - initTabs(); - initControls(); - }; -} (window, window.document)); \ No newline at end of file diff --git a/java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html b/java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html deleted file mode 100644 index 6fe5059ebd..0000000000 --- a/java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - -Test results - Package javabushka.client.jedis - - - - - -
-

Package javabushka.client.jedis

- -
- - - - - -
-
- - - - - - - -
-
-
4
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
14.703s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Classes

- - - - - - - - - - - - - - - - - - - -
ClassTestsFailuresIgnoredDurationSuccess rate
-JedisClientIT -40014.703s100%
-
-
- -
- - diff --git a/java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html b/java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html deleted file mode 100644 index 72ed2f2290..0000000000 --- a/java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - -Test results - Package javabushka.client.lettuce - - - - - -
-

Package javabushka.client.lettuce

- -
- - - - - -
-
- - - - - - - -
-
-
1
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
19.114s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Classes

- - - - - - - - - - - - - - - - - - - -
ClassTestsFailuresIgnoredDurationSuccess rate
-LettuceClientIT -10019.114s100%
-
-
- -
- - diff --git a/java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml b/java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml deleted file mode 100644 index f76c23081b..0000000000 --- a/java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - diff --git a/java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml b/java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml deleted file mode 100644 index 15ab216e63..0000000000 --- a/java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - diff --git a/java/benchmarks/build/test-results/test/binary/output.bin b/java/benchmarks/build/test-results/test/binary/output.bin deleted file mode 100644 index 76f5d5a3a126375fb8bd3081dabee2c02a09ac91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 990 zcmZ{i+iKfD5QbwHZ16+0LrT;1qVk?*555Q_v?-L(7StCI)>>B432774x9_g3;DXn; z;-7E7`A1jt*?s!-D86stF)J&ZgKME`vmCZnHVkmx_C+#OJMkwe>#j;tm$`EL)E0&9 zAIc`T{dKasn$PYg$QQfIo-0>2MF2JJ=eD!GA88x7{qghHC(jO}5MZ{pO~AEHAfyu^ zwHEfyb({72a5zkFdyDn9&FzrvU0uCDw}4&S!|u6vdk@d8^ScbmYBqoK@&2Vqz?HRy zvVnR4?*r-A-y0waQ3@%SOriFEFiBUl4>A~ute zZE{I!aY;~Waeir0a%ymDiF;}Z79oaJQyC$85}g^CmSMUmD>WsvSkDVY!dyd~DzK@W z@2ayf&O&yHXI@&qQ)O^!a!F=>9&QLVZ7(fn{!Ser~Ey wW>QgNQKfHcNk)E3P-;nOQC@LKQE4h(Nd_jUDN`9(C!)I?Lx2GqdScTU0BB*aK>z>% diff --git a/java/benchmarks/build/tmp/compileJava/previous-compilation-data.bin b/java/benchmarks/build/tmp/compileJava/previous-compilation-data.bin deleted file mode 100644 index 6e1548148fc2e70edbaa1e9bd2596ac50d9e49cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38419 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 diff --git a/java/benchmarks/build/tmp/compileTestJava/compileTransaction/stash-dir/JedisClientIT.class.uniqueId0 b/java/benchmarks/build/tmp/compileTestJava/compileTransaction/stash-dir/JedisClientIT.class.uniqueId0 deleted file mode 100644 index 5480044a03743ee4719cdf7fc8c9b963a7cfe602..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3464 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 Ra+f+i^FDco1F|(7{sni?owNV| diff --git a/java/lib/build/libs/lib.jar b/java/lib/build/libs/lib.jar deleted file mode 100644 index 77f1a996552b93a2c207a0cde3f2505656498e79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 723 zcmWIWW@Zs#VBp|jNSv$|&Hw~VAOZ+Df!NnI#8KDN&rP41Apk|;rh2A#(m(~0Kn&E5 zQ0VLE=jrAe9HQsz_SyH$X&-N0y^Flwx?1PXoZlQ|aK-q+(??I4kPKVARRzUXZlGaV ziDijNrNtT9i757hl(Nq-wR#6slEBEoAc3mXCo`!iv8YlnIVZ8WIMv_U?}&lOoatxP zygAEp%G+fI)`qql`|=fuquAE7IoO zJO2E(bwh9pCsR*Si{`Noj?GgmL@IS>{r(fRF65@*BH_C)-t`#Vx*dOHhJaD}q}piP zjy)GHas77TIDa-sa9L~KmC*guPTk{*+&oEinaEeCh_^e$53jqVo4EW(e5ucj?P+Um z_J+i!PCNX~+NmhHDtZ<7Td$ye%Ocequ4lII5O26+YGXd*Y0nW0y9(C5Joh=zX9y_g zeDc}P+Y{Z>lIv6Z<3fA$hoAmMpR^_asH8K`u4fGJW@Hj!#vP5ofC2&mhPRF&8Xl?W z+R!5vq!V9yBYM0-G=i*Nh^i4KmIJ(5*+42; Ofba*9J_<|~3=9Ckh0YZK diff --git a/java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html b/java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html deleted file mode 100644 index 3031b841d0..0000000000 --- a/java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - -Test results - Class javabushka.LibraryTest - - - - - -
-

Class javabushka.LibraryTest

- -
- - - - - -
-
- - - - - - - -
-
-
1
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
0.002s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Tests

- - - - - - - - - - - - - -
TestDurationResult
someLibraryMethodReturnsTrue0.002spassed
-
-
- -
- - diff --git a/java/lib/build/reports/tests/test/css/base-style.css b/java/lib/build/reports/tests/test/css/base-style.css deleted file mode 100644 index 4afa73e3dd..0000000000 --- a/java/lib/build/reports/tests/test/css/base-style.css +++ /dev/null @@ -1,179 +0,0 @@ - -body { - margin: 0; - padding: 0; - font-family: sans-serif; - font-size: 12pt; -} - -body, a, a:visited { - color: #303030; -} - -#content { - padding-left: 50px; - padding-right: 50px; - padding-top: 30px; - padding-bottom: 30px; -} - -#content h1 { - font-size: 160%; - margin-bottom: 10px; -} - -#footer { - margin-top: 100px; - font-size: 80%; - white-space: nowrap; -} - -#footer, #footer a { - color: #a0a0a0; -} - -#line-wrapping-toggle { - vertical-align: middle; -} - -#label-for-line-wrapping-toggle { - vertical-align: middle; -} - -ul { - margin-left: 0; -} - -h1, h2, h3 { - white-space: nowrap; -} - -h2 { - font-size: 120%; -} - -ul.tabLinks { - padding-left: 0; - padding-top: 10px; - padding-bottom: 10px; - overflow: auto; - min-width: 800px; - width: auto !important; - width: 800px; -} - -ul.tabLinks li { - float: left; - height: 100%; - list-style: none; - padding-left: 10px; - padding-right: 10px; - padding-top: 5px; - padding-bottom: 5px; - margin-bottom: 0; - -moz-border-radius: 7px; - border-radius: 7px; - margin-right: 25px; - border: solid 1px #d4d4d4; - background-color: #f0f0f0; -} - -ul.tabLinks li:hover { - background-color: #fafafa; -} - -ul.tabLinks li.selected { - background-color: #c5f0f5; - border-color: #c5f0f5; -} - -ul.tabLinks a { - font-size: 120%; - display: block; - outline: none; - text-decoration: none; - margin: 0; - padding: 0; -} - -ul.tabLinks li h2 { - margin: 0; - padding: 0; -} - -div.tab { -} - -div.selected { - display: block; -} - -div.deselected { - display: none; -} - -div.tab table { - min-width: 350px; - width: auto !important; - width: 350px; - border-collapse: collapse; -} - -div.tab th, div.tab table { - border-bottom: solid #d0d0d0 1px; -} - -div.tab th { - text-align: left; - white-space: nowrap; - padding-left: 6em; -} - -div.tab th:first-child { - padding-left: 0; -} - -div.tab td { - white-space: nowrap; - padding-left: 6em; - padding-top: 5px; - padding-bottom: 5px; -} - -div.tab td:first-child { - padding-left: 0; -} - -div.tab td.numeric, div.tab th.numeric { - text-align: right; -} - -span.code { - display: inline-block; - margin-top: 0em; - margin-bottom: 1em; -} - -span.code pre { - font-size: 11pt; - padding-top: 10px; - padding-bottom: 10px; - padding-left: 10px; - padding-right: 10px; - margin: 0; - background-color: #f7f7f7; - border: solid 1px #d0d0d0; - min-width: 700px; - width: auto !important; - width: 700px; -} - -span.wrapped pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: break-all; -} - -label.hidden { - display: none; -} \ No newline at end of file diff --git a/java/lib/build/reports/tests/test/css/style.css b/java/lib/build/reports/tests/test/css/style.css deleted file mode 100644 index 3dc4913e7a..0000000000 --- a/java/lib/build/reports/tests/test/css/style.css +++ /dev/null @@ -1,84 +0,0 @@ - -#summary { - margin-top: 30px; - margin-bottom: 40px; -} - -#summary table { - border-collapse: collapse; -} - -#summary td { - vertical-align: top; -} - -.breadcrumbs, .breadcrumbs a { - color: #606060; -} - -.infoBox { - width: 110px; - padding-top: 15px; - padding-bottom: 15px; - text-align: center; -} - -.infoBox p { - margin: 0; -} - -.counter, .percent { - font-size: 120%; - font-weight: bold; - margin-bottom: 8px; -} - -#duration { - width: 125px; -} - -#successRate, .summaryGroup { - border: solid 2px #d0d0d0; - -moz-border-radius: 10px; - border-radius: 10px; -} - -#successRate { - width: 140px; - margin-left: 35px; -} - -#successRate .percent { - font-size: 180%; -} - -.success, .success a { - color: #008000; -} - -div.success, #successRate.success { - background-color: #bbd9bb; - border-color: #008000; -} - -.failures, .failures a { - color: #b60808; -} - -.skipped, .skipped a { - color: #c09853; -} - -div.failures, #successRate.failures { - background-color: #ecdada; - border-color: #b60808; -} - -ul.linkList { - padding-left: 0; -} - -ul.linkList li { - list-style: none; - margin-bottom: 5px; -} diff --git a/java/lib/build/reports/tests/test/index.html b/java/lib/build/reports/tests/test/index.html deleted file mode 100644 index 837e00ab79..0000000000 --- a/java/lib/build/reports/tests/test/index.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -Test results - Test Summary - - - - - -
-

Test Summary

-
- - - - - -
-
- - - - - - - -
-
-
1
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
0.002s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Packages

- - - - - - - - - - - - - - - - - - - - - -
PackageTestsFailuresIgnoredDurationSuccess rate
-javabushka -1000.002s100%
-
-
-

Classes

- - - - - - - - - - - - - - - - - - - - - -
ClassTestsFailuresIgnoredDurationSuccess rate
-javabushka.LibraryTest -1000.002s100%
-
-
- -
- - diff --git a/java/lib/build/reports/tests/test/js/report.js b/java/lib/build/reports/tests/test/js/report.js deleted file mode 100644 index 83bab4a19f..0000000000 --- a/java/lib/build/reports/tests/test/js/report.js +++ /dev/null @@ -1,194 +0,0 @@ -(function (window, document) { - "use strict"; - - var tabs = {}; - - function changeElementClass(element, classValue) { - if (element.getAttribute("className")) { - element.setAttribute("className", classValue); - } else { - element.setAttribute("class", classValue); - } - } - - function getClassAttribute(element) { - if (element.getAttribute("className")) { - return element.getAttribute("className"); - } else { - return element.getAttribute("class"); - } - } - - function addClass(element, classValue) { - changeElementClass(element, getClassAttribute(element) + " " + classValue); - } - - function removeClass(element, classValue) { - changeElementClass(element, getClassAttribute(element).replace(classValue, "")); - } - - function initTabs() { - var container = document.getElementById("tabs"); - - tabs.tabs = findTabs(container); - tabs.titles = findTitles(tabs.tabs); - tabs.headers = findHeaders(container); - tabs.select = select; - tabs.deselectAll = deselectAll; - tabs.select(0); - - return true; - } - - function getCheckBox() { - return document.getElementById("line-wrapping-toggle"); - } - - function getLabelForCheckBox() { - return document.getElementById("label-for-line-wrapping-toggle"); - } - - function findCodeBlocks() { - var spans = document.getElementById("tabs").getElementsByTagName("span"); - var codeBlocks = []; - for (var i = 0; i < spans.length; ++i) { - if (spans[i].className.indexOf("code") >= 0) { - codeBlocks.push(spans[i]); - } - } - return codeBlocks; - } - - function forAllCodeBlocks(operation) { - var codeBlocks = findCodeBlocks(); - - for (var i = 0; i < codeBlocks.length; ++i) { - operation(codeBlocks[i], "wrapped"); - } - } - - function toggleLineWrapping() { - var checkBox = getCheckBox(); - - if (checkBox.checked) { - forAllCodeBlocks(addClass); - } else { - forAllCodeBlocks(removeClass); - } - } - - function initControls() { - if (findCodeBlocks().length > 0) { - var checkBox = getCheckBox(); - var label = getLabelForCheckBox(); - - checkBox.onclick = toggleLineWrapping; - checkBox.checked = false; - - removeClass(label, "hidden"); - } - } - - function switchTab() { - var id = this.id.substr(1); - - for (var i = 0; i < tabs.tabs.length; i++) { - if (tabs.tabs[i].id === id) { - tabs.select(i); - break; - } - } - - return false; - } - - function select(i) { - this.deselectAll(); - - changeElementClass(this.tabs[i], "tab selected"); - changeElementClass(this.headers[i], "selected"); - - while (this.headers[i].firstChild) { - this.headers[i].removeChild(this.headers[i].firstChild); - } - - var h2 = document.createElement("H2"); - - h2.appendChild(document.createTextNode(this.titles[i])); - this.headers[i].appendChild(h2); - } - - function deselectAll() { - for (var i = 0; i < this.tabs.length; i++) { - changeElementClass(this.tabs[i], "tab deselected"); - changeElementClass(this.headers[i], "deselected"); - - while (this.headers[i].firstChild) { - this.headers[i].removeChild(this.headers[i].firstChild); - } - - var a = document.createElement("A"); - - a.setAttribute("id", "ltab" + i); - a.setAttribute("href", "#tab" + i); - a.onclick = switchTab; - a.appendChild(document.createTextNode(this.titles[i])); - - this.headers[i].appendChild(a); - } - } - - function findTabs(container) { - return findChildElements(container, "DIV", "tab"); - } - - function findHeaders(container) { - var owner = findChildElements(container, "UL", "tabLinks"); - return findChildElements(owner[0], "LI", null); - } - - function findTitles(tabs) { - var titles = []; - - for (var i = 0; i < tabs.length; i++) { - var tab = tabs[i]; - var header = findChildElements(tab, "H2", null)[0]; - - header.parentNode.removeChild(header); - - if (header.innerText) { - titles.push(header.innerText); - } else { - titles.push(header.textContent); - } - } - - return titles; - } - - function findChildElements(container, name, targetClass) { - var elements = []; - var children = container.childNodes; - - for (var i = 0; i < children.length; i++) { - var child = children.item(i); - - if (child.nodeType === 1 && child.nodeName === name) { - if (targetClass && child.className.indexOf(targetClass) < 0) { - continue; - } - - elements.push(child); - } - } - - return elements; - } - - // Entry point. - - window.onload = function() { - initTabs(); - initControls(); - }; -} (window, window.document)); \ No newline at end of file diff --git a/java/lib/build/reports/tests/test/packages/javabushka.html b/java/lib/build/reports/tests/test/packages/javabushka.html deleted file mode 100644 index c50fe5999a..0000000000 --- a/java/lib/build/reports/tests/test/packages/javabushka.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - -Test results - Package javabushka - - - - - -
-

Package javabushka

- -
- - - - - -
-
- - - - - - - -
-
-
1
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
0.002s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Classes

- - - - - - - - - - - - - - - - - - - -
ClassTestsFailuresIgnoredDurationSuccess rate
-LibraryTest -1000.002s100%
-
-
- -
- - diff --git a/java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml b/java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml deleted file mode 100644 index d06e1fe97d..0000000000 --- a/java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/java/lib/build/test-results/test/binary/output.bin b/java/lib/build/test-results/test/binary/output.bin deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/java/lib/build/test-results/test/binary/output.bin.idx b/java/lib/build/test-results/test/binary/output.bin.idx deleted file mode 100644 index f76dd238ade08917e6712764a16a22005a50573d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1 IcmZPo000310RR91 diff --git a/java/lib/build/test-results/test/binary/results.bin b/java/lib/build/test-results/test/binary/results.bin deleted file mode 100644 index f5767307578ed46df57c9e327fa93b66a3c43c2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmZQ(WSX9pSeBSnTAY!csOOWJRFqg$8IoFDf+*GIr-_(+f Z{FI>7lG38Q;*g@!RJ@W5Oi)vb82})PFZTcd diff --git a/java/lib/build/tmp/compileJava/previous-compilation-data.bin b/java/lib/build/tmp/compileJava/previous-compilation-data.bin deleted file mode 100644 index 28d5565cd61893d10507bce77ba30fa1dca615b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2859 zcmb7GYgAKL7CzgcP&M=@SQXS#MNu(FO9ez!27?hagg1(>dWkp5C6{~S%?%J=hzTGs zUkE5nt*upjfcU6FtAZ9P)Uj%*S_kK4N2g=!YpF|})-LCScD3_s*2=wW<*ajZ_TJz3 z?S1w=fV4pRpt39`hsm^AO=d=c3OrCTmnkul9a~=n-d?sS;Z?%Rt4~{o%iRdANB{Hu zHVN)a`Vmj!MP5Try_nq}6&pp-$g=}bF`Z_M!a(HUL?x=QFnTj%WL2DC5b>t8#*~nV zK8>kQBDUvDK4tb!dp#MGL1ZxTA--e?c>_5`$v6~k)tgwonUxF@lg;Lel6k-|RA`eq zemE+YSc@pheyDJzjo}sksHk^70+k7_1M1BIY zeMNcSE#!K_#te6&&2_gdkJXERhY?w(v%Us72*%R7ISHYR?y zPL~j!n3zP8NeU`*)mUCCD*IhSMH(t)TuGH#$(oKF61#ws5Cj{~FGL&c8K{^wFg9Ms zyOsa>wlVNYw??Qx^OwCHs~3^Q#B&M#+p1?QtP-P6-g==sYW~uvucW~#mHn0`FVnu8 z9JL&6WMzgE*cA*aq&WFZDz+(t^Re(eHPuBHaJUX*72I` zWFbx@7P6A~N~kEuRS)+wLWw97_Z2zguLmcnzx!pr4&J2F{n2}LJ7=^ zDh0G5qzsTFGfPnps9c~&-9q`$g2fGON4c#gW#iOv+vioK7g{SIVH4;!!<;RUx)tW~ z3WXwf8#NVJ9DUV3mgpBpbu66wXP+&(ODaLT9RjN$sTyKb8KH_AKu*po1WZ<-I}o`JNp>c2bJ9fXXZqm)#54s>F}4UB7vzId1c<@fV_A8=D?k2MK?K6xDlx zifx%Pt=nA`wgHD6x)gi2O5N7;_}2C<6~{B)hnTz!JaXVs$Bi$mFSLF*dUef}cRO|i z`GCgwkjj|N$h29!*tGh9kso)=*-`V487*n+_5k^aZrDpTlUM`K>SZPVIa^iL6Eo;l zW5y55*S3VU?t|ERh^vDAG_Y_0PzlG<=BhW@@%@q=&IV0p(7MST19p~g4Lt}8Rvn^r zO{{=J2O1xp-(1JF4XqkEZjI-xnRtK8oXhh!kG~uF)T`;uxOg*wW^xV__ zt;C(_e|shPx17Fjo6=x@k2~B1qSu zoAIoz84_AxLDVM{JIk0qrE=Nmk;c#MS+fmqra1@8+WS96h?h@6;%SJEIzv-tlSPT; zS;oq?QX^61@xAL0d`lk8UZg8KRDT4Y+t>!_XCX~IM-wNQ1u<9njMfXoV`;-QA^h*N z^2D}@|Ne18?8|l_9Y8*(0EeBYj`gCTw@DJ!Ly0{M?ak`Zd;8}!92!26>qMQ9)&=AX zAQyo6{s~a2wYMZV!RV(Lfq(Q(+BME&&U3G!+h>|%CTlJN`I36QMA>9goJy<+o_YuA zUev_iw3W1v*DtvYR5q9qT>ocheu)Ti&h#_~HR;@aB zqU=~f_4E87ZW~Vr1T&F_{#F6KI{ZImOWk&^ciSS% zZHqh#-9ZZp=%__baN9wV`z96cn^d~+QHks5=;?$Cpb7KNqA7d-7vTHopzsc+3kO{b zl+jGLnH+N;R}^!YC^G7o0} diff --git a/java/lib/build/tmp/compileTestJava/previous-compilation-data.bin b/java/lib/build/tmp/compileTestJava/previous-compilation-data.bin deleted file mode 100644 index 08a1bf7d5fb3fc7dd6ce4bb2f2ad4410e30da8d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3207 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 diff --git a/java/lib/build/tmp/jar/MANIFEST.MF b/java/lib/build/tmp/jar/MANIFEST.MF deleted file mode 100644 index 58630c02ef..0000000000 --- a/java/lib/build/tmp/jar/MANIFEST.MF +++ /dev/null @@ -1,2 +0,0 @@ -Manifest-Version: 1.0 - diff --git a/submodules/redis-rs b/submodules/redis-rs deleted file mode 160000 index 694fb7b1ec..0000000000 --- a/submodules/redis-rs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 694fb7b1ec1a826cc5a8e936a6c6eb7610b3ec65 From 77b419abcb6fce814a2eaf15a5852456e2a3bd4c Mon Sep 17 00:00:00 2001 From: acarbonetto Date: Fri, 8 Sep 2023 13:30:53 -0700 Subject: [PATCH 04/14] Update gitignore and remove generated files from git Signed-off-by: acarbonetto --- .gitignore | 3 --- java/.gitignore | 4 +--- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index a518788c2d..ad4f5014ba 100644 --- a/.gitignore +++ b/.gitignore @@ -18,10 +18,7 @@ Cargo.lock *.pdb dump.rdb .env -.idea benchmarks/results -benchmarks/build -lib/build # IDE generaged files .vs diff --git a/java/.gitignore b/java/.gitignore index 8f60484e5a..c68362cbb2 100644 --- a/java/.gitignore +++ b/java/.gitignore @@ -3,6 +3,4 @@ # Ignore Gradle build output directory build - -# Ignore generated files (e.g. protobuf) -generated +.idea From c7c9be8eafda6c9ea334d2f67bb0cf0579e99269 Mon Sep 17 00:00:00 2001 From: acarbonetto Date: Fri, 8 Sep 2023 13:45:34 -0700 Subject: [PATCH 05/14] Update gitignore and remove generated files from git Signed-off-by: acarbonetto --- java/changes.diff | 210 ---------------------------------------------- 1 file changed, 210 deletions(-) delete mode 100644 java/changes.diff diff --git a/java/changes.diff b/java/changes.diff deleted file mode 100644 index aa01c5888e..0000000000 --- a/java/changes.diff +++ /dev/null @@ -1,210 +0,0 @@ -diff --git a/java/benchmarks/build.gradle b/java/benchmarks/build.gradle -index 083fd57..20a4142 100644 ---- a/java/benchmarks/build.gradle -+++ b/java/benchmarks/build.gradle -@@ -27,3 +27,11 @@ java { - languageVersion = JavaLanguageVersion.of(17) - } - } -+ -+tasks.withType(Test) { -+ testLogging { -+ exceptionFormat "full" -+ events "started", "skipped", "passed", "failed" -+ showStandardStreams true -+ } -+} -diff --git a/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java b/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java -new file mode 100644 -index 0000000..ba5d6f5 ---- /dev/null -+++ b/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java -@@ -0,0 +1,68 @@ -+package javabushka.client; -+ -+import javabushka.client.LatencyResults; -+import java.util.ArrayList; -+import java.util.stream.Collectors; -+import java.util.Collections; -+ -+public class Benchmarking { -+ static final int SIZE_SET_KEYSPACE = 3000000; -+ -+ public static String generateKeySet() { -+ return (Math.floor(Math.random() * SIZE_SET_KEYSPACE) + 1) + ""; -+ } -+ -+ public interface Operation { -+ void go(); -+ } -+ -+ public static ArrayList getLatencies(int iterations, Operation op) { -+ ArrayList latencies = new ArrayList(); -+ for (int i = 0; i latencies, int percentile) { -+ return latencies.get((int) Math.ceil((percentile / 100.0) * latencies.size())); -+ } -+ -+ private static double stdDeviation(ArrayList latencies, Double avgLatency) { -+ double stdDeviation = latencies.stream() -+ .mapToDouble(Long::doubleValue) -+ .reduce(0.0, (stdDev, latency) -> stdDev + Math.pow(latency - avgLatency, 2)); -+ return Math.sqrt(stdDeviation / latencies.size()); -+ } -+ -+ // This has the side-effect of sorting the latencies ArrayList -+ public static LatencyResults calculateResults(ArrayList latencies) { -+ Double avgLatency = latencies -+ .stream() -+ .collect(Collectors.summingLong(Long::longValue)) / Double.valueOf(latencies.size()); -+ -+ Collections.sort(latencies); -+ return new LatencyResults( -+ avgLatency, -+ percentile(latencies, 50), -+ percentile(latencies, 90), -+ percentile(latencies, 99), -+ stdDeviation(latencies, avgLatency) -+ ); -+ } -+ -+ public static void printResults(String operation, LatencyResults results) { -+ System.out.println( -+ "Avg. time in ms per " + operation + ": " + results.avgLatency / 1000000.0 -+ ); -+ System.out.println(operation + " p50 latency in ms: " + results.p50Latency / 1000000.0); -+ System.out.println(operation + " p90 latency in ms: " + results.p90Latency / 1000000.0); -+ System.out.println(operation + " p99 latency in ms: " + results.p99Latency / 1000000.0); -+ System.out.println(operation + " std dev in ms: " + results.stdDeviation / 1000000.0); -+ } -+ -+} -\ No newline at end of file -diff --git a/java/benchmarks/src/test/java/javabushka/client/LatencyResults.java b/java/benchmarks/src/test/java/javabushka/client/LatencyResults.java -new file mode 100644 -index 0000000..320ec07 ---- /dev/null -+++ b/java/benchmarks/src/test/java/javabushka/client/LatencyResults.java -@@ -0,0 +1,24 @@ -+package javabushka.client; -+ -+// Raw timing results in nanoseconds -+public class LatencyResults { -+ public final double avgLatency; -+ public final long p50Latency; -+ public final long p90Latency; -+ public final long p99Latency; -+ public final double stdDeviation; -+ -+ public LatencyResults( -+ double avgLatency, -+ long p50Latency, -+ long p90Latency, -+ long p99Latency, -+ double stdDeviation -+ ) { -+ this.avgLatency = avgLatency; -+ this.p50Latency = p50Latency; -+ this.p90Latency = p90Latency; -+ this.p99Latency = p99Latency; -+ this.stdDeviation = stdDeviation; -+ } -+} -diff --git a/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java b/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java -index 86b2ae0..249be43 100644 ---- a/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java -+++ b/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java -@@ -6,6 +6,7 @@ package javabushka.client.jedis; - import static org.junit.Assert.assertEquals; - import static org.junit.Assert.assertTrue; - -+import javabushka.client.Benchmarking; - import org.junit.Before; - import org.junit.Test; - -@@ -39,12 +40,27 @@ public class JedisClientIT { - } - - @Test public void testResourceSetGet() { -- String key = "name"; -+ int iterations = 100000; - String value = "my-value"; - -- jedisClient.set(key, value); -- String result = jedisClient.get(key); -- -- assertEquals(value, result); -+ Benchmarking.printResults( -+ "SET", -+ Benchmarking.calculateResults( -+ Benchmarking.getLatencies( -+ iterations, -+ () -> jedisClient.set(Benchmarking.generateKeySet(), value) -+ ) -+ ) -+ ); -+ Benchmarking.printResults( -+ "GET", -+ Benchmarking.calculateResults( -+ Benchmarking.getLatencies( -+ iterations, -+ () -> jedisClient.get(Benchmarking.generateKeySet()) -+ ) -+ ) -+ ); - } - } -+ -diff --git a/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java b/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java -index 20100e0..da986ac 100644 ---- a/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java -+++ b/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java -@@ -5,6 +5,7 @@ package javabushka.client.lettuce; - - import static org.junit.Assert.assertEquals; - -+import javabushka.client.Benchmarking; - import org.junit.After; - import org.junit.Before; - import org.junit.Test; -@@ -25,12 +26,26 @@ public class LettuceClientIT { - } - - @Test public void testResourceSetGet() { -- String key = "name"; -+ int iterations = 100000; - String value = "my-value"; - -- lettuceClient.set(key, value); -- String result = lettuceClient.get(key); -- -- assertEquals(value, result); -+ Benchmarking.printResults( -+ "SET", -+ Benchmarking.calculateResults( -+ Benchmarking.getLatencies( -+ iterations, -+ () -> lettuceClient.set(Benchmarking.generateKeySet(), value) -+ ) -+ ) -+ ); -+ Benchmarking.printResults( -+ "GET", -+ Benchmarking.calculateResults( -+ Benchmarking.getLatencies( -+ iterations, -+ () -> lettuceClient.get(Benchmarking.generateKeySet()) -+ ) -+ ) -+ ); - } - } From 01b5af7ada29b19aa0a2459678c90885dde76994 Mon Sep 17 00:00:00 2001 From: Jonathan Louie Date: Fri, 8 Sep 2023 14:58:41 -0700 Subject: [PATCH 06/14] Add benchmarks for GET non-existing --- .../src/test/java/javabushka/client/Benchmarking.java | 6 ++++++ .../test/java/javabushka/client/jedis/JedisClientIT.java | 9 +++++++++ .../java/javabushka/client/lettuce/LettuceClientIT.java | 9 +++++++++ 3 files changed, 24 insertions(+) diff --git a/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java b/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java index ba5d6f5bfe..cbae7e1e5a 100644 --- a/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java +++ b/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java @@ -6,7 +6,13 @@ import java.util.Collections; public class Benchmarking { + static final int SIZE_GET_KEYSPACE = 3750000; static final int SIZE_SET_KEYSPACE = 3000000; + + public static String generateKeyGet() { + int range = SIZE_GET_KEYSPACE - SIZE_SET_KEYSPACE; + return Math.floor(Math.random() * range + SIZE_SET_KEYSPACE + 1) + ""; + } public static String generateKeySet() { return (Math.floor(Math.random() * SIZE_SET_KEYSPACE) + 1) + ""; diff --git a/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java b/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java index 249be43fc2..c4396ce08a 100644 --- a/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java +++ b/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java @@ -61,6 +61,15 @@ public void initializeJedisClient() { ) ) ); + Benchmarking.printResults( + "GET non-existing", + Benchmarking.calculateResults( + Benchmarking.getLatencies( + iterations, + () -> jedisClient.get(Benchmarking.generateKeyGet()) + ) + ) + ); } } diff --git a/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java b/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java index da986ac7c7..6956d40d43 100644 --- a/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java +++ b/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java @@ -47,5 +47,14 @@ public void closeConnection() { ) ) ); + Benchmarking.printResults( + "GET non-existing", + Benchmarking.calculateResults( + Benchmarking.getLatencies( + iterations, + () -> lettuceClient.get(Benchmarking.generateKeyGet()) + ) + ) + ); } } From 76c4d6dc6ffac69e8fbc2565620b3b575e7e3801 Mon Sep 17 00:00:00 2001 From: acarbonetto Date: Fri, 8 Sep 2023 15:36:45 -0700 Subject: [PATCH 07/14] Revert "Update gitignore and remove generated files from git" This reverts commit d9b26a6664c6bd4426e7fa417d43e70e124338fa. --- .../javabushka/client/jedis/JedisClient.class | Bin 0 -> 1354 bytes .../client/lettuce/LettuceClient.class | Bin 0 -> 1706 bytes .../client/Benchmarking$Operation.class | Bin 0 -> 250 bytes .../test/javabushka/client/Benchmarking.class | Bin 0 -> 5246 bytes .../javabushka/client/LatencyResults.class | Bin 0 -> 581 bytes .../client/jedis/JedisClientIT.class | Bin 0 -> 3456 bytes .../client/lettuce/LettuceClientIT.class | Bin 0 -> 2526 bytes java/benchmarks/build/libs/benchmarks.jar | Bin 0 -> 2423 bytes ...javabushka.client.jedis.JedisClientIT.html | 142 +++++++++++++ ...bushka.client.lettuce.LettuceClientIT.html | 115 +++++++++++ .../reports/tests/test/css/base-style.css | 179 ++++++++++++++++ .../build/reports/tests/test/css/style.css | 84 ++++++++ .../build/reports/tests/test/index.html | 153 ++++++++++++++ .../build/reports/tests/test/js/report.js | 194 ++++++++++++++++++ .../packages/javabushka.client.jedis.html | 103 ++++++++++ .../packages/javabushka.client.lettuce.html | 103 ++++++++++ ...-javabushka.client.jedis.JedisClientIT.xml | 23 +++ ...abushka.client.lettuce.LettuceClientIT.xml | 17 ++ .../build/test-results/test/binary/output.bin | Bin 0 -> 990 bytes .../test-results/test/binary/output.bin.idx | Bin 0 -> 104 bytes .../test-results/test/binary/results.bin | Bin 0 -> 466 bytes .../compileJava/previous-compilation-data.bin | Bin 0 -> 38419 bytes .../stash-dir/JedisClientIT.class.uniqueId0 | Bin 0 -> 3464 bytes .../previous-compilation-data.bin | Bin 0 -> 39190 bytes java/benchmarks/build/tmp/jar/MANIFEST.MF | 2 + .../java/main/javabushka/Library.class | Bin 0 -> 352 bytes .../java/test/javabushka/LibraryTest.class | Bin 0 -> 681 bytes java/lib/build/libs/lib.jar | Bin 0 -> 723 bytes .../test/classes/javabushka.LibraryTest.html | 96 +++++++++ .../reports/tests/test/css/base-style.css | 179 ++++++++++++++++ .../build/reports/tests/test/css/style.css | 84 ++++++++ java/lib/build/reports/tests/test/index.html | 133 ++++++++++++ .../lib/build/reports/tests/test/js/report.js | 194 ++++++++++++++++++ .../tests/test/packages/javabushka.html | 103 ++++++++++ .../test/TEST-javabushka.LibraryTest.xml | 7 + .../build/test-results/test/binary/output.bin | 0 .../test-results/test/binary/output.bin.idx | Bin 0 -> 1 bytes .../test-results/test/binary/results.bin | Bin 0 -> 128 bytes .../compileJava/previous-compilation-data.bin | Bin 0 -> 2859 bytes .../previous-compilation-data.bin | Bin 0 -> 3207 bytes java/lib/build/tmp/jar/MANIFEST.MF | 2 + submodules/redis-rs | 1 + 42 files changed, 1914 insertions(+) create mode 100644 java/benchmarks/build/classes/java/main/javabushka/client/jedis/JedisClient.class create mode 100644 java/benchmarks/build/classes/java/main/javabushka/client/lettuce/LettuceClient.class create mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking$Operation.class create mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking.class create mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/LatencyResults.class create mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/jedis/JedisClientIT.class create mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/lettuce/LettuceClientIT.class create mode 100644 java/benchmarks/build/libs/benchmarks.jar create mode 100644 java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html create mode 100644 java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html create mode 100644 java/benchmarks/build/reports/tests/test/css/base-style.css create mode 100644 java/benchmarks/build/reports/tests/test/css/style.css create mode 100644 java/benchmarks/build/reports/tests/test/index.html create mode 100644 java/benchmarks/build/reports/tests/test/js/report.js create mode 100644 java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html create mode 100644 java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html create mode 100644 java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml create mode 100644 java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml create mode 100644 java/benchmarks/build/test-results/test/binary/output.bin create mode 100644 java/benchmarks/build/test-results/test/binary/output.bin.idx create mode 100644 java/benchmarks/build/test-results/test/binary/results.bin create mode 100644 java/benchmarks/build/tmp/compileJava/previous-compilation-data.bin create mode 100644 java/benchmarks/build/tmp/compileTestJava/compileTransaction/stash-dir/JedisClientIT.class.uniqueId0 create mode 100644 java/benchmarks/build/tmp/compileTestJava/previous-compilation-data.bin create mode 100644 java/benchmarks/build/tmp/jar/MANIFEST.MF create mode 100644 java/lib/build/classes/java/main/javabushka/Library.class create mode 100644 java/lib/build/classes/java/test/javabushka/LibraryTest.class create mode 100644 java/lib/build/libs/lib.jar create mode 100644 java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html create mode 100644 java/lib/build/reports/tests/test/css/base-style.css create mode 100644 java/lib/build/reports/tests/test/css/style.css create mode 100644 java/lib/build/reports/tests/test/index.html create mode 100644 java/lib/build/reports/tests/test/js/report.js create mode 100644 java/lib/build/reports/tests/test/packages/javabushka.html create mode 100644 java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml create mode 100644 java/lib/build/test-results/test/binary/output.bin create mode 100644 java/lib/build/test-results/test/binary/output.bin.idx create mode 100644 java/lib/build/test-results/test/binary/results.bin create mode 100644 java/lib/build/tmp/compileJava/previous-compilation-data.bin create mode 100644 java/lib/build/tmp/compileTestJava/previous-compilation-data.bin create mode 100644 java/lib/build/tmp/jar/MANIFEST.MF create mode 160000 submodules/redis-rs diff --git a/java/benchmarks/build/classes/java/main/javabushka/client/jedis/JedisClient.class b/java/benchmarks/build/classes/java/main/javabushka/client/jedis/JedisClient.class new file mode 100644 index 0000000000000000000000000000000000000000..e0af5d106f08fedece943280f1d632c44c98dbe5 GIT binary patch literal 1354 zcma)+ZBNrs6vzK}8*~rd*d|OKgz+G-4P=T>n2B#lNHj$akQsf~jmiq8HEl=2ck+cM z3W+9u0Kbag!FbMHvn?A{U+lEEz2|>^=k$N~^Y^zO0JiZYi3p+!Vk$;3Dv&+V&-JRM z+sD;cjT58k3yeNBZPR}y5G|GK3gQB@u5n~~)uv?{w(nI>7kV&l-k% zs5dNnlGpgF)pgh8b?`9ew@go9Sr+@pcxwVV&p9(Rv*GIQ#h&4}oFnO+cLJHFW7}k@ zLua48LL48+E&|2yFTj2xO~s=$)3KRwXu1Nc|2LXCft(r_0wd?T)uwin2hwJ{Cik9| z2JX0IgNtB+>=mI?BIrj3qo~k59TSQrT2<-F??x(D5TEHLf-*&Z4J1&ZsCG7B4ePWL zxPuLfoV-p~-WQ2|<0^@PKSHAd6SNAb*L;PXl~~KE8ODkIWt9Z&M8(TY~e6 zYHmgcBQuskU(+xw+ZgJ$v@-?)~-q`wsvQ@iLAcL?lFI^rDYp=twxb=&o})>hXyEg=}bsnuMadSoNq8h$$#Ld_Cb zvLRE@KRo!d3Y$_J3xgU11t&mF3o_C$7^t3#sfYey_#veI&YD685`Wv@75b$ z)&4-Gjg^g>rFspA`nudvuPeG`yFG_?%T9qRTC}SKK3Fm={Z-?nqB{p_#Ux9*#AoqP zbqxL;7^7a@a2fnW|6@cbKr(3616wpSjaOK?K;L$5*+WwLSU=-L+QykwJ5|jFvAk4< z04!XFz(ffOnTySFq8TdN4M)@W3_siOWH0lGG#^8BmjMxa=whH1ypP43rVtF9wC}+d z-E_nVeY6(HqR^YsyEpe0?2|aMO)LKmD)U2HW&Z$n@QA(`9ygue5+FY}n@daI5Ie_U zF83LOUvTXl<9s`Qfk}pQ%(alyh>}MNF{Fv+FcBXKMVW0z$>RxObBg=!Xt4>QhxTUbpHrN)>?#Fil0931y#ZX8&9ec<~1v Cte-Ie literal 0 HcmV?d00001 diff --git a/java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking$Operation.class b/java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking$Operation.class new file mode 100644 index 0000000000000000000000000000000000000000..f4611d8d91a50da0c7a272635794db0760152ae9 GIT binary patch literal 250 zcmaKnF%E)25JmrhvVv&z0#+8<$O&vTG1^FBV!x0Hptu-z@o*L%z(W}q3u9$7e~Lfz z-+#XD4**LH1suZcByTclbbgjmS{AHKv|^R!7g?VRl}+O-*U}V~66g>{tvf2E%AzI+H5Or1p0)@|7b$EQ;O?#DYa%z@V_h` g!DiYP09mRoJiECNb~@<6|7d{FYG9p~38;Lc0k?bSc@73>r~WAu%hP=t!B@-p3yABObhsuW(ZN#D`-&Bi1h`~ z^_c0TfHI+_a{8WOIvnlx#v+Gf(%~i*&Dcm+w4osxu_s<9S+V+q!L|buO^N4nY*BF; zE+>vz<3=ZhE(!B9RJ2H#0}0(oNxhhg?JNfPlR6W=B--U&-Zd@tu2j*6c4j$iWps`B ztc<#vHoA_qnb>nM7KT8Fia2%(EYQZsQo>&h_UIl3W-`(KYJhGPeUN z_Sw13-jK1v@Z*4rgSeImxhZgpZQZ#NAcyDR58*kuPQf7+*F$5r=egZsrcxvcGs6xn z&*sL)*mTYU?dM2AfqgH4ZbIiQ+PP1t7y@xn63#*b8@+bt&2bHS_=}AbMN-9x?C`P_ zqZ^QI7Q$hSDoDv@WF32G&%t&cp*Uh%I}B6BxFo;wA-kGgdl_UESSoUu;N(0~Za^$= zVid@l8FtuWZxE7>V)X+Go+}WM^9sqbN3%$mlh^3kT*}IZumCrzxCze_2$5bAkc#C6LS15D&Fdhx6F=*5p>4hq2f+=ti_!hhT@F9TjG9em~DC@*e0Xo zPd4rQRJ_4u|y~bXwjK?Ye;N{O(x5qxsS$4G!wVW`lq+6YZCj-V@T?pCa_$+L7P8}9b*zO2zIP4B< zrHKW7mX;Xp<)-9hp{&nHrZp=kqv`*ju_?ObwxZozM0GwV2!uUBxJ@pw{pnhqKUvmq zCF?GclX$!2CD2mTqFVrkb?EkvJC%^`Dmu4Fe9k6t0c)yF19OgTb&Y$A+K%eHX6gr6 zP-gy==S6X@Gn9-&-2!VaY>}*#(#8gdv>Gop*YMD{)a#*}B8Mk<8j~zeYIACPl1+FQdSZ%a4H9fo_?Zar)D>XIkeMwL5E)5=;IZM;{vM$DmXMG)T);RpDkf*(l| z{;@!fy`|as80iUfRF~&GGO=?S@6_ZefGgkbb<P7(aiWRsbO5KlN=X1IsCvGori*vdGmk>W6PXmMiAHWBB z{}A7NxQC|$?teU72z;25X5IzwB@HJbq`-%Jd6mPU>PL809R=KnkMgYyQ=qCnxq)XY z`3p}&sY1o*G!|7PX0QZYMlPMVq;lRgPSLtt<12Kal=m&CvHZYEtnBr-u3B*?YNv70 z)4_PjrZYY zRd|ItgWJGPd6g@B!*NIWCa>_#uJCPM;oDu|JH5hpIkVqm%ko{if-3_tR(C7vaV4*9 z{C_|@l1#kpT&I>s@MU(K{EgtN_!>lINb;)deJ^d4aIB)Po;gS-t8mve-kWgPBHzHZ zo^q(L;gJR_@J$whq>2iBi%))*(YN{L!*}pq-UA$4i|_F%PRJhS+fVQawSI%&;ScuH vqxcgZwV(cqzvCaa&cE#IzwPVe_Vr15<#IRS>yd8L7Z~x>n)Tk3xaGoDJugfN1lAf`w%i ziF!Ob{G~cfl`T}hsn!q0@QQ`n9B$1g7+$lm&N8ep8no3+%Sev{frb5cr_*USdjgsB z@jwYIcXgmHrw@HKxs`pNkaBnINxvs2n%{FU6WwW&-01#i>zKsfjHeS%U1;7``Rn?C z=V6n=6kR!s5?_m|68lavnM^XdN;27?Ob4Rw4T_uedPbV&0NZ(maQ0#tjvZsksbyo7 zoSG4%>a3YDR$r(og)NFZFesLgK^Z1pvVbamE3~qPI##hw>=|+tZR*{n%oU3hNyYNg WNyP%QNyQR*tIfBjt%5f3|LiY%h-dcz literal 0 HcmV?d00001 diff --git a/java/benchmarks/build/classes/java/test/javabushka/client/jedis/JedisClientIT.class b/java/benchmarks/build/classes/java/test/javabushka/client/jedis/JedisClientIT.class new file mode 100644 index 0000000000000000000000000000000000000000..f6a062a108adf08ab2aae0eb09a527c036a23ce3 GIT binary patch literal 3456 zcmcInX?GJ<7=CVAnh=IIq%5svsZi)bX+RW&qLx;cKnmJ~BH+R_xlN~?%+#4lwYYDn zxZ}nrkKg?4ISM^^jz7TTPg0N1of*QU4agS{hsoXE=Y8JgzW41P|J?o^z!SKUL<~)F zG;3Ie7J<~PzMyAJ-706!PR+`qC(v@lung}>fu_Fx$v6@MJJg}6syj2MXNsmFEiW@G zONN^{rM_eSN)mB2t;QN?ajezQiZ+3r4075Et&C_b+LlG` z1$#mfN?^UfF4wNeoH6C-&f>WAX6#b8J7ZVPQnw?$s$+HcdQMgLDwvHLHlagc-3k%k z2N#og2wib(*02Rz=`!0XXJ)JPQRb-YN{22>>i(cWM1hTcz5#(#^PXc^<>8C{lS)&! zhKI3TpxLmdZGrWD{VR_q(Sx0F?9$MSzPbPfSPYOUt+F@clglb{1B%&h!uC;50(*EQ zFP#PHD4iLlb1xmzfK~(bX{N~|8ulxZO%;7kj@edG_s$#M3`ee~Tb`>ZKBnOS4$^ck zIi9Qb1vWI&aj^;F>W>K=7D!YU_bljURVHwR^z+9GX$U;2;VFy=#LD!E3?Tj^+p>k> zm7WW%sh1p;R&l1HJ9CUe&)IqD=$>I)%$`w<#qqR;V>m9bb!Emy1qHOS^m4jKFhjZm zqkY*1Ng5T2=n9=&^$as})N%C1oZ)&tgOeJvIK>zjb+cGCi9aFTs_9X~q0p1dq#BtR z@LCK-ec+siahxITd1jwi13lOvJPqtv2B=c%8Aj`bidGC0Dq4Ag{DTIn5$AijN`>W| zhDmitTFcT>;gYB2VqSVGm7mjaLFHu=qoL-PG(3+NICmv4Veh@HtGkK)le{Nmc8M3Y zEoWHrOtms4oq|4PawVO!8H!2WG1NRC zqE-lz^7zXHu&Yi{X8o$u;`m9XbgHzk^NzsUyr&oE#`XEo`p)G5ql`vTT_Sm?lSfbOAKS0%=;!DH~ct8{GKfg zDKqJcQQP)h&(Y_D_rPsy!IdOl!|QRpp(@^+0zG#>`{ob*ZEq$5#S<%4HAopa`t4JuY#4 z6Sh9V)v9AzpC5627d}4sKFY^DNG3kxYgm857Za+#;y1xD+c)6&@=J}0*REVBH z5@lL0a7WLKug9qADREEf=?J)Q%TddY9}sW;3C&GQ=vUgBe76L)Y@xPoZ2!6=+B$05 zQkcaY5lu?5asCVKarBHV*Iub3su675YA+09vT0Sk+_9=ofpWs@={>CN}Y{b#7alDRZA8s)H_>uIX z@$_)lz~F8EWq>6dUBZbaoKBzZ8n}&TBP(}fG{o2gyNNJJ#37_;OFQ;5PD6~^L2Soi z?8G4wKgd%f5&DBQ`u&*4%k*js4RL(>k!Yr3>N0XyW%L1>rjk-q&Rjy_CeEL~%Oyzc zBfgFxv9&-4F?hX0j1h8G8F2@LF}b)LW516PZc!NbI-p h4o4s1WBw0DpK|mCPpB^GOLj8XTUO(1e2eeV`7em~aLxb# literal 0 HcmV?d00001 diff --git a/java/benchmarks/build/classes/java/test/javabushka/client/lettuce/LettuceClientIT.class b/java/benchmarks/build/classes/java/test/javabushka/client/lettuce/LettuceClientIT.class new file mode 100644 index 0000000000000000000000000000000000000000..80e5e8ce5a991801fcebcf5cd8edc75dc592a836 GIT binary patch literal 2526 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 literal 0 HcmV?d00001 diff --git a/java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html b/java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html new file mode 100644 index 0000000000..d72630017f --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html @@ -0,0 +1,142 @@ + + + + + +Test results - Class javabushka.client.jedis.JedisClientIT + + + + + +
+

Class javabushka.client.jedis.JedisClientIT

+
+
+ + + + + +
+
+ + + + + + + +
+
+
4
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
14.703s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TestDurationResult
someLibraryMethodReturnsTrue0.002spassed
testResourceInfo0.001spassed
testResourceInfoBySection0.142spassed
testResourceSetGet14.558spassed
+
+
+

Standard output

+ +
Avg. time in ms per SET: 0.07751362659
+SET p50 latency in ms: 0.0456
+SET p90 latency in ms: 0.070699
+SET p99 latency in ms: 0.127282
+SET std dev in ms: 0.665195671610232
+Avg. time in ms per GET: 0.06613250047
+GET p50 latency in ms: 0.040224
+GET p90 latency in ms: 0.058583
+GET p99 latency in ms: 0.10689
+GET std dev in ms: 0.6044885619384261
+
+
+
+
+

Standard error

+ +
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
+SLF4J: Defaulting to no-operation (NOP) logger implementation
+SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
+
+
+
+
+ +
+ + diff --git a/java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html b/java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html new file mode 100644 index 0000000000..2c4bf39157 --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html @@ -0,0 +1,115 @@ + + + + + +Test results - Class javabushka.client.lettuce.LettuceClientIT + + + + + +
+

Class javabushka.client.lettuce.LettuceClientIT

+ +
+ + + + + +
+
+ + + + + + + +
+
+
1
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
19.114s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + +
TestDurationResult
testResourceSetGet19.114spassed
+
+
+

Standard output

+ +
Avg. time in ms per SET: 0.09530544199
+SET p50 latency in ms: 0.055105
+SET p90 latency in ms: 0.089829
+SET p99 latency in ms: 0.184804
+SET std dev in ms: 0.7259927555734456
+Avg. time in ms per GET: 0.08870054313
+GET p50 latency in ms: 0.052371
+GET p90 latency in ms: 0.081338
+GET p99 latency in ms: 0.145727
+GET std dev in ms: 0.6983375291436595
+
+
+
+
+ +
+ + diff --git a/java/benchmarks/build/reports/tests/test/css/base-style.css b/java/benchmarks/build/reports/tests/test/css/base-style.css new file mode 100644 index 0000000000..4afa73e3dd --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/css/base-style.css @@ -0,0 +1,179 @@ + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 12pt; +} + +body, a, a:visited { + color: #303030; +} + +#content { + padding-left: 50px; + padding-right: 50px; + padding-top: 30px; + padding-bottom: 30px; +} + +#content h1 { + font-size: 160%; + margin-bottom: 10px; +} + +#footer { + margin-top: 100px; + font-size: 80%; + white-space: nowrap; +} + +#footer, #footer a { + color: #a0a0a0; +} + +#line-wrapping-toggle { + vertical-align: middle; +} + +#label-for-line-wrapping-toggle { + vertical-align: middle; +} + +ul { + margin-left: 0; +} + +h1, h2, h3 { + white-space: nowrap; +} + +h2 { + font-size: 120%; +} + +ul.tabLinks { + padding-left: 0; + padding-top: 10px; + padding-bottom: 10px; + overflow: auto; + min-width: 800px; + width: auto !important; + width: 800px; +} + +ul.tabLinks li { + float: left; + height: 100%; + list-style: none; + padding-left: 10px; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 5px; + margin-bottom: 0; + -moz-border-radius: 7px; + border-radius: 7px; + margin-right: 25px; + border: solid 1px #d4d4d4; + background-color: #f0f0f0; +} + +ul.tabLinks li:hover { + background-color: #fafafa; +} + +ul.tabLinks li.selected { + background-color: #c5f0f5; + border-color: #c5f0f5; +} + +ul.tabLinks a { + font-size: 120%; + display: block; + outline: none; + text-decoration: none; + margin: 0; + padding: 0; +} + +ul.tabLinks li h2 { + margin: 0; + padding: 0; +} + +div.tab { +} + +div.selected { + display: block; +} + +div.deselected { + display: none; +} + +div.tab table { + min-width: 350px; + width: auto !important; + width: 350px; + border-collapse: collapse; +} + +div.tab th, div.tab table { + border-bottom: solid #d0d0d0 1px; +} + +div.tab th { + text-align: left; + white-space: nowrap; + padding-left: 6em; +} + +div.tab th:first-child { + padding-left: 0; +} + +div.tab td { + white-space: nowrap; + padding-left: 6em; + padding-top: 5px; + padding-bottom: 5px; +} + +div.tab td:first-child { + padding-left: 0; +} + +div.tab td.numeric, div.tab th.numeric { + text-align: right; +} + +span.code { + display: inline-block; + margin-top: 0em; + margin-bottom: 1em; +} + +span.code pre { + font-size: 11pt; + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + margin: 0; + background-color: #f7f7f7; + border: solid 1px #d0d0d0; + min-width: 700px; + width: auto !important; + width: 700px; +} + +span.wrapped pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: break-all; +} + +label.hidden { + display: none; +} \ No newline at end of file diff --git a/java/benchmarks/build/reports/tests/test/css/style.css b/java/benchmarks/build/reports/tests/test/css/style.css new file mode 100644 index 0000000000..3dc4913e7a --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/css/style.css @@ -0,0 +1,84 @@ + +#summary { + margin-top: 30px; + margin-bottom: 40px; +} + +#summary table { + border-collapse: collapse; +} + +#summary td { + vertical-align: top; +} + +.breadcrumbs, .breadcrumbs a { + color: #606060; +} + +.infoBox { + width: 110px; + padding-top: 15px; + padding-bottom: 15px; + text-align: center; +} + +.infoBox p { + margin: 0; +} + +.counter, .percent { + font-size: 120%; + font-weight: bold; + margin-bottom: 8px; +} + +#duration { + width: 125px; +} + +#successRate, .summaryGroup { + border: solid 2px #d0d0d0; + -moz-border-radius: 10px; + border-radius: 10px; +} + +#successRate { + width: 140px; + margin-left: 35px; +} + +#successRate .percent { + font-size: 180%; +} + +.success, .success a { + color: #008000; +} + +div.success, #successRate.success { + background-color: #bbd9bb; + border-color: #008000; +} + +.failures, .failures a { + color: #b60808; +} + +.skipped, .skipped a { + color: #c09853; +} + +div.failures, #successRate.failures { + background-color: #ecdada; + border-color: #b60808; +} + +ul.linkList { + padding-left: 0; +} + +ul.linkList li { + list-style: none; + margin-bottom: 5px; +} diff --git a/java/benchmarks/build/reports/tests/test/index.html b/java/benchmarks/build/reports/tests/test/index.html new file mode 100644 index 0000000000..f03c715ec6 --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/index.html @@ -0,0 +1,153 @@ + + + + + +Test results - Test Summary + + + + + +
+

Test Summary

+
+ + + + + +
+
+ + + + + + + +
+
+
5
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
33.817s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Packages

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PackageTestsFailuresIgnoredDurationSuccess rate
+javabushka.client.jedis +40014.703s100%
+javabushka.client.lettuce +10019.114s100%
+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+javabushka.client.jedis.JedisClientIT +40014.703s100%
+javabushka.client.lettuce.LettuceClientIT +10019.114s100%
+
+
+ +
+ + diff --git a/java/benchmarks/build/reports/tests/test/js/report.js b/java/benchmarks/build/reports/tests/test/js/report.js new file mode 100644 index 0000000000..83bab4a19f --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/js/report.js @@ -0,0 +1,194 @@ +(function (window, document) { + "use strict"; + + var tabs = {}; + + function changeElementClass(element, classValue) { + if (element.getAttribute("className")) { + element.setAttribute("className", classValue); + } else { + element.setAttribute("class", classValue); + } + } + + function getClassAttribute(element) { + if (element.getAttribute("className")) { + return element.getAttribute("className"); + } else { + return element.getAttribute("class"); + } + } + + function addClass(element, classValue) { + changeElementClass(element, getClassAttribute(element) + " " + classValue); + } + + function removeClass(element, classValue) { + changeElementClass(element, getClassAttribute(element).replace(classValue, "")); + } + + function initTabs() { + var container = document.getElementById("tabs"); + + tabs.tabs = findTabs(container); + tabs.titles = findTitles(tabs.tabs); + tabs.headers = findHeaders(container); + tabs.select = select; + tabs.deselectAll = deselectAll; + tabs.select(0); + + return true; + } + + function getCheckBox() { + return document.getElementById("line-wrapping-toggle"); + } + + function getLabelForCheckBox() { + return document.getElementById("label-for-line-wrapping-toggle"); + } + + function findCodeBlocks() { + var spans = document.getElementById("tabs").getElementsByTagName("span"); + var codeBlocks = []; + for (var i = 0; i < spans.length; ++i) { + if (spans[i].className.indexOf("code") >= 0) { + codeBlocks.push(spans[i]); + } + } + return codeBlocks; + } + + function forAllCodeBlocks(operation) { + var codeBlocks = findCodeBlocks(); + + for (var i = 0; i < codeBlocks.length; ++i) { + operation(codeBlocks[i], "wrapped"); + } + } + + function toggleLineWrapping() { + var checkBox = getCheckBox(); + + if (checkBox.checked) { + forAllCodeBlocks(addClass); + } else { + forAllCodeBlocks(removeClass); + } + } + + function initControls() { + if (findCodeBlocks().length > 0) { + var checkBox = getCheckBox(); + var label = getLabelForCheckBox(); + + checkBox.onclick = toggleLineWrapping; + checkBox.checked = false; + + removeClass(label, "hidden"); + } + } + + function switchTab() { + var id = this.id.substr(1); + + for (var i = 0; i < tabs.tabs.length; i++) { + if (tabs.tabs[i].id === id) { + tabs.select(i); + break; + } + } + + return false; + } + + function select(i) { + this.deselectAll(); + + changeElementClass(this.tabs[i], "tab selected"); + changeElementClass(this.headers[i], "selected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var h2 = document.createElement("H2"); + + h2.appendChild(document.createTextNode(this.titles[i])); + this.headers[i].appendChild(h2); + } + + function deselectAll() { + for (var i = 0; i < this.tabs.length; i++) { + changeElementClass(this.tabs[i], "tab deselected"); + changeElementClass(this.headers[i], "deselected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var a = document.createElement("A"); + + a.setAttribute("id", "ltab" + i); + a.setAttribute("href", "#tab" + i); + a.onclick = switchTab; + a.appendChild(document.createTextNode(this.titles[i])); + + this.headers[i].appendChild(a); + } + } + + function findTabs(container) { + return findChildElements(container, "DIV", "tab"); + } + + function findHeaders(container) { + var owner = findChildElements(container, "UL", "tabLinks"); + return findChildElements(owner[0], "LI", null); + } + + function findTitles(tabs) { + var titles = []; + + for (var i = 0; i < tabs.length; i++) { + var tab = tabs[i]; + var header = findChildElements(tab, "H2", null)[0]; + + header.parentNode.removeChild(header); + + if (header.innerText) { + titles.push(header.innerText); + } else { + titles.push(header.textContent); + } + } + + return titles; + } + + function findChildElements(container, name, targetClass) { + var elements = []; + var children = container.childNodes; + + for (var i = 0; i < children.length; i++) { + var child = children.item(i); + + if (child.nodeType === 1 && child.nodeName === name) { + if (targetClass && child.className.indexOf(targetClass) < 0) { + continue; + } + + elements.push(child); + } + } + + return elements; + } + + // Entry point. + + window.onload = function() { + initTabs(); + initControls(); + }; +} (window, window.document)); \ No newline at end of file diff --git a/java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html b/java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html new file mode 100644 index 0000000000..6fe5059ebd --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html @@ -0,0 +1,103 @@ + + + + + +Test results - Package javabushka.client.jedis + + + + + +
+

Package javabushka.client.jedis

+ +
+ + + + + +
+
+ + + + + + + +
+
+
4
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
14.703s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+JedisClientIT +40014.703s100%
+
+
+ +
+ + diff --git a/java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html b/java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html new file mode 100644 index 0000000000..72ed2f2290 --- /dev/null +++ b/java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html @@ -0,0 +1,103 @@ + + + + + +Test results - Package javabushka.client.lettuce + + + + + +
+

Package javabushka.client.lettuce

+ +
+ + + + + +
+
+ + + + + + + +
+
+
1
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
19.114s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+LettuceClientIT +10019.114s100%
+
+
+ +
+ + diff --git a/java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml b/java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml new file mode 100644 index 0000000000..f76c23081b --- /dev/null +++ b/java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml b/java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml new file mode 100644 index 0000000000..15ab216e63 --- /dev/null +++ b/java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml @@ -0,0 +1,17 @@ + + + + + + + diff --git a/java/benchmarks/build/test-results/test/binary/output.bin b/java/benchmarks/build/test-results/test/binary/output.bin new file mode 100644 index 0000000000000000000000000000000000000000..76f5d5a3a126375fb8bd3081dabee2c02a09ac91 GIT binary patch literal 990 zcmZ{i+iKfD5QbwHZ16+0LrT;1qVk?*555Q_v?-L(7StCI)>>B432774x9_g3;DXn; z;-7E7`A1jt*?s!-D86stF)J&ZgKME`vmCZnHVkmx_C+#OJMkwe>#j;tm$`EL)E0&9 zAIc`T{dKasn$PYg$QQfIo-0>2MF2JJ=eD!GA88x7{qghHC(jO}5MZ{pO~AEHAfyu^ zwHEfyb({72a5zkFdyDn9&FzrvU0uCDw}4&S!|u6vdk@d8^ScbmYBqoK@&2Vqz?HRy zvVnR4?*r-A-y0waQ3@%SOriFEFiBUl4>A~ute zZE{I!aY;~Waeir0a%ymDiF;}Z79oaJQyC$85}g^CmSMUmD>WsvSkDVY!dyd~DzK@W z@2ayf&O&yHXI@&qQ)O^!a!F=>9&QLVZ7(fn{!Ser~Ey wW>QgNQKfHcNk)E3P-;nOQC@LKQE4h(Nd_jUDN`9(C!)I?Lx2GqdScTU0BB*aK>z>% literal 0 HcmV?d00001 diff --git a/java/benchmarks/build/tmp/compileJava/previous-compilation-data.bin b/java/benchmarks/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 0000000000000000000000000000000000000000..6e1548148fc2e70edbaa1e9bd2596ac50d9e49cb GIT binary patch literal 38419 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 literal 0 HcmV?d00001 diff --git a/java/benchmarks/build/tmp/compileTestJava/compileTransaction/stash-dir/JedisClientIT.class.uniqueId0 b/java/benchmarks/build/tmp/compileTestJava/compileTransaction/stash-dir/JedisClientIT.class.uniqueId0 new file mode 100644 index 0000000000000000000000000000000000000000..5480044a03743ee4719cdf7fc8c9b963a7cfe602 GIT binary patch literal 3464 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 Ra+f+i^FDco1F|(7{sni?owNV| literal 0 HcmV?d00001 diff --git a/java/lib/build/libs/lib.jar b/java/lib/build/libs/lib.jar new file mode 100644 index 0000000000000000000000000000000000000000..77f1a996552b93a2c207a0cde3f2505656498e79 GIT binary patch literal 723 zcmWIWW@Zs#VBp|jNSv$|&Hw~VAOZ+Df!NnI#8KDN&rP41Apk|;rh2A#(m(~0Kn&E5 zQ0VLE=jrAe9HQsz_SyH$X&-N0y^Flwx?1PXoZlQ|aK-q+(??I4kPKVARRzUXZlGaV ziDijNrNtT9i757hl(Nq-wR#6slEBEoAc3mXCo`!iv8YlnIVZ8WIMv_U?}&lOoatxP zygAEp%G+fI)`qql`|=fuquAE7IoO zJO2E(bwh9pCsR*Si{`Noj?GgmL@IS>{r(fRF65@*BH_C)-t`#Vx*dOHhJaD}q}piP zjy)GHas77TIDa-sa9L~KmC*guPTk{*+&oEinaEeCh_^e$53jqVo4EW(e5ucj?P+Um z_J+i!PCNX~+NmhHDtZ<7Td$ye%Ocequ4lII5O26+YGXd*Y0nW0y9(C5Joh=zX9y_g zeDc}P+Y{Z>lIv6Z<3fA$hoAmMpR^_asH8K`u4fGJW@Hj!#vP5ofC2&mhPRF&8Xl?W z+R!5vq!V9yBYM0-G=i*Nh^i4KmIJ(5*+42; Ofba*9J_<|~3=9Ckh0YZK literal 0 HcmV?d00001 diff --git a/java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html b/java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html new file mode 100644 index 0000000000..3031b841d0 --- /dev/null +++ b/java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html @@ -0,0 +1,96 @@ + + + + + +Test results - Class javabushka.LibraryTest + + + + + +
+

Class javabushka.LibraryTest

+ +
+ + + + + +
+
+ + + + + + + +
+
+
1
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.002s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + +
TestDurationResult
someLibraryMethodReturnsTrue0.002spassed
+
+
+ +
+ + diff --git a/java/lib/build/reports/tests/test/css/base-style.css b/java/lib/build/reports/tests/test/css/base-style.css new file mode 100644 index 0000000000..4afa73e3dd --- /dev/null +++ b/java/lib/build/reports/tests/test/css/base-style.css @@ -0,0 +1,179 @@ + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 12pt; +} + +body, a, a:visited { + color: #303030; +} + +#content { + padding-left: 50px; + padding-right: 50px; + padding-top: 30px; + padding-bottom: 30px; +} + +#content h1 { + font-size: 160%; + margin-bottom: 10px; +} + +#footer { + margin-top: 100px; + font-size: 80%; + white-space: nowrap; +} + +#footer, #footer a { + color: #a0a0a0; +} + +#line-wrapping-toggle { + vertical-align: middle; +} + +#label-for-line-wrapping-toggle { + vertical-align: middle; +} + +ul { + margin-left: 0; +} + +h1, h2, h3 { + white-space: nowrap; +} + +h2 { + font-size: 120%; +} + +ul.tabLinks { + padding-left: 0; + padding-top: 10px; + padding-bottom: 10px; + overflow: auto; + min-width: 800px; + width: auto !important; + width: 800px; +} + +ul.tabLinks li { + float: left; + height: 100%; + list-style: none; + padding-left: 10px; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 5px; + margin-bottom: 0; + -moz-border-radius: 7px; + border-radius: 7px; + margin-right: 25px; + border: solid 1px #d4d4d4; + background-color: #f0f0f0; +} + +ul.tabLinks li:hover { + background-color: #fafafa; +} + +ul.tabLinks li.selected { + background-color: #c5f0f5; + border-color: #c5f0f5; +} + +ul.tabLinks a { + font-size: 120%; + display: block; + outline: none; + text-decoration: none; + margin: 0; + padding: 0; +} + +ul.tabLinks li h2 { + margin: 0; + padding: 0; +} + +div.tab { +} + +div.selected { + display: block; +} + +div.deselected { + display: none; +} + +div.tab table { + min-width: 350px; + width: auto !important; + width: 350px; + border-collapse: collapse; +} + +div.tab th, div.tab table { + border-bottom: solid #d0d0d0 1px; +} + +div.tab th { + text-align: left; + white-space: nowrap; + padding-left: 6em; +} + +div.tab th:first-child { + padding-left: 0; +} + +div.tab td { + white-space: nowrap; + padding-left: 6em; + padding-top: 5px; + padding-bottom: 5px; +} + +div.tab td:first-child { + padding-left: 0; +} + +div.tab td.numeric, div.tab th.numeric { + text-align: right; +} + +span.code { + display: inline-block; + margin-top: 0em; + margin-bottom: 1em; +} + +span.code pre { + font-size: 11pt; + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + margin: 0; + background-color: #f7f7f7; + border: solid 1px #d0d0d0; + min-width: 700px; + width: auto !important; + width: 700px; +} + +span.wrapped pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: break-all; +} + +label.hidden { + display: none; +} \ No newline at end of file diff --git a/java/lib/build/reports/tests/test/css/style.css b/java/lib/build/reports/tests/test/css/style.css new file mode 100644 index 0000000000..3dc4913e7a --- /dev/null +++ b/java/lib/build/reports/tests/test/css/style.css @@ -0,0 +1,84 @@ + +#summary { + margin-top: 30px; + margin-bottom: 40px; +} + +#summary table { + border-collapse: collapse; +} + +#summary td { + vertical-align: top; +} + +.breadcrumbs, .breadcrumbs a { + color: #606060; +} + +.infoBox { + width: 110px; + padding-top: 15px; + padding-bottom: 15px; + text-align: center; +} + +.infoBox p { + margin: 0; +} + +.counter, .percent { + font-size: 120%; + font-weight: bold; + margin-bottom: 8px; +} + +#duration { + width: 125px; +} + +#successRate, .summaryGroup { + border: solid 2px #d0d0d0; + -moz-border-radius: 10px; + border-radius: 10px; +} + +#successRate { + width: 140px; + margin-left: 35px; +} + +#successRate .percent { + font-size: 180%; +} + +.success, .success a { + color: #008000; +} + +div.success, #successRate.success { + background-color: #bbd9bb; + border-color: #008000; +} + +.failures, .failures a { + color: #b60808; +} + +.skipped, .skipped a { + color: #c09853; +} + +div.failures, #successRate.failures { + background-color: #ecdada; + border-color: #b60808; +} + +ul.linkList { + padding-left: 0; +} + +ul.linkList li { + list-style: none; + margin-bottom: 5px; +} diff --git a/java/lib/build/reports/tests/test/index.html b/java/lib/build/reports/tests/test/index.html new file mode 100644 index 0000000000..837e00ab79 --- /dev/null +++ b/java/lib/build/reports/tests/test/index.html @@ -0,0 +1,133 @@ + + + + + +Test results - Test Summary + + + + + +
+

Test Summary

+
+ + + + + +
+
+ + + + + + + +
+
+
1
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.002s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Packages

+ + + + + + + + + + + + + + + + + + + + + +
PackageTestsFailuresIgnoredDurationSuccess rate
+javabushka +1000.002s100%
+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+javabushka.LibraryTest +1000.002s100%
+
+
+ +
+ + diff --git a/java/lib/build/reports/tests/test/js/report.js b/java/lib/build/reports/tests/test/js/report.js new file mode 100644 index 0000000000..83bab4a19f --- /dev/null +++ b/java/lib/build/reports/tests/test/js/report.js @@ -0,0 +1,194 @@ +(function (window, document) { + "use strict"; + + var tabs = {}; + + function changeElementClass(element, classValue) { + if (element.getAttribute("className")) { + element.setAttribute("className", classValue); + } else { + element.setAttribute("class", classValue); + } + } + + function getClassAttribute(element) { + if (element.getAttribute("className")) { + return element.getAttribute("className"); + } else { + return element.getAttribute("class"); + } + } + + function addClass(element, classValue) { + changeElementClass(element, getClassAttribute(element) + " " + classValue); + } + + function removeClass(element, classValue) { + changeElementClass(element, getClassAttribute(element).replace(classValue, "")); + } + + function initTabs() { + var container = document.getElementById("tabs"); + + tabs.tabs = findTabs(container); + tabs.titles = findTitles(tabs.tabs); + tabs.headers = findHeaders(container); + tabs.select = select; + tabs.deselectAll = deselectAll; + tabs.select(0); + + return true; + } + + function getCheckBox() { + return document.getElementById("line-wrapping-toggle"); + } + + function getLabelForCheckBox() { + return document.getElementById("label-for-line-wrapping-toggle"); + } + + function findCodeBlocks() { + var spans = document.getElementById("tabs").getElementsByTagName("span"); + var codeBlocks = []; + for (var i = 0; i < spans.length; ++i) { + if (spans[i].className.indexOf("code") >= 0) { + codeBlocks.push(spans[i]); + } + } + return codeBlocks; + } + + function forAllCodeBlocks(operation) { + var codeBlocks = findCodeBlocks(); + + for (var i = 0; i < codeBlocks.length; ++i) { + operation(codeBlocks[i], "wrapped"); + } + } + + function toggleLineWrapping() { + var checkBox = getCheckBox(); + + if (checkBox.checked) { + forAllCodeBlocks(addClass); + } else { + forAllCodeBlocks(removeClass); + } + } + + function initControls() { + if (findCodeBlocks().length > 0) { + var checkBox = getCheckBox(); + var label = getLabelForCheckBox(); + + checkBox.onclick = toggleLineWrapping; + checkBox.checked = false; + + removeClass(label, "hidden"); + } + } + + function switchTab() { + var id = this.id.substr(1); + + for (var i = 0; i < tabs.tabs.length; i++) { + if (tabs.tabs[i].id === id) { + tabs.select(i); + break; + } + } + + return false; + } + + function select(i) { + this.deselectAll(); + + changeElementClass(this.tabs[i], "tab selected"); + changeElementClass(this.headers[i], "selected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var h2 = document.createElement("H2"); + + h2.appendChild(document.createTextNode(this.titles[i])); + this.headers[i].appendChild(h2); + } + + function deselectAll() { + for (var i = 0; i < this.tabs.length; i++) { + changeElementClass(this.tabs[i], "tab deselected"); + changeElementClass(this.headers[i], "deselected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var a = document.createElement("A"); + + a.setAttribute("id", "ltab" + i); + a.setAttribute("href", "#tab" + i); + a.onclick = switchTab; + a.appendChild(document.createTextNode(this.titles[i])); + + this.headers[i].appendChild(a); + } + } + + function findTabs(container) { + return findChildElements(container, "DIV", "tab"); + } + + function findHeaders(container) { + var owner = findChildElements(container, "UL", "tabLinks"); + return findChildElements(owner[0], "LI", null); + } + + function findTitles(tabs) { + var titles = []; + + for (var i = 0; i < tabs.length; i++) { + var tab = tabs[i]; + var header = findChildElements(tab, "H2", null)[0]; + + header.parentNode.removeChild(header); + + if (header.innerText) { + titles.push(header.innerText); + } else { + titles.push(header.textContent); + } + } + + return titles; + } + + function findChildElements(container, name, targetClass) { + var elements = []; + var children = container.childNodes; + + for (var i = 0; i < children.length; i++) { + var child = children.item(i); + + if (child.nodeType === 1 && child.nodeName === name) { + if (targetClass && child.className.indexOf(targetClass) < 0) { + continue; + } + + elements.push(child); + } + } + + return elements; + } + + // Entry point. + + window.onload = function() { + initTabs(); + initControls(); + }; +} (window, window.document)); \ No newline at end of file diff --git a/java/lib/build/reports/tests/test/packages/javabushka.html b/java/lib/build/reports/tests/test/packages/javabushka.html new file mode 100644 index 0000000000..c50fe5999a --- /dev/null +++ b/java/lib/build/reports/tests/test/packages/javabushka.html @@ -0,0 +1,103 @@ + + + + + +Test results - Package javabushka + + + + + +
+

Package javabushka

+ +
+ + + + + +
+
+ + + + + + + +
+
+
1
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.002s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+LibraryTest +1000.002s100%
+
+
+ +
+ + diff --git a/java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml b/java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml new file mode 100644 index 0000000000..d06e1fe97d --- /dev/null +++ b/java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/java/lib/build/test-results/test/binary/output.bin b/java/lib/build/test-results/test/binary/output.bin new file mode 100644 index 0000000000..e69de29bb2 diff --git a/java/lib/build/test-results/test/binary/output.bin.idx b/java/lib/build/test-results/test/binary/output.bin.idx new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/java/lib/build/test-results/test/binary/results.bin b/java/lib/build/test-results/test/binary/results.bin new file mode 100644 index 0000000000000000000000000000000000000000..f5767307578ed46df57c9e327fa93b66a3c43c2d GIT binary patch literal 128 zcmZQ(WSX9pSeBSnTAY!csOOWJRFqg$8IoFDf+*GIr-_(+f Z{FI>7lG38Q;*g@!RJ@W5Oi)vb82})PFZTcd literal 0 HcmV?d00001 diff --git a/java/lib/build/tmp/compileJava/previous-compilation-data.bin b/java/lib/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 0000000000000000000000000000000000000000..28d5565cd61893d10507bce77ba30fa1dca615b3 GIT binary patch literal 2859 zcmb7GYgAKL7CzgcP&M=@SQXS#MNu(FO9ez!27?hagg1(>dWkp5C6{~S%?%J=hzTGs zUkE5nt*upjfcU6FtAZ9P)Uj%*S_kK4N2g=!YpF|})-LCScD3_s*2=wW<*ajZ_TJz3 z?S1w=fV4pRpt39`hsm^AO=d=c3OrCTmnkul9a~=n-d?sS;Z?%Rt4~{o%iRdANB{Hu zHVN)a`Vmj!MP5Try_nq}6&pp-$g=}bF`Z_M!a(HUL?x=QFnTj%WL2DC5b>t8#*~nV zK8>kQBDUvDK4tb!dp#MGL1ZxTA--e?c>_5`$v6~k)tgwonUxF@lg;Lel6k-|RA`eq zemE+YSc@pheyDJzjo}sksHk^70+k7_1M1BIY zeMNcSE#!K_#te6&&2_gdkJXERhY?w(v%Us72*%R7ISHYR?y zPL~j!n3zP8NeU`*)mUCCD*IhSMH(t)TuGH#$(oKF61#ws5Cj{~FGL&c8K{^wFg9Ms zyOsa>wlVNYw??Qx^OwCHs~3^Q#B&M#+p1?QtP-P6-g==sYW~uvucW~#mHn0`FVnu8 z9JL&6WMzgE*cA*aq&WFZDz+(t^Re(eHPuBHaJUX*72I` zWFbx@7P6A~N~kEuRS)+wLWw97_Z2zguLmcnzx!pr4&J2F{n2}LJ7=^ zDh0G5qzsTFGfPnps9c~&-9q`$g2fGON4c#gW#iOv+vioK7g{SIVH4;!!<;RUx)tW~ z3WXwf8#NVJ9DUV3mgpBpbu66wXP+&(ODaLT9RjN$sTyKb8KH_AKu*po1WZ<-I}o`JNp>c2bJ9fXXZqm)#54s>F}4UB7vzId1c<@fV_A8=D?k2MK?K6xDlx zifx%Pt=nA`wgHD6x)gi2O5N7;_}2C<6~{B)hnTz!JaXVs$Bi$mFSLF*dUef}cRO|i z`GCgwkjj|N$h29!*tGh9kso)=*-`V487*n+_5k^aZrDpTlUM`K>SZPVIa^iL6Eo;l zW5y55*S3VU?t|ERh^vDAG_Y_0PzlG<=BhW@@%@q=&IV0p(7MST19p~g4Lt}8Rvn^r zO{{=J2O1xp-(1JF4XqkEZjI-xnRtK8oXhh!kG~uF)T`;uxOg*wW^xV__ zt;C(_e|shPx17Fjo6=x@k2~B1qSu zoAIoz84_AxLDVM{JIk0qrE=Nmk;c#MS+fmqra1@8+WS96h?h@6;%SJEIzv-tlSPT; zS;oq?QX^61@xAL0d`lk8UZg8KRDT4Y+t>!_XCX~IM-wNQ1u<9njMfXoV`;-QA^h*N z^2D}@|Ne18?8|l_9Y8*(0EeBYj`gCTw@DJ!Ly0{M?ak`Zd;8}!92!26>qMQ9)&=AX zAQyo6{s~a2wYMZV!RV(Lfq(Q(+BME&&U3G!+h>|%CTlJN`I36QMA>9goJy<+o_YuA zUev_iw3W1v*DtvYR5q9qT>ocheu)Ti&h#_~HR;@aB zqU=~f_4E87ZW~Vr1T&F_{#F6KI{ZImOWk&^ciSS% zZHqh#-9ZZp=%__baN9wV`z96cn^d~+QHks5=;?$Cpb7KNqA7d-7vTHopzsc+3kO{b zl+jGLnH+N;R}^!YC^G7o0} literal 0 HcmV?d00001 diff --git a/java/lib/build/tmp/compileTestJava/previous-compilation-data.bin b/java/lib/build/tmp/compileTestJava/previous-compilation-data.bin new file mode 100644 index 0000000000000000000000000000000000000000..08a1bf7d5fb3fc7dd6ce4bb2f2ad4410e30da8d6 GIT binary patch literal 3207 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 literal 0 HcmV?d00001 diff --git a/java/lib/build/tmp/jar/MANIFEST.MF b/java/lib/build/tmp/jar/MANIFEST.MF new file mode 100644 index 0000000000..58630c02ef --- /dev/null +++ b/java/lib/build/tmp/jar/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/submodules/redis-rs b/submodules/redis-rs new file mode 160000 index 0000000000..694fb7b1ec --- /dev/null +++ b/submodules/redis-rs @@ -0,0 +1 @@ +Subproject commit 694fb7b1ec1a826cc5a8e936a6c6eb7610b3ec65 From cc480f22197d6324b90cc79dd37ca0cf555c146e Mon Sep 17 00:00:00 2001 From: acarbonetto Date: Fri, 8 Sep 2023 15:47:00 -0700 Subject: [PATCH 08/14] fix redis-rs submodules Signed-off-by: acarbonetto --- java/.gitignore | 1 - .../javabushka/client/jedis/JedisClient.class | Bin 1354 -> 0 bytes .../client/lettuce/LettuceClient.class | Bin 1706 -> 0 bytes .../client/Benchmarking$Operation.class | Bin 250 -> 0 bytes .../test/javabushka/client/Benchmarking.class | Bin 5246 -> 0 bytes .../javabushka/client/LatencyResults.class | Bin 581 -> 0 bytes .../client/jedis/JedisClientIT.class | Bin 3456 -> 0 bytes .../client/lettuce/LettuceClientIT.class | Bin 2526 -> 0 bytes java/benchmarks/build/libs/benchmarks.jar | Bin 2423 -> 0 bytes ...javabushka.client.jedis.JedisClientIT.html | 142 ------------- ...bushka.client.lettuce.LettuceClientIT.html | 115 ----------- .../reports/tests/test/css/base-style.css | 179 ---------------- .../build/reports/tests/test/css/style.css | 84 -------- .../build/reports/tests/test/index.html | 153 -------------- .../build/reports/tests/test/js/report.js | 194 ------------------ .../packages/javabushka.client.jedis.html | 103 ---------- .../packages/javabushka.client.lettuce.html | 103 ---------- ...-javabushka.client.jedis.JedisClientIT.xml | 23 --- ...abushka.client.lettuce.LettuceClientIT.xml | 17 -- .../build/test-results/test/binary/output.bin | Bin 990 -> 0 bytes .../test-results/test/binary/output.bin.idx | Bin 104 -> 0 bytes .../test-results/test/binary/results.bin | Bin 466 -> 0 bytes .../compileJava/previous-compilation-data.bin | Bin 38419 -> 0 bytes .../stash-dir/JedisClientIT.class.uniqueId0 | Bin 3464 -> 0 bytes .../previous-compilation-data.bin | Bin 39190 -> 0 bytes java/benchmarks/build/tmp/jar/MANIFEST.MF | 2 - .../java/main/javabushka/Library.class | Bin 352 -> 0 bytes .../java/test/javabushka/LibraryTest.class | Bin 681 -> 0 bytes java/lib/build/libs/lib.jar | Bin 723 -> 0 bytes .../test/classes/javabushka.LibraryTest.html | 96 --------- .../reports/tests/test/css/base-style.css | 179 ---------------- .../build/reports/tests/test/css/style.css | 84 -------- java/lib/build/reports/tests/test/index.html | 133 ------------ .../lib/build/reports/tests/test/js/report.js | 194 ------------------ .../tests/test/packages/javabushka.html | 103 ---------- .../test/TEST-javabushka.LibraryTest.xml | 7 - .../build/test-results/test/binary/output.bin | 0 .../test-results/test/binary/output.bin.idx | Bin 1 -> 0 bytes .../test-results/test/binary/results.bin | Bin 128 -> 0 bytes .../compileJava/previous-compilation-data.bin | Bin 2859 -> 0 bytes .../previous-compilation-data.bin | Bin 3207 -> 0 bytes java/lib/build/tmp/jar/MANIFEST.MF | 2 - 42 files changed, 1914 deletions(-) delete mode 100644 java/benchmarks/build/classes/java/main/javabushka/client/jedis/JedisClient.class delete mode 100644 java/benchmarks/build/classes/java/main/javabushka/client/lettuce/LettuceClient.class delete mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking$Operation.class delete mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking.class delete mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/LatencyResults.class delete mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/jedis/JedisClientIT.class delete mode 100644 java/benchmarks/build/classes/java/test/javabushka/client/lettuce/LettuceClientIT.class delete mode 100644 java/benchmarks/build/libs/benchmarks.jar delete mode 100644 java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html delete mode 100644 java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html delete mode 100644 java/benchmarks/build/reports/tests/test/css/base-style.css delete mode 100644 java/benchmarks/build/reports/tests/test/css/style.css delete mode 100644 java/benchmarks/build/reports/tests/test/index.html delete mode 100644 java/benchmarks/build/reports/tests/test/js/report.js delete mode 100644 java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html delete mode 100644 java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html delete mode 100644 java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml delete mode 100644 java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml delete mode 100644 java/benchmarks/build/test-results/test/binary/output.bin delete mode 100644 java/benchmarks/build/test-results/test/binary/output.bin.idx delete mode 100644 java/benchmarks/build/test-results/test/binary/results.bin delete mode 100644 java/benchmarks/build/tmp/compileJava/previous-compilation-data.bin delete mode 100644 java/benchmarks/build/tmp/compileTestJava/compileTransaction/stash-dir/JedisClientIT.class.uniqueId0 delete mode 100644 java/benchmarks/build/tmp/compileTestJava/previous-compilation-data.bin delete mode 100644 java/benchmarks/build/tmp/jar/MANIFEST.MF delete mode 100644 java/lib/build/classes/java/main/javabushka/Library.class delete mode 100644 java/lib/build/classes/java/test/javabushka/LibraryTest.class delete mode 100644 java/lib/build/libs/lib.jar delete mode 100644 java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html delete mode 100644 java/lib/build/reports/tests/test/css/base-style.css delete mode 100644 java/lib/build/reports/tests/test/css/style.css delete mode 100644 java/lib/build/reports/tests/test/index.html delete mode 100644 java/lib/build/reports/tests/test/js/report.js delete mode 100644 java/lib/build/reports/tests/test/packages/javabushka.html delete mode 100644 java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml delete mode 100644 java/lib/build/test-results/test/binary/output.bin delete mode 100644 java/lib/build/test-results/test/binary/output.bin.idx delete mode 100644 java/lib/build/test-results/test/binary/results.bin delete mode 100644 java/lib/build/tmp/compileJava/previous-compilation-data.bin delete mode 100644 java/lib/build/tmp/compileTestJava/previous-compilation-data.bin delete mode 100644 java/lib/build/tmp/jar/MANIFEST.MF diff --git a/java/.gitignore b/java/.gitignore index c68362cbb2..1b6985c009 100644 --- a/java/.gitignore +++ b/java/.gitignore @@ -3,4 +3,3 @@ # Ignore Gradle build output directory build -.idea diff --git a/java/benchmarks/build/classes/java/main/javabushka/client/jedis/JedisClient.class b/java/benchmarks/build/classes/java/main/javabushka/client/jedis/JedisClient.class deleted file mode 100644 index e0af5d106f08fedece943280f1d632c44c98dbe5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1354 zcma)+ZBNrs6vzK}8*~rd*d|OKgz+G-4P=T>n2B#lNHj$akQsf~jmiq8HEl=2ck+cM z3W+9u0Kbag!FbMHvn?A{U+lEEz2|>^=k$N~^Y^zO0JiZYi3p+!Vk$;3Dv&+V&-JRM z+sD;cjT58k3yeNBZPR}y5G|GK3gQB@u5n~~)uv?{w(nI>7kV&l-k% zs5dNnlGpgF)pgh8b?`9ew@go9Sr+@pcxwVV&p9(Rv*GIQ#h&4}oFnO+cLJHFW7}k@ zLua48LL48+E&|2yFTj2xO~s=$)3KRwXu1Nc|2LXCft(r_0wd?T)uwin2hwJ{Cik9| z2JX0IgNtB+>=mI?BIrj3qo~k59TSQrT2<-F??x(D5TEHLf-*&Z4J1&ZsCG7B4ePWL zxPuLfoV-p~-WQ2|<0^@PKSHAd6SNAb*L;PXl~~KE8ODkIWt9Z&M8(TY~e6 zYHmgcBQuskU(+xw+ZgJ$v@-?)~-q`wsvQ@iLAcL?lFI^rDYp=twxb=&o})>hXyEg=}bsnuMadSoNq8h$$#Ld_Cb zvLRE@KRo!d3Y$_J3xgU11t&mF3o_C$7^t3#sfYey_#veI&YD685`Wv@75b$ z)&4-Gjg^g>rFspA`nudvuPeG`yFG_?%T9qRTC}SKK3Fm={Z-?nqB{p_#Ux9*#AoqP zbqxL;7^7a@a2fnW|6@cbKr(3616wpSjaOK?K;L$5*+WwLSU=-L+QykwJ5|jFvAk4< z04!XFz(ffOnTySFq8TdN4M)@W3_siOWH0lGG#^8BmjMxa=whH1ypP43rVtF9wC}+d z-E_nVeY6(HqR^YsyEpe0?2|aMO)LKmD)U2HW&Z$n@QA(`9ygue5+FY}n@daI5Ie_U zF83LOUvTXl<9s`Qfk}pQ%(alyh>}MNF{Fv+FcBXKMVW0z$>RxObBg=!Xt4>QhxTUbpHrN)>?#Fil0931y#ZX8&9ec<~1v Cte-Ie diff --git a/java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking$Operation.class b/java/benchmarks/build/classes/java/test/javabushka/client/Benchmarking$Operation.class deleted file mode 100644 index f4611d8d91a50da0c7a272635794db0760152ae9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmaKnF%E)25JmrhvVv&z0#+8<$O&vTG1^FBV!x0Hptu-z@o*L%z(W}q3u9$7e~Lfz z-+#XD4**LH1suZcByTclbbgjmS{AHKv|^R!7g?VRl}+O-*U}V~66g>{tvf2E%AzI+H5Or1p0)@|7b$EQ;O?#DYa%z@V_h` g!DiYP09mRoJiECNb~@<6|7d{FYG9p~38;Lc0k?bSc@73>r~WAu%hP=t!B@-p3yABObhsuW(ZN#D`-&Bi1h`~ z^_c0TfHI+_a{8WOIvnlx#v+Gf(%~i*&Dcm+w4osxu_s<9S+V+q!L|buO^N4nY*BF; zE+>vz<3=ZhE(!B9RJ2H#0}0(oNxhhg?JNfPlR6W=B--U&-Zd@tu2j*6c4j$iWps`B ztc<#vHoA_qnb>nM7KT8Fia2%(EYQZsQo>&h_UIl3W-`(KYJhGPeUN z_Sw13-jK1v@Z*4rgSeImxhZgpZQZ#NAcyDR58*kuPQf7+*F$5r=egZsrcxvcGs6xn z&*sL)*mTYU?dM2AfqgH4ZbIiQ+PP1t7y@xn63#*b8@+bt&2bHS_=}AbMN-9x?C`P_ zqZ^QI7Q$hSDoDv@WF32G&%t&cp*Uh%I}B6BxFo;wA-kGgdl_UESSoUu;N(0~Za^$= zVid@l8FtuWZxE7>V)X+Go+}WM^9sqbN3%$mlh^3kT*}IZumCrzxCze_2$5bAkc#C6LS15D&Fdhx6F=*5p>4hq2f+=ti_!hhT@F9TjG9em~DC@*e0Xo zPd4rQRJ_4u|y~bXwjK?Ye;N{O(x5qxsS$4G!wVW`lq+6YZCj-V@T?pCa_$+L7P8}9b*zO2zIP4B< zrHKW7mX;Xp<)-9hp{&nHrZp=kqv`*ju_?ObwxZozM0GwV2!uUBxJ@pw{pnhqKUvmq zCF?GclX$!2CD2mTqFVrkb?EkvJC%^`Dmu4Fe9k6t0c)yF19OgTb&Y$A+K%eHX6gr6 zP-gy==S6X@Gn9-&-2!VaY>}*#(#8gdv>Gop*YMD{)a#*}B8Mk<8j~zeYIACPl1+FQdSZ%a4H9fo_?Zar)D>XIkeMwL5E)5=;IZM;{vM$DmXMG)T);RpDkf*(l| z{;@!fy`|as80iUfRF~&GGO=?S@6_ZefGgkbb<P7(aiWRsbO5KlN=X1IsCvGori*vdGmk>W6PXmMiAHWBB z{}A7NxQC|$?teU72z;25X5IzwB@HJbq`-%Jd6mPU>PL809R=KnkMgYyQ=qCnxq)XY z`3p}&sY1o*G!|7PX0QZYMlPMVq;lRgPSLtt<12Kal=m&CvHZYEtnBr-u3B*?YNv70 z)4_PjrZYY zRd|ItgWJGPd6g@B!*NIWCa>_#uJCPM;oDu|JH5hpIkVqm%ko{if-3_tR(C7vaV4*9 z{C_|@l1#kpT&I>s@MU(K{EgtN_!>lINb;)deJ^d4aIB)Po;gS-t8mve-kWgPBHzHZ zo^q(L;gJR_@J$whq>2iBi%))*(YN{L!*}pq-UA$4i|_F%PRJhS+fVQawSI%&;ScuH vqxcgZwV(cqzvCaa&cE#IzwPVe_Vr15<#IRS>yd8L7Z~x>n)Tk3xaGoDJugfN1lAf`w%i ziF!Ob{G~cfl`T}hsn!q0@QQ`n9B$1g7+$lm&N8ep8no3+%Sev{frb5cr_*USdjgsB z@jwYIcXgmHrw@HKxs`pNkaBnINxvs2n%{FU6WwW&-01#i>zKsfjHeS%U1;7``Rn?C z=V6n=6kR!s5?_m|68lavnM^XdN;27?Ob4Rw4T_uedPbV&0NZ(maQ0#tjvZsksbyo7 zoSG4%>a3YDR$r(og)NFZFesLgK^Z1pvVbamE3~qPI##hw>=|+tZR*{n%oU3hNyYNg WNyP%QNyQR*tIfBjt%5f3|LiY%h-dcz diff --git a/java/benchmarks/build/classes/java/test/javabushka/client/jedis/JedisClientIT.class b/java/benchmarks/build/classes/java/test/javabushka/client/jedis/JedisClientIT.class deleted file mode 100644 index f6a062a108adf08ab2aae0eb09a527c036a23ce3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3456 zcmcInX?GJ<7=CVAnh=IIq%5svsZi)bX+RW&qLx;cKnmJ~BH+R_xlN~?%+#4lwYYDn zxZ}nrkKg?4ISM^^jz7TTPg0N1of*QU4agS{hsoXE=Y8JgzW41P|J?o^z!SKUL<~)F zG;3Ie7J<~PzMyAJ-706!PR+`qC(v@lung}>fu_Fx$v6@MJJg}6syj2MXNsmFEiW@G zONN^{rM_eSN)mB2t;QN?ajezQiZ+3r4075Et&C_b+LlG` z1$#mfN?^UfF4wNeoH6C-&f>WAX6#b8J7ZVPQnw?$s$+HcdQMgLDwvHLHlagc-3k%k z2N#og2wib(*02Rz=`!0XXJ)JPQRb-YN{22>>i(cWM1hTcz5#(#^PXc^<>8C{lS)&! zhKI3TpxLmdZGrWD{VR_q(Sx0F?9$MSzPbPfSPYOUt+F@clglb{1B%&h!uC;50(*EQ zFP#PHD4iLlb1xmzfK~(bX{N~|8ulxZO%;7kj@edG_s$#M3`ee~Tb`>ZKBnOS4$^ck zIi9Qb1vWI&aj^;F>W>K=7D!YU_bljURVHwR^z+9GX$U;2;VFy=#LD!E3?Tj^+p>k> zm7WW%sh1p;R&l1HJ9CUe&)IqD=$>I)%$`w<#qqR;V>m9bb!Emy1qHOS^m4jKFhjZm zqkY*1Ng5T2=n9=&^$as})N%C1oZ)&tgOeJvIK>zjb+cGCi9aFTs_9X~q0p1dq#BtR z@LCK-ec+siahxITd1jwi13lOvJPqtv2B=c%8Aj`bidGC0Dq4Ag{DTIn5$AijN`>W| zhDmitTFcT>;gYB2VqSVGm7mjaLFHu=qoL-PG(3+NICmv4Veh@HtGkK)le{Nmc8M3Y zEoWHrOtms4oq|4PawVO!8H!2WG1NRC zqE-lz^7zXHu&Yi{X8o$u;`m9XbgHzk^NzsUyr&oE#`XEo`p)G5ql`vTT_Sm?lSfbOAKS0%=;!DH~ct8{GKfg zDKqJcQQP)h&(Y_D_rPsy!IdOl!|QRpp(@^+0zG#>`{ob*ZEq$5#S<%4HAopa`t4JuY#4 z6Sh9V)v9AzpC5627d}4sKFY^DNG3kxYgm857Za+#;y1xD+c)6&@=J}0*REVBH z5@lL0a7WLKug9qADREEf=?J)Q%TddY9}sW;3C&GQ=vUgBe76L)Y@xPoZ2!6=+B$05 zQkcaY5lu?5asCVKarBHV*Iub3su675YA+09vT0Sk+_9=ofpWs@={>CN}Y{b#7alDRZA8s)H_>uIX z@$_)lz~F8EWq>6dUBZbaoKBzZ8n}&TBP(}fG{o2gyNNJJ#37_;OFQ;5PD6~^L2Soi z?8G4wKgd%f5&DBQ`u&*4%k*js4RL(>k!Yr3>N0XyW%L1>rjk-q&Rjy_CeEL~%Oyzc zBfgFxv9&-4F?hX0j1h8G8F2@LF}b)LW516PZc!NbI-p h4o4s1WBw0DpK|mCPpB^GOLj8XTUO(1e2eeV`7em~aLxb# diff --git a/java/benchmarks/build/classes/java/test/javabushka/client/lettuce/LettuceClientIT.class b/java/benchmarks/build/classes/java/test/javabushka/client/lettuce/LettuceClientIT.class deleted file mode 100644 index 80e5e8ce5a991801fcebcf5cd8edc75dc592a836..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2526 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 diff --git a/java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html b/java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html deleted file mode 100644 index d72630017f..0000000000 --- a/java/benchmarks/build/reports/tests/test/classes/javabushka.client.jedis.JedisClientIT.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - -Test results - Class javabushka.client.jedis.JedisClientIT - - - - - -
-

Class javabushka.client.jedis.JedisClientIT

-
-
- - - - - -
-
- - - - - - - -
-
-
4
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
14.703s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Tests

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TestDurationResult
someLibraryMethodReturnsTrue0.002spassed
testResourceInfo0.001spassed
testResourceInfoBySection0.142spassed
testResourceSetGet14.558spassed
-
-
-

Standard output

- -
Avg. time in ms per SET: 0.07751362659
-SET p50 latency in ms: 0.0456
-SET p90 latency in ms: 0.070699
-SET p99 latency in ms: 0.127282
-SET std dev in ms: 0.665195671610232
-Avg. time in ms per GET: 0.06613250047
-GET p50 latency in ms: 0.040224
-GET p90 latency in ms: 0.058583
-GET p99 latency in ms: 0.10689
-GET std dev in ms: 0.6044885619384261
-
-
-
-
-

Standard error

- -
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
-SLF4J: Defaulting to no-operation (NOP) logger implementation
-SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
-
-
-
-
- -
- - diff --git a/java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html b/java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html deleted file mode 100644 index 2c4bf39157..0000000000 --- a/java/benchmarks/build/reports/tests/test/classes/javabushka.client.lettuce.LettuceClientIT.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - -Test results - Class javabushka.client.lettuce.LettuceClientIT - - - - - -
-

Class javabushka.client.lettuce.LettuceClientIT

- -
- - - - - -
-
- - - - - - - -
-
-
1
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
19.114s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Tests

- - - - - - - - - - - - - -
TestDurationResult
testResourceSetGet19.114spassed
-
-
-

Standard output

- -
Avg. time in ms per SET: 0.09530544199
-SET p50 latency in ms: 0.055105
-SET p90 latency in ms: 0.089829
-SET p99 latency in ms: 0.184804
-SET std dev in ms: 0.7259927555734456
-Avg. time in ms per GET: 0.08870054313
-GET p50 latency in ms: 0.052371
-GET p90 latency in ms: 0.081338
-GET p99 latency in ms: 0.145727
-GET std dev in ms: 0.6983375291436595
-
-
-
-
- -
- - diff --git a/java/benchmarks/build/reports/tests/test/css/base-style.css b/java/benchmarks/build/reports/tests/test/css/base-style.css deleted file mode 100644 index 4afa73e3dd..0000000000 --- a/java/benchmarks/build/reports/tests/test/css/base-style.css +++ /dev/null @@ -1,179 +0,0 @@ - -body { - margin: 0; - padding: 0; - font-family: sans-serif; - font-size: 12pt; -} - -body, a, a:visited { - color: #303030; -} - -#content { - padding-left: 50px; - padding-right: 50px; - padding-top: 30px; - padding-bottom: 30px; -} - -#content h1 { - font-size: 160%; - margin-bottom: 10px; -} - -#footer { - margin-top: 100px; - font-size: 80%; - white-space: nowrap; -} - -#footer, #footer a { - color: #a0a0a0; -} - -#line-wrapping-toggle { - vertical-align: middle; -} - -#label-for-line-wrapping-toggle { - vertical-align: middle; -} - -ul { - margin-left: 0; -} - -h1, h2, h3 { - white-space: nowrap; -} - -h2 { - font-size: 120%; -} - -ul.tabLinks { - padding-left: 0; - padding-top: 10px; - padding-bottom: 10px; - overflow: auto; - min-width: 800px; - width: auto !important; - width: 800px; -} - -ul.tabLinks li { - float: left; - height: 100%; - list-style: none; - padding-left: 10px; - padding-right: 10px; - padding-top: 5px; - padding-bottom: 5px; - margin-bottom: 0; - -moz-border-radius: 7px; - border-radius: 7px; - margin-right: 25px; - border: solid 1px #d4d4d4; - background-color: #f0f0f0; -} - -ul.tabLinks li:hover { - background-color: #fafafa; -} - -ul.tabLinks li.selected { - background-color: #c5f0f5; - border-color: #c5f0f5; -} - -ul.tabLinks a { - font-size: 120%; - display: block; - outline: none; - text-decoration: none; - margin: 0; - padding: 0; -} - -ul.tabLinks li h2 { - margin: 0; - padding: 0; -} - -div.tab { -} - -div.selected { - display: block; -} - -div.deselected { - display: none; -} - -div.tab table { - min-width: 350px; - width: auto !important; - width: 350px; - border-collapse: collapse; -} - -div.tab th, div.tab table { - border-bottom: solid #d0d0d0 1px; -} - -div.tab th { - text-align: left; - white-space: nowrap; - padding-left: 6em; -} - -div.tab th:first-child { - padding-left: 0; -} - -div.tab td { - white-space: nowrap; - padding-left: 6em; - padding-top: 5px; - padding-bottom: 5px; -} - -div.tab td:first-child { - padding-left: 0; -} - -div.tab td.numeric, div.tab th.numeric { - text-align: right; -} - -span.code { - display: inline-block; - margin-top: 0em; - margin-bottom: 1em; -} - -span.code pre { - font-size: 11pt; - padding-top: 10px; - padding-bottom: 10px; - padding-left: 10px; - padding-right: 10px; - margin: 0; - background-color: #f7f7f7; - border: solid 1px #d0d0d0; - min-width: 700px; - width: auto !important; - width: 700px; -} - -span.wrapped pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: break-all; -} - -label.hidden { - display: none; -} \ No newline at end of file diff --git a/java/benchmarks/build/reports/tests/test/css/style.css b/java/benchmarks/build/reports/tests/test/css/style.css deleted file mode 100644 index 3dc4913e7a..0000000000 --- a/java/benchmarks/build/reports/tests/test/css/style.css +++ /dev/null @@ -1,84 +0,0 @@ - -#summary { - margin-top: 30px; - margin-bottom: 40px; -} - -#summary table { - border-collapse: collapse; -} - -#summary td { - vertical-align: top; -} - -.breadcrumbs, .breadcrumbs a { - color: #606060; -} - -.infoBox { - width: 110px; - padding-top: 15px; - padding-bottom: 15px; - text-align: center; -} - -.infoBox p { - margin: 0; -} - -.counter, .percent { - font-size: 120%; - font-weight: bold; - margin-bottom: 8px; -} - -#duration { - width: 125px; -} - -#successRate, .summaryGroup { - border: solid 2px #d0d0d0; - -moz-border-radius: 10px; - border-radius: 10px; -} - -#successRate { - width: 140px; - margin-left: 35px; -} - -#successRate .percent { - font-size: 180%; -} - -.success, .success a { - color: #008000; -} - -div.success, #successRate.success { - background-color: #bbd9bb; - border-color: #008000; -} - -.failures, .failures a { - color: #b60808; -} - -.skipped, .skipped a { - color: #c09853; -} - -div.failures, #successRate.failures { - background-color: #ecdada; - border-color: #b60808; -} - -ul.linkList { - padding-left: 0; -} - -ul.linkList li { - list-style: none; - margin-bottom: 5px; -} diff --git a/java/benchmarks/build/reports/tests/test/index.html b/java/benchmarks/build/reports/tests/test/index.html deleted file mode 100644 index f03c715ec6..0000000000 --- a/java/benchmarks/build/reports/tests/test/index.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - -Test results - Test Summary - - - - - -
-

Test Summary

-
- - - - - -
-
- - - - - - - -
-
-
5
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
33.817s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Packages

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PackageTestsFailuresIgnoredDurationSuccess rate
-javabushka.client.jedis -40014.703s100%
-javabushka.client.lettuce -10019.114s100%
-
-
-

Classes

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassTestsFailuresIgnoredDurationSuccess rate
-javabushka.client.jedis.JedisClientIT -40014.703s100%
-javabushka.client.lettuce.LettuceClientIT -10019.114s100%
-
-
- -
- - diff --git a/java/benchmarks/build/reports/tests/test/js/report.js b/java/benchmarks/build/reports/tests/test/js/report.js deleted file mode 100644 index 83bab4a19f..0000000000 --- a/java/benchmarks/build/reports/tests/test/js/report.js +++ /dev/null @@ -1,194 +0,0 @@ -(function (window, document) { - "use strict"; - - var tabs = {}; - - function changeElementClass(element, classValue) { - if (element.getAttribute("className")) { - element.setAttribute("className", classValue); - } else { - element.setAttribute("class", classValue); - } - } - - function getClassAttribute(element) { - if (element.getAttribute("className")) { - return element.getAttribute("className"); - } else { - return element.getAttribute("class"); - } - } - - function addClass(element, classValue) { - changeElementClass(element, getClassAttribute(element) + " " + classValue); - } - - function removeClass(element, classValue) { - changeElementClass(element, getClassAttribute(element).replace(classValue, "")); - } - - function initTabs() { - var container = document.getElementById("tabs"); - - tabs.tabs = findTabs(container); - tabs.titles = findTitles(tabs.tabs); - tabs.headers = findHeaders(container); - tabs.select = select; - tabs.deselectAll = deselectAll; - tabs.select(0); - - return true; - } - - function getCheckBox() { - return document.getElementById("line-wrapping-toggle"); - } - - function getLabelForCheckBox() { - return document.getElementById("label-for-line-wrapping-toggle"); - } - - function findCodeBlocks() { - var spans = document.getElementById("tabs").getElementsByTagName("span"); - var codeBlocks = []; - for (var i = 0; i < spans.length; ++i) { - if (spans[i].className.indexOf("code") >= 0) { - codeBlocks.push(spans[i]); - } - } - return codeBlocks; - } - - function forAllCodeBlocks(operation) { - var codeBlocks = findCodeBlocks(); - - for (var i = 0; i < codeBlocks.length; ++i) { - operation(codeBlocks[i], "wrapped"); - } - } - - function toggleLineWrapping() { - var checkBox = getCheckBox(); - - if (checkBox.checked) { - forAllCodeBlocks(addClass); - } else { - forAllCodeBlocks(removeClass); - } - } - - function initControls() { - if (findCodeBlocks().length > 0) { - var checkBox = getCheckBox(); - var label = getLabelForCheckBox(); - - checkBox.onclick = toggleLineWrapping; - checkBox.checked = false; - - removeClass(label, "hidden"); - } - } - - function switchTab() { - var id = this.id.substr(1); - - for (var i = 0; i < tabs.tabs.length; i++) { - if (tabs.tabs[i].id === id) { - tabs.select(i); - break; - } - } - - return false; - } - - function select(i) { - this.deselectAll(); - - changeElementClass(this.tabs[i], "tab selected"); - changeElementClass(this.headers[i], "selected"); - - while (this.headers[i].firstChild) { - this.headers[i].removeChild(this.headers[i].firstChild); - } - - var h2 = document.createElement("H2"); - - h2.appendChild(document.createTextNode(this.titles[i])); - this.headers[i].appendChild(h2); - } - - function deselectAll() { - for (var i = 0; i < this.tabs.length; i++) { - changeElementClass(this.tabs[i], "tab deselected"); - changeElementClass(this.headers[i], "deselected"); - - while (this.headers[i].firstChild) { - this.headers[i].removeChild(this.headers[i].firstChild); - } - - var a = document.createElement("A"); - - a.setAttribute("id", "ltab" + i); - a.setAttribute("href", "#tab" + i); - a.onclick = switchTab; - a.appendChild(document.createTextNode(this.titles[i])); - - this.headers[i].appendChild(a); - } - } - - function findTabs(container) { - return findChildElements(container, "DIV", "tab"); - } - - function findHeaders(container) { - var owner = findChildElements(container, "UL", "tabLinks"); - return findChildElements(owner[0], "LI", null); - } - - function findTitles(tabs) { - var titles = []; - - for (var i = 0; i < tabs.length; i++) { - var tab = tabs[i]; - var header = findChildElements(tab, "H2", null)[0]; - - header.parentNode.removeChild(header); - - if (header.innerText) { - titles.push(header.innerText); - } else { - titles.push(header.textContent); - } - } - - return titles; - } - - function findChildElements(container, name, targetClass) { - var elements = []; - var children = container.childNodes; - - for (var i = 0; i < children.length; i++) { - var child = children.item(i); - - if (child.nodeType === 1 && child.nodeName === name) { - if (targetClass && child.className.indexOf(targetClass) < 0) { - continue; - } - - elements.push(child); - } - } - - return elements; - } - - // Entry point. - - window.onload = function() { - initTabs(); - initControls(); - }; -} (window, window.document)); \ No newline at end of file diff --git a/java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html b/java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html deleted file mode 100644 index 6fe5059ebd..0000000000 --- a/java/benchmarks/build/reports/tests/test/packages/javabushka.client.jedis.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - -Test results - Package javabushka.client.jedis - - - - - -
-

Package javabushka.client.jedis

- -
- - - - - -
-
- - - - - - - -
-
-
4
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
14.703s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Classes

- - - - - - - - - - - - - - - - - - - -
ClassTestsFailuresIgnoredDurationSuccess rate
-JedisClientIT -40014.703s100%
-
-
- -
- - diff --git a/java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html b/java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html deleted file mode 100644 index 72ed2f2290..0000000000 --- a/java/benchmarks/build/reports/tests/test/packages/javabushka.client.lettuce.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - -Test results - Package javabushka.client.lettuce - - - - - -
-

Package javabushka.client.lettuce

- -
- - - - - -
-
- - - - - - - -
-
-
1
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
19.114s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Classes

- - - - - - - - - - - - - - - - - - - -
ClassTestsFailuresIgnoredDurationSuccess rate
-LettuceClientIT -10019.114s100%
-
-
- -
- - diff --git a/java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml b/java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml deleted file mode 100644 index f76c23081b..0000000000 --- a/java/benchmarks/build/test-results/test/TEST-javabushka.client.jedis.JedisClientIT.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - diff --git a/java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml b/java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml deleted file mode 100644 index 15ab216e63..0000000000 --- a/java/benchmarks/build/test-results/test/TEST-javabushka.client.lettuce.LettuceClientIT.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - diff --git a/java/benchmarks/build/test-results/test/binary/output.bin b/java/benchmarks/build/test-results/test/binary/output.bin deleted file mode 100644 index 76f5d5a3a126375fb8bd3081dabee2c02a09ac91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 990 zcmZ{i+iKfD5QbwHZ16+0LrT;1qVk?*555Q_v?-L(7StCI)>>B432774x9_g3;DXn; z;-7E7`A1jt*?s!-D86stF)J&ZgKME`vmCZnHVkmx_C+#OJMkwe>#j;tm$`EL)E0&9 zAIc`T{dKasn$PYg$QQfIo-0>2MF2JJ=eD!GA88x7{qghHC(jO}5MZ{pO~AEHAfyu^ zwHEfyb({72a5zkFdyDn9&FzrvU0uCDw}4&S!|u6vdk@d8^ScbmYBqoK@&2Vqz?HRy zvVnR4?*r-A-y0waQ3@%SOriFEFiBUl4>A~ute zZE{I!aY;~Waeir0a%ymDiF;}Z79oaJQyC$85}g^CmSMUmD>WsvSkDVY!dyd~DzK@W z@2ayf&O&yHXI@&qQ)O^!a!F=>9&QLVZ7(fn{!Ser~Ey wW>QgNQKfHcNk)E3P-;nOQC@LKQE4h(Nd_jUDN`9(C!)I?Lx2GqdScTU0BB*aK>z>% diff --git a/java/benchmarks/build/tmp/compileJava/previous-compilation-data.bin b/java/benchmarks/build/tmp/compileJava/previous-compilation-data.bin deleted file mode 100644 index 6e1548148fc2e70edbaa1e9bd2596ac50d9e49cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38419 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 diff --git a/java/benchmarks/build/tmp/compileTestJava/compileTransaction/stash-dir/JedisClientIT.class.uniqueId0 b/java/benchmarks/build/tmp/compileTestJava/compileTransaction/stash-dir/JedisClientIT.class.uniqueId0 deleted file mode 100644 index 5480044a03743ee4719cdf7fc8c9b963a7cfe602..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3464 zcmcInX>$}+6g_XU%w*_fi4e#_U;+pj6A=}%>wII znfMx9PU0bS#IZ%gR&1kWwlkHUDO02Lao3d&B}?l5OP+`V8+-f!0#S3GV^~u|mwP9a zr%nwIV~0S!VO_HY*7x+TUYbM~cEzz+ z%OyGK%u7f4Oe>!Q6r={N8tzjplLHzKDw9nmeO8XzRzdeJ8s0SDTu-+=S5Z8q;V_Oc zbbfL?SIrA-sO95w9mI_v6L?G@QCiqLubX9=z%c3OPUKS%II7_Z921C5Q4<+J{71EA z@c1NPCXe=T$(D)JRW_I933vl6s2SI;FA|!??;;P9XQ7iK@l<9#W~a zT+lF~_DIW=v{bs}S-Fsto+{;MG+a`3S;uUs@f8iv;yI38$xYaOujs0FV($d^$*5iA zMqQgVEP1Y6nv_mnpEUU;m9?3Q3EeT&IQ&@eO&iQecMYXhbwSo8cY*4khHe_yWu!q0 zw2zl9&nU?W!!-zh+_G%XFGr%&bET_{$ZNJE3AANZLmKycmm4&imV(K?bHOT-zjUcU zYXn4nAw;XkUlxE}b_z1%cb!JZFEZs*m3@^u0?j#3FU*eVb7A!DD*;BBje^=l0&#cw zEfrnGY@JdGNg7_b-x#3C2sHS6U!cR(OOr*tYqe3={`<}{_cdD#bDGTgA)Yk+JVtcS zl`bHRDwu5HBiBwoR*alEEF-s=KgcNH!m0^BiPS#j{C9*y^pohYK;-A?e#HenXIjTLB zz?<9-J39qqdpn7D@NOLMX}E#+1$L~8E$gR&#Pw^-k*z63M}PkRao$&is>wjws76)O zzJT}BrWK8A8*nqpJIY5IJd`>5M2$Yx;Hqncmf7+=Hw3!a!z_bWaVeCIWe&*wQx^HYI2-egPk_fXzqR%KhWMpBX!;e&zF&~Mjn=zREnLJU z--rKhwS+qvEH?Ipt?_zPbPuUkZ~@>b`|62!8V-nR4l*BSA) zx#F!AGngf!Nh@BQ|3X_FUB^~>FIBwXq;I8AZ>m452+;YyvHofX{d<scs|s;P_!gvf3I`o07AtvJW#vRh*gFI4mg}s~pQgHuFdu0!iX3e?h8Rn*#?k!t$ZX|mOoQf2z4Bq*ABnBE zvK}-wHHl`M6W82FkC#j^#wXJJtz2PIk4ZqO+D+lA#(&zUoZK`m&!9*<4>@)(FqJEy zBeW6pp)`a}qtj@Ug;R*B#59_ZQe{6KmT_~IyJDI&UprTsYVd~f@c&TS4D%^7X+AQw zE1d@4rj3F(N6==8rp%`K$?TLW+26N^(ovdV1dTRFIAt!)Ppy`zT2!fbTETDPImE46iUmJKVwut6Oz1l9O`C2L5WO#r(&8lxy zt?$Ao=Qh8&bal%T$x`VuVmYybSV^p+`N5rX^=ewcU)ib0t)cm=WmYO12W%}6N?ojj zSBf$C(S#An>)r*Iov&fM&~l8Htru?47aE92lF%k}hy}VdKWC7&haNo4!OGcLroi-R z{(r9wX#URDN;hX)LtwYFtwN?UqWRlexd6*>;gPK1CEwgPg_5b4{@tWLX-t?98wtXc zqRCAScZg|$u1XiBLTT?|Mmy$WW#edNFVm7c+bQva_}t;u2LgM0CurMRFFqI{A*E7t zsfA<{v6$ZDcNk$~(!>x_99KyXEGU#M%Dxt1JcSBy=W} z1mOZ2u2Q-xZIlXZn-xBq5qL{`pwwVjjMhWuf(IJ^N>t`rYFe<$%2{n?Lp^F89x-fh zYxb_|TlwW%mcP4{Z|$n>X0TUhpLDl7&CgXOvvTsF`8vC*JV4>OyF5QXv-iD|*uG$7 zOUH`X{l*8#gPMnQ4wG6(Xub-iT6UC9^VIjXlAfZABI%l^=@PAQ zIu=FU2ufxJR9XhVJlv92IlGrXAXd8W+7nHeoS_@W(4}YT#5p<s1-ZCcE97bip!5Ok zQ{m?R5MJcYj@To(aW6<$q1;ylm#*NhW%eF;Z{?V{wYCZ0$~zv7Ugr}W^O#N)(}^c^ z;whadfv*C^&tS{;N~OI*cAQ=cn~+h82(iQrFWOW);5BKAGOBE$OxC^U>yRG)h zUc-yhR)#l}o296g}Zu*99@|I4#qZ33e(4=&8b#ZgW-c#D4aFu_c zWJJA#n@2TQ+-`dOD6KKx@1JbX86WAAIy&(Q)~bhl>{V7S4p;+R$-w{G;(Wq zi+m4zevRhDsA{BZex?hX=;CI&NekUr3&UDL*_AFY>1}kH*FyZ>*4D+2hl}FhPlJA9ylo-H;>u`{-mp zUHpq~^qVeCqyK@uSUI^UWCOqonTO0alWvJ$(&_psSsiPfa^>HOm0k%Sjv|C7LU z#;x86&DRBT0W*9>e#rsGNSAfx%{Ci~Rl%Em5V0>J@5Th%gcc0(OX)huq&Rqjlg!l$xOjnju$4k?Czq)%!isVm zM`v(qc(3;pi!6gL{&q)iS*>2PX2m6hyo~5yLCC9!kc@{Lt<_)`Hm>@H*I?I5a5e6( zcwp4M>}fWSS8Z!uRX3-^^6quS{05?%fM_Nn(q&0N3;0bZD=Zn7m&+8kJ#;*3O~5d_ zk4)?icMjFPi3n2=;VopF7M6<8ylrh?(s9X@v)}4_7DfNQ|C;uRJHF#KB2Gh0 z?;w(NL^A^+GZE7)MBr9>Ks99e6gU6$JErG$=%*Go z2-}RjXW>&?RxW&(RGN3|+~?E2iyl6|hY-04k%xdm=L3oM5ccBeW;k=DaMBNdI=Q5v zbk}G9cUA=mQ3%q$kI;f-?lK!U@F!s4lXI)4_)l`8uVa$vhCN?;A0VRL4}mpqa)m8~ zp9ya+{;H1JykyN}tqBL*W|cfb^b_cYxY?BjQ#=MEV5L ze2VCoAkt?DQHl`H5kjX7xDKfYm1(?yU8>az>?QC>tuTbwa^SABJvc^SDnp$8u|8hE z-Q}qH53LE@t_p;#M1-#pq6+jYj*e}s2EI_Ca?twzeR$*Xrc~rt4!w*s+vWY+pTf zUY6Ic<{N3dAJx?(WCJ2;M5Lb)NfSaeBgB@LK{-;{!d@As(Mnl}3LJDBFog2w@UA63 z{d`S~Le=FLbKzKnw}IE`FNkqFBK?YpI}k}HLUh5_yD9s0vsSxVV;bLpb8gn(5KlTD z>Jt?H`{j`B_sfdsPl=yZ_#GjCAkuj~z+)RL=U!ONO+^K+)5-0A>t423+D@A|G4!_I zf}aT4hY0%-^IwSMH$waYLI>bxtG|iaQIvM<|K~VXifxv-(Q(70w8uM+ynnV|Y>;r` zi6<)dLM7g))CV>9MF~HYSmBS-f?efKGDw=`GH@eUIQ6Yl=XrYM;5t+ub{Ylm2^aXD1!f6~dD}OzpAy+)CXQJjg&IVox@S;n3`(4Z{hS;8 zirPhuxyPb3A2)^KJiJh8?hKzz$11qTBXifrI83^d_&N?1UO+_`QPCxoxQr4yS5TV2 z_1{F|DtyJmRThte$n376pt}mn+k;4wnBku`{i$uuz7tUFJ;S8`Ix4<_Y9^qPMARe+ zm1-r!@~$eVyKVx(R<4lvV=3r=nHLmbWxtOGv4^IAZgU%OT>Q`8DYsB*Dk=&`Z^PP< zk}K`((qL&9nGGKBbUiI@9HhIhCPkt9GSRZmw@*XP6MZsv?sn3hQT(518!4{94|F3{KrqMbN z73ZVm?gEq+q=Z^yFy$!(0+dPxUiht9|7Mw5p2pm!(h650_fgRURP+#)UP2!Mwfn4G zTx7Oa(RdW^n?5s^yYU5a(8suXZR?j=MX2~ODh)!{g7i}s8Ey}F+H~k}f#Ph6-OSs? zsPqYH`VCTF>QM3%Dyc__21>JA5KN;HcJ#OKqQ1rbKD2#@ zlTxu_vX!);{>H-3C}dY=c+UHw=X_OTm%RDawt(;Iai$41Zl-h}YoRu5Zx3Ev$uA%N z^wq{)YEa8F|gYae$gb#xjsD|VMB8kEb&k|(o zjqp6za$wOT-)O5bS9}>_KZc1vLpy+B9>^eq7{rQT1{9JCrP2xf5M0Xb0UkI8%g9vr zlt1FjZ`9~rzdN+2eArB;U2*eq1`*1Dq&W<3ak6rS#H#oBf$R2)nW;VxPJdXFX>s@j zLmbYKo@8hip;!b^;|6trO1__Z*ybR!k&Q<7J*Ujpwfps4cRR(ag z;|_CURWlaw>4)Xlw_j&SZZLEc7~14DMj|XASIClpoick0C|Wc&wYq5U>d#(0FRt@R zo2X=l_$Gr)VHiI_Zo$1)`#tnisqHGA`XWeh@d?8N_KH|_!1SivsJQv{o(aq$~o!8M%#hA&UEQZakPLogJrDe(i)# z+vtoghPazyl1KjrH!Gc$H=z=E@^=2T;w$p`?;;)I{g15w&Jg`znD171Fz_-ga+c6H zUX9#8v6#O6fTV|E(aX>jVLxHJ05sXj@ciw&eSckJAD;30Dwmz3)!N4(`x&BN45Qx+ zsxYK1$e&ICd8zE%i6VifI%K*iaeR(UyQ%LKC3%D*PUmu zaGQLC%!9R%<;9eGGbKJuO<$(akE!X;l(y3YnDAIAyr@hY3uMxKTwPUI5EBv^=U^rT zPY)=6jbxF+yj3N-2GIi>D~hM-g)qruOv!O3B*1?dRJ^+Eb#?4ei~YmfpZpBWzjLKO zlqn5k5+|6%v~VUZY!K1_pAPjHAZ2RoB$E~bN$%gxfb(db`>62p#=zJghdOc#y_T0o zFeRs$+L27+G?O5rfIh&525lOP2D+TpXPARlu7Cs^9~yMOFKdlWOal_#JVB#nL=01O zmZ^D;X&TEU&ohnVnB)Z}aS@(#3BCjsB}h_@SxvkQPgN=ukijTb;5WcR&tlv6^NSqk zX?rvkCO!N&<_Z%Mdow(=Zowkf$&yhu%L;`%N9=LA$^@*&4DUHH>;!SV@pu1>J?JX# z;_P^)=o(YAckoGTkJz>QiX8HY1Z&?t70Kz>ndA+oIDu)}#sDQsWP&w2+sW&aaJL&^kcy2)K- zS=1W}3Io11biu0P)`<1>Pix9D^7`$vndDujs1~6zKfPHCXtA{q#{ZFxF01 zUQ{mJ{)}l{%G7<%6qhmeUNDK5On@KDnS<$@jhjjZo&xJ+RKOc5r9A~af`V28YusGj zR5Bpm?sD4eN6Ypv7)CP|-#Vy$?G=-#VnPOJYKD(m%H|93ecyZ8v96Q4kww)^QtLIS zm(p1c(L;svb3=os&8XP$fBQzS`;Ynb5U&G2QnHcUDB!Rl#G+rbZp5B721FvX%w zI_`CaxqrI%Gok573+AuhwU%$0ChwSJEt7c9Bt9^qECeoK`pIB_PS@wO zF{O3%FHBkxh0Lg3!G7>1pS#}KubR_7?Q?sBztfwPcBbSjlZ<5YJHV{|vsE>oe|U(G z?)t=md1;^Czp?IE+R4=HVw#G&fysk8AJ95Uy&%t6J$%W0joj}3(>8m)F(u!bP?_~0 z>+sXh{~dkKIhIXsJX1U-ec7QOOoJXK*~^r)BOvadpg(|;;Z=5==s8DAjLlx!X^wn- zEufDn?Pffr;|=0H_7FEX<~HXxzg{wj)z2h?#z4D8v`RO1G|@U%@q1Kg=yzCv&}7qz_B% z%QE$2>3v~z{CUFTKIyZUe+wJ8)1M^_U`e$C;Xw{=uC~g3&XASuRa|*? z<$1gG_GqK>;txwof>^r2EHaNC!lDKLH6Uum2Xy=*ddET-xb`HMva|6aTa{M*n@+(aaU|qR;AU)EI@a#I`5k1}d8bZS=jAvSWF2^r)M= zuSljVZr%@PiBGb~2$t{^YYXICkt`^BU6rRT}2^| zrg+ZKX!QLju%=MO@ij;t70)8CvBcL|(i<%81eSRsi%4QYa-R;u3}GY#K~PNCI8cch zuGcZw>Esf=Z3+6~(w(uDH(6u~OMHu^okmXuLabb^tRb#bcTSC-aVSS?v<5e$%O&LL z%@a8)b&ZQ%|>a#CA%ccx@ zZ*-SsxLX6~#g5K!$_cCOA=di^0SVS(1$YW7}9f)MlBBk{nn*tUsuOMw1<_)ePTgF$xdeD zVWW^$p!h;&){fiL%3_Z#xVjOwMNR5iWCP2*k)`>WC2nGo2@L&AI@V0_Nv?qWdFk!D zA?}S?o3%z3OfM;X)!D)#TUp{ZmMD$>g$1o%S4v|XA8r`&YVzi{qRus;<_{F{?JVLe z@FD^j5q4*z;JU9%%ZTEX5o1d4^mVX=oh&krahe78ewd-R`k>F<*ly;iPmA|IDeGd9 z-7I5^dWI#wy0O%HMDM_HTSfKTG|;= z6qK1zRSdvxU96mOH|+4j+m(4?f!m0Rt_*jbqinG!TjIsm3qZWtfQ2Z1*r4dPayPXv zn`-A+IpLS{g)7hKZSz_ev$x^F?@iu*Y_UHZ%C!KvQ>obJ<_g-#Wk2gPdWek~ld*aE zK9eKWfoxF_TRWJo8NxO_#wNA+kZ2ue(?aCx|FQ&`Z73TuIR~q~azM&5+)JbTJr}cX zK4gR+Id(oQj7@qnE%8jteOkwPd0E8pRe`*zXOEm)m?SiSum))n>U_xg2xwA75jnVZf-WA{0 z?lIrwb0pg!mi3c~cTLu>Julh!YpC|p#;WfZRj1j)D7I89nhnXl$`!=8NH$Is@4F4T zoLjz{xVL}k88%r6BHU&gjO-n_Drgb*Us$%pazzYVe3ng~V*~GFfqxY5uOa7Qrz+)M zIfb+vpO=PYI(7vI{7#&FTR-D$99!oM>VYqp|F|Er;?AahX#cY@*R+3LU_%N3ppPM| zZm7<;*)wze=|;;JKEB8n|7M+M=s{lUs)XCJ}~YU8`=V9_?B5o-y&VighlU$)opR# z`6-nxzRlM5Mbp@Tz_=&|TPSx1)lqKaf#1t_QKI)JAhTkB_qo`fIFQcP&tQ`cOnpOK z%i@K`klou)dE6cPmFC@jE|Yqnk7wxhMom8J{Mp!a+@91CY_}{nnavj8W$Wg!jqb4_ zCXd;|tE^&J3o13awVSJ~kA;U14{q?VUfwsO z5z$_{gXQ#uO+ICdT3J*o|LA$S)0N1*>%D@ZKKax-wS;Z@jICM97CvX|ma#=zUs%b= zOFH%fcxPv)mbv1ws#C|7uBv(+|D-r|4pi$qKHq${#a zy=FB|5AUmFZ+gWhtJp*}8`7rNAX6}Ks@;ZNLux<=mWlJsGE%A#}4=v1jacI_2ZgzNXe$~)-Y~5P6^ab-h?C?Jf#1^8FmHB38!x_bX zW1{SKr&cX0`oK2$$R_L9!UpCx$OiGJZzHbm$VyeFhZH}LIGp+Q6Pu`K6GQ`>cHGH| z8fa0;29*R9Nx%MF>GQH?oDhKEq-v`$6nSjgRs8;LO(g#jBW@$8{b5 z{6-U-Y-Ve=06*EHHa2+){Q`F@ouD}kughIW|@HLOi{;BhfKQTUL_lRu`D~9*7H~nNA^|6V5HnHM79jitc z<4=E&){V2=ac%b=8CUY*{iI)P(Qh`?3{<)MkHRzcWq#{^zruX4kQPPEAGYZLTY8iO zjr{F9x|#UFSOk3i=5ugfg*j(_=9@qLUp zhwNY{GV#%YQ#Uu(jr$r=)X`~QdT6{42U0XM9Q|gt*ziHeNI&Pad*KD@slFV-j{}a% zABNX#l}=W2XEVHWab!#b%WS5mFnYbl8=w0D9C08=>cw8`%f_Rv`krNkT#etgd+do^ z^=oDjXLB%zbS^+cI8;7o<6x__$EVyl`8&_e(&jcg{jQQz)NqVL9_L7QYlL#3z=NJN z;Kf!7HJ%pY#B(h!v2cH_OD}rfS{laD@kUda_}T9IET0n{OV;fQ@HoHi-(&rBeYLu>j;(Qji9DP^@02eb{7kmuD;k(@)WSnMO%|vXDss9#c~2_ z$PxHij`2B;K`e(j&w;s_I9Lbfu%LHpk6nQ4|E6YIQ2bJZ$=e+rV+}`r3a^}Mh)=u7 z*>s6xq(uqe@Zj6>DvwGg^V!1*^86*mmpP&<9MM${8PAbi;|MRI@yK-`Oa^l>Fo-9+ z0m6VO9+=Y_Y|&gFH}#2p=ES#K)B%T5K0K~Z;0O~rk~l^-cnZ9+)z#mzv&nJ&g>U0k ze8e${V{o3C%%OSN;^+H)jv?4E{EoAqp-vQl51LW z*lpW^?Zdm;R#*n)aK!gGrX?r^1dfP{wF|rTy2hZN=A}L~{dF#=G-`&c)z8*N$ug z`6G_#1LG=M1e{bR(;rjYq;OCb?s0N`g!YDkDWfa{P!FHm7m6uM1Qb8V$^X}ZEqet! zw(pV|1ul5P(S6DhzF@{9;4cGMJ)Ik7YWdA}Td{K2g5Y5#9Q|h;gHn#!bB=a5{Tkx} zQU>cdzW^P8!3t{R&;$Px80C|wYd!1m{0F?~kP}N^a>#OyQ0p$I0)z(@oV^kns=R0U zLG+oO8)OpJHK2hU?K5{ydDjk|Mr+`jt8CSR(Av&pKsQ|{i2$b`srKb+kkyqeRMd=H<=Y}Sf3=aUa%$b z7f1Y?14&OP2lB|n#fn7NbeHbZe3w@a5hL^ea12Dr9Q;Mu4e`Ct<6M9)rZJ}`VXH4!?8h|;K>Xnuav0tEI}flt>E~|?vdwVji&px+$)mBPj_1j)*j=M$GH-3t_CdFEcjr&ca31r zF#hz(2DbNdL%GmlHN$5%RaQL%+OsNx3|9VM%imQ2%N}vyKo-kS0duY4I z48t>zx;76)a!pTjb)&dsCA|@ihIwo#ETIXff?ygoJjiLxrp2$FXkByHMx^SV;p#X; zhYkC1vHQXITj|9vM|0K{+?pE0wK&Tap5tm>L9lq_Cj(E}6kJg=S&jS*(@J5d<{QRx ziSra$aa`zVQjyOLKVji6MUtW~PaRhM!y2s`dx2|ukxRa%TYaG88&98f`R+1y%9xFq z_Sazd%u8II%UtOd?zWpuYzG8Ai?6RH9@;s_Y94w0diB9Y$FFjsK?^%O$y;;A40(Iu z#JD%)=$BJk;<@5$T%i}R3Up~H(iLSL^jYI>!l_lGDr$yb=ZbG|4HCGziCi*}fniBN zn=>_04fpP?ueA7Cgd|_XAC#^EJ8o~gczWh~Q zH~yf5|4I4l)cl!wnOxH>uDMn=rDjet7%hZua@mJbcC!kf8cohx&kJ_HQGS;z$>B=w zarI(QZ?+FR7X&7Qc|RZ>|M0Hlh;34~MZmbL3Y|p{GV{2?d@hW96#yZClFIBsaY1QH z3C@DR$pWQcZPS}i^wf2QT;Y8#sr3LTRJwS;4apXQb>*eze{^nDE90)eHhRb<9&rhx zh)WCko06&(Fd}J&ulhb|85Z7dsy)VS{Gx?|Gmp7sF<1PAYxI;W`VA9E1JJs+#Lw+h zCb@;2Tzhog>C86=Y>G;_o1SqcrCjnkmnZ|R-~z_<5*Q1au2Kc_&Cap{7WRfy4)Txz zrtQ2KcZ>XLbH%%X72!2@#N+Gw9u-`10437+zTWMp+=WFGf)<&iELvhw$rZoiN&^rI zVp?Q6d&2W8#b!dwH|wh$uh~>_$!f077shMg*IxNx!3LS1d|}b7(C-mr(Rl-{mE)4e z)NqA$6!5XJHU4E*SEF{|q^Wir&OUE`!_|GumEL9jLEnLF1_xa|@U#A7kDGeDOIVjN zVW~mRHkfYZT?L7*hKB$eBhi`I#%V_yfiIb2AU8mSE58EB#l6_@CKz zr->_V=9;%~H8Z(bHn$a+^|yOmxzovXf)94ADtFWGhmi+_ZA<;SjlhxM4mhBr16z2>ELR1a&@{u5em?wbgUb6=6_ugeD#S_$x)ldYcufv zW3@S=E8n=n@7zs4xSBm&-Cpjd1mq_rEUG7!j9@>xeV|DSdnImxP9JdTFE}{yXMSDv zmouULT;VUSFpe?kx>hv42olyWP2X_*sol+~Lpi^>(m!1B0N3y+Cfc1vA4FX7i(_gR zdG!7scjDsb+?Rf)8$2Csx-Kuj2f34<}IRtQG(c2)IpK|vH)GQ(k5o$j9HMpsx* z3=SQ`$m5tK6oby<4l2BEnKmNmc}$tltR$Z~U+8`8Fid&^(+tPJc|*wxF?7Z{n0Xxwb~(Lc#Hd|q4vs}lhYPN(W!<`p ziNlzHp*uct;W!0NeX+={Nw>;Oem))}uVIqwnD8@lmqV>+P{@BY=~-sFM#rhsV|FgN zc>^O8FmWO#O~RnxynP4db)GG7sGhQV>!p%1&cwYnvmPd6#7zvwuTwD4Ye<7!VF=I+ zPkDI%-q!q1MZ!hFoQ$KXr*C0oDkiy2iP4=}X==+5@u6eQ-ICQSc6&`~Pfx=P?qFm( zCdmMGxWt0c4HZ1|{H;o^3;p`yql;^$fnQBBG1Dw;V>YI97cq!hsupF|xBp&3wC?<~GI{(4&o3C+jtReF(hf}0i4k2G zG?oWo+^&rSI94W>8a}6&QBb;n_wM4V{@iX%_Zvoj$A}*wfgX$&WUW-XQbXj>>3YY- z{YE?eESR|C#E+2E>aA?I(q4?b4FI*+fO%(>tl*_%_88+!B_2zEVq_mC>Bo#eBlUyB z5&K*;CoA?GeEsUJ+BjpjK_(j<<&mB|u@}$8n`%T+ z9k$konYsG%q<%b2f1XJxBY;OuvN&Ra@aiac!DVqf5AKvS&#*r6Cv?ivLoPu)BA5rV z4dFpu=IR79bzi6J9bkq${`{h2cz9%Y>G)$j(Q%$hD9<2_XL^Ds4(DlqVO(RBqt@q9 z>?Ax@20exJ2}{;{(hja2KD_MYN|SeAB6zx|czP!p;JTQ&|F#d(g-5Kp^DA10eUQ)I z9?27*=1BsOC?1r!gXk})-S{-S#TsKuEJn^dTph9#4Ugs-pW$hiaV@a16dokK-FY?SU@iZ^`DS^+=S zYLaNQCKs8IJdri_%etIvJfrJ8F<^Z+sLgu7Su9(8^m1{|$M`xsolK|V?ToqI2|Q^c z&m@Uwn#?0_@-&-JECqz?pp@IdWP39G77uVH3N{4mZjQ9HZ0~IGy?A-=%e_T$8&Y}1 zZE8RD;B4}9H|oWnF*J@cPS_i~=0{!{&*Bb`Naqn5AYytZPzrOvGA8?fJUdJd3+LNe+*=$0KriL>~2s^Ynb!1OTbf4}m8X z0Fi^&Sv>sF*IPLryqx13S#Bmfyq6G#Jn?-Vd6o45XosZQ)ymlw^8Ch|dz^d%Rz?3Q zKmE1mR?(P;JTOT!T+1Ar+;KFZz}sx{kU9I-6#hc-(&3{`ODuoh^Vo26NpV5hlSe#@ zA|CmeCyYV6&~CIC)DDUa+~$O4%EEdNpQ(qXn?{r;(Vp;xPk9z+=_Rl%wJJFOXFQs> ziyVJFdH04}wRRa64<8icKM8dyk9^J(wP93b&EFh#WPIu`cA{zDQg!;U_EAx(~ z`MDdxmZ>wzhbupS<(Xe)b%2#Z1*pPHWibQWR@Tpv9qpMhC1HuAlSdF{xX$e2#S1^m z@3NL!@4q>5_l+(dc?)`r&fD_~w8ENXnj;e2wIy@*b@OzeK*56FF23mQB4lv*Z$GiK zFW2t-#uI<%Nq+EjE9n{ZC?4dzw;D2UT3Y_V9+mpy0{@KbJv^e92PYGLf;w9LJ$Y+} zYow%9Z)^?jcsX9w(7v*|u#acb&)fWqC;H9XO#T6iRnS&Qq7T3o6q>4|eDL2YN8EH* zZgji6l#b4u|1+v)_3?X9fi_(|`(*bSa&6>+VZ@0cJ)V61Jf7H(4^o)V}= z?Jbm5#<*VpX~x1GS6lZ)hVaQ_eBp7vG?Xv>g>2seI%xf9f4s)GA|tFF+q0|nkwzHb zOwV+Z8c0w<-$mvsW>>i_k z`*Os=7(RIxK7vCMRTdf1&++wcav(vo-Gy7O9oO$T(eH*y(&z~b zWBJ<4@)&rnz?UR& zFY>9_NSz`Ap(StVP4*QeU$$)${5er5bic$WFY_VgxdJyqUjdo}mbk`{{j+lpA2W=4 zb3w9kNyVwFd@`OdsT`b*3qKfoIjb|(71^3m{$Pzk(KWvKI$zHlr7HZhcI@noRrr_K z4K`VfWeGcP@Zq4J8NN+7&c@q^Q&^^(eVe;GPL#mcPUMS{_#2b?!kc{YYeov67WBV1 zv-%duMJ20Ygdo=#c%0y8U6N+^OI_#qdvC8iIFQO0-sVfSc7RLtdc9+U#?D2XTUMj8 zblu;vX?*b=zR({TgqBu5IBL9SRJ_Lc7{z(R6GsZt`N9l7j4<*u!35k~9dLh+7#)Hx zw5->ZMtH(`>$|1npp0AD%!>5jleU@D?2A{k)B1SZ|XAnfF1t{sV*{`me(qR=cQK!y+HdZW!}R z`^b!n2Ym7&U-F1g6!8h7j)7@>V&E%^?j)`2+wy7id;M`Ay^w&%e6pBt_JptR{1kX- zr7i&*bd$NsY%Ot?qOYf$b8$l6`h&(HlW(1S#ut_Hw>;;Y_^>cYyzpP)izh{{xNt?M z`Ni4D&L7*$_`(-_@+BXjfk@Wi;7Oa(z};}snwvdivpY^7J+Qc(5A%d(c;yY#9osHS zj7R;BS98%*i!1ozN)2YogWnZ617ICjQ}N za8AOO)1`=h_fLQ0U+&d>@-<)d9jk%w{V!vNJUvi!5&!UM1d8c9t!%aEghj zh|c=@flqwo!weFH5)(bc_BWxwW{fKhHF4dwaM*7S-g4lifhha7YRKGPX_Zm+<~qLl zC%y#;5zNFHj)2%Wf@4DtuQQ%5G>RrJdmQ}ZFKK2rQhsG0{w#Tak?^;-hq>HT z!V)=QpZOwBP7{3Qrp9+gyYp`>avSm0aUpW%(MNVOU)05gG~Ga#q4@@X@T4K8W^F^$ zqKFng*~%BTQO>Rv0cTe^Ga|(0NRGAV#he{eH|cA9;fve(x&cTu7udj=FPZOVT@<^~ z_T`KAvW9zK`D6!Q+{u@A@g>W;K^$;4bS;(Odk&9})|B5R7k^GrIplht|Hd~t!}<>U zqF`VMaH|eZ>fJJ?t1;NfG^oC?X4ntD`Bz>54-X$Zh3T_@qJI%q3-h?(;b`Ng zjLSV|LN-onfAu^-Kwicy@q{Z|Z_F@s53R~ruwhNe%guoTagab7EFkXy01aH7u>Hlg zk4e^+<(-q=Q@odq2@!yZj|sq`+QJ`5QQ>1ciF-3`&h2)okbLNUebxK8z}z+zK88es z`a=xO+pex~HBf2&_@}9J^%wVbVFL1mfc(wqhG_7LKmF&|JmZ-rjuWtDl|9Yj0_|wZ z=S}3_@~(as`6Tz^v;(Khc0HJZn+*S5Fwk`gt~s zqHR)^jKN(;#|m`2xX>Ofi?{JDwwm_RKFAig4iBZgQ1J7YF< zw7W@3R_jZ(Rtu;QPGyhJa zo+`W^Tj5=>hhBfj}A-T3>oPQX*W32V^>=>jrCAj}ki7x=>fFVLpv z_R3NhplwH& zx?s93J8o6d+-CSzOcC7^h;s#!P;}5R`?mxx<;+}hGi;=%c}VZkfAa*Ae1UO+z_d_6 z-WNcg4(Dg6lQR#%!2XU!s_;9XN9+s3aTNxa_DSoog zH&G&j&riHxU$*|oP3HEOs`t_J9z7HoJQC;@3G~jO7Z|Z9_+`zaxWriwrTLGKNoKv* zt^fI0Kokq0BsmY!Wmp!`dp%~&m`k767QFVHBYYx|JQe7d2sEDwq+Q$!6e|VkP=7eX z!OBsV%f(;TRqyFESbsyE8l^ogpg{gyK$Z!FF9dqOU>p%x*LPc-h1c9Ep}k+N8CTasgQ(kZKK%L(W=k^2w|+diRsVWv^GC^0luN zkgo*7N(`P>@>9QS^}8V#Zp2P3>3A0Ur%E8L78t)4Xx0eK-w2HFvEG7pDwQtpKtZU} z(V#PHU0?mvz{7Qzf8UYXQmxW)MOv&Z*}j;zz1a$mzktEg76Noz4a zvC!h(8TLxi`t+_9_X?hUdM3c{%u|d$?2gW8Y4%vS&(Ngjy}=^n`(0XWc z_c-#`)=vUBh!3_idC{ZLZP82TtQ)qpzL4|7wq5{dXc{O5RsgPTuX!Y@&faoI?1FtO zrDpvBjRH8L^BKJD-;+4jU<9Qny65{?MjtCt$!o^+#&k6a44MUGi$K!A1P~Vx+Etw- z-?DHs@0P(7&Kh)0VynQQO+bDTn6?WH@3FoLXkLpt1T=5!Jy@rJ7UB%&a$SIX6abr; zcT0Z4L6Ed$x!c22K~HkK1mbRi)RX-U$fFv8Fy<5R{K##yrM9(e&!?px=U=VVNL3L8L5lPu%D3hKH-0|vbMMWsHD%43*;7`VvWICk&l$gsS{R(R-lP{8w_N>` z+@MdcYe?xEQEJ8%n4-i7NY0|egs7N!X6ZkFdhQ+FQ8X?k$G69X(!EG2OsTaBGYV$H z{#|f$5z{}^c5fKB{z7=&)KY5--qW~DA@dX4$-78!pz6ux3BR6@&&b_q zvrRCxv23ahrDjX1Rf(NoHLX=2GigOua{k)7%{iaA2jcB0g*~O=K&iLG9&rirhrW*#b%k2$M2)HCONv#TDL8#k-tz)ZnEAto^2m^BD^emddpE9c zNOz&u-4VG`a6T9;&SN+?F-IpYrhal!=#4c0S?G})rEsV8Jt(+i6Tl&E{I2U=))p2& z1P;42yP~gbQHm#JP#~+3W9+o`Xr%1W3Ab_8so?=J1zwcGoBGXJaFv3|2ai+vP%zEF z&-aIt*K)3JdAxS?JKxe*YrPs9x-+j)t37zv0hJth#>TDE%4ffvk=jonkJLX3z{3!!pv2wXp|6m#&trQc`&-Rl$5+_rVKZ9uFrn9|!80)ud}|BVTq?_1O~)gx+x z6HQMs(>j_%DYY<4ZM_MMz`L_azN6OcEoeEJvgY=w>Emt-vGLw9!?%yRaLLfh-Qx89 zHqRTB`b}zSIJIobrU(idpN5%nX?uFIPK{(n@2Q}-$FI%|kEFDsC~XhkEvR$<4mfag z2H2>oul|7zntS&2w$-`u6Wpsx7$jl6KdzRiJjs(6W2#mirbV%iqhnMFwcLo z|woY=$l=ilG#DDE-4Dw_}f0otxA5;6*thRN4MFYR_XS-69omNURUwTzw!* z%Zi@#m!W;6;n+AzD^m^?Pdwo`xpI!v*kgxck82n@Zof-u+mV+hoZ_D^UOUWiO6^X; z#GMzun;TE5B~ajuNu?aa(R-eFn0%4(Ku*TMU<(kVp-rIAVL)(r{&(rGbJ)clZpHeHHQEK^=+MELDu-$`Ck->v_ z2XWn!ga34{c<@m@Tkql0Z>Ij8C&HoI|Bn2p!h2V0)rp+ePQ9o?O7Wc1FQS&!faD_! zPEv8ktn!D+Iq3&hm2ECe6}fRSGMH&Fsmu!WsfYQ6y=oq3ksBzo5};dxx>Gn zzxvEhvll;(ug(kheMxE83ZC<^pve1&pEvgI`E6Z?#*6X8@GA;-7N5&7Y+^NqMW?k5 zTVGZDIA`_43QFUW2uz{X?ZcAlC%+wfY4%qe7UdR(zorzuu;t&W}Zrx{R{4r(fjyg*5j?(a# z6F=3-e@2C@7l`}Dw#Nl75AV~Mh&AjdXE~WpU#z(zDgElO%VBV6i}`smy3v`cIE8%JN9za>^~!SG*D`dq_d~#VVgBK41S)=y|KD=?v=l$ z#vg2=)ZUY*>=oD1FJy`gi_R~mGEA=yx&Gpr39YzD zgNGW{?cu(#2-I#nO7+2mBe$mKEj6VTX0&dSax;B?;r%&X6*u1Lwii) zvkJBpSvrcaO4HCI4P|4Ze%U%R-+FWUi4YD>)p+|=1OJ~3z5ZjLDVVl83tHEb)`EL- z(7k@XIT!eC3(SV>r?gjWk_@$?bu)yQXyT^b_cIPLxph9E=ZI>(r=OFGaQ0GbTIVut zU_OkILLntcb++*vFE!r z7ugfq4Ikznc~m3Bt!LUbUmCu1cC5umt0Rv>YZtI7kY^+J;qKZAzoEHucz=2jZEKFfB8g)XFfX9=|=0i(>ftM z4|>3hunSyW2N#U@^3Tw&(OOfpH*)F8$DX7%uYpQ_#<{`LGhE#FY0jK-98O(z@-Z_^qvwB{XJ zJC-(xqsN$tC3i`q4#B?n?p;Qlcrph255d)ATVU5&8atBaz8QC?GkI=U>L;8m`3p z%dq#b3OnzDpF?Y+BfbvJ(VUt{YbVhL_h`i%K?*OQ2Mt|xH*DJ5<@-LG?y2e1+q!gL zGOguK%(bf%wia6dc;%1pmvDys9uYq!g;w0BH4JIOAL~YpQh)MY!uWN5Zc`Tab&gM^ z6=}47I&F|a!|{!c%40aed2uTixc=CcE4}TK9@A=1$SfyE4&F>{2%2^LM4rVj{|vXedt?7o z7y%kIWFr+ld`e5}+q3f$uNr@!_SH{QUyRA8)z<0Zb~kpE{=(eKtM`ZQFX*vaSwJhS z;0%v8uDJW!j(6cFm(%pN*CA61X~lC|{h|uIIEF*^&HlQ!6McJf|M3>f(w`O<(YnPn z@YWI-9N6)MZBt+Z`lEa*Js;&Bd5!M%e3dQUiTJeI`Xi{F$Z=W1A=D>$J2DgqJGZppZ#J;4LzM_{rr7B>S!KKuL_=GlB)%2JeTK_GrQ%f7v(TaC8D4f9e!+8rO9yF}(!=YEX(_D)_J)85#9)H#K zzt_{6DPq{5U$*t}cb${Bny%X`{lHmb`gH@XXry(U=w z2jj$A-@T)UD zZg2CLs9!tT@B^*ZOM{I42z>^x-olmo-(Bv^2&uS`!aeL3P~LIu6Rp!nFL}r_#L9yO z$Bq!qUpB{m3S5EZs-J{}RI^Ta6^7Ed;umhuh4l>5-CRk^R zIXRZ*e!?x`(eJc@qBp*wd(4B)7x5~8X&(<~_+1k(Q;S*R@yOU=x9@N>Q@r$+_zeEF zJ7Vsk1j7WKph<>qaPf@)n2n#}Ri%QT$(JzjYd-jNjk zInmm)^4B#dnk}%x5-;0kBC^8pt`-~+fM-MD$*SDiqhT&#-*2~ekeqw4wqofetab$6 zX3?A(_kHHCX~F5^M!w(5onnm*F5^`;SmPe&1}B4)3A=(SicL}PTE;fqSzahmn9gv4 zBSYc0Po;;&&q|c+wHGArcdiiPW6_%%pIMad)cpR$kSoshf7;?zcG$okj|mk^PCpUh zIosAIIvQH(RVK~7xX%OoI$(82tUtw73f=Ra$nfe-U2&Fg^Tcp>M?4)zd4cS1BgiY^e6a3U90tru0Pb+16~l?YOhAb8%E>@jC9S zt61TKSFR}n-`azzn=TX!JQZ1bTH~y%&WyT-6?Y)nh`XviM&qwtf?tQ;I=Qhd_Mp1xRdzRMLBiZ(aS1Kd0A`+`d5kdhRpyPG*hY1>E9}oM^Eqg+@P5!)F7#jOr|98g+6)aXwRKy|9mi*Q=jV+V-;IGU#s;x? zZ5c;-W~;2QY=6x=?c#BVk8OW_PIqG*R@}uJ_m!sS_5;?Z5?)){eS3T2&<@R3?nfa$ zDb{ZJbZL8%h27oY)@@b4$79Vm#D#2^{QI+3jf(Q3-9yJ-m0fC2z&aX%_L#1dsvZ-4N|cFeQc15;pGpwKLFjJJQkQ0g{65q329g-9mDp$sT}yk(TNVX92%s} zL7sm-+yZY!W?+S%d@~L^J3P5|gesa> zroV3dgd26aSR+UdHq;&*mb1wt_{c7qL0>LfH!%;ZJ;G{g&)~Gjrp51Di|^LXUo+Oe z(UaZP{1~r(f>%Ao22-9vb;{>-UXf$3qKQt=zMs+P-rZ$ga>RkM%EyWV40lEYxoJ|Y zcXG+wb$`WpuN$TlcKDx(@C2rw(5#F=kcf!rKC6*>tyFFI@nLf4{EBv9e-XG7}FyfHoxPSH> z3;Dq@e0~WA0j`JLKWrF3*GHUco2;|{$ipYGrC7HNYnJ2H&Vm=v^nLIy(5`Y7xQt>N z6%?%~YRVt;&yNRgY;#L~i9yAF1@jkFY-|`-w6Ni)3eRufO&@;LHhymfR)39k>o_rd z;7JqydVyw7nX>uhr9%f!xX&@K#Bdc-4;x;3kihQ9*cr|KXd$^XwYUl^98}(5cxPjf z&mPAfuB#WX9_i=(!scAm+-J4r)p%(QUiucVdLpO=L2?XERT4K{q!_pNp2>c=bEdSl z{NbA&d%jAp!|)n3Trz62Np1-fe-l)8dy4@t*76+&{ag?4|9wN-KZ%z-6w3~s;yMJm z_t5yc_6*Jzt3yRqlfU`y!}5Kt^>}Fm*02Mg1-Jo=E-pNHc$oXzSF5a>&3`=H(TLUa z_$%=_=eNVNN4~$>?CoRwyV1&xO<2(Yj7sOLQ5CZdD}Max-~c45%dB++89el(s%PoHrh zH0BtSHDzk$Z=T&4-kyQ8U#53`Hi&M%b#vEP;W~fH)E*c&3^KkKI0ih>P84L=u-5)4 zkQh}J{-)!)>0#ZTRUh$^WZ5SSSJ#d~KKSSHL(!-@{@QQ9GRcTuojvcunLa#b2KdDH z&kX+YutQ^fj{f`Lz6H{mhK#Neqh-u!nlKvuw^cx;b8MJ$bZ&^@n#fC>v+v#&ytv5d zm@)=t%$O7boSHOeknwJ8H7e7_?v%DcRfx{Az+o$U9VEDI%yO&s-Cv#1nQa?#eCVE8 z7L2YXv)V}*CIXsPuea5{e*fD`*Ku15j$diHXvHY5@h&mseHS>=+wT}9c}es8 za^BRZI zLt?Wla<7KlGHP}VY>1QBQD-@83M|(wH_k}h?mKe&%BA*P4zx8$Ya=eqrknS?_AxZ(Vp4!e(+kO=gq9Hl3ZnoHb`Eo$F9Q!o~qUJP0XHN za@fyHTJFQBUt?BJ=_C&wrW|Qc4mHf#@CUnDFYZC%Z`T=xFJn+HR62itT)JquR`9YV z>!-E4+#DwM_G5G!#80Job8Sr4j_p`w&zkXnSVU|N^Jg^b$cFuq(nWvIoUd_Z_M90T z_l`fmJb+PKuZIuWTKv7LdBKpK>%TUbV^wVu$fyM|u%q=F7_au)m2KRP6ZQJ<51e1T zbD>c%qx%qEbimmW+9p36J`&$=<}AoKa)ukiXeIH%+*(?=a3Atte8qIVxiIUg{!gLI zvRZO-JKehT%7Kiyf4Xmt^79q_P!-1L-e7c{gwbL$3+JPx(Bpq+%^au4S=84&B2SFZ z1O|=z>P`6BvnjVPMHxB&dXrfjEDeV)+kNafne@Wq<{ukY`nY!)A9Oj^#`zS%=teTj zq8RO4%u;8#b4#{OpqZmNZC@w-YMX4g!S0^W>#$Qaqjj56#4zfO;BbL$oyg*A9~45n zjKHp)muK2;O}WG9#xe>gI6?x=(%W$*Gdb8ZLHx;DQYCq{Y%!j6{C4dR>xAo%1sH~8 zA=iL7X03zDFSsi`a+gi3M#AG#=jfMSx1;Vdig-ppfzeN7G~N=YEOBUFoqO7T<@Rgh z9Z#A@Ctt=ZlNjB5jKYLx&4a3*9t+tw`S+IFuL?M!EhDFFN@g@u81+`peFj;8WuBK>r8l#iWD7tV4bPjpOX!ov61~d-k+y2L~ovXBZ zTGifiWA~9C#>bSs$YKm0Fq$5`JDhA-8t^vJar|xWFFiM>&Kv3T?yulK&*^Q;VH6J; z4Ns*K8I)-F$i>2^q{v9|z=OZ}O)dj3%E2>W%k#~KetOR_+1q|}_nY}ed5rEOM&FpZ zE`x8Gc3|%Mqwgd~nsfiq$rtx5f6S=O*28M+ZZ5HD<&IEa6PUG9(^UL~Q9NY~o-z9Q zj6ned+TWnwgT>~%FEtl#JmoZlsB@J0j=(j-DQk& zk7M_7Vw_D7Ut2V5wz-M-u=IMvj~dI$8O006;3c#6IZvtKZEpHakt{ps>&h&VdNn;P zc*TITS`Swo8b5v6^U6`W@6&8v&b4u_U=*(z^#*<=bo>t3sfD{_yTIn0Dco3f>kTb@ z5~r9l`pBiQDn{)M1FX6lI*~l81Xukh&v=7=>vCCMdeSm=!p==KjQU$fF{MG2CBd(T zJ1r{aVk+)%x8a2Izg(zg6m^X5J7z^aqn{xhnI$A2uwp#1jTymld^~d3n(rb;&+-d9wd{1l;pY>Z7{zDe5Wy>IUxTG7iWJ~H~B81T>BRK7C2)arR`;geyBdSXYXJA$&~eT6L#4}c8n=&;GnWVVj{XhFQz`cKeik_L!CZv;8XjXQb?(f6a`AJybnxAZ&=8peBm>X3c2x^*K5#%vs$Y z5uEYg%zuN ziCt>VYF}pIUhqY!4GUYY+jlAZ$4l`3&pCg3e(?1QJ)7`@$&wB}cAPFS_N{xFtG4ED z!Mvosr)*h;9jk87YWKoj3$TjrKFQzPJjwV9U0Jo}3|CU*z-l?NnpapjSXL}h9$YBX zwb{Giifmg)qJ5Odv0e3na@?_e+LU3#Z7RoqQY_T2E&eT=hqViaoYaY>58e?BcMaRt zq;O&tYv5Jp_dN$%BU+FCa!jydbmNpTXIA0D>erCx=8xFz!^i(S(qeQHML&VB33 zs=1L7aA%1pV(0dwusTrYq2t+47p>gf)_06Ga1?s53Qtzy#p-*r@boHq19~$KKDfZ% z>~91ACujBKmuolhuCfXrR{a{QxX$YPvhWf*L4z+{JIdSWdyT(cy@Y4D<*KJm{aBrF z8nmng=h1ujrlp7D-jmbMHH+T*vx)!~9)E5XZO4C~b4(kOoi}$u$hg$+M@}*eWEDZI zdN2$Ax6?q<#c`Hd*@CsF7qCIw5;r9r{ti>)+ATjkzI}3T@=QmQw7<1N*tMZ7+{`5J zOKjIRcz8PF#<3;eylJaaLuh*dBV!)d!5D}?Yrs=UnWI7^_}D! z#TwjVb>oG^iH?nb>De~PbHS-KlfK({r{pWmXjbPot2sq!zxm&OFyigdhx28A*0aqP z{3MHEHSVw)L1N{D7Vi|#!gttwI&tas+WY&bZT=&cRm8EncUgmYRwsc4i!G4_$1psA zk;KAlUx#lhxlzv1NwYUv-AiW{&+9vPZ9038)rl7-!v`LLqeCEt7G>Q11bwDf@%WtT zx`J}MN(nBVaJXb)O-1S0YiX7<-|a0(VRi4bOP&aV_^{2=oxgsGmX}SsgIe^YbH8q! zmCAySoXKFnbGC^l_2)*I&z`-?el>?mV>QxQ%?uVi#hI{zm0sc_$Kq-54R3oUnY=7v z#LZLE_u+2}Cq-qkIuBrc>1=5J_LIlqhb#DeQ_$p9=_91eeKdXo5)yr4itQ$J{!wh=*p9WRskJwd@S%oW; z$bv!9V*KdTk2|s!PuD;Tx~?5GeZnf9va8n^!jx4c>sPJk-DwYZ`)4IRu4KzIR@a10 z;Nn^QDcd-fU+6hi zl+nBIcXg{jO3vitGy6?Aa_7wE@5VQ48|_HmR>rEAvj)$^FUV><0o`;Acu~%X zl_lfrIqCansAn&JVq)-;RlH)CSHt;Kcn>a*yL0wchl=Ea$wjY2?|;)0!o@~r!M~i| z6;`v^YRsDUlqX#kteOj`0aILckHzoETf1o7+K+)x9KN>};Tii+PSiLPclgiqyKd~; zsb>C~RaCP2RqW~-uA!1&$KTPJHr;V-;yQ)v+4H}8je5hbb5N;<58i)b-~Pk+&f-rC zHC-*Y|77>{PTi2z*)^>0TXtEQ?3(g=p5l)mww$;5xiQ{t!*u6&cWYTi9c%E8)vags z8(6q$(SNc9Zh92#U(t7?XzJv0rs(R!T>VCNX%njnwkFgAdkxByCw`L}7gyz&8JQi* z9e?)3!h~j4(ZViUV?X04M1-BUy#rwA1Dr(-9H$Bnz$D8cs zO?{oLW*6{1l?xzGIqsM4War%%=p5ay_VlKGX*a8JUj|Bg;MCn-y*2EQ`M;NqS9tNO zd)Rd!SdCgy0I!qAc-AemLvt7W+I8$#^SJ3=I=$?wkF3Ebc1(=`?gaP2QXn=vo)hV> z^4sJ61zHdJo@L*zTW_ek%19L+I4Yt0Slsi;?3bU0bdSDqA@Nw@Pv(8bsyZgBOE0R9 zF;&$uQ&l8!%vIqs#9{c0Lyu5mp$a77T0N{T+?2a6c$40$u800TZuxOX^Z2-QNau@X z6(?$c39re|M8XD3RsE|1D^*yyaKe@}#6c&-{;;^W`@B>4_&xr=j(jSZ%t4}ZNr0?C zu5T@C=cdwV1_$vfqaa8G#6kuTLm^Bz zP)*cTsSUr6$>O-O?V=tWB`v0`q$QFn<^zrN;g@$FtP_j2K)GaIJHJAXqM)3>O-8Ek zWy&ZN4RKK>u8_wIy>L4}MDkIFVjzthB+tcYC$z#wjt&7RkfT32Nce;$MN2rZ*={a^ zU+qyoB3E9N*c2!v)24JgKS3Tx#S6oj9&x%HorQuiA{0jm*7Ab|$e8o*w_fC+i2lc& zM<0VT`f#K8$l=ldK8`thyz*CN<441m`e^clyS=-2IYDub3kSIoSS>()0Q)~N9;)CR zLiYfO$j21WeN+lPQ>7lr6CKtUvoW~rz^9>}6cfFpP+B7IcO zyNb~>Ql<+!q@6`2gl4n^>$P=R;0-G@UCLkuZbB4H%7t)I2Px+&Ym%Z)l5+_4 z0Qj;Iy(BA-Lg7$IFtBW3(cB_6S&J$t^pPOISoIND4A-sX{RPqhL$oD}38o?`V>*!^ z!k`RD;^%Sy(G;TK=${-sO3Y9xcP$rb&0KOd|3rjPf z#0zOuOvqp4#7bJ3Xz5+4qbx;)%1Iuy)j?TWmPwy;< zk}FaR@pXxXyq%v3lhXpGiZ6wnNnKEqzqktdLn4@RQ4TkS3KusDI+$#+xAc)PME;2?mOhlEutpLSiI?m( zZ34#z`%5ZWk`I&=1n`YyR$>;$WSAMI9(DHNwDID&tZ;}6yOZeB!zSd zihBD4khL8zExbdS_mB`xP87vKT%emEbJ0x#VdmWe_$4E~L-G>%D2z))(k)#20 zNG1^2Q0f3oBM?6S8Q`iCrs+oMm-GCnPN5&?DvrPfa%)*Col9S5JY<(8?cBE%Dj?Oo z5~1e=mdH^$A(6>PRT6-e5|j&Zyl8QS&U5s)enIA35mt4U~7`=p;pa}#-fxL=a2W**C2;Wc%5GKY=s1ibh z%&`!vl?;jjeHW3nED$;sxKt5j@cRUzzzTpTmXg*6^HDVv6$MByXlkKC z?nR*^g<43nV4`*b4q?;nB;LVCouo+`9x5;`dPowi#9q=eXHhf*9LR)%G{`dtNRgG+ zzs_I?`-jbsLxv56U>_+A9K#rd9mf=2%O?dPeu+R3AJ&jQxF~HQEFz+@THeCXdgv~}fNt=DbS@E$=o*An zh~7kWC|?z#MK#Glhe`lUSR)Of5uqePuNL?xN+GEOg4Y*HlGTt!(gs?P3t>(Qi~LBv zpQ#Z6q`udJUJ(i=Atmc60$kDHoO`UCaHtg01RA+~U#>qFhSKU4e4 z0FkTIWGYCNKsb_MkgiJQxAS{t2o~3W)y}F3DOcz}AVtPE2H@}jS)jyN#f3U#jw_(+ zOQrSrgD^`Lz%K!nGEQv6eXG(bOTxFfjcknQ5`|)+P`|ENL&$ZrD2}x3Gp*(>ArFEs ziKLTdOcrq=g;Ge#a4~T7R1$hE0GxD!3r)!aILMCb30=^z8UaeI8Pd2~8EIV%Op1I- z03W4FfpWH_S#Vz(AkW9BnUrV|pf-T2*X7AD+;^d`;&3tkC@bfJV$IFK(Nrdm7rKkQ zu#=>YLLH=xvk3JN2vg^S;6L|g9%($x$43N$=JABUmo(}FlB}s9lGnoT5jct*XiwUk z_MxxSeslm`AS#6QV=hpNo;(qJ$Y;ZD0uzFFQFxDM&Z0unB?I%$9MT1Z&-HUWWCd{! z2s$_5^qe9-@&r1t@9!Z(mq`wYr!rD{fWO-js-f~v5)hm(NgF|ba)7ii)l*ke_K^_1 z0vvIG#0lri2*g6raAhfMT=rw^L8UqQv zE;-WRpwV`e7e&VK3MPENNaoLNmDI|7xoxse##LA>dnEish0E_2*vUunBwQiy;D3b@g#URcQ%UJsM!9ew zKvt-vd5Uw!?J%o7wT6_c{q94D7wg__R0GS7fpUa?glMe>AbB~K|z`K?3@Qdm;Ily{+xqY$>F5$|> z(l()oN(iSxN`!Bv+(^ z260}kEMEe1+MM9l%FqXb`%#DtVa0qYgU!e)Quf|Of(2{PlB6h&7&{1&y6g#jCqa$? z2aQAr2=j@-=qQ3U=}a)dL=6Fj4ko8R7bd3#)IRqz?+z0rOJXv4)gn`sE-G4f5% zoIJ)tY$!72n~7dX?fHrF=aN8`V3k{ZL&kzBl^M$lR4#JunFd)1w}$OvE(?2PE%GZ; zXQ_kGQtl@$qMwT^sZ?P--6DP<^pRPyNun^uh-bm;5hE99%ja^+owN;BrWLejaJpNQ zo&iv65+YeIU;PDuYgH<^RhN zQ2@yUwbhw4#7>6X2n^*RPk>T$fsxGNGxkXs5~wKNkf&s!{Y(}4KwQ{QcOd0Dq<}Y| zl^;MOKL{($pXe89sb~;FmsOe>bc@7@zK|jSQ~fr?I3{9r4OWWk zThSr1*!;jTl*#qs5%bE5DN!+%q)B3^TSCGxdsvh}+5#$|3?&j$`I2T8V-+ysk|FlF zObvuS8vcl_7QL3;qWxKCCQ|OkWYeES&ML{gd$RX9O5}>uu%rAVe#XgS4OQEuT{KD| z4Fc(!3UE-AWI|ZnDGd-jreDi%;SyXTc!yCi83VBBvLRO#O%d5iWMwkw8Yq{P9uOrV zfcH65xG^wx1%N{)Rv|zxk=Ur{e^4qXSdjwsl0ah`ML}tp+DQz04Ji~cbqPz#;SzR4 z*i^e*!-OKj0mT3+tbVeZ6X|9Z&WwBVsQ zf)COti9nE$Z6qCZ&=iRCVkM5UiyYKN(t2o=PSVOH&)qFG9lxtx8kU$j?;1CV~?L*YqKsOLPO&1t~a7#X=S$xgqEQVNKk9A?!z4 z0o2vb5>?C#qh3<(HCP-_PG!)~GU#QAhsRhUo#;6(V4?Ku^Pix^mmVl1;x?-R8<22q z;PEC9@3#+ZNjv`)tjGd#zU2B21m`nd{tBrRRMSGJ2~0p2;OjktRz4X#M^PdNTzghP z1>_2GJEF^^?pg_Q8fd8<#9`48H^2)O6)i=crX;R*RL|A{FWz|SF;!gWXi8?N7i>z07@ZxN=_Wt5xDkJHP5L*XhE?VnWF z2oYF{*9ipOz>ic0;};6>^Suf6tfK;XgXB=1 ztlx`b0zDNY&!tPHM04%t2H-3T2;3v}f`XSo2x*{H5(U>v5{beT&VmUb$mM5>>}1X~ zG%K4l*n|S}FBurT_#P~Vk1A2H^VrUh7lJun1B?O`nRk+Yr=?P9@dHbRa}lG5P!|5u z-pYUz@+pLcrBY&e5eut~MFo%|Dq)EtUCOT$1@ryH=s77d;KV6|aKC3O4caElQn8a0 zEAS;Zg44rkXNin$k%CQ_L0S$ zwLl6P*jy;ZyCI6>gDmfaG~R&W&;#KwO^sfX|5}hM2g~*o32V5)gh$3IFqg_+6ma^@>*tWl zsRDNofgqua34{;53>cJ`B$|08a$=oX6FM5Yr4}5GM8Av`aZxEC_A{QB5E@jODj@v1 zH?IofqJJG$h144sRYMx5LyqjAiqEa!9x_XaGvc!i9VfuyTn7z^G+61StS7ZyqHMtG zMva8hBGd$+-?QKjXnewdti+)8dXU1r&VY26nEzR^}mv1<*!nj2AY7c@B*h|7*vFvBZ)^ zzCcdU|0%@7f&w7U>ry&RQ3sU$oZEba_?Q05K*0Z!8~2f>&OpJ0RE0bXw!F|ymH(`m zMnZ9}v&>zNVhJIl!TU2Pp48Xx%O8|6$dFN1Q~^FBbP>Xw6ajJoXXWQZb`Q!417t1K zpxI>sh+od=`+)Sh7|DV-(Y>q)(Q7>P5aRz|8-n?OBLcI4`$C!`C;$_ni$Mh>?aOTt zLbFkTYyf`V(C4JiSPGQ@oDd*0#&?-0*`fEsd}#%?Q;Cy1;2Ts8$BQ3BUFW-q9&sMa zlBiHInFBS9gXEsdeb``YkmQNVSaV@G*N6F_5+X9EEMazl2ihJggCSAwZk9p?++-ds z`WFxyOuYga{fosJLLy@AWsBm4_P`W7C{#fj2Ta9{G&&Is147A&hpGuJrKS3og!~!U z9Pj`fjx~*%NSP#X><}2nMcyPG2+hyD!5;}ew9W`dlHVX5aJO9ttp8U> zs0pCUJDC10mt297#9K;y4=Hd%{*myi9Ql#zLD-iNi37sXpTwcLrckcmOtd6Z=QD@S zWrz=I-ob#)j|1H?fe%}^cBD)ap2pt;J)I)_Fyy#DV5#4{w64yNUY>PSACBVB4-HDebRnQ2}&cdL5bU1|o@|2WEPO9QgTjfM2f4a=;P0$p*b9 zy`UPvse=kg1t%|v`x*#+cVFchYmDm$O)~p<=>S zQ0+iF8VCgQFAlVMUIJe^-YObZoI&Oeb{JMbwHB}wT*G=&iCV>jYOsFQp&D8`qGCTI&TI*5PC&##a? zFiD*OerbKXkvv%L9sv87pErb51~-NKw~LhyyCAYX1e~Q6y7vb!IP=i2>17FA_>mGT zF}QOFbiP_yFH;2`kQ#BXI1*+u(G5LBMzTzPD*c)b7PatWMMPIbz0lUd&oyRYc>Z0G z=sIbapA-cF9O@6XfmZQM8qLPZYdA!{5UFxQTp+h$8YE@xOE|buBX*Qns-jR*@GTD& z!*Kv`?pTRyWnN@=$Q&vFZQ~vfS&*tev)Zisb3mi(fKMai5H0=Bi_8{?44OF(5az(~ zm%IO+OdxbJux9d*xMpIcCnPLv{j0n$anO6EWL%`E$;;k z&_&Yta3~^!lq9-UIgOkFPwCn8l3Z5t7Q!}n_J40!9_dzKz>fj;PeKp!m2kS~8OZ@= zauwpdS8xu-1UzC8=H8@1ee{QrfE+%mR;p(xkmOtiRT$+%IdQ*GZIF=7hZ-@kpb*F( zFmFL+dQND=fP|4!NgOAPib+Z*i@ZRc7%BWt*UWZb*hc(RFPQ1*uojf z1Ka=F4tZQ!Zl|hdue#bnRm)LTaYa?zNp-3-!Bmk*WfBRXA_NXMRW(=D)o!Xo}qqn+7HlVh<#I5*zqk-QkfZU?m`5pH?hj_%Ic}8vY&(->tWZ9b&(IdM!3SL z?y)n4IQ9c;5n5Ph=q!wsWH%u?hyy%{uz^j|rp+js6eK3OuvQq-7V`3^M~DntC+S@M zwKGzU&TqWrr&L>%+!K}%8XxqKX4g}x#APwfgz51tr%asc0nhu~NFP_ph8s)Euw4@U zdjSu3&ak_%%T>9yooQ?ha+3T-4T-1Z-}ny{!R%ZW%E_tdODl=~LMiRIlUfmbJDne* zVhyi#VFu!(^vc`S^?mKk?~Q$I(KGw62Ie1{>^4OSc}9Ne^*z}4vb;mqmw^>LBOA>c z@Ep4oF}$E^tsK52??L0=2)^E9C5^*3KM?&ydydpXojO+0B%BV`O2nCzxI%0q#7pcE Ra+f+i^FDco1F|(7{sni?owNV| diff --git a/java/lib/build/libs/lib.jar b/java/lib/build/libs/lib.jar deleted file mode 100644 index 77f1a996552b93a2c207a0cde3f2505656498e79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 723 zcmWIWW@Zs#VBp|jNSv$|&Hw~VAOZ+Df!NnI#8KDN&rP41Apk|;rh2A#(m(~0Kn&E5 zQ0VLE=jrAe9HQsz_SyH$X&-N0y^Flwx?1PXoZlQ|aK-q+(??I4kPKVARRzUXZlGaV ziDijNrNtT9i757hl(Nq-wR#6slEBEoAc3mXCo`!iv8YlnIVZ8WIMv_U?}&lOoatxP zygAEp%G+fI)`qql`|=fuquAE7IoO zJO2E(bwh9pCsR*Si{`Noj?GgmL@IS>{r(fRF65@*BH_C)-t`#Vx*dOHhJaD}q}piP zjy)GHas77TIDa-sa9L~KmC*guPTk{*+&oEinaEeCh_^e$53jqVo4EW(e5ucj?P+Um z_J+i!PCNX~+NmhHDtZ<7Td$ye%Ocequ4lII5O26+YGXd*Y0nW0y9(C5Joh=zX9y_g zeDc}P+Y{Z>lIv6Z<3fA$hoAmMpR^_asH8K`u4fGJW@Hj!#vP5ofC2&mhPRF&8Xl?W z+R!5vq!V9yBYM0-G=i*Nh^i4KmIJ(5*+42; Ofba*9J_<|~3=9Ckh0YZK diff --git a/java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html b/java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html deleted file mode 100644 index 3031b841d0..0000000000 --- a/java/lib/build/reports/tests/test/classes/javabushka.LibraryTest.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - -Test results - Class javabushka.LibraryTest - - - - - -
-

Class javabushka.LibraryTest

- -
- - - - - -
-
- - - - - - - -
-
-
1
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
0.002s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Tests

- - - - - - - - - - - - - -
TestDurationResult
someLibraryMethodReturnsTrue0.002spassed
-
-
- -
- - diff --git a/java/lib/build/reports/tests/test/css/base-style.css b/java/lib/build/reports/tests/test/css/base-style.css deleted file mode 100644 index 4afa73e3dd..0000000000 --- a/java/lib/build/reports/tests/test/css/base-style.css +++ /dev/null @@ -1,179 +0,0 @@ - -body { - margin: 0; - padding: 0; - font-family: sans-serif; - font-size: 12pt; -} - -body, a, a:visited { - color: #303030; -} - -#content { - padding-left: 50px; - padding-right: 50px; - padding-top: 30px; - padding-bottom: 30px; -} - -#content h1 { - font-size: 160%; - margin-bottom: 10px; -} - -#footer { - margin-top: 100px; - font-size: 80%; - white-space: nowrap; -} - -#footer, #footer a { - color: #a0a0a0; -} - -#line-wrapping-toggle { - vertical-align: middle; -} - -#label-for-line-wrapping-toggle { - vertical-align: middle; -} - -ul { - margin-left: 0; -} - -h1, h2, h3 { - white-space: nowrap; -} - -h2 { - font-size: 120%; -} - -ul.tabLinks { - padding-left: 0; - padding-top: 10px; - padding-bottom: 10px; - overflow: auto; - min-width: 800px; - width: auto !important; - width: 800px; -} - -ul.tabLinks li { - float: left; - height: 100%; - list-style: none; - padding-left: 10px; - padding-right: 10px; - padding-top: 5px; - padding-bottom: 5px; - margin-bottom: 0; - -moz-border-radius: 7px; - border-radius: 7px; - margin-right: 25px; - border: solid 1px #d4d4d4; - background-color: #f0f0f0; -} - -ul.tabLinks li:hover { - background-color: #fafafa; -} - -ul.tabLinks li.selected { - background-color: #c5f0f5; - border-color: #c5f0f5; -} - -ul.tabLinks a { - font-size: 120%; - display: block; - outline: none; - text-decoration: none; - margin: 0; - padding: 0; -} - -ul.tabLinks li h2 { - margin: 0; - padding: 0; -} - -div.tab { -} - -div.selected { - display: block; -} - -div.deselected { - display: none; -} - -div.tab table { - min-width: 350px; - width: auto !important; - width: 350px; - border-collapse: collapse; -} - -div.tab th, div.tab table { - border-bottom: solid #d0d0d0 1px; -} - -div.tab th { - text-align: left; - white-space: nowrap; - padding-left: 6em; -} - -div.tab th:first-child { - padding-left: 0; -} - -div.tab td { - white-space: nowrap; - padding-left: 6em; - padding-top: 5px; - padding-bottom: 5px; -} - -div.tab td:first-child { - padding-left: 0; -} - -div.tab td.numeric, div.tab th.numeric { - text-align: right; -} - -span.code { - display: inline-block; - margin-top: 0em; - margin-bottom: 1em; -} - -span.code pre { - font-size: 11pt; - padding-top: 10px; - padding-bottom: 10px; - padding-left: 10px; - padding-right: 10px; - margin: 0; - background-color: #f7f7f7; - border: solid 1px #d0d0d0; - min-width: 700px; - width: auto !important; - width: 700px; -} - -span.wrapped pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: break-all; -} - -label.hidden { - display: none; -} \ No newline at end of file diff --git a/java/lib/build/reports/tests/test/css/style.css b/java/lib/build/reports/tests/test/css/style.css deleted file mode 100644 index 3dc4913e7a..0000000000 --- a/java/lib/build/reports/tests/test/css/style.css +++ /dev/null @@ -1,84 +0,0 @@ - -#summary { - margin-top: 30px; - margin-bottom: 40px; -} - -#summary table { - border-collapse: collapse; -} - -#summary td { - vertical-align: top; -} - -.breadcrumbs, .breadcrumbs a { - color: #606060; -} - -.infoBox { - width: 110px; - padding-top: 15px; - padding-bottom: 15px; - text-align: center; -} - -.infoBox p { - margin: 0; -} - -.counter, .percent { - font-size: 120%; - font-weight: bold; - margin-bottom: 8px; -} - -#duration { - width: 125px; -} - -#successRate, .summaryGroup { - border: solid 2px #d0d0d0; - -moz-border-radius: 10px; - border-radius: 10px; -} - -#successRate { - width: 140px; - margin-left: 35px; -} - -#successRate .percent { - font-size: 180%; -} - -.success, .success a { - color: #008000; -} - -div.success, #successRate.success { - background-color: #bbd9bb; - border-color: #008000; -} - -.failures, .failures a { - color: #b60808; -} - -.skipped, .skipped a { - color: #c09853; -} - -div.failures, #successRate.failures { - background-color: #ecdada; - border-color: #b60808; -} - -ul.linkList { - padding-left: 0; -} - -ul.linkList li { - list-style: none; - margin-bottom: 5px; -} diff --git a/java/lib/build/reports/tests/test/index.html b/java/lib/build/reports/tests/test/index.html deleted file mode 100644 index 837e00ab79..0000000000 --- a/java/lib/build/reports/tests/test/index.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -Test results - Test Summary - - - - - -
-

Test Summary

-
- - - - - -
-
- - - - - - - -
-
-
1
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
0.002s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Packages

- - - - - - - - - - - - - - - - - - - - - -
PackageTestsFailuresIgnoredDurationSuccess rate
-javabushka -1000.002s100%
-
-
-

Classes

- - - - - - - - - - - - - - - - - - - - - -
ClassTestsFailuresIgnoredDurationSuccess rate
-javabushka.LibraryTest -1000.002s100%
-
-
- -
- - diff --git a/java/lib/build/reports/tests/test/js/report.js b/java/lib/build/reports/tests/test/js/report.js deleted file mode 100644 index 83bab4a19f..0000000000 --- a/java/lib/build/reports/tests/test/js/report.js +++ /dev/null @@ -1,194 +0,0 @@ -(function (window, document) { - "use strict"; - - var tabs = {}; - - function changeElementClass(element, classValue) { - if (element.getAttribute("className")) { - element.setAttribute("className", classValue); - } else { - element.setAttribute("class", classValue); - } - } - - function getClassAttribute(element) { - if (element.getAttribute("className")) { - return element.getAttribute("className"); - } else { - return element.getAttribute("class"); - } - } - - function addClass(element, classValue) { - changeElementClass(element, getClassAttribute(element) + " " + classValue); - } - - function removeClass(element, classValue) { - changeElementClass(element, getClassAttribute(element).replace(classValue, "")); - } - - function initTabs() { - var container = document.getElementById("tabs"); - - tabs.tabs = findTabs(container); - tabs.titles = findTitles(tabs.tabs); - tabs.headers = findHeaders(container); - tabs.select = select; - tabs.deselectAll = deselectAll; - tabs.select(0); - - return true; - } - - function getCheckBox() { - return document.getElementById("line-wrapping-toggle"); - } - - function getLabelForCheckBox() { - return document.getElementById("label-for-line-wrapping-toggle"); - } - - function findCodeBlocks() { - var spans = document.getElementById("tabs").getElementsByTagName("span"); - var codeBlocks = []; - for (var i = 0; i < spans.length; ++i) { - if (spans[i].className.indexOf("code") >= 0) { - codeBlocks.push(spans[i]); - } - } - return codeBlocks; - } - - function forAllCodeBlocks(operation) { - var codeBlocks = findCodeBlocks(); - - for (var i = 0; i < codeBlocks.length; ++i) { - operation(codeBlocks[i], "wrapped"); - } - } - - function toggleLineWrapping() { - var checkBox = getCheckBox(); - - if (checkBox.checked) { - forAllCodeBlocks(addClass); - } else { - forAllCodeBlocks(removeClass); - } - } - - function initControls() { - if (findCodeBlocks().length > 0) { - var checkBox = getCheckBox(); - var label = getLabelForCheckBox(); - - checkBox.onclick = toggleLineWrapping; - checkBox.checked = false; - - removeClass(label, "hidden"); - } - } - - function switchTab() { - var id = this.id.substr(1); - - for (var i = 0; i < tabs.tabs.length; i++) { - if (tabs.tabs[i].id === id) { - tabs.select(i); - break; - } - } - - return false; - } - - function select(i) { - this.deselectAll(); - - changeElementClass(this.tabs[i], "tab selected"); - changeElementClass(this.headers[i], "selected"); - - while (this.headers[i].firstChild) { - this.headers[i].removeChild(this.headers[i].firstChild); - } - - var h2 = document.createElement("H2"); - - h2.appendChild(document.createTextNode(this.titles[i])); - this.headers[i].appendChild(h2); - } - - function deselectAll() { - for (var i = 0; i < this.tabs.length; i++) { - changeElementClass(this.tabs[i], "tab deselected"); - changeElementClass(this.headers[i], "deselected"); - - while (this.headers[i].firstChild) { - this.headers[i].removeChild(this.headers[i].firstChild); - } - - var a = document.createElement("A"); - - a.setAttribute("id", "ltab" + i); - a.setAttribute("href", "#tab" + i); - a.onclick = switchTab; - a.appendChild(document.createTextNode(this.titles[i])); - - this.headers[i].appendChild(a); - } - } - - function findTabs(container) { - return findChildElements(container, "DIV", "tab"); - } - - function findHeaders(container) { - var owner = findChildElements(container, "UL", "tabLinks"); - return findChildElements(owner[0], "LI", null); - } - - function findTitles(tabs) { - var titles = []; - - for (var i = 0; i < tabs.length; i++) { - var tab = tabs[i]; - var header = findChildElements(tab, "H2", null)[0]; - - header.parentNode.removeChild(header); - - if (header.innerText) { - titles.push(header.innerText); - } else { - titles.push(header.textContent); - } - } - - return titles; - } - - function findChildElements(container, name, targetClass) { - var elements = []; - var children = container.childNodes; - - for (var i = 0; i < children.length; i++) { - var child = children.item(i); - - if (child.nodeType === 1 && child.nodeName === name) { - if (targetClass && child.className.indexOf(targetClass) < 0) { - continue; - } - - elements.push(child); - } - } - - return elements; - } - - // Entry point. - - window.onload = function() { - initTabs(); - initControls(); - }; -} (window, window.document)); \ No newline at end of file diff --git a/java/lib/build/reports/tests/test/packages/javabushka.html b/java/lib/build/reports/tests/test/packages/javabushka.html deleted file mode 100644 index c50fe5999a..0000000000 --- a/java/lib/build/reports/tests/test/packages/javabushka.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - -Test results - Package javabushka - - - - - -
-

Package javabushka

- -
- - - - - -
-
- - - - - - - -
-
-
1
-

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
0.002s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Classes

- - - - - - - - - - - - - - - - - - - -
ClassTestsFailuresIgnoredDurationSuccess rate
-LibraryTest -1000.002s100%
-
-
- -
- - diff --git a/java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml b/java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml deleted file mode 100644 index d06e1fe97d..0000000000 --- a/java/lib/build/test-results/test/TEST-javabushka.LibraryTest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/java/lib/build/test-results/test/binary/output.bin b/java/lib/build/test-results/test/binary/output.bin deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/java/lib/build/test-results/test/binary/output.bin.idx b/java/lib/build/test-results/test/binary/output.bin.idx deleted file mode 100644 index f76dd238ade08917e6712764a16a22005a50573d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1 IcmZPo000310RR91 diff --git a/java/lib/build/test-results/test/binary/results.bin b/java/lib/build/test-results/test/binary/results.bin deleted file mode 100644 index f5767307578ed46df57c9e327fa93b66a3c43c2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmZQ(WSX9pSeBSnTAY!csOOWJRFqg$8IoFDf+*GIr-_(+f Z{FI>7lG38Q;*g@!RJ@W5Oi)vb82})PFZTcd diff --git a/java/lib/build/tmp/compileJava/previous-compilation-data.bin b/java/lib/build/tmp/compileJava/previous-compilation-data.bin deleted file mode 100644 index 28d5565cd61893d10507bce77ba30fa1dca615b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2859 zcmb7GYgAKL7CzgcP&M=@SQXS#MNu(FO9ez!27?hagg1(>dWkp5C6{~S%?%J=hzTGs zUkE5nt*upjfcU6FtAZ9P)Uj%*S_kK4N2g=!YpF|})-LCScD3_s*2=wW<*ajZ_TJz3 z?S1w=fV4pRpt39`hsm^AO=d=c3OrCTmnkul9a~=n-d?sS;Z?%Rt4~{o%iRdANB{Hu zHVN)a`Vmj!MP5Try_nq}6&pp-$g=}bF`Z_M!a(HUL?x=QFnTj%WL2DC5b>t8#*~nV zK8>kQBDUvDK4tb!dp#MGL1ZxTA--e?c>_5`$v6~k)tgwonUxF@lg;Lel6k-|RA`eq zemE+YSc@pheyDJzjo}sksHk^70+k7_1M1BIY zeMNcSE#!K_#te6&&2_gdkJXERhY?w(v%Us72*%R7ISHYR?y zPL~j!n3zP8NeU`*)mUCCD*IhSMH(t)TuGH#$(oKF61#ws5Cj{~FGL&c8K{^wFg9Ms zyOsa>wlVNYw??Qx^OwCHs~3^Q#B&M#+p1?QtP-P6-g==sYW~uvucW~#mHn0`FVnu8 z9JL&6WMzgE*cA*aq&WFZDz+(t^Re(eHPuBHaJUX*72I` zWFbx@7P6A~N~kEuRS)+wLWw97_Z2zguLmcnzx!pr4&J2F{n2}LJ7=^ zDh0G5qzsTFGfPnps9c~&-9q`$g2fGON4c#gW#iOv+vioK7g{SIVH4;!!<;RUx)tW~ z3WXwf8#NVJ9DUV3mgpBpbu66wXP+&(ODaLT9RjN$sTyKb8KH_AKu*po1WZ<-I}o`JNp>c2bJ9fXXZqm)#54s>F}4UB7vzId1c<@fV_A8=D?k2MK?K6xDlx zifx%Pt=nA`wgHD6x)gi2O5N7;_}2C<6~{B)hnTz!JaXVs$Bi$mFSLF*dUef}cRO|i z`GCgwkjj|N$h29!*tGh9kso)=*-`V487*n+_5k^aZrDpTlUM`K>SZPVIa^iL6Eo;l zW5y55*S3VU?t|ERh^vDAG_Y_0PzlG<=BhW@@%@q=&IV0p(7MST19p~g4Lt}8Rvn^r zO{{=J2O1xp-(1JF4XqkEZjI-xnRtK8oXhh!kG~uF)T`;uxOg*wW^xV__ zt;C(_e|shPx17Fjo6=x@k2~B1qSu zoAIoz84_AxLDVM{JIk0qrE=Nmk;c#MS+fmqra1@8+WS96h?h@6;%SJEIzv-tlSPT; zS;oq?QX^61@xAL0d`lk8UZg8KRDT4Y+t>!_XCX~IM-wNQ1u<9njMfXoV`;-QA^h*N z^2D}@|Ne18?8|l_9Y8*(0EeBYj`gCTw@DJ!Ly0{M?ak`Zd;8}!92!26>qMQ9)&=AX zAQyo6{s~a2wYMZV!RV(Lfq(Q(+BME&&U3G!+h>|%CTlJN`I36QMA>9goJy<+o_YuA zUev_iw3W1v*DtvYR5q9qT>ocheu)Ti&h#_~HR;@aB zqU=~f_4E87ZW~Vr1T&F_{#F6KI{ZImOWk&^ciSS% zZHqh#-9ZZp=%__baN9wV`z96cn^d~+QHks5=;?$Cpb7KNqA7d-7vTHopzsc+3kO{b zl+jGLnH+N;R}^!YC^G7o0} diff --git a/java/lib/build/tmp/compileTestJava/previous-compilation-data.bin b/java/lib/build/tmp/compileTestJava/previous-compilation-data.bin deleted file mode 100644 index 08a1bf7d5fb3fc7dd6ce4bb2f2ad4410e30da8d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3207 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 diff --git a/java/lib/build/tmp/jar/MANIFEST.MF b/java/lib/build/tmp/jar/MANIFEST.MF deleted file mode 100644 index 58630c02ef..0000000000 --- a/java/lib/build/tmp/jar/MANIFEST.MF +++ /dev/null @@ -1,2 +0,0 @@ -Manifest-Version: 1.0 - From d9b17b9e57e95603468ead5c94c39f9de96cb052 Mon Sep 17 00:00:00 2001 From: Jonathan Louie Date: Wed, 13 Sep 2023 16:04:03 -0700 Subject: [PATCH 09/14] Randomize commands in Java benchmarks --- .../java/javabushka/client/Benchmarking.java | 99 +++++++++++++------ .../java/javabushka/client/ChosenAction.java | 7 ++ .../client/jedis/JedisClientIT.java | 33 ++----- .../client/lettuce/LettuceClientIT.java | 34 ++----- 4 files changed, 93 insertions(+), 80 deletions(-) create mode 100644 java/benchmarks/src/test/java/javabushka/client/ChosenAction.java diff --git a/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java b/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java index cbae7e1e5a..ff5c6878eb 100644 --- a/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java +++ b/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java @@ -1,14 +1,29 @@ package javabushka.client; import javabushka.client.LatencyResults; +import javabushka.client.ChosenAction; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; import java.util.stream.Collectors; import java.util.Collections; public class Benchmarking { + static final double PROB_GET = 0.8; + static final double PROB_GET_EXISTING_KEY = 0.8; static final int SIZE_GET_KEYSPACE = 3750000; static final int SIZE_SET_KEYSPACE = 3000000; + private static ChosenAction chooseAction() { + if (Math.random() > PROB_GET) { + return ChosenAction.SET; + } + if (Math.random() > PROB_GET_EXISTING_KEY) { + return ChosenAction.GET_NON_EXISTING; + } + return ChosenAction.GET_EXISTING; + } + public static String generateKeyGet() { int range = SIZE_GET_KEYSPACE - SIZE_SET_KEYSPACE; return Math.floor(Math.random() * range + SIZE_SET_KEYSPACE + 1) + ""; @@ -22,17 +37,29 @@ public interface Operation { void go(); } - public static ArrayList getLatencies(int iterations, Operation op) { - ArrayList latencies = new ArrayList(); + public static Map> getLatencies(int iterations, Map actions) { + Map> latencies = new HashMap>(); + for (ChosenAction action : actions.keySet()) { + latencies.put(action, new ArrayList()); + } + for (int i = 0; i actionLatencies = latencies.get(action); + addLatency(op, actionLatencies); } + return latencies; } + private static void addLatency(Operation op, ArrayList latencies) { + long before = System.nanoTime(); + op.go(); + long after = System.nanoTime(); + latencies.add(after - before); + } + // Assumption: latencies is sorted in ascending order private static Long percentile(ArrayList latencies, int percentile) { return latencies.get((int) Math.ceil((percentile / 100.0) * latencies.size())); @@ -45,30 +72,42 @@ private static double stdDeviation(ArrayList latencies, Double avgLatency) return Math.sqrt(stdDeviation / latencies.size()); } - // This has the side-effect of sorting the latencies ArrayList - public static LatencyResults calculateResults(ArrayList latencies) { - Double avgLatency = latencies - .stream() - .collect(Collectors.summingLong(Long::longValue)) / Double.valueOf(latencies.size()); - - Collections.sort(latencies); - return new LatencyResults( - avgLatency, - percentile(latencies, 50), - percentile(latencies, 90), - percentile(latencies, 99), - stdDeviation(latencies, avgLatency) - ); - } + // This has the side-effect of sorting each latencies ArrayList + public static Map calculateResults(Map> actionLatencies) { + Map results = new HashMap(); + + for (Map.Entry> entry : actionLatencies.entrySet()) { + ChosenAction action = entry.getKey(); + ArrayList latencies = entry.getValue(); - public static void printResults(String operation, LatencyResults results) { - System.out.println( - "Avg. time in ms per " + operation + ": " + results.avgLatency / 1000000.0 - ); - System.out.println(operation + " p50 latency in ms: " + results.p50Latency / 1000000.0); - System.out.println(operation + " p90 latency in ms: " + results.p90Latency / 1000000.0); - System.out.println(operation + " p99 latency in ms: " + results.p99Latency / 1000000.0); - System.out.println(operation + " std dev in ms: " + results.stdDeviation / 1000000.0); + Double avgLatency = latencies + .stream() + .collect(Collectors.summingLong(Long::longValue)) / Double.valueOf(latencies.size()); + + Collections.sort(latencies); + results.put(action, new LatencyResults( + avgLatency, + percentile(latencies, 50), + percentile(latencies, 90), + percentile(latencies, 99), + stdDeviation(latencies, avgLatency) + )); + } + + return results; } -} \ No newline at end of file + public static void printResults(Map resultsMap) { + for (Map.Entry entry : resultsMap.entrySet()) { + ChosenAction action = entry.getKey(); + LatencyResults results = entry.getValue(); + System.out.println( + "Avg. time in ms per " + action + ": " + results.avgLatency / 1000000.0 + ); + System.out.println(action + " p50 latency in ms: " + results.p50Latency / 1000000.0); + System.out.println(action + " p90 latency in ms: " + results.p90Latency / 1000000.0); + System.out.println(action + " p99 latency in ms: " + results.p99Latency / 1000000.0); + System.out.println(action + " std dev in ms: " + results.stdDeviation / 1000000.0); + } + } +} diff --git a/java/benchmarks/src/test/java/javabushka/client/ChosenAction.java b/java/benchmarks/src/test/java/javabushka/client/ChosenAction.java new file mode 100644 index 0000000000..6cecf9d478 --- /dev/null +++ b/java/benchmarks/src/test/java/javabushka/client/ChosenAction.java @@ -0,0 +1,7 @@ +package javabushka.client; + +public enum ChosenAction { + GET_NON_EXISTING, + GET_EXISTING, + SET +} diff --git a/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java b/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java index c4396ce08a..07b0e382dc 100644 --- a/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java +++ b/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java @@ -7,8 +7,12 @@ import static org.junit.Assert.assertTrue; import javabushka.client.Benchmarking; +import javabushka.client.Benchmarking.Operation; +import javabushka.client.ChosenAction; import org.junit.Before; import org.junit.Test; +import java.util.HashMap; +import java.util.Map; public class JedisClientIT { @@ -43,31 +47,14 @@ public void initializeJedisClient() { int iterations = 100000; String value = "my-value"; + Map actions = new HashMap(); + actions.put(ChosenAction.GET_EXISTING, () -> jedisClient.get(Benchmarking.generateKeySet())); + actions.put(ChosenAction.GET_NON_EXISTING, () -> jedisClient.get(Benchmarking.generateKeyGet())); + actions.put(ChosenAction.SET, () -> jedisClient.set(Benchmarking.generateKeySet(), value)); + Benchmarking.printResults( - "SET", - Benchmarking.calculateResults( - Benchmarking.getLatencies( - iterations, - () -> jedisClient.set(Benchmarking.generateKeySet(), value) - ) - ) - ); - Benchmarking.printResults( - "GET", - Benchmarking.calculateResults( - Benchmarking.getLatencies( - iterations, - () -> jedisClient.get(Benchmarking.generateKeySet()) - ) - ) - ); - Benchmarking.printResults( - "GET non-existing", Benchmarking.calculateResults( - Benchmarking.getLatencies( - iterations, - () -> jedisClient.get(Benchmarking.generateKeyGet()) - ) + Benchmarking.getLatencies(iterations, actions) ) ); } diff --git a/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java b/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java index 6956d40d43..b90f327b55 100644 --- a/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java +++ b/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java @@ -6,9 +6,12 @@ import static org.junit.Assert.assertEquals; import javabushka.client.Benchmarking; +import javabushka.client.Benchmarking.Operation; +import javabushka.client.ChosenAction; import org.junit.After; import org.junit.Before; import org.junit.Test; +import java.util.HashMap; public class LettuceClientIT { @@ -29,32 +32,9 @@ public void closeConnection() { int iterations = 100000; String value = "my-value"; - Benchmarking.printResults( - "SET", - Benchmarking.calculateResults( - Benchmarking.getLatencies( - iterations, - () -> lettuceClient.set(Benchmarking.generateKeySet(), value) - ) - ) - ); - Benchmarking.printResults( - "GET", - Benchmarking.calculateResults( - Benchmarking.getLatencies( - iterations, - () -> lettuceClient.get(Benchmarking.generateKeySet()) - ) - ) - ); - Benchmarking.printResults( - "GET non-existing", - Benchmarking.calculateResults( - Benchmarking.getLatencies( - iterations, - () -> lettuceClient.get(Benchmarking.generateKeyGet()) - ) - ) - ); + HashMap actions = new HashMap(); + actions.put(ChosenAction.GET_EXISTING, () -> lettuceClient.get(Benchmarking.generateKeySet())); + actions.put(ChosenAction.GET_NON_EXISTING, () -> lettuceClient.get(Benchmarking.generateKeyGet())); + actions.put(ChosenAction.SET, () -> lettuceClient.set(Benchmarking.generateKeySet(), value)); } } From 0decef6d86325e435707d8c21baa7221d34a75b9 Mon Sep 17 00:00:00 2001 From: Jonathan Louie Date: Thu, 14 Sep 2023 16:09:11 -0700 Subject: [PATCH 10/14] rename chooseAction to randomAction --- .../src/test/java/javabushka/client/Benchmarking.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java b/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java index ff5c6878eb..84723d5178 100644 --- a/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java +++ b/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java @@ -14,7 +14,7 @@ public class Benchmarking { static final int SIZE_GET_KEYSPACE = 3750000; static final int SIZE_SET_KEYSPACE = 3000000; - private static ChosenAction chooseAction() { + private static ChosenAction randomAction() { if (Math.random() > PROB_GET) { return ChosenAction.SET; } @@ -44,7 +44,7 @@ public static Map> getLatencies(int iterations, Ma } for (int i = 0; i actionLatencies = latencies.get(action); addLatency(op, actionLatencies); From e80dcfc8317d88fc5b6b2f21069666b12c625a4c Mon Sep 17 00:00:00 2001 From: Andrew Carbonetto Date: Tue, 19 Sep 2023 18:24:20 -0700 Subject: [PATCH 11/14] Add a Java benchmarking app (#7) * Add a java app to run benchmarks --------- Signed-off-by: acarbonetto --- java/README.md | 45 +++- java/benchmarks/build.gradle | 13 +- .../javabushka/client/BenchmarkingApp.java | 252 ++++++++++++++++++ .../javabushka/client/jedis/JedisClient.java | 11 +- .../client/lettuce/LettuceAsyncClient.java | 52 ++++ .../client/utils}/Benchmarking.java | 33 ++- .../client/utils}/ChosenAction.java | 2 +- .../client/utils}/LatencyResults.java | 2 +- .../client/jedis/JedisClientIT.java | 9 +- .../client/lettuce/LettuceAsyncClientIT.java | 76 ++++++ .../client/lettuce/LettuceClientIT.java | 9 +- 11 files changed, 476 insertions(+), 28 deletions(-) create mode 100644 java/benchmarks/src/main/java/javabushka/client/BenchmarkingApp.java create mode 100644 java/benchmarks/src/main/java/javabushka/client/lettuce/LettuceAsyncClient.java rename java/benchmarks/src/{test/java/javabushka/client => main/java/javabushka/client/utils}/Benchmarking.java (76%) rename java/benchmarks/src/{test/java/javabushka/client => main/java/javabushka/client/utils}/ChosenAction.java (70%) rename java/benchmarks/src/{test/java/javabushka/client => main/java/javabushka/client/utils}/LatencyResults.java (94%) create mode 100644 java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceAsyncClientIT.java diff --git a/java/README.md b/java/README.md index 5666e124db..a22fb4cf24 100644 --- a/java/README.md +++ b/java/README.md @@ -1,5 +1,40 @@ -TODO: --[] create benchmarks folder --[] add code for jedis test --[] add gradle task to run jedis tests --[] \ No newline at end of file +# Summary - Java Wrapper + +This module contains a Java-client wrapper that connects to the `Babushka`-rust-client. The rust client connects to +redis, while this wrapper provides Java-language binding. The objective of this wrapper is to provide a thin-wrapper +language api to enhance performance and limit cpu cycles at scale. + +## Organization + +The Java client (javabushka) contains the following parts: + +1. A Java client (lib folder): wrapper to rust-client +2. An examples script: to sanity test javabushka and similar java-clients against a redis host +3. A benchmark app: to performance benchmark test javabushka and similar java-clients against a redis host + +## Building + +You can assemble the Java clients benchmarks by compiling using `./gradlew build`. + +## Benchmarks + +You can run benchmarks using `./gradlew run`. You can set arguments using the args flag like: + +```shell +./gradle run --args="--clients lettuce" +``` + +The following arguments are accepted: +* `configuration`: Release or Debug configuration +* `resultsFile`: the results output file +* `concurrentTasks`: Number of concurrent tasks +* `clients`: one of: all|jedis|lettuce|babushka +* `clientCount`: Client count +* `host`: redis server host url +* `port`: redis server port number +* `tls`: redis TLS configured + +### Troubleshooting + +* If you're unable to connect to redis (such as timeout), check your port or the TLS flag +* Only server-side certificates are supported by the TLS configured redis diff --git a/java/benchmarks/build.gradle b/java/benchmarks/build.gradle index 20a41422de..3b57a0575f 100644 --- a/java/benchmarks/build.gradle +++ b/java/benchmarks/build.gradle @@ -1,6 +1,6 @@ plugins { - // Apply the java-library plugin for API and implementation separation. - id 'java-library' + // Apply the application plugin to add support for building a CLI application in Java. + id 'application' } repositories { @@ -12,13 +12,11 @@ dependencies { // Use JUnit test framework. testImplementation 'junit:junit:4.13.2' - // This dependency is exported to consumers, that is to say found on their compile classpath. - api 'org.apache.commons:commons-math3:3.6.1' - // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'com.google.guava:guava:32.1.1-jre' implementation 'redis.clients:jedis:4.4.3' implementation 'io.lettuce:lettuce-core:6.2.6.RELEASE' + implementation 'commons-cli:commons-cli:1.5.0' } // Apply a specific Java toolchain to ease working on different environments. @@ -28,6 +26,11 @@ java { } } +application { + // Define the main class for the application. + mainClass = 'javabushka.client.BenchmarkingApp' +} + tasks.withType(Test) { testLogging { exceptionFormat "full" diff --git a/java/benchmarks/src/main/java/javabushka/client/BenchmarkingApp.java b/java/benchmarks/src/main/java/javabushka/client/BenchmarkingApp.java new file mode 100644 index 0000000000..d17e127727 --- /dev/null +++ b/java/benchmarks/src/main/java/javabushka/client/BenchmarkingApp.java @@ -0,0 +1,252 @@ +package javabushka.client; + +import java.io.FileWriter; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; +import javabushka.client.jedis.JedisClient; +import javabushka.client.lettuce.LettuceAsyncClient; +import javabushka.client.utils.Benchmarking; +import javabushka.client.utils.ChosenAction; +import javabushka.client.utils.LatencyResults; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; + +/** + * Benchmarking app for reporting performance of various redis-rs Java-clients + */ +public class BenchmarkingApp { + + // main application entrypoint + public static void main(String[] args) { + + // create the parser + CommandLineParser parser = new DefaultParser(); + Options options = getOptions(); + RunConfiguration runConfiguration = new RunConfiguration(); + try { + // parse the command line arguments + CommandLine line = parser.parse(options, args); + runConfiguration = verifyOptions(line); + } + catch (ParseException exp) { + // oops, something went wrong + System.err.println("Parsing failed. Reason: " + exp.getMessage()); + } + + try { + switch (runConfiguration.clients) { + case ALL: + testJedisClientResourceSetGet(runConfiguration); + testLettuceClientResourceSetGet(runConfiguration); + System.out.println("Babushka not yet configured"); + break; + case JEDIS: + testJedisClientResourceSetGet(runConfiguration); + break; + case LETTUCE: + testLettuceClientResourceSetGet(runConfiguration); + break; + case BABUSHKA: + System.out.println("Babushka not yet configured"); + break; + } + } catch (IOException ioException) { + System.out.println("Error writing to results file"); + ioException.printStackTrace(); + } + + if (runConfiguration.resultsFile.isPresent()) { + try { + runConfiguration.resultsFile.get().close(); + } catch (IOException ioException) { + System.out.println("Error closing results file"); + } + } + + } + + private static Options getOptions() { + // create the Options + Options options = new Options(); + + options.addOption("c", "configuration", true, "Configuration flag [Release]"); + options.addOption("f", "resultsFile", true, "Result filepath []"); + options.addOption("C", "concurrentTasks", true, "Number of concurrent tasks [1 10 100]"); + options.addOption("l", "clients", true, "one of: all|jedis|lettuce|babushka [all]"); + options.addOption("h", "host", true, "host url [localhost]"); + options.addOption("p", "port", true, "port number [port]"); + options.addOption("n", "clientCount", true, "Client count [1]"); + options.addOption("t", "tls", false, "TLS [true]"); + + return options; + } + + private static RunConfiguration verifyOptions(CommandLine line) throws ParseException { + RunConfiguration runConfiguration = new RunConfiguration(); + if (line.hasOption("configuration")) { + String configuration = line.getOptionValue("configuration"); + if (configuration.equalsIgnoreCase("Release") || configuration.equalsIgnoreCase("Debug")) { + runConfiguration.configuration = configuration; + } else { + throw new ParseException("Invalid run configuration (Release|Debug)"); + } + } + + if (line.hasOption("resultsFile")) { + try { + runConfiguration.resultsFile = Optional.of(new FileWriter(line.getOptionValue("resultsFile"))); + } catch (IOException e) { + throw new ParseException("Unable to write to resultsFile."); + } + } + + if (line.hasOption("concurrentTasks")) { + String concurrentTasks = line.getOptionValue("concurrentTasks"); + + // remove optional square brackets + if (concurrentTasks.startsWith("[") && concurrentTasks.endsWith("]")) { + concurrentTasks = concurrentTasks.substring(1, concurrentTasks.length() - 1); + } + // check if it's the correct format + if (!concurrentTasks.matches("\\d+(\\s+\\d+)?")) { + throw new ParseException("Invalid concurrentTasks"); + } + // split the string into a list of integers + runConfiguration.concurrentTasks = + Arrays.stream(concurrentTasks.split("\\s+")) + .map(Integer::parseInt) + .collect(Collectors.toList()); + } + + if (line.hasOption("clients")) { + String clients = line.getOptionValue("clients"); + if (ClientName.ALL.isEqual(clients)) { + runConfiguration.clients = ClientName.ALL; + } else if (ClientName.JEDIS.isEqual(clients)) { + runConfiguration.clients = ClientName.JEDIS; + } else if (ClientName.LETTUCE.isEqual(clients)) { + runConfiguration.clients = ClientName.LETTUCE; + } else if (ClientName.BABUSHKA.isEqual(clients)) { + runConfiguration.clients = ClientName.BABUSHKA; + } else { + throw new ParseException("Invalid clients option: all|jedis|lettuce|babushka"); + } + } + + if (line.hasOption("host")) { + runConfiguration.host = line.getOptionValue("host"); + } + + if (line.hasOption("clientCount")) { + runConfiguration.clientCount = Integer.parseInt(line.getOptionValue("clientCount")); + } + + if (line.hasOption("tls")) { + runConfiguration.tls = Boolean.parseBoolean(line.getOptionValue("tls")); + } + + return runConfiguration; + } + + private static void testJedisClientResourceSetGet(RunConfiguration runConfiguration) throws IOException { + JedisClient jedisClient = new JedisClient(); + jedisClient.connectToRedis(runConfiguration.host, runConfiguration.port); + + int iterations = 100000; + String value = "my-value"; + + if (runConfiguration.resultsFile.isPresent()) { + runConfiguration.resultsFile.get().write("JEDIS client Benchmarking: "); + } else { + System.out.println("JEDIS client Benchmarking: "); + } + + Map actions = new HashMap<>(); + actions.put(ChosenAction.GET_EXISTING, () -> jedisClient.get(Benchmarking.generateKeySet())); + actions.put(ChosenAction.GET_NON_EXISTING, () -> jedisClient.get(Benchmarking.generateKeyGet())); + actions.put(ChosenAction.SET, () -> jedisClient.set(Benchmarking.generateKeySet(), value)); + + Benchmarking.printResults( + Benchmarking.calculateResults(Benchmarking.getLatencies(iterations, actions)), + runConfiguration.resultsFile + ); + } + + private static LettuceAsyncClient initializeLettuceClient() { + LettuceAsyncClient lettuceClient = new LettuceAsyncClient(); + lettuceClient.connectToRedis(); + return lettuceClient; + } + + private static void testLettuceClientResourceSetGet(RunConfiguration runConfiguration) throws IOException { + LettuceAsyncClient lettuceClient = initializeLettuceClient(); + + int iterations = 100000; + String value = "my-value"; + + if (runConfiguration.resultsFile.isPresent()) { + runConfiguration.resultsFile.get().write("LETTUCE client Benchmarking: "); + } else { + System.out.println("LETTUCE client Benchmarking: "); + } + + HashMap actions = new HashMap<>(); + actions.put(ChosenAction.GET_EXISTING, () -> lettuceClient.get(Benchmarking.generateKeySet())); + actions.put(ChosenAction.GET_NON_EXISTING, () -> lettuceClient.get(Benchmarking.generateKeyGet())); + actions.put(ChosenAction.SET, () -> lettuceClient.set(Benchmarking.generateKeySet(), value)); + + Benchmarking.printResults( + Benchmarking.calculateResults(Benchmarking.getLatencies(iterations, actions)), + runConfiguration.resultsFile + ); + } + + public enum ClientName { + JEDIS("Jedis"), + LETTUCE("Lettuce"), + BABUSHKA("Babushka"), + ALL("All"); + + private String name; + private ClientName(String name) { + this.name = name; + } + + @Override + public String toString() { return this.name; } + + public boolean isEqual(String other) { + return this.toString().equalsIgnoreCase(other); + } + } + + public static class RunConfiguration { + public String configuration; + public Optional resultsFile; + public List concurrentTasks; + public ClientName clients; + public String host; + public int port; + public int clientCount; + public boolean tls; + + public RunConfiguration() { + configuration = "Release"; + resultsFile = Optional.empty(); + concurrentTasks = List.of(1, 10, 100); + clients = ClientName.ALL; + host = "localhost"; + port = 6379; + clientCount = 1; + tls = true; + } + } +} diff --git a/java/benchmarks/src/main/java/javabushka/client/jedis/JedisClient.java b/java/benchmarks/src/main/java/javabushka/client/jedis/JedisClient.java index 225c4fc440..224817740f 100644 --- a/java/benchmarks/src/main/java/javabushka/client/jedis/JedisClient.java +++ b/java/benchmarks/src/main/java/javabushka/client/jedis/JedisClient.java @@ -8,16 +8,23 @@ public class JedisClient { + public final static String DEFAULT_HOST = "localhost"; + public final static int DEFAULT_PORT = 6379; + Jedis jedisResource; public boolean someLibraryMethod() { return true; } - public void connectToRedis() { - JedisPool pool = new JedisPool("localhost", 6379); + public void connectToRedis(String host, int port) { + JedisPool pool = new JedisPool(host, port); jedisResource = pool.getResource(); } + public void connectToRedis() { + connectToRedis(DEFAULT_HOST, DEFAULT_PORT); + } + public String info() { return jedisResource.info(); } diff --git a/java/benchmarks/src/main/java/javabushka/client/lettuce/LettuceAsyncClient.java b/java/benchmarks/src/main/java/javabushka/client/lettuce/LettuceAsyncClient.java new file mode 100644 index 0000000000..74cb2871d7 --- /dev/null +++ b/java/benchmarks/src/main/java/javabushka/client/lettuce/LettuceAsyncClient.java @@ -0,0 +1,52 @@ +/* + * This Java source file was generated by the Gradle 'init' task. + */ +package javabushka.client.lettuce; + +import io.lettuce.core.RedisClient; +import io.lettuce.core.RedisFuture; +import io.lettuce.core.api.StatefulRedisConnection; +import io.lettuce.core.api.async.RedisAsyncCommands; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +public class LettuceAsyncClient { + + RedisClient client; + RedisAsyncCommands lettuceSync; + StatefulRedisConnection connection; + + public final long MAX_TIMEOUT_MS = 1000; + + public void connectToRedis() { + client = RedisClient.create("redis://localhost:6379"); + connection = client.connect(); + lettuceSync = connection.async(); + } + + public RedisFuture set(String key, String value) { + RedisFuture future = lettuceSync.set(key, value); + return future; + } + + public RedisFuture get(String key) { + RedisFuture future = lettuceSync.get(key); + return future; + } + + public Object waitForResult(RedisFuture future) + throws ExecutionException, InterruptedException, TimeoutException { + return this.waitForResult(future, MAX_TIMEOUT_MS); + } + + public Object waitForResult(RedisFuture future, long timeoutMS) + throws ExecutionException, InterruptedException, TimeoutException { + return future.get(timeoutMS, TimeUnit.MILLISECONDS); + } + + public void closeConnection() { + connection.close(); + client.shutdown(); + } +} diff --git a/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java b/java/benchmarks/src/main/java/javabushka/client/utils/Benchmarking.java similarity index 76% rename from java/benchmarks/src/test/java/javabushka/client/Benchmarking.java rename to java/benchmarks/src/main/java/javabushka/client/utils/Benchmarking.java index 84723d5178..de8ee3b7f0 100644 --- a/java/benchmarks/src/test/java/javabushka/client/Benchmarking.java +++ b/java/benchmarks/src/main/java/javabushka/client/utils/Benchmarking.java @@ -1,10 +1,11 @@ -package javabushka.client; +package javabushka.client.utils; -import javabushka.client.LatencyResults; -import javabushka.client.ChosenAction; +import java.io.FileWriter; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import java.util.Collections; @@ -97,10 +98,36 @@ public static Map calculateResults(Map calculatedResults, Optional resultsFile) throws IOException { + if (resultsFile.isPresent()) { + printResults(calculatedResults, resultsFile.get()); + } else { + printResults(calculatedResults); + } + } + + public static void printResults(Map resultsMap, FileWriter resultsFile) throws IOException { + for (Map.Entry entry : resultsMap.entrySet()) { + ChosenAction action = entry.getKey(); + LatencyResults results = entry.getValue(); + + resultsFile.write( + "Avg. time in ms per " + action + ": " + results.avgLatency / 1000000.0); + resultsFile.write( + action + " p50 latency in ms: " + results.p50Latency / 1000000.0); + resultsFile.write( + action + " p90 latency in ms: " + results.p90Latency / 1000000.0); + resultsFile.write( + action + " p99 latency in ms: " + results.p99Latency / 1000000.0); + resultsFile.write(action + " std dev in ms: " + results.stdDeviation / 1000000.0); + } + } + public static void printResults(Map resultsMap) { for (Map.Entry entry : resultsMap.entrySet()) { ChosenAction action = entry.getKey(); LatencyResults results = entry.getValue(); + System.out.println( "Avg. time in ms per " + action + ": " + results.avgLatency / 1000000.0 ); diff --git a/java/benchmarks/src/test/java/javabushka/client/ChosenAction.java b/java/benchmarks/src/main/java/javabushka/client/utils/ChosenAction.java similarity index 70% rename from java/benchmarks/src/test/java/javabushka/client/ChosenAction.java rename to java/benchmarks/src/main/java/javabushka/client/utils/ChosenAction.java index 6cecf9d478..48f4367308 100644 --- a/java/benchmarks/src/test/java/javabushka/client/ChosenAction.java +++ b/java/benchmarks/src/main/java/javabushka/client/utils/ChosenAction.java @@ -1,4 +1,4 @@ -package javabushka.client; +package javabushka.client.utils; public enum ChosenAction { GET_NON_EXISTING, diff --git a/java/benchmarks/src/test/java/javabushka/client/LatencyResults.java b/java/benchmarks/src/main/java/javabushka/client/utils/LatencyResults.java similarity index 94% rename from java/benchmarks/src/test/java/javabushka/client/LatencyResults.java rename to java/benchmarks/src/main/java/javabushka/client/utils/LatencyResults.java index 320ec07f74..2cb4593746 100644 --- a/java/benchmarks/src/test/java/javabushka/client/LatencyResults.java +++ b/java/benchmarks/src/main/java/javabushka/client/utils/LatencyResults.java @@ -1,4 +1,4 @@ -package javabushka.client; +package javabushka.client.utils; // Raw timing results in nanoseconds public class LatencyResults { diff --git a/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java b/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java index 07b0e382dc..3ec7c59e79 100644 --- a/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java +++ b/java/benchmarks/src/test/java/javabushka/client/jedis/JedisClientIT.java @@ -3,12 +3,11 @@ */ package javabushka.client.jedis; -import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import javabushka.client.Benchmarking; -import javabushka.client.Benchmarking.Operation; -import javabushka.client.ChosenAction; +import javabushka.client.utils.ChosenAction; +import javabushka.client.utils.Benchmarking; + import org.junit.Before; import org.junit.Test; import java.util.HashMap; @@ -47,7 +46,7 @@ public void initializeJedisClient() { int iterations = 100000; String value = "my-value"; - Map actions = new HashMap(); + Map actions = new HashMap<>(); actions.put(ChosenAction.GET_EXISTING, () -> jedisClient.get(Benchmarking.generateKeySet())); actions.put(ChosenAction.GET_NON_EXISTING, () -> jedisClient.get(Benchmarking.generateKeyGet())); actions.put(ChosenAction.SET, () -> jedisClient.set(Benchmarking.generateKeySet(), value)); diff --git a/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceAsyncClientIT.java b/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceAsyncClientIT.java new file mode 100644 index 0000000000..c5b2277733 --- /dev/null +++ b/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceAsyncClientIT.java @@ -0,0 +1,76 @@ +/* + * This Java source file was generated by the Gradle 'init' task. + */ +package javabushka.client.lettuce; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import io.lettuce.core.RedisFuture; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class LettuceAsyncClientIT { + + LettuceAsyncClient lettuceClient; + + LettuceAsyncClient otherLettuceClient; + + @Before + public void initializeJedisClient() { + lettuceClient = new LettuceAsyncClient(); + lettuceClient.connectToRedis(); + + otherLettuceClient = new LettuceAsyncClient(); + otherLettuceClient.connectToRedis(); + } + + @After + public void closeConnection() { + lettuceClient.closeConnection(); + otherLettuceClient.closeConnection(); + } + + @Test public void testResourceSetGet() { + String key = "key1"; + String value = "my-value-1"; + + String otherKey = "key2"; + String otherValue = "my-value-2"; + + RedisFuture setResult = lettuceClient.set(key, value); + RedisFuture otherSetResult = otherLettuceClient.set(otherKey, otherValue); + + // and wait for both clients + try { + lettuceClient.waitForResult(setResult); + } catch (Exception e) { + assertTrue("Can SET redis result without Exception", false); + } + try { + otherLettuceClient.waitForResult(otherSetResult); + } catch (Exception e) { + assertTrue("Can SET other redis result without Exception", false); + } + + RedisFuture getResult = lettuceClient.get(key); + RedisFuture otherGetResult = otherLettuceClient.get(otherKey); + String result = "invalid"; + String otherResult = "invalid"; + try { + result = (String) lettuceClient.waitForResult(getResult); + } catch (Exception e) { + assertTrue("Can GET redis result without Exception", false); + } + + try { + otherResult = (String) otherLettuceClient.waitForResult(otherGetResult); + } catch (Exception e) { + assertTrue("Can GET other redis result without Exception", false); + } + + assertEquals(value, result); + assertEquals(otherValue, otherResult); + } +} diff --git a/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java b/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java index b90f327b55..8f72fa9744 100644 --- a/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java +++ b/java/benchmarks/src/test/java/javabushka/client/lettuce/LettuceClientIT.java @@ -3,11 +3,8 @@ */ package javabushka.client.lettuce; -import static org.junit.Assert.assertEquals; - -import javabushka.client.Benchmarking; -import javabushka.client.Benchmarking.Operation; -import javabushka.client.ChosenAction; +import javabushka.client.utils.ChosenAction; +import javabushka.client.utils.Benchmarking; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -32,7 +29,7 @@ public void closeConnection() { int iterations = 100000; String value = "my-value"; - HashMap actions = new HashMap(); + HashMap actions = new HashMap<>(); actions.put(ChosenAction.GET_EXISTING, () -> lettuceClient.get(Benchmarking.generateKeySet())); actions.put(ChosenAction.GET_NON_EXISTING, () -> lettuceClient.get(Benchmarking.generateKeyGet())); actions.put(ChosenAction.SET, () -> lettuceClient.set(Benchmarking.generateKeySet(), value)); From f84e3450c8de19dbc4fd32347b5d2aa2703caff9 Mon Sep 17 00:00:00 2001 From: acarbonetto Date: Mon, 25 Sep 2023 22:47:29 -0700 Subject: [PATCH 12/14] Add Readme and update install_and_test script to runJava Signed-off-by: acarbonetto --- benchmarks/install_and_test.sh | 10 ++++++++-- java/README.md | 2 +- java/benchmarks/java-2-2023-09-20-00-01-35.json | 1 + .../main/java/javabushka/client/BenchmarkingApp.java | 3 +-- 4 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 java/benchmarks/java-2-2023-09-20-00-01-35.json diff --git a/benchmarks/install_and_test.sh b/benchmarks/install_and_test.sh index ba44e3323a..ec725a4dd0 100755 --- a/benchmarks/install_and_test.sh +++ b/benchmarks/install_and_test.sh @@ -78,6 +78,14 @@ function runJavaBenchmark(){ cd ${BENCH_FOLDER}/java } +function runJavaBenchmark(){ + cd ${BENCH_FOLDER}/../java + echo "./gradlew run --args=\"--resultsFile=${BENCH_FOLDER}/$1 --clients $chosenClients --host $host --port $port\"" +# ./gradlew run --args="--resultsFile=../$1 --dataSize $2 --concurrentTasks $concurrentTasks --clients $chosenClients --host $host --port $port --clientCount $clientCount $tlsFlag" + ./gradlew run --args="--resultsFile=${BENCH_FOLDER}/$1 --clients $chosenClients --host $host --port $port" + cd ${BENCH_FOLDER}/java +} + function runRustBenchmark(){ rustConcurrentTasks= for value in $concurrentTasks @@ -280,8 +288,6 @@ do fi done - - flushDB if [ $writeResultsCSV == 1 ]; diff --git a/java/README.md b/java/README.md index a22fb4cf24..9f19374828 100644 --- a/java/README.md +++ b/java/README.md @@ -21,7 +21,7 @@ You can assemble the Java clients benchmarks by compiling using `./gradlew build You can run benchmarks using `./gradlew run`. You can set arguments using the args flag like: ```shell -./gradle run --args="--clients lettuce" +./gradlew run --args="--clients lettuce" ``` The following arguments are accepted: diff --git a/java/benchmarks/java-2-2023-09-20-00-01-35.json b/java/benchmarks/java-2-2023-09-20-00-01-35.json new file mode 100644 index 0000000000..aa38b95cf5 --- /dev/null +++ b/java/benchmarks/java-2-2023-09-20-00-01-35.json @@ -0,0 +1 @@ +LETTUCE client Benchmarking: Avg. time in ms per SET: 6.255784328470447E-4SET p50 latency in ms: 2.91E-4SET p90 latency in ms: 8.33E-4SET p99 latency in ms: 0.007625SET std dev in ms: 0.00217342597058043Avg. time in ms per GET_EXISTING: 6.61669922332828E-4GET_EXISTING p50 latency in ms: 2.5E-4GET_EXISTING p90 latency in ms: 6.25E-4GET_EXISTING p99 latency in ms: 0.007875GET_EXISTING std dev in ms: 0.021820083844063233Avg. time in ms per GET_NON_EXISTING: 5.872813472792927E-4GET_NON_EXISTING p50 latency in ms: 2.5E-4GET_NON_EXISTING p90 latency in ms: 7.08E-4GET_NON_EXISTING p99 latency in ms: 0.008291GET_NON_EXISTING std dev in ms: 0.0021284746375641456 \ No newline at end of file diff --git a/java/benchmarks/src/main/java/javabushka/client/BenchmarkingApp.java b/java/benchmarks/src/main/java/javabushka/client/BenchmarkingApp.java index d17e127727..e57e3e5bc2 100644 --- a/java/benchmarks/src/main/java/javabushka/client/BenchmarkingApp.java +++ b/java/benchmarks/src/main/java/javabushka/client/BenchmarkingApp.java @@ -12,7 +12,6 @@ import javabushka.client.lettuce.LettuceAsyncClient; import javabushka.client.utils.Benchmarking; import javabushka.client.utils.ChosenAction; -import javabushka.client.utils.LatencyResults; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.DefaultParser; @@ -82,7 +81,7 @@ private static Options getOptions() { options.addOption("C", "concurrentTasks", true, "Number of concurrent tasks [1 10 100]"); options.addOption("l", "clients", true, "one of: all|jedis|lettuce|babushka [all]"); options.addOption("h", "host", true, "host url [localhost]"); - options.addOption("p", "port", true, "port number [port]"); + options.addOption("p", "port", true, "port number [6379]"); options.addOption("n", "clientCount", true, "Client count [1]"); options.addOption("t", "tls", false, "TLS [true]"); From e09c4fe73bc7343daba49e977be9f2d89e15e185 Mon Sep 17 00:00:00 2001 From: acarbonetto Date: Wed, 20 Sep 2023 00:42:14 -0700 Subject: [PATCH 13/14] Add Readme and update install_and_test script to runJava Signed-off-by: acarbonetto --- java/benchmarks/java-2-2023-09-20-00-01-35.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 java/benchmarks/java-2-2023-09-20-00-01-35.json diff --git a/java/benchmarks/java-2-2023-09-20-00-01-35.json b/java/benchmarks/java-2-2023-09-20-00-01-35.json deleted file mode 100644 index aa38b95cf5..0000000000 --- a/java/benchmarks/java-2-2023-09-20-00-01-35.json +++ /dev/null @@ -1 +0,0 @@ -LETTUCE client Benchmarking: Avg. time in ms per SET: 6.255784328470447E-4SET p50 latency in ms: 2.91E-4SET p90 latency in ms: 8.33E-4SET p99 latency in ms: 0.007625SET std dev in ms: 0.00217342597058043Avg. time in ms per GET_EXISTING: 6.61669922332828E-4GET_EXISTING p50 latency in ms: 2.5E-4GET_EXISTING p90 latency in ms: 6.25E-4GET_EXISTING p99 latency in ms: 0.007875GET_EXISTING std dev in ms: 0.021820083844063233Avg. time in ms per GET_NON_EXISTING: 5.872813472792927E-4GET_NON_EXISTING p50 latency in ms: 2.5E-4GET_NON_EXISTING p90 latency in ms: 7.08E-4GET_NON_EXISTING p99 latency in ms: 0.008291GET_NON_EXISTING std dev in ms: 0.0021284746375641456 \ No newline at end of file From 2d096854588569ffc0e24ee56c32145ea98f8f87 Mon Sep 17 00:00:00 2001 From: acarbonetto Date: Thu, 21 Sep 2023 08:41:03 -0700 Subject: [PATCH 14/14] Clean TLS flag for jedis/lettuce clients Signed-off-by: acarbonetto --- benchmarks/.install_and_test.sh.swp | Bin 0 -> 16384 bytes .../java/javabushka/client/BenchmarkingApp.java | 14 +++++++------- .../javabushka/client/jedis/JedisClient.java | 7 ++++--- .../client/lettuce/LettuceAsyncClient.java | 16 +++++++++++++++- 4 files changed, 26 insertions(+), 11 deletions(-) create mode 100644 benchmarks/.install_and_test.sh.swp diff --git a/benchmarks/.install_and_test.sh.swp b/benchmarks/.install_and_test.sh.swp new file mode 100644 index 0000000000000000000000000000000000000000..f647eb2230f6dfd0e0126b6fc44457a632188bf8 GIT binary patch literal 16384 zcmeI3TZklA8OP7=YTU$JbT{Db!IPSf?qsd*o|#2WhEivGdbW4nxiCGuB<9jnU444G zGSyYRb?KeW?id1spol)i4N(;1ix35UkVKioT!CDHT!CDH zT!CDHT!CDHT!H^{1;X9|@-S@Juk7fn>%PqOU+U9P;pZ~(2h{U%b^T=~UOncQT!CDH zT!CDHT!CDHT!CDHT!CDHT!CDHT!CDH|A7K#i;#KLJIxOO@b~}0{{NL*2zeR&2z(!W z4?GQ?0$&232akY@zycou1~>-xfmd!OXVBfUkfrfKPzqpb8eiyTL*5TO7DN3C@EW zI0T+YA3g;h1DC)<;5ev)1;G1w3jBAUcH~;2?YXqZoZgX1dI3fgiVw3o9`#ueIbl#L zxMr8F`mAkl7pC;Wv|g}V%nj|f&HUnnf#;IA9GPX&cGxoV$P&9-E!(Ghj~3>u%avMV zty({QYQ5fATsgH+T_Y2;;xjX3gX(D8b6U)&WLSw&IMU)Nj%v3rYLoi#sg`lmYp_(Z?b-W;?1^GL4f!EY!r(nVe!!Z zXB-p?&GZh#yzgu-~BB8rm{H_@-CfgS^u-Mm%WtO%zxx zZTe=*Vds?K&^|CUF1%P`gx1-tLU^fNfJS00Ft;Lf9g$ni@&f;@VLjPZZR2`&RJW`) zTw2wH-L@#sa+T4bK_ao_YGZ}E@6}N1K8@Eprpus==(Tw2pubO|8%O)Q<%KQ_RhMEE zwe8KwH^mEOEuK-yE`F6oPffJcgPL_PShcws*-lGNl+jiXlUZ07-0?D5LC5rasaa8} z^Po|k1}mHRZX_zj&udAQ?Aq=2wrLnxFne@y%}j6CYw<-THjt}&ms(8`?suu~x2X_Y z4};y5h#?{hO^&{0)H157oG^TOr1HH=g}(f|r+j3$mZZLWCTF1}Gr^)Brrl}L(=!p4*b#y#1d?}eU4^%LTz8MO`W4~_bD zJMkBo@#^$hDe$e*AWI2NRHMU-LKKj$MLBi2$ZtUNSKwZ2xT7d4LxU&iCUY4UQ4DI{ zb~Ks0VJt{3G_sS@Q$j6q{H=;xjqtaj@!pyD-AT9?WoY87-27G}sduTN;XB$08+t5; zHl>k)$AgD*nI0>b%Se-U6c9zH%J>l=UO5IvncwkOhPoZXaCNT{?3teDNk?A%uO`0aYThI6ZN3nlx zU@yz}|AW8ZU&bE(dGKv;349!cU>#I}4i17pV2}O-@OAJx!1wbJSOiCb2KZk7FgOJM zg8loSzzg7K;1c*0SOV_?FJb@wd+B~Sy$!3V(yz&pX)!2$3SX!9}91YD;FK>o=U z$Q8&H$Q8&H$QAgH3Mg+&I9F=>N==`MBc!(NnhrcQ;UHxk_0&0F$qM=nc`S>=W9+dC z3D2&ODrWFtsLGP((3&P3a3(?Pm=h=t!;CE zPZY{;lzSU{s`4aoO}eSrM9cHQ1$9(9%q9{D*Y&78uv1wyD*aDcb`YvyoOVl#c@}<* zj*9ttYo`23Q9;rxg>`6R%9mE=(Tf+UjO7P+37dJ<2`^f??FkF{NzfiGOk_z~mWNDNuI1KXpOsZ2>bQxT(<%IIrk>#96^ z$y&?*N-|OdRw=@d@iVJ}Sd9mJcQRbcf{xvm8)O!k{Ah3ZnVlWpCssQinE0CxKUYwX zOX!lSYc?IGHqbn&ZU=+-$>Ea8V`gUwzYIQua|$vD&|Qz8SR``s5Ul2tG_zP6cfRs_gv?^J_whKsw`)u<(abDZ97{Gg7#8E;8|M?=P`r&WLsot Swwys4ekI8V^;W_e$-e;^ifLE? literal 0 HcmV?d00001 diff --git a/java/benchmarks/src/main/java/javabushka/client/BenchmarkingApp.java b/java/benchmarks/src/main/java/javabushka/client/BenchmarkingApp.java index e57e3e5bc2..1461f8f8d1 100644 --- a/java/benchmarks/src/main/java/javabushka/client/BenchmarkingApp.java +++ b/java/benchmarks/src/main/java/javabushka/client/BenchmarkingApp.java @@ -83,7 +83,7 @@ private static Options getOptions() { options.addOption("h", "host", true, "host url [localhost]"); options.addOption("p", "port", true, "port number [6379]"); options.addOption("n", "clientCount", true, "Client count [1]"); - options.addOption("t", "tls", false, "TLS [true]"); + options.addOption("t", "tls", false, "with TLS [false]"); return options; } @@ -148,16 +148,14 @@ private static RunConfiguration verifyOptions(CommandLine line) throws ParseExce runConfiguration.clientCount = Integer.parseInt(line.getOptionValue("clientCount")); } - if (line.hasOption("tls")) { - runConfiguration.tls = Boolean.parseBoolean(line.getOptionValue("tls")); - } + runConfiguration.tls = line.hasOption("tls"); return runConfiguration; } private static void testJedisClientResourceSetGet(RunConfiguration runConfiguration) throws IOException { JedisClient jedisClient = new JedisClient(); - jedisClient.connectToRedis(runConfiguration.host, runConfiguration.port); + jedisClient.connectToRedis(runConfiguration.host, runConfiguration.port, runConfiguration.tls); int iterations = 100000; String value = "my-value"; @@ -186,7 +184,9 @@ private static LettuceAsyncClient initializeLettuceClient() { } private static void testLettuceClientResourceSetGet(RunConfiguration runConfiguration) throws IOException { - LettuceAsyncClient lettuceClient = initializeLettuceClient(); + + LettuceAsyncClient lettuceClient = new LettuceAsyncClient(); + lettuceClient.connectToRedis(runConfiguration.host, runConfiguration.port, runConfiguration.tls); int iterations = 100000; String value = "my-value"; @@ -245,7 +245,7 @@ public RunConfiguration() { host = "localhost"; port = 6379; clientCount = 1; - tls = true; + tls = false; } } } diff --git a/java/benchmarks/src/main/java/javabushka/client/jedis/JedisClient.java b/java/benchmarks/src/main/java/javabushka/client/jedis/JedisClient.java index 224817740f..dd79e1143f 100644 --- a/java/benchmarks/src/main/java/javabushka/client/jedis/JedisClient.java +++ b/java/benchmarks/src/main/java/javabushka/client/jedis/JedisClient.java @@ -10,19 +10,20 @@ public class JedisClient { public final static String DEFAULT_HOST = "localhost"; public final static int DEFAULT_PORT = 6379; + public final static boolean DEFAULT_TLS = false; Jedis jedisResource; public boolean someLibraryMethod() { return true; } - public void connectToRedis(String host, int port) { - JedisPool pool = new JedisPool(host, port); + public void connectToRedis(String host, int port, boolean tls) { + JedisPool pool = new JedisPool(host, port, tls); jedisResource = pool.getResource(); } public void connectToRedis() { - connectToRedis(DEFAULT_HOST, DEFAULT_PORT); + connectToRedis(DEFAULT_HOST, DEFAULT_PORT, DEFAULT_TLS); } public String info() { diff --git a/java/benchmarks/src/main/java/javabushka/client/lettuce/LettuceAsyncClient.java b/java/benchmarks/src/main/java/javabushka/client/lettuce/LettuceAsyncClient.java index 74cb2871d7..2829ec9c7a 100644 --- a/java/benchmarks/src/main/java/javabushka/client/lettuce/LettuceAsyncClient.java +++ b/java/benchmarks/src/main/java/javabushka/client/lettuce/LettuceAsyncClient.java @@ -5,6 +5,7 @@ import io.lettuce.core.RedisClient; import io.lettuce.core.RedisFuture; +import io.lettuce.core.RedisURI; import io.lettuce.core.api.StatefulRedisConnection; import io.lettuce.core.api.async.RedisAsyncCommands; import java.util.concurrent.ExecutionException; @@ -13,6 +14,10 @@ public class LettuceAsyncClient { + public final static String DEFAULT_HOST = "localhost"; + public final static int DEFAULT_PORT = 6379; + public final static boolean DEFAULT_TLS = false; + RedisClient client; RedisAsyncCommands lettuceSync; StatefulRedisConnection connection; @@ -20,7 +25,16 @@ public class LettuceAsyncClient { public final long MAX_TIMEOUT_MS = 1000; public void connectToRedis() { - client = RedisClient.create("redis://localhost:6379"); + connectToRedis(DEFAULT_HOST, DEFAULT_PORT, DEFAULT_TLS); + } + + public void connectToRedis(String host, int port, boolean tls) { + RedisURI uri = RedisURI.builder() + .withHost(host) + .withPort(port) + .withSsl(tls) + .build(); + client = RedisClient.create("redis://" + host + ":" + port); connection = client.connect(); lettuceSync = connection.async(); }