From 8bf351a27d9a5fa2a377ee8e54827a53fdac41a5 Mon Sep 17 00:00:00 2001 From: Colin Cole Date: Wed, 26 Oct 2022 14:12:27 -0400 Subject: [PATCH 01/12] split py and java for ads --- .github/workflows/ads.yml | 4 ++-- docker-compose.yml | 11 ++++++++--- services/ads/java/Dockerfile | 4 ++++ services/ads/java/HelloWorld.class | Bin 0 -> 426 bytes services/ads/java/HelloWorld.java | 5 +++++ services/ads/{ => python}/.dockerignore | 0 services/ads/{ => python}/Dockerfile | 0 services/ads/{ => python}/ads.py | 0 services/ads/{ => python}/ads/1.jpg | Bin services/ads/{ => python}/ads/2.jpg | Bin services/ads/{ => python}/ads/3.jpg | Bin services/ads/{ => python}/bootstrap.py | 0 services/ads/{ => python}/build.sh | 0 services/ads/{ => python}/models.py | 0 services/ads/{ => python}/requirements.txt | 0 15 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 services/ads/java/Dockerfile create mode 100644 services/ads/java/HelloWorld.class create mode 100644 services/ads/java/HelloWorld.java rename services/ads/{ => python}/.dockerignore (100%) rename services/ads/{ => python}/Dockerfile (100%) rename services/ads/{ => python}/ads.py (100%) rename services/ads/{ => python}/ads/1.jpg (100%) rename services/ads/{ => python}/ads/2.jpg (100%) rename services/ads/{ => python}/ads/3.jpg (100%) rename services/ads/{ => python}/bootstrap.py (100%) rename services/ads/{ => python}/build.sh (100%) rename services/ads/{ => python}/models.py (100%) rename services/ads/{ => python}/requirements.txt (100%) diff --git a/.github/workflows/ads.yml b/.github/workflows/ads.yml index 3ba07900..274d762c 100644 --- a/.github/workflows/ads.yml +++ b/.github/workflows/ads.yml @@ -4,7 +4,7 @@ on: push: branches: [ main ] paths: - - services/ads/** + - services/ads/python/** workflow_dispatch: branches: [ main ] @@ -43,7 +43,7 @@ jobs: - name: Build and push uses: docker/build-push-action@v2 with: - context: ./services/ads + context: ./services/ads/python platforms: linux/amd64 push: true tags: ${{ secrets.PUBLIC_ECR_REGISTRY }}/storedog/ads:latest diff --git a/docker-compose.yml b/docker-compose.yml index 5b584fa4..43d1e40a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -74,10 +74,10 @@ services: - DD_TRACE_ANALYTICS_ENABLED=true - DD_PROFILING_ENABLED=true build: - context: ./services/ads + context: ./services/ads/python command: flask run --port=${ADS_PORT} --host=0.0.0.0 # If using any other port besides the default 9292, overriding the CMD is required volumes: - - "./services/ads:/app" + - ./services/ads/python:/app ports: - "${ADS_PORT}:${ADS_PORT}" networks: @@ -100,7 +100,7 @@ services: context: ./services/discounts command: flask run --port=${DISCOUNTS_PORT} --host=0.0.0.0 # If using any other port besides the default 8282, overriding the CMD is required volumes: - - "./services/discounts:/app" + - ./services/discounts:/app ports: - "${DISCOUNTS_PORT}:${DISCOUNTS_PORT}" - "22" @@ -123,6 +123,11 @@ services: - /sys/fs/cgroup/:/host/sys/fs/cgroup:ro networks: - storedog-net + ads-java: + build: + context: ./services/ads/java + networks: + - storedog-net volumes: redis: diff --git a/services/ads/java/Dockerfile b/services/ads/java/Dockerfile new file mode 100644 index 00000000..8e075e8a --- /dev/null +++ b/services/ads/java/Dockerfile @@ -0,0 +1,4 @@ +FROM alpine:latest +ADD HelloWorld.class HelloWorld.class +RUN apk --update add openjdk8-jre +ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "HelloWorld"] \ No newline at end of file diff --git a/services/ads/java/HelloWorld.class b/services/ads/java/HelloWorld.class new file mode 100644 index 0000000000000000000000000000000000000000..3ac65405a852f3e4b9cb071223acdf883038a77c GIT binary patch literal 426 zcmZvZ%SyvQ6o&uPq)ii}sjaQof-Zzq#5_Pn7lODbDn#nS)ubKDlw2exf{&#O1s6Vm z4<(+7iz0Lu=Q8vEABQvFKc8O!&e3;JgJHpRQAdN&nu})<#3G#qH_=>93PR&lrK&h1 z82(^vqY2xB<6;HwKY94_RLF!?S;?mEr~;`hxXo2sghehzGHhav;9ki%&W`u*vpk+U zXkpz#+eHT(gw7Hd!Ftq;IAyH=$E^lrs7hzU!Pr8N;8fTON-!_7sU&zKmCEZfiDZ5! zqL^>YL@4I;{D);Ari59UPvoW2VsC*w(SzXtU0# Date: Thu, 3 Nov 2022 16:19:32 -0400 Subject: [PATCH 02/12] add gradle app --- docker-compose.yml | 3 + .../.gradle/7.5.1/checksums/checksums.lock | Bin 0 -> 17 bytes .../dependencies-accessors.lock | Bin 0 -> 17 bytes .../dependencies-accessors/gc.properties | 0 .../executionHistory/executionHistory.bin | Bin 0 -> 120606 bytes .../executionHistory/executionHistory.lock | Bin 0 -> 17 bytes .../.gradle/7.5.1/fileChanges/last-build.bin | Bin 0 -> 1 bytes .../.gradle/7.5.1/fileHashes/fileHashes.bin | Bin 0 -> 19547 bytes .../.gradle/7.5.1/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .../7.5.1/fileHashes/resourceHashesCache.bin | Bin 0 -> 18599 bytes services/ads/java/.gradle/7.5.1/gc.properties | 0 .../buildOutputCleanup.lock | Bin 0 -> 17 bytes .../buildOutputCleanup/cache.properties | 2 + .../buildOutputCleanup/outputFiles.bin | Bin 0 -> 19199 bytes services/ads/java/.gradle/file-system.probe | Bin 0 -> 8 bytes services/ads/java/.gradle/vcs-1/gc.properties | 0 services/ads/java/Dockerfile | 30 ++- services/ads/java/Dockerfile.multi | 28 ++ services/ads/java/HelloWorld.class | Bin 426 -> 0 bytes services/ads/java/HelloWorld.java | 5 - services/ads/java/build.gradle | 22 ++ services/ads/java/build/bootJarMainClassName | 1 + .../main/adsjava/AdsJavaApplication.class | Bin 0 -> 1115 bytes .../adsjava/AdsJavaApplicationTests.class | Bin 0 -> 522 bytes .../adsjava.AdsJavaApplicationTests.html | 134 ++++++++++ .../reports/tests/test/css/base-style.css | 179 +++++++++++++ .../build/reports/tests/test/css/style.css | 84 ++++++ .../java/build/reports/tests/test/index.html | 133 ++++++++++ .../build/reports/tests/test/js/report.js | 194 ++++++++++++++ .../reports/tests/test/packages/adsjava.html | 103 ++++++++ .../TEST-adsjava.AdsJavaApplicationTests.xml | 36 +++ .../build/test-results/test/binary/output.bin | Bin 0 -> 9732 bytes .../test-results/test/binary/output.bin.idx | Bin 0 -> 36 bytes .../test-results/test/binary/results.bin | Bin 0 -> 111 bytes .../java/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 60756 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + services/ads/java/gradlew | 240 ++++++++++++++++++ services/ads/java/settings.gradle | 1 + .../main/java/adsjava/AdsJavaApplication.java | 26 ++ .../java/adsjava/AdsJavaApplicationTests.java | 13 + 40 files changed, 1231 insertions(+), 8 deletions(-) create mode 100644 services/ads/java/.gradle/7.5.1/checksums/checksums.lock create mode 100644 services/ads/java/.gradle/7.5.1/dependencies-accessors/dependencies-accessors.lock create mode 100644 services/ads/java/.gradle/7.5.1/dependencies-accessors/gc.properties create mode 100644 services/ads/java/.gradle/7.5.1/executionHistory/executionHistory.bin create mode 100644 services/ads/java/.gradle/7.5.1/executionHistory/executionHistory.lock create mode 100644 services/ads/java/.gradle/7.5.1/fileChanges/last-build.bin create mode 100644 services/ads/java/.gradle/7.5.1/fileHashes/fileHashes.bin create mode 100644 services/ads/java/.gradle/7.5.1/fileHashes/fileHashes.lock create mode 100644 services/ads/java/.gradle/7.5.1/fileHashes/resourceHashesCache.bin create mode 100644 services/ads/java/.gradle/7.5.1/gc.properties create mode 100644 services/ads/java/.gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 services/ads/java/.gradle/buildOutputCleanup/cache.properties create mode 100644 services/ads/java/.gradle/buildOutputCleanup/outputFiles.bin create mode 100644 services/ads/java/.gradle/file-system.probe create mode 100644 services/ads/java/.gradle/vcs-1/gc.properties create mode 100644 services/ads/java/Dockerfile.multi delete mode 100644 services/ads/java/HelloWorld.class delete mode 100644 services/ads/java/HelloWorld.java create mode 100644 services/ads/java/build.gradle create mode 100644 services/ads/java/build/bootJarMainClassName create mode 100644 services/ads/java/build/classes/java/main/adsjava/AdsJavaApplication.class create mode 100644 services/ads/java/build/classes/java/test/adsjava/AdsJavaApplicationTests.class create mode 100644 services/ads/java/build/reports/tests/test/classes/adsjava.AdsJavaApplicationTests.html create mode 100644 services/ads/java/build/reports/tests/test/css/base-style.css create mode 100644 services/ads/java/build/reports/tests/test/css/style.css create mode 100644 services/ads/java/build/reports/tests/test/index.html create mode 100644 services/ads/java/build/reports/tests/test/js/report.js create mode 100644 services/ads/java/build/reports/tests/test/packages/adsjava.html create mode 100644 services/ads/java/build/test-results/test/TEST-adsjava.AdsJavaApplicationTests.xml create mode 100644 services/ads/java/build/test-results/test/binary/output.bin create mode 100644 services/ads/java/build/test-results/test/binary/output.bin.idx create mode 100644 services/ads/java/build/test-results/test/binary/results.bin create mode 100644 services/ads/java/gradle/wrapper/gradle-wrapper.jar create mode 100644 services/ads/java/gradle/wrapper/gradle-wrapper.properties create mode 100755 services/ads/java/gradlew create mode 100644 services/ads/java/settings.gradle create mode 100644 services/ads/java/src/main/java/adsjava/AdsJavaApplication.java create mode 100644 services/ads/java/src/test/java/adsjava/AdsJavaApplicationTests.java diff --git a/docker-compose.yml b/docker-compose.yml index 43d1e40a..16cd8986 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -126,6 +126,9 @@ services: ads-java: build: context: ./services/ads/java + command: "sleep 3500" + ports: + - "3030:8080" networks: - storedog-net diff --git a/services/ads/java/.gradle/7.5.1/checksums/checksums.lock b/services/ads/java/.gradle/7.5.1/checksums/checksums.lock new file mode 100644 index 0000000000000000000000000000000000000000..48d7d23fc2948c964448b531574681a2446b8860 GIT binary patch literal 17 TcmZSnapJ*8QSWc+3{U_7Ln#Fk literal 0 HcmV?d00001 diff --git a/services/ads/java/.gradle/7.5.1/dependencies-accessors/dependencies-accessors.lock b/services/ads/java/.gradle/7.5.1/dependencies-accessors/dependencies-accessors.lock new file mode 100644 index 0000000000000000000000000000000000000000..9e84e9803a25cc856c6ad0b29f26e621cc9e5a52 GIT binary patch literal 17 ScmZS1YiN-3h_CBofC2z0i339b literal 0 HcmV?d00001 diff --git a/services/ads/java/.gradle/7.5.1/dependencies-accessors/gc.properties b/services/ads/java/.gradle/7.5.1/dependencies-accessors/gc.properties new file mode 100644 index 00000000..e69de29b diff --git a/services/ads/java/.gradle/7.5.1/executionHistory/executionHistory.bin b/services/ads/java/.gradle/7.5.1/executionHistory/executionHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..8ba22dfeae18baff2dbf2bf8b5cf557028b89945 GIT binary patch literal 120606 zcmeHw349Y(_jZ;l$RblW5YQK75rHPNFD!p4rA79wEGjCqmO$H-BrOzC5Mt6;0Yd`+7728Qij?tIrc!;2`lUi&lL;*cU+!NxZfM5fFS`x0)_+(2^bPEBw$Fukbofp zLjr~b3<($#FeG3|z>t6;0Yd_Y1Plon5-=oSNWhSQApt`Ih6D@=7!oifU`W7_fFS`x z0)_+(2^bPEBw$FukbofpLjr~b3<(5FfH0Yuf$#^;0ZiYSd>=(1CB}tQJekU;_UfPF z?31Fn3A&Frjk%9$mD81COL6g1s%+yk95xT{?(MdT&a?~%TxrQ?@d@7VuQZcIr;GQ< z5^`fn`XTOOkA<7hP1(5f^Y4DMn2wm$Y}^?xM|z6l;?v~5PFHW6;BQ+b!elO1dN zI4FrD-6Ol87PeklX|`sv!e^#>+W4RClp%{j0xbPd9b{l^6RPFJv-5?zwlXsVx!N4* zitN%-%I$eiPxA<8h9-?z)9Rqtg*KJ1nc8`u4tiPs)|%|gP;X>cyeq|B&TJhMm%*z| z2la4|)1Q%KAv4A7Pon+wy&~4M__hUVrY7}08`5Rw=6QkdDVvskYdK3!HBHbTkkdt{ z1l`IytaEZw96QB-y`M);S6i-`!{s(j(l0B#Beh+6qRZuUnaBDsLT|JL9)Vx&bfMwM?&3gQ zhgQ)YGk>353173?M(O8g%cS`K}kg+7y*|VlEG*Km!SKSJkHS~ zr3kbDKMSsln$K-3bFTO+*ahf86wZh^LkTFskOYIV94ev$LyI_%^C+iqEJ_M_Q^$Ez zdk4jl9-V6qzwl@2u8+*BnBsAkwHzppGV2A#I6{E}(beaXl%st`b~1g6^qMVDw}1w9ACiEdpL$8-< zg2!RRN+?g@C`Yh_%wnP>up-Ow07R0jz4_Bal!@0H$Re6Bu5?2oXbh8RvLKA~2R_C6>hHygfc>%;sKN7;`wc-RV*9m1mng zIlBW&y zmBp7;a4Uo?3t`Trz4+d+dhs?sJ>BWilu>)=r8v;R>==w*%1&{zz>>0zN;C{(0#_80 zxk&|I56KQA&R3sFP#RMoeO2GbsV)G@>Gn#i`18SdX_6BvT${$14 zFP`$bF;(|oLkfnGDr%7HEXi*lRDL975^@0a- z$W!+DpFB{rUW)`q;Ie<7hopH*`+EAiTwBGV_KS;?ch~>2!Vt@mh?iE7`E<9xyn-Yvf@MQIe7|Sa&E6!zmO+ z1L@TH0rgG~!yi~*s++5Q;*G7<){4 A>#0Ug1P%noZ%|prQ9mgFP!R_6DWYrf$DI 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 literal 0 HcmV?d00001 diff --git a/services/ads/java/.gradle/7.5.1/executionHistory/executionHistory.lock b/services/ads/java/.gradle/7.5.1/executionHistory/executionHistory.lock new file mode 100644 index 0000000000000000000000000000000000000000..f4f06c25b236f1cb971db30e247818d72bfaf433 GIT binary patch literal 17 UcmZQJ?no>3czXOd0|amZ05r=4lK=n! literal 0 HcmV?d00001 diff --git a/services/ads/java/.gradle/7.5.1/fileChanges/last-build.bin b/services/ads/java/.gradle/7.5.1/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/services/ads/java/.gradle/7.5.1/fileHashes/fileHashes.bin b/services/ads/java/.gradle/7.5.1/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..1710e66d06800196b376e300f2883631484e4d58 GIT binary patch literal 19547 zcmeI(|5KB700;2Lf!Y=Zav(%zw{w;Aa3Iy4w`R(B265tLAS@FIWSj1p=E= zo;y9i)a(FpAqEF$-o!`>@C&8m4opJ6xbVQVxe|=j=z08nJ{f!X2kPF>-S#~9-t+!^ zp3iIJC+-u$asFNt^xz&HzK^00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P-n{ zMc{RQAu_TU|3Haw;c4KwU=RMnx4e9PWcXKxz2sx<+wA`byK8$|6$ z$D+A&uaW#!CCjUl8@2`4{dS(@aX~C^PDu_pTw5_l$9cf=9;Ks5p5{D9?{EDlf2*a@ zO}E%i@4vwE!LrlIYF+hbB-ff*KKx@!Y0TZs%XFMQEFXC#N)rA3fi61EODz9Y`O*6) z2c(5`92?6WU+TInKi$4h$4O&(P~_R`<7*<-B#+s|^2np6fdx4et7(3j<*Sm*rXMaT zNhP`VWtOK~=VkS5j;B7c`&ph@*J!jaEl(i#$K7RlPGM=M+pX|5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*#kD*`X@ z531x}a^dAQw8ise&Ia4^PrKz!fj$!j95=0andFmvvKon=KdUA;%zbSel*jx!7pK+z z9QNn-bq^b|s6x_k*NGc5Z{O<;JzmoO^^&acY^`pDHZGCI(mZkF^otQuqf&jGw}+!v zr3rX~G@|23g9{KhDi74CLwyfMpSn68WVxg9r;SwFcv9RLElqGXZ?tCiji&CGdx!CN z@++6c2>T_tX&%1|dkS1uKGhuR86*7DJv^qEqvqy9Lw-h}B5Bx?*WRLhjLxAY1@~w8 zv&$UsX01P}KM}9Ga&JXhfpq5?p`jie3nmTjthn)uvCg^Bbfn;^kQ?1Y4tXD$LmNaI z5@Ab-%N))jRbu+J^K-uKkFT^z#*1hpi8Lb8#SN>`Y)kS^RMqFD7`NwS*ONxVU!=k1 ziW|L&rw0A>_O)%ZJI~o?WVE|96ynC%Yxf63w^lnE*7_{JGpoOGa^pF7apQ;YR+*MP zxW4*xYko#Y!!dqWhwu%q^dwIuRf!vZy9Z{Q4a4)-e6d9z^5*nZ+VCO`nXrY%#i~2~ z#5&`J(yL8w)!8=Ltj8xe+^1Oi&Eg8fu8N+H%0G^%TN6$6?_(vMW06HX$HxuzHP33Q z%6F7VLY_7s3ZFcOPqDc1VcSLfp_c0RiaazoxZy7T8~gXlXI>OHPH`2YX_ literal 0 HcmV?d00001 diff --git a/services/ads/java/.gradle/7.5.1/fileHashes/fileHashes.lock b/services/ads/java/.gradle/7.5.1/fileHashes/fileHashes.lock new file mode 100644 index 0000000000000000000000000000000000000000..9c506503528857a97f174f28b1a690a0dfa5ce14 GIT binary patch literal 17 UcmZRMz1(}l{-?7S0|dwb05}>1dH?_b literal 0 HcmV?d00001 diff --git a/services/ads/java/.gradle/7.5.1/fileHashes/resourceHashesCache.bin b/services/ads/java/.gradle/7.5.1/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000000000000000000000000000000000000..fc655f2ee7b9dc32e3c51d0c7ca6a47ad3cc9a11 GIT binary patch literal 18599 zcmeI%v1`IW7>D6&qzb{-2nxw!w@wa)qPR*kIJpIMZDvvIP-vGfrF3y}b#f4wfFK2@ zj2#3WItWE5_+PXU;)NuLICqiv;O;(t_i=E~dZrM%=0`*9M}A*YA%Fk^2q1s}0tg_0 z00IagfB*srAb3)aDwb%Inz!97K z_EKv_c{R>2s#o2&W~~zCcAUq%%$wmED*^~0fB*srAbwvZT-m)C#kx7nuzgU5K=+ zB{@=)Qj{QXTPb7duvvpdnBBZ|(UQn&2}L$L&!dEIBDbw(wD3Pjajt{#hkm7AyGogL9SU9}P|U*-}^Zaxbt(w3j_wtfKt~xL+RV z^$r*A*im1?U8C2;ZB1#>(3~9Z71n{O&%^1jY5z{{_dcFiCZ@W0P>dI|n{pgjl47cNlX}^lQHfZUK6m6dy^_SdrgIPn(%8+uJ)5TrC=l!m@+}LiZD~hAOHCc2{TsMH9

agw4N6^Dl8XKdip*{3iVy&Dq4g!&@g`V>R~C93%J6=$7PK zg_j?78TW3rE@@SAc`-Ep-X9uizut7UgZ5`~pJDo7mdUPNq&~>q zO&1Vw#`5$8^;+&8Igy$tAseHmE}FP63VRf~A}cRS>WY)x{R}<&U~#{m<`i&WcGqH^ z<+}PE^_AS$-70+Ln=z6|^FMJH4aT8Et;fF8d^7i`%ObI%I&G<2OR^P*lk*1s5T z>tctWQ-8pHpHuvi);5inKDTtN_cxmB`ih;TE-v7n-CUz>Sli@Jy^;GtQ)`vHz0i~9 z93PR&lrK&h1 z82(^vqY2xB<6;HwKY94_RLF!?S;?mEr~;`hxXo2sghehzGHhav;9ki%&W`u*vpk+U zXkpz#+eHT(gw7Hd!Ftq;IAyH=$E^lrs7hzU!Pr8N;8fTON-!_7sU&zKmCEZfiDZ5! zqL^>YL@4I;{D);Ari59UPvoW2VsC*w(SzXtU0#(@Zl!ha^W_C(i0(t z*&$G9GzSEnu8KH;<(`oIRXPs1e#?RwE!Cb1Sv+7`Sbb)6%t#~zwt6f|j@SvKohW&U zvNM^)B4kD=*~Xe9HO307jb<+kikTeJzR^Ms(YvviN+ZU6AQFLWn$sSJ*9^< znb^=n&Bpvx>0^4z0~!b!QT8jA?(ugiPs}cxOr~XvCoE3!RzeYDfRS7iaOuyJGiE{( zSZf^2_muI#^bi}UEpQW9+2v-WqBqR8WVpsazpqjq^5?>GwLVY7eT$sH&O$(eQiihB zs8Gp6F-$e5{S5O{bo|cc|1gr6u98NpIOe)t1{XXW;|m_gs{Txc$6VLeyd$(yRaLzJ>+V4n47;%y7gO;hcz;}6Q|{+^rc&XQ(L-6d;*=pujdt?I z#fG>HTX&^)Y9>djP~_Lw+BnarUN1Iw!lxz8MKM=SS}tac@=zPDNdZL$IVF`YPNM!9kD2KMUPA;l#RhFGR^G$&vMO{#zvi32Y_q^c7C61IK_ W*+Li*v9evI9AM4IHkr@S4)6_MWq6kW literal 0 HcmV?d00001 diff --git a/services/ads/java/build/reports/tests/test/classes/adsjava.AdsJavaApplicationTests.html b/services/ads/java/build/reports/tests/test/classes/adsjava.AdsJavaApplicationTests.html new file mode 100644 index 00000000..af02df5e --- /dev/null +++ b/services/ads/java/build/reports/tests/test/classes/adsjava.AdsJavaApplicationTests.html @@ -0,0 +1,134 @@ + + + + + +Test results - AdsJavaApplicationTests + + + + + +

+

AdsJavaApplicationTests

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

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.136s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + +
TestDurationResult
contextLoads()0.136spassed
+
+
+

Standard output

+ +
15:49:10.518 [Test worker] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate]
+15:49:10.523 [Test worker] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)]
+15:49:10.537 [Test worker] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [adsjava.AdsJavaApplicationTests] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper]
+15:49:10.542 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [adsjava.AdsJavaApplicationTests], using SpringBootContextLoader
+15:49:10.543 [Test worker] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [adsjava.AdsJavaApplicationTests]: class path resource [adsjava/AdsJavaApplicationTests-context.xml] does not exist
+15:49:10.543 [Test worker] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [adsjava.AdsJavaApplicationTests]: class path resource [adsjava/AdsJavaApplicationTestsContext.groovy] does not exist
+15:49:10.544 [Test worker] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [adsjava.AdsJavaApplicationTests]: no resource found for suffixes {-context.xml, Context.groovy}.
+15:49:10.544 [Test worker] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils - Could not detect default configuration classes for test class [adsjava.AdsJavaApplicationTests]: AdsJavaApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
+15:49:10.561 [Test worker] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [adsjava.AdsJavaApplicationTests]
+15:49:10.585 [Test worker] DEBUG org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider - Identified candidate component class: file [/Users/colin.cole/webops/storedog/storedog-backend/services/ads/java/build/classes/java/main/adsjava/AdsJavaApplication.class]
+15:49:10.585 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Found @SpringBootConfiguration adsjava.AdsJavaApplication for test class adsjava.AdsJavaApplicationTests
+15:49:10.625 [Test worker] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [adsjava.AdsJavaApplicationTests]: using defaults.
+15:49:10.625 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.boot.test.autoconfigure.webservices.client.MockWebServiceServerTestExecutionListener, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.event.ApplicationEventsTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener, org.springframework.test.context.event.EventPublishingTestExecutionListener]
+15:49:10.631 [Test worker] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Skipping candidate TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener] due to a missing dependency. Specify custom listener classes or make the default listener classes and their required dependencies available. Offending class: [org/springframework/transaction/interceptor/TransactionAttributeSource]
+15:49:10.631 [Test worker] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Skipping candidate TestExecutionListener [org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener] due to a missing dependency. Specify custom listener classes or make the default listener classes and their required dependencies available. Offending class: [org/springframework/transaction/interceptor/TransactionAttribute]
+15:49:10.631 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@5707c1cb, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@2b5cb9b2, org.springframework.test.context.event.ApplicationEventsTestExecutionListener@35038141, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@ecf9049, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@672f11c2, org.springframework.test.context.support.DirtiesContextTestExecutionListener@2970a5bc, org.springframework.test.context.event.EventPublishingTestExecutionListener@50305a, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@72efb5c1, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@6d511b5f, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@41200e0c, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@40f33492, org.springframework.boot.test.autoconfigure.webservices.client.MockWebServiceServerTestExecutionListener@4fbdc0f0, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@2ad3a1bb]
+15:49:10.633 [Test worker] DEBUG org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener - Before test class: context [DefaultTestContext@71e9a896 testClass = AdsJavaApplicationTests, testInstance = [null], testMethod = [null], testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@6b9267b testClass = AdsJavaApplicationTests, locations = '{}', classes = '{class adsjava.AdsJavaApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.autoconfigure.actuate.metrics.MetricsExportContextCustomizerFactory$DisableMetricExportContextCustomizer@4a11eb84, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@5d1659ea, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@43aaf813, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@2f6e28bc, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@aeab9a1, org.springframework.boot.test.context.SpringBootTestArgs@1, org.springframework.boot.test.context.SpringBootTestWebEnvironment@29f7cefd], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true]], class annotated with @DirtiesContext [false] with mode [null].
+
+  .   ____          _            __ _ _
+ /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
+( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
+ \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
+  '  |____| .__|_| |_|_| |_\__, | / / / /
+ =========|_|==============|___/=/_/_/_/
+ :: Spring Boot ::                (v2.7.5)
+
+2022-11-03 15:49:10.790  INFO 65525 --- [    Test worker] adsjava.AdsJavaApplicationTests          : Starting AdsJavaApplicationTests using Java 11.0.16.1 on COMP-NQGQLP2XLR with PID 65525 (started by colin.cole in /Users/colin.cole/webops/storedog/storedog-backend/services/ads/java)
+2022-11-03 15:49:10.790  INFO 65525 --- [    Test worker] adsjava.AdsJavaApplicationTests          : No active profile set, falling back to 1 default profile: "default"
+2022-11-03 15:49:11.375  INFO 65525 --- [    Test worker] adsjava.AdsJavaApplicationTests          : Started AdsJavaApplicationTests in 0.727 seconds (JVM running for 1.242)
+
+
+
+
+ +
+ + diff --git a/services/ads/java/build/reports/tests/test/css/base-style.css b/services/ads/java/build/reports/tests/test/css/base-style.css new file mode 100644 index 00000000..4afa73e3 --- /dev/null +++ b/services/ads/java/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/services/ads/java/build/reports/tests/test/css/style.css b/services/ads/java/build/reports/tests/test/css/style.css new file mode 100644 index 00000000..3dc4913e --- /dev/null +++ b/services/ads/java/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/services/ads/java/build/reports/tests/test/index.html b/services/ads/java/build/reports/tests/test/index.html new file mode 100644 index 00000000..10bd9f26 --- /dev/null +++ b/services/ads/java/build/reports/tests/test/index.html @@ -0,0 +1,133 @@ + + + + + +Test results - Test Summary + + + + + +
+

Test Summary

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

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.136s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Packages

+ + + + + + + + + + + + + + + + + + + + + +
PackageTestsFailuresIgnoredDurationSuccess rate
+adsjava +1000.136s100%
+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+adsjava.AdsJavaApplicationTests +1000.136s100%
+
+
+ +
+ + diff --git a/services/ads/java/build/reports/tests/test/js/report.js b/services/ads/java/build/reports/tests/test/js/report.js new file mode 100644 index 00000000..83bab4a1 --- /dev/null +++ b/services/ads/java/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/services/ads/java/build/reports/tests/test/packages/adsjava.html b/services/ads/java/build/reports/tests/test/packages/adsjava.html new file mode 100644 index 00000000..b97d6ceb --- /dev/null +++ b/services/ads/java/build/reports/tests/test/packages/adsjava.html @@ -0,0 +1,103 @@ + + + + + +Test results - Package adsjava + + + + + +
+

Package adsjava

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

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.136s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+AdsJavaApplicationTests +1000.136s100%
+
+
+ +
+ + diff --git a/services/ads/java/build/test-results/test/TEST-adsjava.AdsJavaApplicationTests.xml b/services/ads/java/build/test-results/test/TEST-adsjava.AdsJavaApplicationTests.xml new file mode 100644 index 00000000..b2153446 --- /dev/null +++ b/services/ads/java/build/test-results/test/TEST-adsjava.AdsJavaApplicationTests.xml @@ -0,0 +1,36 @@ + + + + + true]], class annotated with @DirtiesContext [false] with mode [null]. + + . ____ _ __ _ _ + /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ +( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ + \\/ ___)| |_)| | | | | || (_| | ) ) ) ) + ' |____| .__|_| |_|_| |_\__, | / / / / + =========|_|==============|___/=/_/_/_/ + :: Spring Boot :: (v2.7.5) + +2022-11-03 15:49:10.790 INFO 65525 --- [ Test worker] adsjava.AdsJavaApplicationTests : Starting AdsJavaApplicationTests using Java 11.0.16.1 on COMP-NQGQLP2XLR with PID 65525 (started by colin.cole in /Users/colin.cole/webops/storedog/storedog-backend/services/ads/java) +2022-11-03 15:49:10.790 INFO 65525 --- [ Test worker] adsjava.AdsJavaApplicationTests : No active profile set, falling back to 1 default profile: "default" +2022-11-03 15:49:11.375 INFO 65525 --- [ Test worker] adsjava.AdsJavaApplicationTests : Started AdsJavaApplicationTests in 0.727 seconds (JVM running for 1.242) +]]> + + diff --git a/services/ads/java/build/test-results/test/binary/output.bin b/services/ads/java/build/test-results/test/binary/output.bin new file mode 100644 index 0000000000000000000000000000000000000000..3133ac7e2fabb0da31a3af228b990b701b3deef4 GIT binary patch literal 9732 zcmd^F-EJdE72Yg&gTynGR!B+Mxb60D94V+Xab}rOGRbacSR^MJs=KR`o@saY_D?2Z zXD@gG#0wz7B{v9(YhC~eal!3A2G_uMs{iBmwC&9x0k&kf+sCJ>zVr9hDQ|3i^zDW^ z*z1q?)Q&PxciHrX2qX5^3*Ly}l1+{tzx<4O!IcvFf$d&d0iOx_Qi&j@7@ix6+emrr zc~KYz+Rr*W%zU55!^egJX}IBA5tAT=7USEAVE_aCjK9 zY2#Q1DN`oG;;|DoXuf>3vGLJwKQ0#7?R}61=Ic+_$KsII4S0Y`Y(!qbrhcqDw$Y4b z82i2#MA-`OtKNFeZ@A)c_ewb=#C941Yrtq*g7mMF7xYFS1SE2-6rX%iz6h8FbjX`B z58!4f*LYxt&#=}5-v@4RB+n%c;bo({=f1XR{rBN45LSpcb5(fS5Jq(^ce{x!D zyfsEcfIJs=bdAMpDI$2Y?5jAC>trq<$-eoCEdm}G*LMIacFmRH+DV|7qu67QOihE*X_)?WTq!VIXiJ{hY>;Y>;FGUQnyg90?)g-s{`eq8R+vsjMOHf}b`ZhiQws7}fJcZE z&lGFVP27;nmiBH(bYpFG`8$|79j?y374`-pT?xTNzhvGjF;#Gc0ukvK3R1liPi5oru`$ac8y2!)+m7MwaK zp-I(At5M!?YnPVTMq(D&H2bJi?UJ`0L{VVtaU{;=o?2S;&;O+sUB>_a=j|vh`0b#N;PM|2jLWD$Jj0l$1NC)fHNtJmv~7r4@U2A~D4Mb5RprJF{_>NJ5^ ziMs}Jt#!HC!Y=2P$Z$}Cx=WuAR@3W~JJI-Zt`$R<7o_X))(Je6w>WUS@GZ9<~GaVmq zr5*@`;4CK#1+<|)?hZ%#a+A%r;~@s${Q8^Cot$ma=cE;}xR)a36X2e@HjW(~`xhdR z2!U!r!}JmwiJlh?!h9e<@W4l-yM#0yr{@sGM5^DTeMZtm;b>-csjmow)R;<~776%ul zM3f|!^du7^tHykaY@z@PeH^Et$C_nXOoV3}H;VQd_ouaEM8J3H=8qz?9W0UccsE(= z$Bfdb>)sYSCg-i#wsXOb%~m=mw=VM0R*LsCB)?n8Fx)g$Lf!N9mHjVtA75 zHfvv8ur>*A;+DL>^=eyQCLb@De3I~ww%8Wiz97Bt7{ux2U2=H=6+g#iN%~WEfxD!6 z8$$900`mEeZOI?9?c^zyGq%YfhsQgn;Dsd8R}8s>U$&EHGVlHD0io7E{P--7DHoJ5l7j=zfunB|5uT=@#!xYOjVVRq7D_6fejphw@mELIZ0qhCb7nu_V=qRJ^ e2}O Z&nro-DDlY$8l|C$#%1VWgerZ&006HQCO7~9 literal 0 HcmV?d00001 diff --git a/services/ads/java/gradle/wrapper/gradle-wrapper.jar b/services/ads/java/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..249e5832f090a2944b7473328c07c9755baa3196 GIT binary patch literal 60756 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 '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# 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"' + +# 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 + which java >/dev/null 2>&1 || 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 + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + 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 + +# 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/services/ads/java/settings.gradle b/services/ads/java/settings.gradle new file mode 100644 index 00000000..7bd8196b --- /dev/null +++ b/services/ads/java/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'ads-java' diff --git a/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java b/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java new file mode 100644 index 00000000..a88a325f --- /dev/null +++ b/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java @@ -0,0 +1,26 @@ +package adsjava; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +@RestController +public class AdsJavaApplication { + + @RequestMapping("/") + public String home() { + return "Hello Docker World"; + } + + @RequestMapping("/banner") + public String banner() { + return "Hello Docker World 2"; + } + + public static void main(String[] args) { + SpringApplication.run(AdsJavaApplication.class, args); + } + +} diff --git a/services/ads/java/src/test/java/adsjava/AdsJavaApplicationTests.java b/services/ads/java/src/test/java/adsjava/AdsJavaApplicationTests.java new file mode 100644 index 00000000..8ec2dfa7 --- /dev/null +++ b/services/ads/java/src/test/java/adsjava/AdsJavaApplicationTests.java @@ -0,0 +1,13 @@ +package adsjava; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class AdsJavaApplicationTests { + + @Test + void contextLoads() { + } + +} From 1e79d21c292019b2223484ce412f2b6bb2f8d6aa Mon Sep 17 00:00:00 2001 From: Colin Cole Date: Thu, 3 Nov 2022 16:23:54 -0400 Subject: [PATCH 03/12] remove build files --- docker-compose.yml | 1 - .../.gradle/7.5.1/checksums/checksums.lock | Bin 17 -> 0 bytes .../dependencies-accessors.lock | Bin 17 -> 0 bytes .../dependencies-accessors/gc.properties | 0 .../executionHistory/executionHistory.bin | Bin 120606 -> 0 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 0 bytes .../.gradle/7.5.1/fileChanges/last-build.bin | Bin 1 -> 0 bytes .../.gradle/7.5.1/fileHashes/fileHashes.bin | Bin 19547 -> 0 bytes .../.gradle/7.5.1/fileHashes/fileHashes.lock | Bin 17 -> 0 bytes .../7.5.1/fileHashes/resourceHashesCache.bin | Bin 18599 -> 0 bytes services/ads/java/.gradle/7.5.1/gc.properties | 0 .../buildOutputCleanup.lock | Bin 17 -> 0 bytes .../buildOutputCleanup/cache.properties | 2 - .../buildOutputCleanup/outputFiles.bin | Bin 19199 -> 0 bytes services/ads/java/.gradle/file-system.probe | Bin 8 -> 0 bytes services/ads/java/.gradle/vcs-1/gc.properties | 0 services/ads/java/Dockerfile.multi | 28 --- services/ads/java/build/bootJarMainClassName | 1 - .../main/adsjava/AdsJavaApplication.class | Bin 1115 -> 0 bytes .../adsjava/AdsJavaApplicationTests.class | Bin 522 -> 0 bytes .../adsjava.AdsJavaApplicationTests.html | 134 ------------ .../reports/tests/test/css/base-style.css | 179 ---------------- .../build/reports/tests/test/css/style.css | 84 -------- .../java/build/reports/tests/test/index.html | 133 ------------ .../build/reports/tests/test/js/report.js | 194 ------------------ .../reports/tests/test/packages/adsjava.html | 103 ---------- .../TEST-adsjava.AdsJavaApplicationTests.xml | 36 ---- .../build/test-results/test/binary/output.bin | Bin 9732 -> 0 bytes .../test-results/test/binary/output.bin.idx | Bin 36 -> 0 bytes .../test-results/test/binary/results.bin | Bin 111 -> 0 bytes 30 files changed, 895 deletions(-) delete mode 100644 services/ads/java/.gradle/7.5.1/checksums/checksums.lock delete mode 100644 services/ads/java/.gradle/7.5.1/dependencies-accessors/dependencies-accessors.lock delete mode 100644 services/ads/java/.gradle/7.5.1/dependencies-accessors/gc.properties delete mode 100644 services/ads/java/.gradle/7.5.1/executionHistory/executionHistory.bin delete mode 100644 services/ads/java/.gradle/7.5.1/executionHistory/executionHistory.lock delete mode 100644 services/ads/java/.gradle/7.5.1/fileChanges/last-build.bin delete mode 100644 services/ads/java/.gradle/7.5.1/fileHashes/fileHashes.bin delete mode 100644 services/ads/java/.gradle/7.5.1/fileHashes/fileHashes.lock delete mode 100644 services/ads/java/.gradle/7.5.1/fileHashes/resourceHashesCache.bin delete mode 100644 services/ads/java/.gradle/7.5.1/gc.properties delete mode 100644 services/ads/java/.gradle/buildOutputCleanup/buildOutputCleanup.lock delete mode 100644 services/ads/java/.gradle/buildOutputCleanup/cache.properties delete mode 100644 services/ads/java/.gradle/buildOutputCleanup/outputFiles.bin delete mode 100644 services/ads/java/.gradle/file-system.probe delete mode 100644 services/ads/java/.gradle/vcs-1/gc.properties delete mode 100644 services/ads/java/Dockerfile.multi delete mode 100644 services/ads/java/build/bootJarMainClassName delete mode 100644 services/ads/java/build/classes/java/main/adsjava/AdsJavaApplication.class delete mode 100644 services/ads/java/build/classes/java/test/adsjava/AdsJavaApplicationTests.class delete mode 100644 services/ads/java/build/reports/tests/test/classes/adsjava.AdsJavaApplicationTests.html delete mode 100644 services/ads/java/build/reports/tests/test/css/base-style.css delete mode 100644 services/ads/java/build/reports/tests/test/css/style.css delete mode 100644 services/ads/java/build/reports/tests/test/index.html delete mode 100644 services/ads/java/build/reports/tests/test/js/report.js delete mode 100644 services/ads/java/build/reports/tests/test/packages/adsjava.html delete mode 100644 services/ads/java/build/test-results/test/TEST-adsjava.AdsJavaApplicationTests.xml delete mode 100644 services/ads/java/build/test-results/test/binary/output.bin delete mode 100644 services/ads/java/build/test-results/test/binary/output.bin.idx delete mode 100644 services/ads/java/build/test-results/test/binary/results.bin diff --git a/docker-compose.yml b/docker-compose.yml index 16cd8986..3a4813ae 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -126,7 +126,6 @@ services: ads-java: build: context: ./services/ads/java - command: "sleep 3500" ports: - "3030:8080" networks: diff --git a/services/ads/java/.gradle/7.5.1/checksums/checksums.lock b/services/ads/java/.gradle/7.5.1/checksums/checksums.lock deleted file mode 100644 index 48d7d23fc2948c964448b531574681a2446b8860..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 TcmZSnapJ*8QSWc+3{U_7Ln#Fk diff --git a/services/ads/java/.gradle/7.5.1/dependencies-accessors/dependencies-accessors.lock b/services/ads/java/.gradle/7.5.1/dependencies-accessors/dependencies-accessors.lock deleted file mode 100644 index 9e84e9803a25cc856c6ad0b29f26e621cc9e5a52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 ScmZS1YiN-3h_CBofC2z0i339b diff --git a/services/ads/java/.gradle/7.5.1/dependencies-accessors/gc.properties b/services/ads/java/.gradle/7.5.1/dependencies-accessors/gc.properties deleted file mode 100644 index e69de29b..00000000 diff --git a/services/ads/java/.gradle/7.5.1/executionHistory/executionHistory.bin b/services/ads/java/.gradle/7.5.1/executionHistory/executionHistory.bin deleted file mode 100644 index 8ba22dfeae18baff2dbf2bf8b5cf557028b89945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120606 zcmeHw349Y(_jZ;l$RblW5YQK75rHPNFD!p4rA79wEGjCqmO$H-BrOzC5Mt6;0Yd`+7728Qij?tIrc!;2`lUi&lL;*cU+!NxZfM5fFS`x0)_+(2^bPEBw$Fukbofp zLjr~b3<($#FeG3|z>t6;0Yd_Y1Plon5-=oSNWhSQApt`Ih6D@=7!oifU`W7_fFS`x z0)_+(2^bPEBw$FukbofpLjr~b3<(5FfH0Yuf$#^;0ZiYSd>=(1CB}tQJekU;_UfPF z?31Fn3A&Frjk%9$mD81COL6g1s%+yk95xT{?(MdT&a?~%TxrQ?@d@7VuQZcIr;GQ< z5^`fn`XTOOkA<7hP1(5f^Y4DMn2wm$Y}^?xM|z6l;?v~5PFHW6;BQ+b!elO1dN zI4FrD-6Ol87PeklX|`sv!e^#>+W4RClp%{j0xbPd9b{l^6RPFJv-5?zwlXsVx!N4* zitN%-%I$eiPxA<8h9-?z)9Rqtg*KJ1nc8`u4tiPs)|%|gP;X>cyeq|B&TJhMm%*z| z2la4|)1Q%KAv4A7Pon+wy&~4M__hUVrY7}08`5Rw=6QkdDVvskYdK3!HBHbTkkdt{ z1l`IytaEZw96QB-y`M);S6i-`!{s(j(l0B#Beh+6qRZuUnaBDsLT|JL9)Vx&bfMwM?&3gQ zhgQ)YGk>353173?M(O8g%cS`K}kg+7y*|VlEG*Km!SKSJkHS~ zr3kbDKMSsln$K-3bFTO+*ahf86wZh^LkTFskOYIV94ev$LyI_%^C+iqEJ_M_Q^$Ez zdk4jl9-V6qzwl@2u8+*BnBsAkwHzppGV2A#I6{E}(beaXl%st`b~1g6^qMVDw}1w9ACiEdpL$8-< zg2!RRN+?g@C`Yh_%wnP>up-Ow07R0jz4_Bal!@0H$Re6Bu5?2oXbh8RvLKA~2R_C6>hHygfc>%;sKN7;`wc-RV*9m1mng zIlBW&y zmBp7;a4Uo?3t`Trz4+d+dhs?sJ>BWilu>)=r8v;R>==w*%1&{zz>>0zN;C{(0#_80 zxk&|I56KQA&R3sFP#RMoeO2GbsV)G@>Gn#i`18SdX_6BvT${$14 zFP`$bF;(|oLkfnGDr%7HEXi*lRDL975^@0a- z$W!+DpFB{rUW)`q;Ie<7hopH*`+EAiTwBGV_KS;?ch~>2!Vt@mh?iE7`E<9xyn-Yvf@MQIe7|Sa&E6!zmO+ z1L@TH0rgG~!yi~*s++5Q;*G7<){4 A>#0Ug1P%noZ%|prQ9mgFP!R_6DWYrf$DI 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 diff --git a/services/ads/java/.gradle/7.5.1/executionHistory/executionHistory.lock b/services/ads/java/.gradle/7.5.1/executionHistory/executionHistory.lock deleted file mode 100644 index f4f06c25b236f1cb971db30e247818d72bfaf433..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 UcmZQJ?no>3czXOd0|amZ05r=4lK=n! diff --git a/services/ads/java/.gradle/7.5.1/fileChanges/last-build.bin b/services/ads/java/.gradle/7.5.1/fileChanges/last-build.bin deleted file mode 100644 index f76dd238ade08917e6712764a16a22005a50573d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1 IcmZPo000310RR91 diff --git a/services/ads/java/.gradle/7.5.1/fileHashes/fileHashes.bin b/services/ads/java/.gradle/7.5.1/fileHashes/fileHashes.bin deleted file mode 100644 index 1710e66d06800196b376e300f2883631484e4d58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19547 zcmeI(|5KB700;2Lf!Y=Zav(%zw{w;Aa3Iy4w`R(B265tLAS@FIWSj1p=E= zo;y9i)a(FpAqEF$-o!`>@C&8m4opJ6xbVQVxe|=j=z08nJ{f!X2kPF>-S#~9-t+!^ zp3iIJC+-u$asFNt^xz&HzK^00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P-n{ zMc{RQAu_TU|3Haw;c4KwU=RMnx4e9PWcXKxz2sx<+wA`byK8$|6$ z$D+A&uaW#!CCjUl8@2`4{dS(@aX~C^PDu_pTw5_l$9cf=9;Ks5p5{D9?{EDlf2*a@ zO}E%i@4vwE!LrlIYF+hbB-ff*KKx@!Y0TZs%XFMQEFXC#N)rA3fi61EODz9Y`O*6) z2c(5`92?6WU+TInKi$4h$4O&(P~_R`<7*<-B#+s|^2np6fdx4et7(3j<*Sm*rXMaT zNhP`VWtOK~=VkS5j;B7c`&ph@*J!jaEl(i#$K7RlPGM=M+pX|5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*#kD*`X@ z531x}a^dAQw8ise&Ia4^PrKz!fj$!j95=0andFmvvKon=KdUA;%zbSel*jx!7pK+z z9QNn-bq^b|s6x_k*NGc5Z{O<;JzmoO^^&acY^`pDHZGCI(mZkF^otQuqf&jGw}+!v zr3rX~G@|23g9{KhDi74CLwyfMpSn68WVxg9r;SwFcv9RLElqGXZ?tCiji&CGdx!CN z@++6c2>T_tX&%1|dkS1uKGhuR86*7DJv^qEqvqy9Lw-h}B5Bx?*WRLhjLxAY1@~w8 zv&$UsX01P}KM}9Ga&JXhfpq5?p`jie3nmTjthn)uvCg^Bbfn;^kQ?1Y4tXD$LmNaI z5@Ab-%N))jRbu+J^K-uKkFT^z#*1hpi8Lb8#SN>`Y)kS^RMqFD7`NwS*ONxVU!=k1 ziW|L&rw0A>_O)%ZJI~o?WVE|96ynC%Yxf63w^lnE*7_{JGpoOGa^pF7apQ;YR+*MP zxW4*xYko#Y!!dqWhwu%q^dwIuRf!vZy9Z{Q4a4)-e6d9z^5*nZ+VCO`nXrY%#i~2~ z#5&`J(yL8w)!8=Ltj8xe+^1Oi&Eg8fu8N+H%0G^%TN6$6?_(vMW06HX$HxuzHP33Q z%6F7VLY_7s3ZFcOPqDc1VcSLfp_c0RiaazoxZy7T8~gXlXI>OHPH`2YX_ diff --git a/services/ads/java/.gradle/7.5.1/fileHashes/fileHashes.lock b/services/ads/java/.gradle/7.5.1/fileHashes/fileHashes.lock deleted file mode 100644 index 9c506503528857a97f174f28b1a690a0dfa5ce14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 UcmZRMz1(}l{-?7S0|dwb05}>1dH?_b diff --git a/services/ads/java/.gradle/7.5.1/fileHashes/resourceHashesCache.bin b/services/ads/java/.gradle/7.5.1/fileHashes/resourceHashesCache.bin deleted file mode 100644 index fc655f2ee7b9dc32e3c51d0c7ca6a47ad3cc9a11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18599 zcmeI%v1`IW7>D6&qzb{-2nxw!w@wa)qPR*kIJpIMZDvvIP-vGfrF3y}b#f4wfFK2@ zj2#3WItWE5_+PXU;)NuLICqiv;O;(t_i=E~dZrM%=0`*9M}A*YA%Fk^2q1s}0tg_0 z00IagfB*srAb3)aDwb%Inz!97K z_EKv_c{R>2s#o2&W~~zCcAUq%%$wmED*^~0fB*srAbwvZT-m)C#kx7nuzgU5K=+ zB{@=)Qj{QXTPb7duvvpdnBBZ|(UQn&2}L$L&!dEIBDbw(wD3Pjajt{#hkm7AyGogL9SU9}P|U*-}^Zaxbt(w3j_wtfKt~xL+RV z^$r*A*im1?U8C2;ZB1#>(3~9Z71n{O&%^1jY5z{{_dcFiCZ@W0P>dI|n{pgjl47cNlX}^lQHfZUK6m6dy^_SdrgIPn(%8+uJ)5TrC=l!m@+}LiZD~hAOHCc2{TsMH9

agw4N6^Dl8XKdip*{3iVy&Dq4g!&@g`V>R~C93%J6=$7PK zg_j?78TW3rE@@SAc`-Ep-X9uizut7UgZ5`~pJDo7mdUPNq&~>q zO&1Vw#`5$8^;+&8Igy$tAseHmE}FP63VRf~A}cRS>WY)x{R}<&U~#{m<`i&WcGqH^ z<+}PE^_AS$-70+Ln=z6|^FMJH4aT8Et;fF8d^7i`%ObI%I&G<2OR^P*lk*1s5T z>tctWQ-8pHpHuvi);5inKDTtN_cxmB`ih;TE-v7n-CUz>Sli@Jy^;GtQ)`vHz0i~9 z(@Zl!ha^W_C(i0(t z*&$G9GzSEnu8KH;<(`oIRXPs1e#?RwE!Cb1Sv+7`Sbb)6%t#~zwt6f|j@SvKohW&U zvNM^)B4kD=*~Xe9HO307jb<+kikTeJzR^Ms(YvviN+ZU6AQFLWn$sSJ*9^< znb^=n&Bpvx>0^4z0~!b!QT8jA?(ugiPs}cxOr~XvCoE3!RzeYDfRS7iaOuyJGiE{( zSZf^2_muI#^bi}UEpQW9+2v-WqBqR8WVpsazpqjq^5?>GwLVY7eT$sH&O$(eQiihB zs8Gp6F-$e5{S5O{bo|cc|1gr6u98NpIOe)t1{XXW;|m_gs{Txc$6VLeyd$(yRaLzJ>+V4n47;%y7gO;hcz;}6Q|{+^rc&XQ(L-6d;*=pujdt?I z#fG>HTX&^)Y9>djP~_Lw+BnarUN1Iw!lxz8MKM=SS}tac@=zPDNdZL$IVF`YPNM!9kD2KMUPA;l#RhFGR^G$&vMO{#zvi32Y_q^c7C61IK_ W*+Li*v9evI9AM4IHkr@S4)6_MWq6kW diff --git a/services/ads/java/build/reports/tests/test/classes/adsjava.AdsJavaApplicationTests.html b/services/ads/java/build/reports/tests/test/classes/adsjava.AdsJavaApplicationTests.html deleted file mode 100644 index af02df5e..00000000 --- a/services/ads/java/build/reports/tests/test/classes/adsjava.AdsJavaApplicationTests.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - -Test results - AdsJavaApplicationTests - - - - - -

-

AdsJavaApplicationTests

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

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
0.136s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Tests

- - - - - - - - - - - - - -
TestDurationResult
contextLoads()0.136spassed
-
-
-

Standard output

- -
15:49:10.518 [Test worker] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate]
-15:49:10.523 [Test worker] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)]
-15:49:10.537 [Test worker] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [adsjava.AdsJavaApplicationTests] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper]
-15:49:10.542 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [adsjava.AdsJavaApplicationTests], using SpringBootContextLoader
-15:49:10.543 [Test worker] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [adsjava.AdsJavaApplicationTests]: class path resource [adsjava/AdsJavaApplicationTests-context.xml] does not exist
-15:49:10.543 [Test worker] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [adsjava.AdsJavaApplicationTests]: class path resource [adsjava/AdsJavaApplicationTestsContext.groovy] does not exist
-15:49:10.544 [Test worker] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [adsjava.AdsJavaApplicationTests]: no resource found for suffixes {-context.xml, Context.groovy}.
-15:49:10.544 [Test worker] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils - Could not detect default configuration classes for test class [adsjava.AdsJavaApplicationTests]: AdsJavaApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
-15:49:10.561 [Test worker] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [adsjava.AdsJavaApplicationTests]
-15:49:10.585 [Test worker] DEBUG org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider - Identified candidate component class: file [/Users/colin.cole/webops/storedog/storedog-backend/services/ads/java/build/classes/java/main/adsjava/AdsJavaApplication.class]
-15:49:10.585 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Found @SpringBootConfiguration adsjava.AdsJavaApplication for test class adsjava.AdsJavaApplicationTests
-15:49:10.625 [Test worker] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [adsjava.AdsJavaApplicationTests]: using defaults.
-15:49:10.625 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.boot.test.autoconfigure.webservices.client.MockWebServiceServerTestExecutionListener, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.event.ApplicationEventsTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener, org.springframework.test.context.event.EventPublishingTestExecutionListener]
-15:49:10.631 [Test worker] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Skipping candidate TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener] due to a missing dependency. Specify custom listener classes or make the default listener classes and their required dependencies available. Offending class: [org/springframework/transaction/interceptor/TransactionAttributeSource]
-15:49:10.631 [Test worker] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Skipping candidate TestExecutionListener [org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener] due to a missing dependency. Specify custom listener classes or make the default listener classes and their required dependencies available. Offending class: [org/springframework/transaction/interceptor/TransactionAttribute]
-15:49:10.631 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@5707c1cb, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@2b5cb9b2, org.springframework.test.context.event.ApplicationEventsTestExecutionListener@35038141, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@ecf9049, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@672f11c2, org.springframework.test.context.support.DirtiesContextTestExecutionListener@2970a5bc, org.springframework.test.context.event.EventPublishingTestExecutionListener@50305a, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@72efb5c1, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@6d511b5f, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@41200e0c, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@40f33492, org.springframework.boot.test.autoconfigure.webservices.client.MockWebServiceServerTestExecutionListener@4fbdc0f0, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@2ad3a1bb]
-15:49:10.633 [Test worker] DEBUG org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener - Before test class: context [DefaultTestContext@71e9a896 testClass = AdsJavaApplicationTests, testInstance = [null], testMethod = [null], testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@6b9267b testClass = AdsJavaApplicationTests, locations = '{}', classes = '{class adsjava.AdsJavaApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.autoconfigure.actuate.metrics.MetricsExportContextCustomizerFactory$DisableMetricExportContextCustomizer@4a11eb84, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@5d1659ea, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@43aaf813, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@2f6e28bc, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@aeab9a1, org.springframework.boot.test.context.SpringBootTestArgs@1, org.springframework.boot.test.context.SpringBootTestWebEnvironment@29f7cefd], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true]], class annotated with @DirtiesContext [false] with mode [null].
-
-  .   ____          _            __ _ _
- /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
-( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
- \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
-  '  |____| .__|_| |_|_| |_\__, | / / / /
- =========|_|==============|___/=/_/_/_/
- :: Spring Boot ::                (v2.7.5)
-
-2022-11-03 15:49:10.790  INFO 65525 --- [    Test worker] adsjava.AdsJavaApplicationTests          : Starting AdsJavaApplicationTests using Java 11.0.16.1 on COMP-NQGQLP2XLR with PID 65525 (started by colin.cole in /Users/colin.cole/webops/storedog/storedog-backend/services/ads/java)
-2022-11-03 15:49:10.790  INFO 65525 --- [    Test worker] adsjava.AdsJavaApplicationTests          : No active profile set, falling back to 1 default profile: "default"
-2022-11-03 15:49:11.375  INFO 65525 --- [    Test worker] adsjava.AdsJavaApplicationTests          : Started AdsJavaApplicationTests in 0.727 seconds (JVM running for 1.242)
-
-
-
-
- -
- - diff --git a/services/ads/java/build/reports/tests/test/css/base-style.css b/services/ads/java/build/reports/tests/test/css/base-style.css deleted file mode 100644 index 4afa73e3..00000000 --- a/services/ads/java/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/services/ads/java/build/reports/tests/test/css/style.css b/services/ads/java/build/reports/tests/test/css/style.css deleted file mode 100644 index 3dc4913e..00000000 --- a/services/ads/java/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/services/ads/java/build/reports/tests/test/index.html b/services/ads/java/build/reports/tests/test/index.html deleted file mode 100644 index 10bd9f26..00000000 --- a/services/ads/java/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.136s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Packages

- - - - - - - - - - - - - - - - - - - - - -
PackageTestsFailuresIgnoredDurationSuccess rate
-adsjava -1000.136s100%
-
-
-

Classes

- - - - - - - - - - - - - - - - - - - - - -
ClassTestsFailuresIgnoredDurationSuccess rate
-adsjava.AdsJavaApplicationTests -1000.136s100%
-
-
- -
- - diff --git a/services/ads/java/build/reports/tests/test/js/report.js b/services/ads/java/build/reports/tests/test/js/report.js deleted file mode 100644 index 83bab4a1..00000000 --- a/services/ads/java/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/services/ads/java/build/reports/tests/test/packages/adsjava.html b/services/ads/java/build/reports/tests/test/packages/adsjava.html deleted file mode 100644 index b97d6ceb..00000000 --- a/services/ads/java/build/reports/tests/test/packages/adsjava.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - -Test results - Package adsjava - - - - - -
-

Package adsjava

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

tests

-
-
-
-
0
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
0.136s
-

duration

-
-
-
-
-
-
100%
-

successful

-
-
-
-
- -
-

Classes

- - - - - - - - - - - - - - - - - - - -
ClassTestsFailuresIgnoredDurationSuccess rate
-AdsJavaApplicationTests -1000.136s100%
-
-
- -
- - diff --git a/services/ads/java/build/test-results/test/TEST-adsjava.AdsJavaApplicationTests.xml b/services/ads/java/build/test-results/test/TEST-adsjava.AdsJavaApplicationTests.xml deleted file mode 100644 index b2153446..00000000 --- a/services/ads/java/build/test-results/test/TEST-adsjava.AdsJavaApplicationTests.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - true]], class annotated with @DirtiesContext [false] with mode [null]. - - . ____ _ __ _ _ - /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ -( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ - \\/ ___)| |_)| | | | | || (_| | ) ) ) ) - ' |____| .__|_| |_|_| |_\__, | / / / / - =========|_|==============|___/=/_/_/_/ - :: Spring Boot :: (v2.7.5) - -2022-11-03 15:49:10.790 INFO 65525 --- [ Test worker] adsjava.AdsJavaApplicationTests : Starting AdsJavaApplicationTests using Java 11.0.16.1 on COMP-NQGQLP2XLR with PID 65525 (started by colin.cole in /Users/colin.cole/webops/storedog/storedog-backend/services/ads/java) -2022-11-03 15:49:10.790 INFO 65525 --- [ Test worker] adsjava.AdsJavaApplicationTests : No active profile set, falling back to 1 default profile: "default" -2022-11-03 15:49:11.375 INFO 65525 --- [ Test worker] adsjava.AdsJavaApplicationTests : Started AdsJavaApplicationTests in 0.727 seconds (JVM running for 1.242) -]]> - - diff --git a/services/ads/java/build/test-results/test/binary/output.bin b/services/ads/java/build/test-results/test/binary/output.bin deleted file mode 100644 index 3133ac7e2fabb0da31a3af228b990b701b3deef4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9732 zcmd^F-EJdE72Yg&gTynGR!B+Mxb60D94V+Xab}rOGRbacSR^MJs=KR`o@saY_D?2Z zXD@gG#0wz7B{v9(YhC~eal!3A2G_uMs{iBmwC&9x0k&kf+sCJ>zVr9hDQ|3i^zDW^ z*z1q?)Q&PxciHrX2qX5^3*Ly}l1+{tzx<4O!IcvFf$d&d0iOx_Qi&j@7@ix6+emrr zc~KYz+Rr*W%zU55!^egJX}IBA5tAT=7USEAVE_aCjK9 zY2#Q1DN`oG;;|DoXuf>3vGLJwKQ0#7?R}61=Ic+_$KsII4S0Y`Y(!qbrhcqDw$Y4b z82i2#MA-`OtKNFeZ@A)c_ewb=#C941Yrtq*g7mMF7xYFS1SE2-6rX%iz6h8FbjX`B z58!4f*LYxt&#=}5-v@4RB+n%c;bo({=f1XR{rBN45LSpcb5(fS5Jq(^ce{x!D zyfsEcfIJs=bdAMpDI$2Y?5jAC>trq<$-eoCEdm}G*LMIacFmRH+DV|7qu67QOihE*X_)?WTq!VIXiJ{hY>;Y>;FGUQnyg90?)g-s{`eq8R+vsjMOHf}b`ZhiQws7}fJcZE z&lGFVP27;nmiBH(bYpFG`8$|79j?y374`-pT?xTNzhvGjF;#Gc0ukvK3R1liPi5oru`$ac8y2!)+m7MwaK zp-I(At5M!?YnPVTMq(D&H2bJi?UJ`0L{VVtaU{;=o?2S;&;O+sUB>_a=j|vh`0b#N;PM|2jLWD$Jj0l$1NC)fHNtJmv~7r4@U2A~D4Mb5RprJF{_>NJ5^ ziMs}Jt#!HC!Y=2P$Z$}Cx=WuAR@3W~JJI-Zt`$R<7o_X))(Je6w>WUS@GZ9<~GaVmq zr5*@`;4CK#1+<|)?hZ%#a+A%r;~@s${Q8^Cot$ma=cE;}xR)a36X2e@HjW(~`xhdR z2!U!r!}JmwiJlh?!h9e<@W4l-yM#0yr{@sGM5^DTeMZtm;b>-csjmow)R;<~776%ul zM3f|!^du7^tHykaY@z@PeH^Et$C_nXOoV3}H;VQd_ouaEM8J3H=8qz?9W0UccsE(= z$Bfdb>)sYSCg-i#wsXOb%~m=mw=VM0R*LsCB)?n8Fx)g$Lf!N9mHjVtA75 zHfvv8ur>*A;+DL>^=eyQCLb@De3I~ww%8Wiz97Bt7{ux2U2=H=6+g#iN%~WEfxD!6 z8$$900`mEeZOI?9?c^zyGq%YfhsQgn;Dsd8R}8s>U$&EHGVlHD0io7E{P--7DHoJ5l7j=zfunB|5uT=@#!xYOjVVRq7D_6fejphw@mELIZ0qhCb7nu_V=qRJ^ e2}O Z&nro-DDlY$8l|C$#%1VWgerZ&006HQCO7~9 From 4d4b162748fdd625405d980a8cda2772fe0ac559 Mon Sep 17 00:00:00 2001 From: Colin Cole Date: Thu, 3 Nov 2022 16:33:57 -0400 Subject: [PATCH 04/12] cleanup --- services/ads/java/gradlew | 240 ------------------ .../main/java/adsjava/AdsJavaApplication.java | 5 + 2 files changed, 5 insertions(+), 240 deletions(-) delete mode 100755 services/ads/java/gradlew diff --git a/services/ads/java/gradlew b/services/ads/java/gradlew deleted file mode 100755 index a69d9cb6..00000000 --- a/services/ads/java/gradlew +++ /dev/null @@ -1,240 +0,0 @@ -#!/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/master/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 - -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" -APP_BASE_NAME=${0##*/} - -# 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"' - -# 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 - which java >/dev/null 2>&1 || 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 - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - 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 - -# 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/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java b/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java index a88a325f..f4cc173e 100644 --- a/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java +++ b/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java @@ -19,6 +19,11 @@ public String banner() { return "Hello Docker World 2"; } + @RequestMapping("/test") + public String test() { + return "Test"; + } + public static void main(String[] args) { SpringApplication.run(AdsJavaApplication.class, args); } From c85b950a475f24f20222eafab1c64dbf31ca2627 Mon Sep 17 00:00:00 2001 From: Colin Cole Date: Thu, 3 Nov 2022 16:35:13 -0400 Subject: [PATCH 05/12] comments --- services/ads/java/Dockerfile | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/services/ads/java/Dockerfile b/services/ads/java/Dockerfile index 007ddaec..19054d2f 100644 --- a/services/ads/java/Dockerfile +++ b/services/ads/java/Dockerfile @@ -1,7 +1,4 @@ -# using multistage docker build -# ref: https://docs.docker.com/develop/develop-images/multistage-build/ - -# temp container to build using gradle +# base container using gradle FROM gradle:jdk11 AS TEMP_BUILD_IMAGE ENV APP_HOME=/usr/app/ WORKDIR $APP_HOME @@ -15,7 +12,7 @@ RUN chown -R gradle /home/gradle/src COPY . . RUN gradle clean build -# actual container +# app container FROM alpine:latest RUN apk --update add openjdk11-jre ENV ARTIFACT_NAME=ads-java-0.0.1-SNAPSHOT.jar @@ -23,6 +20,5 @@ ENV APP_HOME=/usr/app/ WORKDIR $APP_HOME COPY --from=TEMP_BUILD_IMAGE $APP_HOME/build/libs/$ARTIFACT_NAME . - -# EXPOSE 8080 + ENTRYPOINT exec java -jar ${ARTIFACT_NAME} \ No newline at end of file From 55924477952c94bd97d715d2c6da609ac1bbba9f Mon Sep 17 00:00:00 2001 From: Colin Cole Date: Thu, 3 Nov 2022 17:09:23 -0400 Subject: [PATCH 06/12] attempt to serve static resource --- services/ads/java/Dockerfile | 2 +- .../main/java/adsjava/AdsJavaApplication.java | 2 ++ services/ads/java/src/main/resources/ads/1.jpg | Bin 0 -> 35592 bytes services/ads/java/src/main/resources/ads/2.jpg | Bin 0 -> 34692 bytes services/ads/java/src/main/resources/ads/3.jpg | Bin 0 -> 29426 bytes 5 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 services/ads/java/src/main/resources/ads/1.jpg create mode 100644 services/ads/java/src/main/resources/ads/2.jpg create mode 100644 services/ads/java/src/main/resources/ads/3.jpg diff --git a/services/ads/java/Dockerfile b/services/ads/java/Dockerfile index 19054d2f..068abaa2 100644 --- a/services/ads/java/Dockerfile +++ b/services/ads/java/Dockerfile @@ -1,4 +1,4 @@ -# base container using gradle +# compile via gradle FROM gradle:jdk11 AS TEMP_BUILD_IMAGE ENV APP_HOME=/usr/app/ WORKDIR $APP_HOME diff --git a/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java b/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java index f4cc173e..1a43f29e 100644 --- a/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java +++ b/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java @@ -4,6 +4,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.springframework.http.MediaType; +import org.springframework.util.StreamUtils; @SpringBootApplication @RestController diff --git a/services/ads/java/src/main/resources/ads/1.jpg b/services/ads/java/src/main/resources/ads/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..92f8cb8b0d36bb7cf9116f2cff040cd8d6c10dff GIT binary patch literal 35592 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 Y!45{)kL4apj6E|bhb|AWtoHw#08(X#hX4Qo literal 0 HcmV?d00001 diff --git a/services/ads/java/src/main/resources/ads/3.jpg b/services/ads/java/src/main/resources/ads/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8825e7466b2f0e54caa4a9799cde11da5c903631 GIT binary patch literal 29426 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 Date: Mon, 7 Nov 2022 15:17:00 -0500 Subject: [PATCH 07/12] attempt to serve static image --- .../src/main/java/adsjava/AdsJavaApplication.java | 6 ++++++ .../java/src/main/resources/{ads/1.jpg => ad1.jpg} | Bin .../java/src/main/resources/{ads/2.jpg => ad2.jpg} | Bin .../java/src/main/resources/{ads/3.jpg => ad3.jpg} | Bin 4 files changed, 6 insertions(+) rename services/ads/java/src/main/resources/{ads/1.jpg => ad1.jpg} (100%) rename services/ads/java/src/main/resources/{ads/2.jpg => ad2.jpg} (100%) rename services/ads/java/src/main/resources/{ads/3.jpg => ad3.jpg} (100%) diff --git a/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java b/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java index 1a43f29e..c82bdab8 100644 --- a/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java +++ b/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java @@ -11,6 +11,12 @@ @RestController public class AdsJavaApplication { + @RequestMapping(value = "/Image/{id:.+}", method = RequestMethod.GET) + public ResponseEntity getImage(@PathVariable("id") String id) { + byte[] image = imageService.getImage(id); + return ResponseEntity.ok().contentType(MediaType.IMAGE_JPEG).body(image); + } + @RequestMapping("/") public String home() { return "Hello Docker World"; diff --git a/services/ads/java/src/main/resources/ads/1.jpg b/services/ads/java/src/main/resources/ad1.jpg similarity index 100% rename from services/ads/java/src/main/resources/ads/1.jpg rename to services/ads/java/src/main/resources/ad1.jpg diff --git a/services/ads/java/src/main/resources/ads/2.jpg b/services/ads/java/src/main/resources/ad2.jpg similarity index 100% rename from services/ads/java/src/main/resources/ads/2.jpg rename to services/ads/java/src/main/resources/ad2.jpg diff --git a/services/ads/java/src/main/resources/ads/3.jpg b/services/ads/java/src/main/resources/ad3.jpg similarity index 100% rename from services/ads/java/src/main/resources/ads/3.jpg rename to services/ads/java/src/main/resources/ad3.jpg From 8b75813eed0b7e2f003e48c66d832ca4d5f02e4c Mon Sep 17 00:00:00 2001 From: Colin Cole Date: Mon, 14 Nov 2022 14:41:02 -0500 Subject: [PATCH 08/12] add mvp java ad service --- services/ads/java/build.gradle | 5 ++- .../main/java/adsjava/AdsJavaApplication.java | 30 +++++++++--------- .../src/main/resources/{ => static}/ad1.jpg | Bin .../src/main/resources/{ => static}/ad2.jpg | Bin .../src/main/resources/{ => static}/ad3.jpg | Bin 5 files changed, 19 insertions(+), 16 deletions(-) rename services/ads/java/src/main/resources/{ => static}/ad1.jpg (100%) rename services/ads/java/src/main/resources/{ => static}/ad2.jpg (100%) rename services/ads/java/src/main/resources/{ => static}/ad3.jpg (100%) diff --git a/services/ads/java/build.gradle b/services/ads/java/build.gradle index ef42e426..69207ecb 100644 --- a/services/ads/java/build.gradle +++ b/services/ads/java/build.gradle @@ -13,7 +13,10 @@ repositories { } dependencies { - implementation 'org.springframework.boot:spring-boot-starter-web' + implementation ( + 'commons-io:commons-io:2.4', + 'org.springframework.boot:spring-boot-starter-web' + ) testImplementation 'org.springframework.boot:spring-boot-starter-test' } diff --git a/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java b/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java index c82bdab8..3b726b29 100644 --- a/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java +++ b/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java @@ -6,30 +6,30 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.http.MediaType; import org.springframework.util.StreamUtils; +import java.io.*; +import org.springframework.web.bind.annotation.ResponseBody; +import org.apache.commons.io.IOUtils; +import java.util.concurrent.ThreadLocalRandom; @SpringBootApplication @RestController public class AdsJavaApplication { - @RequestMapping(value = "/Image/{id:.+}", method = RequestMethod.GET) - public ResponseEntity getImage(@PathVariable("id") String id) { - byte[] image = imageService.getImage(id); - return ResponseEntity.ok().contentType(MediaType.IMAGE_JPEG).body(image); + @RequestMapping( + value = "/banner", + produces = MediaType.IMAGE_JPEG_VALUE + ) + public @ResponseBody byte[] getImageWithMediaType() throws IOException { + int randomNum = ThreadLocalRandom.current().nextInt(1, 3 + 1); + String imagePath = "/static/ad" + randomNum + ".jpg"; + InputStream in = getClass() + .getResourceAsStream(imagePath); + return IOUtils.toByteArray(in); } @RequestMapping("/") public String home() { - return "Hello Docker World"; - } - - @RequestMapping("/banner") - public String banner() { - return "Hello Docker World 2"; - } - - @RequestMapping("/test") - public String test() { - return "Test"; + return "Hello from Advertisements (Java)"; } public static void main(String[] args) { diff --git a/services/ads/java/src/main/resources/ad1.jpg b/services/ads/java/src/main/resources/static/ad1.jpg similarity index 100% rename from services/ads/java/src/main/resources/ad1.jpg rename to services/ads/java/src/main/resources/static/ad1.jpg diff --git a/services/ads/java/src/main/resources/ad2.jpg b/services/ads/java/src/main/resources/static/ad2.jpg similarity index 100% rename from services/ads/java/src/main/resources/ad2.jpg rename to services/ads/java/src/main/resources/static/ad2.jpg diff --git a/services/ads/java/src/main/resources/ad3.jpg b/services/ads/java/src/main/resources/static/ad3.jpg similarity index 100% rename from services/ads/java/src/main/resources/ad3.jpg rename to services/ads/java/src/main/resources/static/ad3.jpg From d73ef1de6020d47111cdbe38cf1f13cf0b1f236a Mon Sep 17 00:00:00 2001 From: Colin Cole Date: Mon, 28 Nov 2022 15:31:31 -0500 Subject: [PATCH 09/12] add dd-trace for java --- services/ads/java/Dockerfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/ads/java/Dockerfile b/services/ads/java/Dockerfile index 068abaa2..76b1c71c 100644 --- a/services/ads/java/Dockerfile +++ b/services/ads/java/Dockerfile @@ -8,7 +8,7 @@ COPY gradle $APP_HOME/gradle COPY --chown=gradle:gradle . /home/gradle/src USER root RUN chown -R gradle /home/gradle/src - + COPY . . RUN gradle clean build @@ -21,4 +21,6 @@ ENV APP_HOME=/usr/app/ WORKDIR $APP_HOME COPY --from=TEMP_BUILD_IMAGE $APP_HOME/build/libs/$ARTIFACT_NAME . -ENTRYPOINT exec java -jar ${ARTIFACT_NAME} \ No newline at end of file +RUN wget -O dd-java-agent.jar 'https://dtdg.co/latest-java-tracer' + +ENTRYPOINT exec java -javaagent:/usr/app/dd-java-agent.jar -Ddd.logs.injection=true -Ddd.service=ads -Ddd.env=dev -jar ${ARTIFACT_NAME} \ No newline at end of file From d428b3e3ce8c83f31b6008ba0244a977bdf90031 Mon Sep 17 00:00:00 2001 From: Colin Cole Date: Mon, 28 Nov 2022 17:23:31 -0500 Subject: [PATCH 10/12] update so frontend can request ad --- .../main/java/adsjava/AdsJavaApplication.java | 30 ++++++++++++++++-- .../main/resources/static/{ => ads}/ad1.jpg | Bin .../main/resources/static/{ => ads}/ad2.jpg | Bin .../main/resources/static/{ => ads}/ad3.jpg | Bin .../main/resources/static/banner-list.json | 23 ++++++++++++++ 5 files changed, 51 insertions(+), 2 deletions(-) rename services/ads/java/src/main/resources/static/{ => ads}/ad1.jpg (100%) rename services/ads/java/src/main/resources/static/{ => ads}/ad2.jpg (100%) rename services/ads/java/src/main/resources/static/{ => ads}/ad3.jpg (100%) create mode 100644 services/ads/java/src/main/resources/static/banner-list.json diff --git a/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java b/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java index 3b726b29..8fc01749 100644 --- a/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java +++ b/services/ads/java/src/main/java/adsjava/AdsJavaApplication.java @@ -4,24 +4,28 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.http.MediaType; import org.springframework.util.StreamUtils; import java.io.*; import org.springframework.web.bind.annotation.ResponseBody; import org.apache.commons.io.IOUtils; import java.util.concurrent.ThreadLocalRandom; +import java.util.HashMap; +import org.springframework.web.bind.annotation.RequestParam; @SpringBootApplication @RestController public class AdsJavaApplication { + @CrossOrigin(origins = "http://localhost:3000") @RequestMapping( - value = "/banner", + value = "/banners/{id}", produces = MediaType.IMAGE_JPEG_VALUE ) public @ResponseBody byte[] getImageWithMediaType() throws IOException { int randomNum = ThreadLocalRandom.current().nextInt(1, 3 + 1); - String imagePath = "/static/ad" + randomNum + ".jpg"; + String imagePath = "/static/ads/ad" + randomNum + ".jpg"; InputStream in = getClass() .getResourceAsStream(imagePath); return IOUtils.toByteArray(in); @@ -32,6 +36,28 @@ public String home() { return "Hello from Advertisements (Java)"; } + @CrossOrigin(origins = "http://localhost:3000") + @RequestMapping( + value = "/ads", + produces = MediaType.APPLICATION_JSON_VALUE + ) + public HashMap[] ads() { + HashMap map1 = new HashMap<>(); + map1.put("id", "1"); + map1.put("path", "ad1.jpg"); + + HashMap map2 = new HashMap<>(); + map2.put("id", "2"); + map2.put("path", "ad2.jpg"); + + HashMap map3 = new HashMap<>(); + map3.put("id", "3"); + map3.put("path", "ad3.jpg"); + + HashMap[] myArr = { map1, map2, map3 }; + return myArr; + } + public static void main(String[] args) { SpringApplication.run(AdsJavaApplication.class, args); } diff --git a/services/ads/java/src/main/resources/static/ad1.jpg b/services/ads/java/src/main/resources/static/ads/ad1.jpg similarity index 100% rename from services/ads/java/src/main/resources/static/ad1.jpg rename to services/ads/java/src/main/resources/static/ads/ad1.jpg diff --git a/services/ads/java/src/main/resources/static/ad2.jpg b/services/ads/java/src/main/resources/static/ads/ad2.jpg similarity index 100% rename from services/ads/java/src/main/resources/static/ad2.jpg rename to services/ads/java/src/main/resources/static/ads/ad2.jpg diff --git a/services/ads/java/src/main/resources/static/ad3.jpg b/services/ads/java/src/main/resources/static/ads/ad3.jpg similarity index 100% rename from services/ads/java/src/main/resources/static/ad3.jpg rename to services/ads/java/src/main/resources/static/ads/ad3.jpg diff --git a/services/ads/java/src/main/resources/static/banner-list.json b/services/ads/java/src/main/resources/static/banner-list.json new file mode 100644 index 00000000..01fcc0c7 --- /dev/null +++ b/services/ads/java/src/main/resources/static/banner-list.json @@ -0,0 +1,23 @@ +[ + { + "id": 1, + "name": "Discount Clothing", + "path": "ad1.jpg", + "url": "/t/clothing", + "weight": 15.1 + }, + { + "id": 2, + "name": "Cool Hats", + "path": "ad2.jpg", + "url": "/products/datadog-ringer-t-shirt", + "weight": 300.1 + }, + { + "id": 3, + "name": "Nice Bags", + "path": "ad3.jpg", + "url": "/t/bags", + "weight": 5242.1 + } +] From 5ea5b0e6cf3b2fd051b472d2ef1859321ac49e82 Mon Sep 17 00:00:00 2001 From: Colin Cole Date: Tue, 29 Nov 2022 09:12:05 -0500 Subject: [PATCH 11/12] change service name --- docker-compose.yml | 6 ++++++ services/ads/java/Dockerfile | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 3a4813ae..abd59182 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -126,6 +126,12 @@ services: ads-java: build: context: ./services/ads/java + environment: + - DD_SERVICE=ads-java + - DD_AGENT_HOST=dd-agent + - DD_LOGS_INJECTION=true + - DD_TRACE_ANALYTICS_ENABLED=true + - DD_PROFILING_ENABLED=true ports: - "3030:8080" networks: diff --git a/services/ads/java/Dockerfile b/services/ads/java/Dockerfile index 76b1c71c..421ae0ea 100644 --- a/services/ads/java/Dockerfile +++ b/services/ads/java/Dockerfile @@ -23,4 +23,4 @@ COPY --from=TEMP_BUILD_IMAGE $APP_HOME/build/libs/$ARTIFACT_NAME . RUN wget -O dd-java-agent.jar 'https://dtdg.co/latest-java-tracer' -ENTRYPOINT exec java -javaagent:/usr/app/dd-java-agent.jar -Ddd.logs.injection=true -Ddd.service=ads -Ddd.env=dev -jar ${ARTIFACT_NAME} \ No newline at end of file +ENTRYPOINT exec java -javaagent:/usr/app/dd-java-agent.jar -Ddd.logs.injection=true -Ddd.service=ads-java -Ddd.env=dev -jar ${ARTIFACT_NAME} \ No newline at end of file From 6ab9c8ac1aa832c135a4f386189c08f6c35582e3 Mon Sep 17 00:00:00 2001 From: Colin Cole Date: Mon, 5 Dec 2022 11:38:20 -0500 Subject: [PATCH 12/12] update workflows --- .github/workflows/ads-java.yml | 50 ++++++++++++++++++++++++++++++++++ .github/workflows/release.yml | 1 + 2 files changed, 51 insertions(+) create mode 100644 .github/workflows/ads-java.yml diff --git a/.github/workflows/ads-java.yml b/.github/workflows/ads-java.yml new file mode 100644 index 00000000..03b31cc8 --- /dev/null +++ b/.github/workflows/ads-java.yml @@ -0,0 +1,50 @@ +name: Ads + +on: + push: + branches: [ main ] + paths: + - services/ads/java/** + workflow_dispatch: + branches: [ main ] + +defaults: + run: + working-directory: ads + +jobs: + + build: + + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-1 + + - name: Login to ECR + id: login-ecr + uses: docker/login-action@v1 + with: + registry: public.ecr.aws + username: ${{ secrets.AWS_ACCESS_KEY_ID }} + password: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + + - name: Build and push + uses: docker/build-push-action@v2 + with: + context: ./services/ads/java + platforms: linux/amd64 + push: true + tags: ${{ secrets.PUBLIC_ECR_REGISTRY }}/storedog/ads-java:latest + diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 963e4f61..81ea7819 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -39,6 +39,7 @@ jobs: ${{ secrets.PUBLIC_ECR_REGISTRY }}/storedog/backend ${{ secrets.PUBLIC_ECR_REGISTRY }}/storedog/discounts ${{ secrets.PUBLIC_ECR_REGISTRY }}/storedog/ads + ${{ secrets.PUBLIC_ECR_REGISTRY }}/storedog/ads-java ) for i in "${IMAGES[@]}"