diff --git a/.github/actions/package-lock.json b/.github/actions/package-lock.json new file mode 100644 index 000000000000..b4422cae17ce --- /dev/null +++ b/.github/actions/package-lock.json @@ -0,0 +1,801 @@ +{ + "name": "actions", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "octokit": "^2.1.0", + "ts-node": "^10.9.1" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@octokit/app": { + "version": "13.1.8", + "resolved": "https://registry.npmjs.org/@octokit/app/-/app-13.1.8.tgz", + "integrity": "sha512-bCncePMguVyFpdBbnceFKfmPOuUD94T189GuQ0l00ZcQ+mX4hyPqnaWJlsXE2HSdA71eV7p8GPDZ+ErplTkzow==", + "dependencies": { + "@octokit/auth-app": "^4.0.13", + "@octokit/auth-unauthenticated": "^3.0.0", + "@octokit/core": "^4.0.0", + "@octokit/oauth-app": "^4.0.7", + "@octokit/plugin-paginate-rest": "^6.0.0", + "@octokit/types": "^9.0.0", + "@octokit/webhooks": "^10.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/auth-app": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.13.tgz", + "integrity": "sha512-NBQkmR/Zsc+8fWcVIFrwDgNXS7f4XDrkd9LHdi9DPQw1NdGHLviLzRO2ZBwTtepnwHXW5VTrVU9eFGijMUqllg==", + "dependencies": { + "@octokit/auth-oauth-app": "^5.0.0", + "@octokit/auth-oauth-user": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "deprecation": "^2.3.1", + "lru-cache": "^9.0.0", + "universal-github-app-jwt": "^1.1.1", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/auth-oauth-app": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.6.tgz", + "integrity": "sha512-SxyfIBfeFcWd9Z/m1xa4LENTQ3l1y6Nrg31k2Dcb1jS5ov7pmwMJZ6OGX8q3K9slRgVpeAjNA1ipOAMHkieqyw==", + "dependencies": { + "@octokit/auth-oauth-device": "^4.0.0", + "@octokit/auth-oauth-user": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "@types/btoa-lite": "^1.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/auth-oauth-device": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.5.tgz", + "integrity": "sha512-XyhoWRTzf2ZX0aZ52a6Ew5S5VBAfwwx1QnC2Np6Et3MWQpZjlREIcbcvVZtkNuXp6Z9EeiSLSDUqm3C+aMEHzQ==", + "dependencies": { + "@octokit/oauth-methods": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/auth-oauth-user": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.2.tgz", + "integrity": "sha512-kkRqNmFe7s5GQcojE3nSlF+AzYPpPv7kvP/xYEnE57584pixaFBH8Vovt+w5Y3E4zWUEOxjdLItmBTFAWECPAg==", + "dependencies": { + "@octokit/auth-oauth-device": "^4.0.0", + "@octokit/oauth-methods": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/auth-token": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz", + "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/auth-unauthenticated": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.5.tgz", + "integrity": "sha512-yH2GPFcjrTvDWPwJWWCh0tPPtTL5SMgivgKPA+6v/XmYN6hGQkAto8JtZibSKOpf8ipmeYhLNWQ2UgW0GYILCw==", + "dependencies": { + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz", + "integrity": "sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==", + "dependencies": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/endpoint": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", + "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", + "dependencies": { + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/graphql": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz", + "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==", + "dependencies": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/oauth-app": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-4.2.4.tgz", + "integrity": "sha512-iuOVFrmm5ZKNavRtYu5bZTtmlKLc5uVgpqTfMEqYYf2OkieV6VdxKZAb5qLVdEPL8LU2lMWcGpavPBV835cgoA==", + "dependencies": { + "@octokit/auth-oauth-app": "^5.0.0", + "@octokit/auth-oauth-user": "^2.0.0", + "@octokit/auth-unauthenticated": "^3.0.0", + "@octokit/core": "^4.0.0", + "@octokit/oauth-authorization-url": "^5.0.0", + "@octokit/oauth-methods": "^2.0.0", + "@types/aws-lambda": "^8.10.83", + "fromentries": "^1.3.1", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/oauth-authorization-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz", + "integrity": "sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/oauth-methods": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.6.tgz", + "integrity": "sha512-l9Uml2iGN2aTWLZcm8hV+neBiFXAQ9+3sKiQe/sgumHlL6HDg0AQ8/l16xX/5jJvfxueqTW5CWbzd0MjnlfHZw==", + "dependencies": { + "@octokit/oauth-authorization-url": "^5.0.0", + "@octokit/request": "^6.2.3", + "@octokit/request-error": "^3.0.3", + "@octokit/types": "^9.0.0", + "btoa-lite": "^1.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz", + "integrity": "sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==", + "dependencies": { + "@octokit/tsconfig": "^1.0.2", + "@octokit/types": "^9.2.3" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=4" + } + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/tsconfig": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@octokit/tsconfig/-/tsconfig-1.0.2.tgz", + "integrity": "sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==" + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.2.3.tgz", + "integrity": "sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==", + "dependencies": { + "@octokit/types": "^10.0.0" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-10.0.0.tgz", + "integrity": "sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==", + "dependencies": { + "@octokit/openapi-types": "^18.0.0" + } + }, + "node_modules/@octokit/plugin-retry": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-4.1.6.tgz", + "integrity": "sha512-obkYzIgEC75r8+9Pnfiiqy3y/x1bc3QLE5B7qvv9wi9Kj0R5tGQFC6QMBg1154WQ9lAVypuQDGyp3hNpp15gQQ==", + "dependencies": { + "@octokit/types": "^9.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-throttling": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-5.2.3.tgz", + "integrity": "sha512-C9CFg9mrf6cugneKiaI841iG8DOv6P5XXkjmiNNut+swePxQ7RWEdAZRp5rJoE1hjsIqiYcKa/ZkOQ+ujPI39Q==", + "dependencies": { + "@octokit/types": "^9.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": "^4.0.0" + } + }, + "node_modules/@octokit/request": { + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", + "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", + "dependencies": { + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/request-error": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", + "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", + "dependencies": { + "@octokit/types": "^9.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/types": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", + "dependencies": { + "@octokit/openapi-types": "^18.0.0" + } + }, + "node_modules/@octokit/webhooks": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-10.9.1.tgz", + "integrity": "sha512-5NXU4VfsNOo2VSU/SrLrpPH2Z1ZVDOWFcET4EpnEBX1uh/v8Uz65UVuHIRx5TZiXhnWyRE9AO1PXHa+M/iWwZA==", + "dependencies": { + "@octokit/request-error": "^3.0.0", + "@octokit/webhooks-methods": "^3.0.0", + "@octokit/webhooks-types": "6.11.0", + "aggregate-error": "^3.1.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/webhooks-methods": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-3.0.3.tgz", + "integrity": "sha512-2vM+DCNTJ5vL62O5LagMru6XnYhV4fJslK+5YUkTa6rWlW2S+Tqs1lF9Wr9OGqHfVwpBj3TeztWfVON/eUoW1Q==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/webhooks-types": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-6.11.0.tgz", + "integrity": "sha512-AanzbulOHljrku1NGfafxdpTCfw2ENaWzH01N2vqQM+cUFbk868Cgh0xylz0JIM9BoKbfI++bdD6EYX0Q/UTEw==" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" + }, + "node_modules/@types/aws-lambda": { + "version": "8.10.119", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.119.tgz", + "integrity": "sha512-Vqm22aZrCvCd6I5g1SvpW151jfqwTzEZ7XJ3yZ6xaZG31nUEOEyzzVImjRcsN8Wi/QyPxId/x8GTtgIbsy8kEw==" + }, + "node_modules/@types/btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==" + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.3.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", + "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==" + }, + "node_modules/acorn": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", + "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" + }, + "node_modules/btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==" + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", + "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "dependencies": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lru-cache": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", + "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/octokit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.1.0.tgz", + "integrity": "sha512-Pxi6uKTjBRZWgAwsw1NgHdRlL+QASCN35OYS7X79o7PtBME0CLXEroZmPtEwlWZbPTP+iDbEy2wCbSOgm0uGIQ==", + "dependencies": { + "@octokit/app": "^13.1.5", + "@octokit/core": "^4.2.1", + "@octokit/oauth-app": "^4.2.1", + "@octokit/plugin-paginate-rest": "^6.1.0", + "@octokit/plugin-rest-endpoint-methods": "^7.1.1", + "@octokit/plugin-retry": "^4.1.3", + "@octokit/plugin-throttling": "^5.2.2", + "@octokit/request-error": "^v3.0.3", + "@octokit/types": "^9.2.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/typescript": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/universal-github-app-jwt": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.1.tgz", + "integrity": "sha512-G33RTLrIBMFmlDV4u4CBF7dh71eWwykck4XgaxaIVeZKOYZRAAxvcGMRFTUclVY6xoUPQvO4Ne5wKGxYm/Yy9w==", + "dependencies": { + "@types/jsonwebtoken": "^9.0.0", + "jsonwebtoken": "^9.0.0" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "engines": { + "node": ">=6" + } + } + } +} diff --git a/.github/actions/package.json b/.github/actions/package.json new file mode 100644 index 000000000000..b22f50e38546 --- /dev/null +++ b/.github/actions/package.json @@ -0,0 +1,9 @@ +{ + "scripts": { + "post-release": "ts-node post-release.ts" + }, + "dependencies": { + "octokit": "^2.1.0", + "ts-node": "^10.9.1" + } +} diff --git a/.github/actions/post-release.ts b/.github/actions/post-release.ts new file mode 100644 index 000000000000..e29cdeffe9b1 --- /dev/null +++ b/.github/actions/post-release.ts @@ -0,0 +1,79 @@ +import { Octokit } from 'octokit'; + +// A GitHub access token that has the write permission for both Armeria and Central Dogma is required. +const octokit = new Octokit({ auth: process.env.GITHUB_ACCESS_TOKEN }); + +main(); + +/** + * Perform post-release process. + * - Close milestone. + * - Write release notes. + * - Create a pull request to Central Dogma for updating Armeria version. + */ +async function main(): Promise { + const tag: string = process.argv.slice(2).shift(); + const releaseVersion = tag.replace("armeria-", ""); + const owner = 'line'; + const repo = 'armeria'; + const milestoneId = await getMilestoneId(owner, repo, releaseVersion); + + // Close the milestone + console.log(`🎯 Closing milestone #${milestoneId}...`); + await octokit.rest.issues.updateMilestone({ + owner, + repo, + milestone_number: milestoneId, + due_on: new Date().toISOString(), + state: "closed" + }) + console.log(`🎯 https://github.com/line/armeria/milestone/${milestoneId} has been closed.`) + + // Create a new release + console.log(`📝 Creating release notes ...`); + await octokit.rest.repos.createRelease({ + owner, + repo, + name: tag, + tag_name: tag, + body: `See [the release notes](https://armeria.dev/release-notes/${releaseVersion}/) for the complete change list.` + + }); + console.log(`📝 https://github.com/line/armeria/releases/tag/${tag} has been updated.`) + + // Trigger Central Dogma workflow to upgrade Armeria version + console.log(`⛓️ Triggering 'update-armeria-version' workflow in Central Dogma repository...`); + await octokit.rest.actions.createWorkflowDispatch({ + owner: owner, + repo: 'centraldogma', + workflow_id: 'update-armeria-version.yml', + ref: 'main', + inputs: { + armeria_version: releaseVersion + }, + }) + console.log("⛓️ https://github.com/line/centraldogma/actions/workflows/update-armeria-version.yml has been triggered.") +} + +/** + * Converts a version into a milestone number in GitHub. + */ +async function getMilestoneId(owner: string, repo: string, version: string): Promise { + const response = await octokit.request( + 'GET /repos/{owner}/{repo}/milestones', + { + owner, + repo, + direction: 'desc', + per_page: 100, + state: 'open', + }, + ); + const found = response.data.find((milestone: any) => milestone.title === version); + if (!found) { + throw new Error( + `Failed to find a milestone from the given version: ${version}.`, + ); + } + return found.number; +} diff --git a/.github/actions/tsconfig.json b/.github/actions/tsconfig.json new file mode 100644 index 000000000000..3afd6fe1c3ae --- /dev/null +++ b/.github/actions/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es2020", + }, + "include": [ + "./*" + ] +} diff --git a/.github/workflows/actions_build.yml b/.github/workflows/actions_build.yml index a5d31e87c860..6ce0d88f8cf4 100644 --- a/.github/workflows/actions_build.yml +++ b/.github/workflows/actions_build.yml @@ -99,6 +99,7 @@ jobs: ${{ matrix.blockhound && '-Pblockhound' || '' }} \ -PnoLint \ -PflakyTests=false \ + -Pretry=true \ -PbuildJdkVersion=${{ env.BUILD_JDK_VERSION }} \ -PtestJavaVersion=${{ matrix.java }} \ ${{ matrix.min-java && format('-PminimumJavaVersion={0}', matrix.min-java) || '' }} \ @@ -252,7 +253,8 @@ jobs: - name: Run flaky tests run: | - ./gradlew --no-daemon --stacktrace --max-workers=2 --parallel check -PnoLint -PflakyTests=true \ + ./gradlew --no-daemon --stacktrace --max-workers=2 --parallel check \ + -PnoLint -PflakyTests=true -Pretry=true \ -PbuildJdkVersion=${{ env.BUILD_JDK_VERSION }} \ -PtestJavaVersion=${{ env.BUILD_JDK_VERSION }} \ -Porg.gradle.java.installations.paths=${{ steps.setup-build-jdk.outputs.path }} diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 163f4d81e19d..d3806b5b4e6f 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -43,3 +43,14 @@ jobs: ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GPG_PRIVATE_KEY }} ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.GPG_PASSWORD }} shell: bash + + - name: Setup Node.js + uses: actions/setup-node@v3 + + - name: Perform post-release process + working-directory: .github/actions + run: | + npm install + npm run post-release ${{ github.ref_name }} + env: + GITHUB_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }} diff --git a/.post-release-msg b/.post-release-msg index d93030217fed..1c510ee8afd1 100644 --- a/.post-release-msg +++ b/.post-release-msg @@ -5,15 +5,7 @@ - Maven Central: https://repo.maven.apache.org/maven2/com/linecorp/armeria/armeria-bom/${releaseVersion}/ - Site job: https://github.com/line/armeria/actions/workflows/publish-site.yml -2. Close the milestone and set its due date with the date of the release at: - - https://github.com/line/armeria/milestones - -3. Update the release note at: - - https://github.com/line/armeria/releases/tag/${tag} - -4. Copy the examples to armeria-examples using the script: +2. Copy the examples to armeria-examples using the script: cd ../armeria-examples && \ ./update-examples.sh ${releaseVersion} ../upstream-armeria && \ @@ -21,7 +13,7 @@ git commit -m 'Update Armeria to ${releaseVersion}' && \ git push -5. Announce the release via Twitter. +3. Announce the release via Twitter. -6. Send an update pull request to https://github.com/TechEmpower/FrameworkBenchmarks +4. Send an update pull request to https://github.com/TechEmpower/FrameworkBenchmarks if we made performance improvements. diff --git a/annotation-processor/src/test/java/com/linecorp/armeria/server/annotation/processor/DocumentationProcessorTest.java b/annotation-processor/src/test/java/com/linecorp/armeria/server/annotation/processor/DocumentationProcessorTest.java index d5af7e1680dc..d6c9bec71a80 100644 --- a/annotation-processor/src/test/java/com/linecorp/armeria/server/annotation/processor/DocumentationProcessorTest.java +++ b/annotation-processor/src/test/java/com/linecorp/armeria/server/annotation/processor/DocumentationProcessorTest.java @@ -100,7 +100,7 @@ private String loadFile(String fileName) throws IOException { try (Reader reader = new InputStreamReader( this.getClass() .getClassLoader() - .getResourceAsStream("DocumentationProcessor/" + fileName))) { + .getResourceAsStream("testing/DocumentationProcessor/" + fileName))) { return CharStreams.toString(reader); } } diff --git a/annotation-processor/src/test/resources/DocumentationProcessor/NoJavaDoc.java.txt b/annotation-processor/src/test/resources/testing/DocumentationProcessor/NoJavaDoc.java.txt similarity index 100% rename from annotation-processor/src/test/resources/DocumentationProcessor/NoJavaDoc.java.txt rename to annotation-processor/src/test/resources/testing/DocumentationProcessor/NoJavaDoc.java.txt diff --git a/annotation-processor/src/test/resources/DocumentationProcessor/WithJavaDoc.java.txt b/annotation-processor/src/test/resources/testing/DocumentationProcessor/WithJavaDoc.java.txt similarity index 100% rename from annotation-processor/src/test/resources/DocumentationProcessor/WithJavaDoc.java.txt rename to annotation-processor/src/test/resources/testing/DocumentationProcessor/WithJavaDoc.java.txt diff --git a/brave/src/test/java/com/linecorp/armeria/client/brave/BraveClientTest.java b/brave/src/test/java/com/linecorp/armeria/client/brave/BraveClientTest.java index 7160052ad9b9..45bd783021a6 100644 --- a/brave/src/test/java/com/linecorp/armeria/client/brave/BraveClientTest.java +++ b/brave/src/test/java/com/linecorp/armeria/client/brave/BraveClientTest.java @@ -50,9 +50,8 @@ import com.linecorp.armeria.common.RpcResponse; import com.linecorp.armeria.common.SessionProtocol; import com.linecorp.armeria.common.annotation.Nullable; -import com.linecorp.armeria.common.brave.HelloService; import com.linecorp.armeria.common.brave.RequestContextCurrentTraceContext; -import com.linecorp.armeria.common.brave.SpanCollector; +import com.linecorp.armeria.common.brave.TestSpanCollector; import com.linecorp.armeria.common.logging.RequestLog; import com.linecorp.armeria.common.util.SafeCloseable; @@ -63,6 +62,7 @@ import brave.propagation.CurrentTraceContext; import brave.propagation.CurrentTraceContext.ScopeDecorator; import brave.sampler.Sampler; +import testing.brave.TestService; class BraveClientTest { @@ -90,7 +90,7 @@ void newDecorator_shouldWorkWhenRequestContextCurrentTraceContextConfigured() { @Test void shouldSubmitSpanWhenSampled() throws Exception { - final SpanCollector collector = new SpanCollector(); + final TestSpanCollector collector = new TestSpanCollector(); final Tracing tracing = Tracing.newBuilder() .localServiceName(TEST_SERVICE) @@ -129,7 +129,7 @@ void shouldSubmitSpanWhenSampled() throws Exception { @Test void shouldSubmitSpanWithCustomRemoteName() throws Exception { - final SpanCollector collector = new SpanCollector(); + final TestSpanCollector collector = new TestSpanCollector(); final Tracing tracing = Tracing.newBuilder() .localServiceName(TEST_SERVICE) @@ -158,7 +158,7 @@ void shouldSubmitSpanWithCustomRemoteName() throws Exception { @Test void scopeDecorator() throws Exception { - final SpanCollector collector = new SpanCollector(); + final TestSpanCollector collector = new TestSpanCollector(); final AtomicInteger scopeDecoratorCallingCounter = new AtomicInteger(); final ScopeDecorator scopeDecorator = (currentSpan, scope) -> { scopeDecoratorCallingCounter.getAndIncrement(); @@ -191,7 +191,7 @@ void scopeDecorator() throws Exception { @Test void shouldNotSubmitSpanWhenNotSampled() throws Exception { - final SpanCollector collector = new SpanCollector(); + final TestSpanCollector collector = new TestSpanCollector(); final Tracing tracing = Tracing.newBuilder() .localServiceName(TEST_SERVICE) .addSpanHandler(collector) @@ -204,7 +204,7 @@ void shouldNotSubmitSpanWhenNotSampled() throws Exception { @Test void testEmptyEndpointTags() { - final SpanCollector collector = new SpanCollector(); + final TestSpanCollector collector = new TestSpanCollector(); final Tracing tracing = Tracing.newBuilder() .addSpanHandler(collector) .currentTraceContext(RequestContextCurrentTraceContext.ofDefault()) @@ -238,7 +238,7 @@ private static RequestLog testRemoteInvocation(Tracing tracing, @Nullable String final HttpRequest req = HttpRequest.of(RequestHeaders.of(HttpMethod.POST, "/hello/armeria", HttpHeaderNames.SCHEME, "http", HttpHeaderNames.AUTHORITY, "foo.com")); - final RpcRequest rpcReq = RpcRequest.of(HelloService.Iface.class, "hello", "Armeria"); + final RpcRequest rpcReq = RpcRequest.of(TestService.Iface.class, "hello", "Armeria"); final HttpResponse res = HttpResponse.of(HttpStatus.OK); final RpcResponse rpcRes = RpcResponse.of("Hello, Armeria!"); final ClientRequestContext ctx = ClientRequestContext.builder(req).build(); diff --git a/brave/src/test/java/com/linecorp/armeria/common/brave/SpanCollector.java b/brave/src/test/java/com/linecorp/armeria/common/brave/TestSpanCollector.java similarity index 95% rename from brave/src/test/java/com/linecorp/armeria/common/brave/SpanCollector.java rename to brave/src/test/java/com/linecorp/armeria/common/brave/TestSpanCollector.java index f2dcc13a86c0..022c2c6d785f 100644 --- a/brave/src/test/java/com/linecorp/armeria/common/brave/SpanCollector.java +++ b/brave/src/test/java/com/linecorp/armeria/common/brave/TestSpanCollector.java @@ -23,7 +23,7 @@ import brave.handler.SpanHandler; import brave.propagation.TraceContext; -public final class SpanCollector extends SpanHandler { +public final class TestSpanCollector extends SpanHandler { private final BlockingQueue spans = new LinkedTransferQueue<>(); diff --git a/brave/src/test/java/com/linecorp/armeria/it/brave/BraveIntegrationTest.java b/brave/src/test/java/com/linecorp/armeria/it/brave/BraveIntegrationTest.java index d9183a618672..f30e54d07362 100644 --- a/brave/src/test/java/com/linecorp/armeria/it/brave/BraveIntegrationTest.java +++ b/brave/src/test/java/com/linecorp/armeria/it/brave/BraveIntegrationTest.java @@ -61,8 +61,6 @@ import com.linecorp.armeria.common.HttpStatus; import com.linecorp.armeria.common.MediaType; import com.linecorp.armeria.common.RequestContext; -import com.linecorp.armeria.common.brave.HelloService; -import com.linecorp.armeria.common.brave.HelloService.AsyncIface; import com.linecorp.armeria.common.brave.RequestContextCurrentTraceContext; import com.linecorp.armeria.common.thrift.ThriftFuture; import com.linecorp.armeria.common.util.ThreadFactories; @@ -85,19 +83,21 @@ import brave.propagation.StrictScopeDecorator; import brave.propagation.TraceContext; import brave.sampler.Sampler; +import testing.brave.TestService; +import testing.brave.TestService.AsyncIface; class BraveIntegrationTest { private static final SpanHandlerImpl spanHandler = new SpanHandlerImpl(); - private static HelloService.Iface fooClient; - private static HelloService.Iface fooClientWithoutTracing; - private static HelloService.Iface timeoutClient; - private static HelloService.Iface timeoutClientClientTimesOut; - private static HelloService.Iface http1TimeoutClientClientTimesOut; - private static HelloService.AsyncIface barClient; - private static HelloService.AsyncIface quxClient; - private static HelloService.Iface zipClient; + private static TestService.Iface fooClient; + private static TestService.Iface fooClientWithoutTracing; + private static TestService.Iface timeoutClient; + private static TestService.Iface timeoutClientClientTimesOut; + private static TestService.Iface http1TimeoutClientClientTimesOut; + private static TestService.AsyncIface barClient; + private static TestService.AsyncIface quxClient; + private static TestService.Iface zipClient; private static WebClient poolWebClient; @RegisterExtension @@ -203,31 +203,31 @@ void setupClients() { fooClient = ThriftClients.builder(server.httpUri()) .path("/foo") .decorator(BraveClient.newDecorator(newTracing("client/foo"))) - .build(HelloService.Iface.class); + .build(TestService.Iface.class); zipClient = ThriftClients.builder(server.httpUri()) .path("/zip") .decorator(BraveClient.newDecorator(newTracing("client/zip"))) - .build(HelloService.Iface.class); - fooClientWithoutTracing = ThriftClients.newClient(server.httpUri() + "/foo", HelloService.Iface.class); + .build(TestService.Iface.class); + fooClientWithoutTracing = ThriftClients.newClient(server.httpUri() + "/foo", TestService.Iface.class); barClient = newClient("/bar"); quxClient = newClient("/qux"); poolWebClient = WebClient.of(server.httpUri()); timeoutClient = ThriftClients.builder(server.httpUri()) .path("/timeout") .decorator(BraveClient.newDecorator(newTracing("client/timeout"))) - .build(HelloService.Iface.class); + .build(TestService.Iface.class); timeoutClientClientTimesOut = ThriftClients.builder(server.httpUri()) .path("/timeout") .decorator(BraveClient.newDecorator(newTracing("client/timeout"))) .responseTimeout(Duration.ofSeconds(3)) - .build(HelloService.Iface.class); + .build(TestService.Iface.class); http1TimeoutClientClientTimesOut = ThriftClients.builder(server.uri(H1C)) .path("/timeout") .decorator(BraveClient.newDecorator(newTracing("client/timeout"))) .responseTimeout(Duration.ofSeconds(3)) - .build(HelloService.Iface.class); + .build(TestService.Iface.class); } @AfterEach @@ -244,11 +244,11 @@ private static BraveService decorate(String name, HttpService service) { return BraveService.newDecorator(newTracing(name)).apply(service); } - private static HelloService.AsyncIface newClient(String path) { + private static TestService.AsyncIface newClient(String path) { return ThriftClients.builder(server.httpUri()) .path(path) .decorator(BraveClient.newDecorator(newTracing("client" + path))) - .build(HelloService.AsyncIface.class); + .build(TestService.AsyncIface.class); } private static Tracing newTracing(String name) { @@ -473,7 +473,7 @@ void testHttp1ClientTimesOut() throws Exception { testClientTimesOut(http1TimeoutClientClientTimesOut); } - private static void testClientTimesOut(HelloService.Iface client) { + private static void testClientTimesOut(TestService.Iface client) { assertThatThrownBy(() -> client.hello("name")) .isInstanceOf(TTransportException.class) .hasCauseInstanceOf(ResponseTimeoutException.class); diff --git a/brave/src/test/java/com/linecorp/armeria/server/brave/BraveServiceTest.java b/brave/src/test/java/com/linecorp/armeria/server/brave/BraveServiceTest.java index c572e0503445..4fae2e0070c4 100644 --- a/brave/src/test/java/com/linecorp/armeria/server/brave/BraveServiceTest.java +++ b/brave/src/test/java/com/linecorp/armeria/server/brave/BraveServiceTest.java @@ -42,9 +42,8 @@ import com.linecorp.armeria.common.ResponseHeaders; import com.linecorp.armeria.common.RpcRequest; import com.linecorp.armeria.common.RpcResponse; -import com.linecorp.armeria.common.brave.HelloService; import com.linecorp.armeria.common.brave.RequestContextCurrentTraceContext; -import com.linecorp.armeria.common.brave.SpanCollector; +import com.linecorp.armeria.common.brave.TestSpanCollector; import com.linecorp.armeria.common.logging.RequestLog; import com.linecorp.armeria.common.logging.RequestLogBuilder; import com.linecorp.armeria.common.util.SafeCloseable; @@ -61,6 +60,7 @@ import brave.propagation.CurrentTraceContext; import brave.propagation.CurrentTraceContext.ScopeDecorator; import brave.sampler.Sampler; +import testing.brave.TestService; class BraveServiceTest { @@ -93,7 +93,7 @@ void newDecorator_shouldWorkWhenRequestContextCurrentTraceContextConfigured() { @Test void shouldSubmitSpanWhenRequestIsSampled() throws Exception { - final SpanCollector collector = new SpanCollector(); + final TestSpanCollector collector = new TestSpanCollector(); final RequestLog requestLog = testServiceInvocation(collector, RequestContextCurrentTraceContext.ofDefault(), 1.0f); @@ -124,7 +124,7 @@ void shouldSubmitSpanWhenRequestIsSampled() throws Exception { @Test void shouldNotSubmitSpanWhenRequestIsNotSampled() throws Exception { - final SpanCollector collector = new SpanCollector(); + final TestSpanCollector collector = new TestSpanCollector(); testServiceInvocation(collector, RequestContextCurrentTraceContext.ofDefault(), 0.0f); // don't submit any spans @@ -142,7 +142,7 @@ void scopeDecorator() throws Exception { RequestContextCurrentTraceContext.builder() .addScopeDecorator(scopeDecorator) .build(); - final SpanCollector collector = new SpanCollector(); + final TestSpanCollector collector = new TestSpanCollector(); testServiceInvocation(collector, traceContext, 1.0f); // check span name @@ -159,7 +159,7 @@ void scopeDecorator() throws Exception { @Test void transientService() throws Exception { - final SpanCollector collector = new SpanCollector(); + final TestSpanCollector collector = new TestSpanCollector(); final Tracing tracing = Tracing.newBuilder() .localServiceName(TEST_SERVICE) .addSpanHandler(collector) @@ -221,7 +221,7 @@ private static RequestLog testServiceInvocation(SpanHandler spanHandler, HttpHeaderNames.SCHEME, "http", HttpHeaderNames.AUTHORITY, "foo.com")); final ServiceRequestContext ctx = ServiceRequestContext.builder(req).build(); - final RpcRequest rpcReq = RpcRequest.of(HelloService.Iface.class, "hello", "trustin"); + final RpcRequest rpcReq = RpcRequest.of(TestService.Iface.class, "hello", "trustin"); final HttpResponse res = HttpResponse.of(HttpStatus.OK); final RpcResponse rpcRes = RpcResponse.of("Hello, trustin!"); final RequestLogBuilder logBuilder = ctx.logBuilder(); diff --git a/brave/src/test/thrift/HelloService.thrift b/brave/src/test/thrift/HelloService.thrift index cf37c795dfc9..cd54f9164a96 100644 --- a/brave/src/test/thrift/HelloService.thrift +++ b/brave/src/test/thrift/HelloService.thrift @@ -1,5 +1,5 @@ -namespace java com.linecorp.armeria.common.brave +namespace java testing.brave -service HelloService { +service TestService { string hello(1:string name) } diff --git a/build.gradle b/build.gradle index 0dd72d474193..34b48d76893c 100644 --- a/build.gradle +++ b/build.gradle @@ -72,7 +72,7 @@ allprojects { // Drop heap dump and exit on OOME. jvmArgs '-XX:+ExitOnOutOfMemoryError' jvmArgs '-XX:+HeapDumpOnOutOfMemoryError' - jvmArgs "-XX:HeapDumpPath=${rootProject.buildDir}" + jvmArgs "-XX:HeapDumpPath=./build" // `-Djava.security.manager` was added in Java 17 and the default value was changed to // `disallow` in Java 18. @@ -91,7 +91,7 @@ allprojects { systemProperty 'com.linecorp.armeria.verboseExceptions', 'true' systemProperty 'com.linecorp.armeria.verboseResponses', 'true' - systemProperty 'com.linecorp.armeria.blockhound.reportFile', "${project.buildDir}/blockhound.log" + systemProperty 'com.linecorp.armeria.blockhound.reportFile', "./build/blockhound.log" // Pass special system property to tell our tests that we are measuring coverage. if (project.hasFlags('coverage')) { @@ -112,6 +112,13 @@ allprojects { } }) } + + retry { + if (rootProject.findProperty('retry') == 'true') { + maxRetries = 3 + failOnPassedAfterRetry = true + } + } } } diff --git a/core/src/main/java/com/linecorp/armeria/client/HttpClientPipelineConfigurator.java b/core/src/main/java/com/linecorp/armeria/client/HttpClientPipelineConfigurator.java index 7c8bd297155a..5e6b8f9c988a 100644 --- a/core/src/main/java/com/linecorp/armeria/client/HttpClientPipelineConfigurator.java +++ b/core/src/main/java/com/linecorp/armeria/client/HttpClientPipelineConfigurator.java @@ -222,7 +222,8 @@ private void configureAsHttps(Channel ch, SocketAddress remoteAddr) { p.addLast(configureSslHandler(sslHandler)); p.addLast(TrafficLoggingHandler.CLIENT); p.addLast(new ChannelInboundHandlerAdapter() { - private boolean handshakeFailed; + @Nullable + private Boolean handshakeFailed; @Override public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { @@ -232,9 +233,9 @@ public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exc } final SslHandshakeCompletionEvent handshakeEvent = (SslHandshakeCompletionEvent) evt; - if (!handshakeEvent.isSuccess()) { + handshakeFailed = !handshakeEvent.isSuccess(); + if (handshakeFailed) { // The connection will be closed automatically by SslHandler. - handshakeFailed = true; return; } @@ -281,6 +282,19 @@ public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exc @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { + if (handshakeFailed == null) { + // An exception was raised before the handshake event was completed. + // A legacy HTTPS server such as Microsoft-IIS/8.5 may reset the connection + // if no cipher suites in common. + final String tlsVersion = sslHandler.engine().getSession().getProtocol(); + final IllegalStateException maybeHandshakeException = new IllegalStateException( + "An unexpected exception during TLS handshake. " + + "Possible reasons: no cipher suites in common, unsupported TLS version, etc. " + + "(TLS version: " + tlsVersion + ", cipher suites: " + sslCtx.cipherSuites() + ')', + cause); + HttpSessionHandler.setPendingException(ctx, maybeHandshakeException); + return; + } if (handshakeFailed && cause instanceof DecoderException && cause.getCause() instanceof SSLException) { diff --git a/core/src/main/java/com/linecorp/armeria/client/HttpSessionHandler.java b/core/src/main/java/com/linecorp/armeria/client/HttpSessionHandler.java index 0effc59c9f6f..b1b4562da222 100644 --- a/core/src/main/java/com/linecorp/armeria/client/HttpSessionHandler.java +++ b/core/src/main/java/com/linecorp/armeria/client/HttpSessionHandler.java @@ -64,8 +64,7 @@ import io.netty.handler.codec.http2.Http2Settings; import io.netty.handler.proxy.ProxyConnectException; import io.netty.handler.proxy.ProxyConnectionEvent; -import io.netty.handler.ssl.SslCloseCompletionEvent; -import io.netty.handler.ssl.SslHandshakeCompletionEvent; +import io.netty.handler.ssl.SslCompletionEvent; import io.netty.util.AttributeKey; import io.netty.util.ReferenceCountUtil; import io.netty.util.concurrent.Promise; @@ -411,9 +410,26 @@ public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exc return; } + if (evt instanceof SslCompletionEvent) { + final SslCompletionEvent sslCompletionEvent = (SslCompletionEvent) evt; + if (sslCompletionEvent.isSuccess()) { + // Expected event + } else { + Throwable handshakeException = sslCompletionEvent.cause(); + final Throwable pendingException = getPendingException(ctx); + if (pendingException != null && handshakeException != pendingException) { + // Use pendingException as the primary cause. + pendingException.addSuppressed(handshakeException); + handshakeException = pendingException; + } + sessionTimeoutFuture.cancel(false); + sessionPromise.tryFailure(handshakeException); + ctx.close(); + } + return; + } + if (evt instanceof Http2ConnectionPrefaceAndSettingsFrameWrittenEvent || - evt instanceof SslHandshakeCompletionEvent || - evt instanceof SslCloseCompletionEvent || evt instanceof ChannelInputShutdownReadComplete) { // Expected events return; @@ -456,7 +472,7 @@ public void channelInactive(ChannelHandlerContext ctx) throws Exception { final HttpResponseDecoder responseDecoder = this.responseDecoder; final Throwable pendingException; if (responseDecoder != null && responseDecoder.hasUnfinishedResponses()) { - pendingException = getPendingException(ctx); + pendingException = maybeGetPendingException(ctx); responseDecoder.failUnfinishedResponses(pendingException); } else { pendingException = null; @@ -467,7 +483,7 @@ public void channelInactive(ChannelHandlerContext ctx) throws Exception { sessionTimeoutFuture.cancel(false); if (!sessionPromise.isDone()) { sessionPromise.tryFailure(pendingException != null ? pendingException - : getPendingException(ctx)); + : maybeGetPendingException(ctx)); } } } @@ -489,12 +505,21 @@ public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws E } } + private static Throwable maybeGetPendingException(ChannelHandlerContext ctx) { + final Throwable pendingException = getPendingException(ctx); + if (pendingException != null) { + return pendingException; + } + return ClosedSessionException.get(); + } + + @Nullable private static Throwable getPendingException(ChannelHandlerContext ctx) { if (ctx.channel().hasAttr(PENDING_EXCEPTION)) { return ctx.channel().attr(PENDING_EXCEPTION).get(); } - return ClosedSessionException.get(); + return null; } static void setPendingException(ChannelHandlerContext ctx, Throwable cause) { diff --git a/core/src/main/java/com/linecorp/armeria/common/DeferredHttpResponse.java b/core/src/main/java/com/linecorp/armeria/common/DeferredHttpResponse.java index b98b99d489cf..4c3b7dbbfbcd 100644 --- a/core/src/main/java/com/linecorp/armeria/common/DeferredHttpResponse.java +++ b/core/src/main/java/com/linecorp/armeria/common/DeferredHttpResponse.java @@ -16,14 +16,10 @@ package com.linecorp.armeria.common; -import static java.util.Objects.requireNonNull; - import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; -import com.linecorp.armeria.common.annotation.Nullable; import com.linecorp.armeria.common.stream.DeferredStreamMessage; -import com.linecorp.armeria.common.util.Exceptions; import io.netty.util.concurrent.EventExecutor; @@ -33,15 +29,10 @@ */ final class DeferredHttpResponse extends DeferredStreamMessage implements HttpResponse { - @Nullable - private final EventExecutor executor; - - DeferredHttpResponse() { - executor = null; - } + DeferredHttpResponse() {} DeferredHttpResponse(EventExecutor executor) { - this.executor = executor; + super(executor); } void delegate(HttpResponse delegate) { @@ -49,25 +40,7 @@ void delegate(HttpResponse delegate) { } void delegateWhenComplete(CompletionStage stage) { - requireNonNull(stage, "stage"); - stage.handle((delegate, thrown) -> { - if (thrown != null) { - close(Exceptions.peel(thrown)); - } else if (delegate == null) { - close(new NullPointerException("delegate stage produced a null response: " + stage)); - } else { - delegate(delegate); - } - return null; - }); - } - - @Override - public EventExecutor defaultSubscriberExecutor() { - if (executor != null) { - return executor; - } - return super.defaultSubscriberExecutor(); + delegateWhenCompleteStage(stage); } @SuppressWarnings("unchecked") diff --git a/core/src/main/java/com/linecorp/armeria/common/HttpRequest.java b/core/src/main/java/com/linecorp/armeria/common/HttpRequest.java index ae619ca3361d..72de35fef455 100644 --- a/core/src/main/java/com/linecorp/armeria/common/HttpRequest.java +++ b/core/src/main/java/com/linecorp/armeria/common/HttpRequest.java @@ -26,6 +26,7 @@ import java.util.Locale; import java.util.Locale.LanguageRange; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; import java.util.function.Consumer; import java.util.function.Function; @@ -46,6 +47,7 @@ import com.linecorp.armeria.common.annotation.UnstableApi; import com.linecorp.armeria.common.stream.PublisherBasedStreamMessage; import com.linecorp.armeria.common.stream.StreamMessage; +import com.linecorp.armeria.common.stream.SubscriptionOption; import com.linecorp.armeria.internal.common.DefaultHttpRequest; import com.linecorp.armeria.internal.common.DefaultSplitHttpRequest; import com.linecorp.armeria.unsafe.PooledObjects; @@ -280,6 +282,41 @@ static HttpRequest of(RequestHeaders headers, Publisher pu } } + /** + * Creates a new HTTP request whose {@link Publisher} is produced by the specified + * {@link CompletionStage}. If the specified {@link CompletionStage} fails, the returned request will be + * closed with the same cause as well. + * + * @param stage the {@link CompletionStage} which will produce the actual data and trailers + */ + @UnstableApi + static HttpRequest of(RequestHeaders headers, + CompletionStage> stage) { + requireNonNull(headers, "headers"); + requireNonNull(stage, "stage"); + return of(headers, StreamMessage.of(stage)); + } + + /** + * Creates a new HTTP request whose {@link Publisher} is produced by the specified + * {@link CompletionStage}. If the specified {@link CompletionStage} fails, the returned request will be + * closed with the same cause as well. + * + * @param stage the {@link CompletionStage} which will produce the actual data and trailers + * @param subscriberExecutor the {@link EventExecutor} which will be used when a user subscribes + * the returned {@link HttpRequest} using {@link #subscribe(Subscriber)} + * or {@link #subscribe(Subscriber, SubscriptionOption...)}. + */ + @UnstableApi + static HttpRequest of(RequestHeaders headers, + CompletionStage> stage, + EventExecutor subscriberExecutor) { + requireNonNull(headers, "headers"); + requireNonNull(stage, "stage"); + requireNonNull(subscriberExecutor, "subscriberExecutor"); + return of(headers, StreamMessage.of(stage, subscriberExecutor)); + } + /** * Returns a new {@link HttpRequestBuilder}. */ diff --git a/core/src/main/java/com/linecorp/armeria/common/HttpResponse.java b/core/src/main/java/com/linecorp/armeria/common/HttpResponse.java index 1234c1222d32..558370911aac 100644 --- a/core/src/main/java/com/linecorp/armeria/common/HttpResponse.java +++ b/core/src/main/java/com/linecorp/armeria/common/HttpResponse.java @@ -17,6 +17,7 @@ package com.linecorp.armeria.common; import static com.google.common.base.Preconditions.checkArgument; +import static com.linecorp.armeria.common.HttpResponseUtil.createHttpResponseFrom; import static com.linecorp.armeria.internal.common.ArmeriaHttpUtil.setOrRemoveContentLength; import static java.util.Objects.requireNonNull; @@ -85,11 +86,12 @@ static HttpResponseWriter streaming() { * * @param stage the {@link CompletionStage} which will produce the actual {@link HttpResponse} */ + //TODO(minwoox): Rename this to 'of' for consistency. static HttpResponse from(CompletionStage stage) { requireNonNull(stage, "stage"); if (stage instanceof CompletableFuture) { - return from((CompletableFuture) stage); + return createHttpResponseFrom((CompletableFuture) stage); } else { final DeferredHttpResponse res = new DeferredHttpResponse(); res.delegateWhenComplete(stage); @@ -103,27 +105,12 @@ static HttpResponse from(CompletionStage stage) { * will be closed with the same cause as well. * * @param future the {@link CompletableFuture} which will produce the actual {@link HttpResponse} + * + * @deprecated Use {@link #from(CompletionStage, EventExecutor)}. */ + @Deprecated static HttpResponse from(CompletableFuture future) { - requireNonNull(future, "future"); - - if (future.isDone()) { - if (!future.isCompletedExceptionally()) { - return future.getNow(null); - } - - try { - future.join(); - // Should never reach here. - throw new Error(); - } catch (Throwable cause) { - return ofFailure(Exceptions.peel(cause)); - } - } - - final DeferredHttpResponse res = new DeferredHttpResponse(); - res.delegateWhenComplete(future); - return res; + return createHttpResponseFrom(future); } /** @@ -140,6 +127,7 @@ static HttpResponse from(CompletionStage stage, EventExecutor subscriberExecutor) { requireNonNull(stage, "stage"); requireNonNull(subscriberExecutor, "subscriberExecutor"); + // Have to use DeferredHttpResponse to use the subscriberExecutor. final DeferredHttpResponse res = new DeferredHttpResponse(subscriberExecutor); res.delegateWhenComplete(stage); return res; diff --git a/core/src/main/java/com/linecorp/armeria/common/HttpResponseUtil.java b/core/src/main/java/com/linecorp/armeria/common/HttpResponseUtil.java new file mode 100644 index 000000000000..0b302a79a724 --- /dev/null +++ b/core/src/main/java/com/linecorp/armeria/common/HttpResponseUtil.java @@ -0,0 +1,57 @@ +/* + * Copyright 2023 LINE Corporation + * + * LINE Corporation licenses this file to you 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. + */ + +package com.linecorp.armeria.common; + +import static java.util.Objects.requireNonNull; + +import java.util.concurrent.CompletableFuture; + +import com.linecorp.armeria.common.util.Exceptions; + +final class HttpResponseUtil { + + /** + * Creates a new HTTP response that delegates to the {@link HttpResponse} produced by the specified + * {@link CompletableFuture}. If the specified {@link CompletableFuture} fails, the returned response + * will be closed with the same cause as well. + * + * @param future the {@link CompletableFuture} which will produce the actual {@link HttpResponse} + */ + static HttpResponse createHttpResponseFrom(CompletableFuture future) { + requireNonNull(future, "future"); + + if (future.isDone()) { + if (!future.isCompletedExceptionally()) { + return future.getNow(null); + } + + try { + future.join(); + // Should never reach here. + throw new Error(); + } catch (Throwable cause) { + return HttpResponse.ofFailure(Exceptions.peel(cause)); + } + } + + final DeferredHttpResponse res = new DeferredHttpResponse(); + res.delegateWhenComplete(future); + return res; + } + + private HttpResponseUtil() {} +} diff --git a/core/src/main/java/com/linecorp/armeria/common/stream/DeferredStreamMessage.java b/core/src/main/java/com/linecorp/armeria/common/stream/DeferredStreamMessage.java index da83479e8543..bc94735cc8ef 100644 --- a/core/src/main/java/com/linecorp/armeria/common/stream/DeferredStreamMessage.java +++ b/core/src/main/java/com/linecorp/armeria/common/stream/DeferredStreamMessage.java @@ -22,15 +22,18 @@ import java.util.List; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; +import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; import com.linecorp.armeria.common.annotation.Nullable; import com.linecorp.armeria.common.annotation.UnstableApi; import com.linecorp.armeria.common.util.CompletionActions; +import com.linecorp.armeria.common.util.Exceptions; import com.linecorp.armeria.common.util.UnmodifiableFuture; import com.linecorp.armeria.internal.common.stream.AbortingSubscriber; import com.linecorp.armeria.unsafe.PooledObjects; @@ -76,6 +79,8 @@ public class DeferredStreamMessage extends CancellableStreamMessage { private static final CompletableFuture> NO_COLLECTING_FUTURE = UnmodifiableFuture.completedFuture(null); private static final SubscriptionImpl NOOP_SUBSCRIPTION = noopSubscription(); + @Nullable + private final EventExecutor defaultSubscriberExecutor; @Nullable @SuppressWarnings("unused") // Updated only via upstreamUpdater @@ -107,6 +112,45 @@ public class DeferredStreamMessage extends CancellableStreamMessage { @Nullable private volatile Throwable abortCause; + /** + * Creates a new instance. + */ + public DeferredStreamMessage() { + defaultSubscriberExecutor = null; + } + + /** + * Creates a new instance. + */ + public DeferredStreamMessage(EventExecutor defaultSubscriberExecutor) { + this.defaultSubscriberExecutor = requireNonNull(defaultSubscriberExecutor, "defaultSubscriberExecutor"); + } + + @Override + public EventExecutor defaultSubscriberExecutor() { + if (defaultSubscriberExecutor != null) { + return defaultSubscriberExecutor; + } + return super.defaultSubscriberExecutor(); + } + + /** + * Delegates when the specified {@link CompletionStage} is complete. + */ + protected final void delegateWhenCompleteStage(CompletionStage> stage) { + requireNonNull(stage, "stage"); + stage.handle((upstream, thrown) -> { + if (thrown != null) { + close(Exceptions.peel(thrown)); + } else if (upstream == null) { + close(new NullPointerException("upstream stage produced a null stream message: " + stage)); + } else { + delegate(StreamMessage.of(upstream)); + } + return null; + }); + } + /** * Sets the upstream {@link StreamMessage} which will actually publish the stream. * diff --git a/core/src/main/java/com/linecorp/armeria/common/stream/StreamMessage.java b/core/src/main/java/com/linecorp/armeria/common/stream/StreamMessage.java index 60c815178da9..9f1280a84495 100644 --- a/core/src/main/java/com/linecorp/armeria/common/stream/StreamMessage.java +++ b/core/src/main/java/com/linecorp/armeria/common/stream/StreamMessage.java @@ -18,6 +18,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.collect.ImmutableList.toImmutableList; +import static com.linecorp.armeria.common.stream.StreamMessageUtil.createStreamMessageFrom; import static com.linecorp.armeria.internal.common.stream.InternalStreamMessageUtil.EMPTY_OPTIONS; import static java.util.Objects.requireNonNull; @@ -29,6 +30,7 @@ import java.nio.file.StandardOpenOption; import java.util.List; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.function.Consumer; @@ -184,6 +186,48 @@ static StreamMessage of(Publisher publisher) { } } + /** + * Creates a new {@link StreamMessage} that delegates to the {@link StreamMessage} produced by the specified + * {@link CompletionStage}. If the specified {@link CompletionStage} fails, the returned + * {@link StreamMessage} will be closed with the same cause as well. + * + * @param stage the {@link CompletionStage} which will produce the actual {@link StreamMessage} + */ + @UnstableApi + static StreamMessage of(CompletionStage> stage) { + requireNonNull(stage, "stage"); + + if (stage instanceof CompletableFuture) { + return createStreamMessageFrom((CompletableFuture>) stage); + } else { + final DeferredStreamMessage deferred = new DeferredStreamMessage<>(); + //noinspection unchecked + deferred.delegateWhenCompleteStage((CompletionStage>) stage); + return deferred; + } + } + + /** + * Creates a new {@link StreamMessage} that delegates to the {@link StreamMessage} produced by the specified + * {@link CompletionStage}. If the specified {@link CompletionStage} fails, the returned + * {@link StreamMessage} will be closed with the same cause as well. + * + * @param stage the {@link CompletionStage} which will produce the actual {@link StreamMessage} + * @param subscriberExecutor the {@link EventExecutor} which will be used when a user subscribes + * the returned {@link StreamMessage} using {@link #subscribe(Subscriber)} + * or {@link #subscribe(Subscriber, SubscriptionOption...)}. + */ + static StreamMessage of(CompletionStage> stage, + EventExecutor subscriberExecutor) { + requireNonNull(stage, "stage"); + requireNonNull(subscriberExecutor, "subscriberExecutor"); + // Have to use DeferredStreamMessage to use the subscriberExecutor. + final DeferredStreamMessage deferred = new DeferredStreamMessage<>(subscriberExecutor); + //noinspection unchecked + deferred.delegateWhenCompleteStage((CompletionStage>) stage); + return deferred; + } + /** * Creates a new {@link StreamMessage} that streams the specified {@link File}. * The default buffer size({@value InternalStreamMessageUtil#DEFAULT_FILE_BUFFER_SIZE}) is used to diff --git a/core/src/main/java/com/linecorp/armeria/common/stream/StreamMessageUtil.java b/core/src/main/java/com/linecorp/armeria/common/stream/StreamMessageUtil.java new file mode 100644 index 000000000000..bee8a4611869 --- /dev/null +++ b/core/src/main/java/com/linecorp/armeria/common/stream/StreamMessageUtil.java @@ -0,0 +1,65 @@ +/* + * Copyright 2023 LINE Corporation + * + * LINE Corporation licenses this file to you 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. + */ + +package com.linecorp.armeria.common.stream; + +import static java.util.Objects.requireNonNull; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; + +import org.reactivestreams.Publisher; + +import com.linecorp.armeria.common.annotation.UnstableApi; +import com.linecorp.armeria.common.util.Exceptions; + +final class StreamMessageUtil { + + /** + * Creates a new {@link StreamMessage} that delegates to the {@link StreamMessage} produced by the specified + * {@link CompletionStage}. If the specified {@link CompletionStage} fails, the returned + * {@link StreamMessage} will be closed with the same cause as well. + * + * @param future the {@link CompletionStage} which will produce the actual {@link StreamMessage} + */ + @UnstableApi + static StreamMessage createStreamMessageFrom( + CompletableFuture> future) { + requireNonNull(future, "future"); + + if (future.isDone()) { + if (!future.isCompletedExceptionally()) { + final Publisher publisher = future.getNow(null); + return StreamMessage.of(publisher); + } + + try { + future.join(); + // Should never reach here. + throw new Error(); + } catch (Throwable cause) { + return StreamMessage.aborted(Exceptions.peel(cause)); + } + } + + final DeferredStreamMessage deferred = new DeferredStreamMessage<>(); + //noinspection unchecked + deferred.delegateWhenCompleteStage((CompletionStage>) future); + return deferred; + } + + private StreamMessageUtil() {} +} diff --git a/core/src/main/java/com/linecorp/armeria/internal/common/util/TransportTypeProvider.java b/core/src/main/java/com/linecorp/armeria/internal/common/util/TransportTypeProvider.java index 99a9f147608a..ca5c939a428f 100644 --- a/core/src/main/java/com/linecorp/armeria/internal/common/util/TransportTypeProvider.java +++ b/core/src/main/java/com/linecorp/armeria/internal/common/util/TransportTypeProvider.java @@ -19,7 +19,6 @@ import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; -import java.lang.reflect.Method; import java.util.Map; import java.util.Set; import java.util.concurrent.ThreadFactory; @@ -47,13 +46,12 @@ import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.channel.unix.DomainSocketChannel; import io.netty.channel.unix.ServerDomainSocketChannel; -import io.netty.util.NetUtil; import io.netty.util.Version; /** * Provides the properties required by {@link TransportType} by loading /dev/epoll and io_uring transport * classes dynamically, so that Armeria does not have hard dependencies on them. - * See: https://github.com/line/armeria/issues/3243 + * See: line/armeria#3243 */ public final class TransportTypeProvider { @@ -192,26 +190,6 @@ private static TransportTypeProvider of( } catch (Throwable cause) { return new TransportTypeProvider(name, null, null, null, null, null, null, null, null, Exceptions.peel(cause)); - } finally { - // TODO(trustin): Remove this block which works around the bug where loading both epoll and - // io_uring native libraries may revert the initialization of - // io.netty.channel.unix.Socket: https://github.com/netty/netty/issues/10909 - final String unixSocketClassName = ChannelUtil.channelPackageName() + ".unix.Socket"; - try { - final Method initializeMethod = findClass(ChannelUtil.channelPackageName(), unixSocketClassName) - .getDeclaredMethod("initialize", boolean.class); - initializeMethod.setAccessible(true); - initializeMethod.invoke(null, NetUtil.isIpV4StackPreferred()); - } catch (Throwable cause) { - final Throwable peeledCause = Exceptions.peel(cause); - if (peeledCause instanceof UnsatisfiedLinkError || - peeledCause instanceof ClassNotFoundException) { - // Failed to load a native library, which is fine. - } else { - logger.debug("Failed to force-initialize '" + ChannelUtil.channelPackageName() + - ".unix.Socket':", cause); - } - } } } diff --git a/core/src/main/java/com/linecorp/armeria/internal/common/websocket/WebSocketUtil.java b/core/src/main/java/com/linecorp/armeria/internal/common/websocket/WebSocketUtil.java index 515467303b93..dd18293c5fa6 100644 --- a/core/src/main/java/com/linecorp/armeria/internal/common/websocket/WebSocketUtil.java +++ b/core/src/main/java/com/linecorp/armeria/internal/common/websocket/WebSocketUtil.java @@ -29,6 +29,10 @@ public final class WebSocketUtil { + public static final long DEFAULT_REQUEST_TIMEOUT_MILLIS = 0; + public static final long DEFAULT_MAX_REQUEST_LENGTH = 0; + public static final long DEFAULT_REQUEST_AUTO_ABORT_DELAY_MILLIS = 5000; + public static boolean isHttp1WebSocketUpgradeRequest(RequestHeaders headers) { requireNonNull(headers, "headers"); // GET /chat HTTP/1.1 diff --git a/core/src/main/java/com/linecorp/armeria/server/FallbackService.java b/core/src/main/java/com/linecorp/armeria/server/FallbackService.java index b2e827ed4256..87632f7bc4f9 100644 --- a/core/src/main/java/com/linecorp/armeria/server/FallbackService.java +++ b/core/src/main/java/com/linecorp/armeria/server/FallbackService.java @@ -56,20 +56,20 @@ private static HttpResponse handleNotFound(ServiceRequestContext ctx, RoutingCon // Handle the case where '/path' (or '/path?query') doesn't exist // but '/path/' (or '/path/?query') exists. - final String newPath = oldPath + '/'; - if (!ctx.config().virtualHost().findServiceConfig(routingCtx.withPath(newPath)).isPresent()) { + if (!ctx.config().virtualHost().findServiceConfig(routingCtx.withPath(oldPath + '/')).isPresent()) { // No need to send a redirect response because '/path/' (or '/path/?query') does not exist. return newHeadersOnlyResponse(HttpStatus.NOT_FOUND); } - // '/path/' (or '/path/?query') exists. Send a redirect response. - final String location; - if (routingCtx.query() == null) { - // '/path/' - location = newPath; - } else { - // '/path/?query' - location = newPath + '?' + routingCtx.query(); + // Use relative path to handle the case where the server is behind a reverse proxy. + // The reverse proxy might rewrite the path, so we should use the relative path. + // For example, if the proxy rewrite the path /proxy/path -> /path, then we should send the location + // with path/ so that the client can send the request to /proxy/path/ again. + final int index = oldPath.lastIndexOf('/'); + assert index >= 0; + String location = oldPath.substring(index + 1) + '/'; + if (routingCtx.query() != null) { + location += '?' + routingCtx.query(); } return HttpResponse.of(ResponseHeaders.builder(HttpStatus.TEMPORARY_REDIRECT) diff --git a/core/src/main/java/com/linecorp/armeria/server/ServiceConfigBuilder.java b/core/src/main/java/com/linecorp/armeria/server/ServiceConfigBuilder.java index 0a22c0bb3184..bfb8c8291b6e 100644 --- a/core/src/main/java/com/linecorp/armeria/server/ServiceConfigBuilder.java +++ b/core/src/main/java/com/linecorp/armeria/server/ServiceConfigBuilder.java @@ -32,13 +32,16 @@ import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableList; +import com.linecorp.armeria.common.Flags; import com.linecorp.armeria.common.HttpHeaders; import com.linecorp.armeria.common.HttpHeadersBuilder; import com.linecorp.armeria.common.RequestId; import com.linecorp.armeria.common.SuccessFunction; import com.linecorp.armeria.common.annotation.Nullable; import com.linecorp.armeria.common.util.BlockingTaskExecutor; +import com.linecorp.armeria.internal.common.websocket.WebSocketUtil; import com.linecorp.armeria.server.logging.AccessLogWriter; +import com.linecorp.armeria.server.websocket.WebSocketService; final class ServiceConfigBuilder implements ServiceConfigSetters { @@ -288,7 +291,7 @@ ServiceConfig build(ServiceNaming defaultServiceNaming, AccessLogWriter defaultAccessLogWriter, BlockingTaskExecutor defaultBlockingTaskExecutor, SuccessFunction defaultSuccessFunction, - long requestAutoAbortDelayMillis, + long defaultRequestAutoAbortDelayMillis, Path defaultMultipartUploadsLocation, HttpHeaders virtualHostDefaultHeaders, Function defaultRequestIdGenerator, @@ -302,18 +305,46 @@ ServiceConfig build(ServiceNaming defaultServiceNaming, unhandledExceptionsReporter); } + final boolean webSocket = service.as(WebSocketService.class) != null; + final long requestTimeoutMillis; + if (this.requestTimeoutMillis != null) { + requestTimeoutMillis = this.requestTimeoutMillis; + } else if (!webSocket || defaultRequestTimeoutMillis != Flags.defaultRequestTimeoutMillis()) { + requestTimeoutMillis = defaultRequestTimeoutMillis; + } else { + requestTimeoutMillis = WebSocketUtil.DEFAULT_REQUEST_TIMEOUT_MILLIS; + } + + final long maxRequestLength; + if (this.maxRequestLength != null) { + maxRequestLength = this.maxRequestLength; + } else if (!webSocket || defaultMaxRequestLength != Flags.defaultMaxRequestLength()) { + maxRequestLength = defaultMaxRequestLength; + } else { + maxRequestLength = WebSocketUtil.DEFAULT_MAX_REQUEST_LENGTH; + } + + final long requestAutoAbortDelayMillis; + if (this.requestAutoAbortDelayMillis != null) { + requestAutoAbortDelayMillis = this.requestAutoAbortDelayMillis; + } else if (!webSocket || + defaultRequestAutoAbortDelayMillis != Flags.defaultRequestAutoAbortDelayMillis()) { + requestAutoAbortDelayMillis = defaultRequestAutoAbortDelayMillis; + } else { + requestAutoAbortDelayMillis = WebSocketUtil.DEFAULT_REQUEST_AUTO_ABORT_DELAY_MILLIS; + } + return new ServiceConfig( route, mappedRoute == null ? route : mappedRoute, service, defaultLogName, defaultServiceName, this.defaultServiceNaming != null ? this.defaultServiceNaming : defaultServiceNaming, - requestTimeoutMillis != null ? requestTimeoutMillis : defaultRequestTimeoutMillis, - maxRequestLength != null ? maxRequestLength : defaultMaxRequestLength, + requestTimeoutMillis, + maxRequestLength, verboseResponses != null ? verboseResponses : defaultVerboseResponses, accessLogWriter != null ? accessLogWriter : defaultAccessLogWriter, blockingTaskExecutor != null ? blockingTaskExecutor : defaultBlockingTaskExecutor, successFunction != null ? successFunction : defaultSuccessFunction, - this.requestAutoAbortDelayMillis != null ? this.requestAutoAbortDelayMillis - : requestAutoAbortDelayMillis, + requestAutoAbortDelayMillis, multipartUploadsLocation != null ? multipartUploadsLocation : defaultMultipartUploadsLocation, ImmutableList.copyOf(shutdownSupports), mergeDefaultHeaders(virtualHostDefaultHeaders.toBuilder(), defaultHeaders.build()), diff --git a/core/src/main/java/com/linecorp/armeria/server/websocket/WebSocketService.java b/core/src/main/java/com/linecorp/armeria/server/websocket/WebSocketService.java index a5aa42d36d75..fef607e19338 100644 --- a/core/src/main/java/com/linecorp/armeria/server/websocket/WebSocketService.java +++ b/core/src/main/java/com/linecorp/armeria/server/websocket/WebSocketService.java @@ -51,6 +51,7 @@ import com.linecorp.armeria.internal.common.websocket.WebSocketWrapper; import com.linecorp.armeria.server.AbstractHttpService; import com.linecorp.armeria.server.HttpService; +import com.linecorp.armeria.server.ServiceConfig; import com.linecorp.armeria.server.ServiceRequestContext; import io.netty.handler.codec.http.HttpHeaderValues; @@ -59,6 +60,8 @@ /** * An {@link HttpService} that supports * The WebSocket Protocol. + * This service has a few different default values for {@link ServiceConfig} from a normal {@link HttpService} + * because of the nature of WebSocket. See {@link WebSocketServiceBuilder} for more information. */ @UnstableApi public final class WebSocketService extends AbstractHttpService { diff --git a/core/src/main/java/com/linecorp/armeria/server/websocket/WebSocketServiceBuilder.java b/core/src/main/java/com/linecorp/armeria/server/websocket/WebSocketServiceBuilder.java index 41c4f8361a55..3256706caf67 100644 --- a/core/src/main/java/com/linecorp/armeria/server/websocket/WebSocketServiceBuilder.java +++ b/core/src/main/java/com/linecorp/armeria/server/websocket/WebSocketServiceBuilder.java @@ -28,9 +28,21 @@ import com.linecorp.armeria.common.annotation.UnstableApi; import com.linecorp.armeria.common.websocket.WebSocketCloseStatus; +import com.linecorp.armeria.internal.common.websocket.WebSocketUtil; +import com.linecorp.armeria.server.HttpService; +import com.linecorp.armeria.server.ServiceConfig; /** * Builds a {@link WebSocketService}. + * This service has the different default configs from a normal {@link HttpService}. Here are the differences: + *
    + *
  • {@link ServiceConfig#requestTimeoutMillis()} is + * {@value WebSocketUtil#DEFAULT_REQUEST_TIMEOUT_MILLIS}.
  • + *
  • {@link ServiceConfig#maxRequestLength()} is + * {@value WebSocketUtil#DEFAULT_MAX_REQUEST_LENGTH}.
  • + *
  • {@link ServiceConfig#requestAutoAbortDelayMillis()} is + * {@value WebSocketUtil#DEFAULT_REQUEST_AUTO_ABORT_DELAY_MILLIS}.
  • + *
*/ @UnstableApi public final class WebSocketServiceBuilder { diff --git a/core/src/main/resources/com/linecorp/armeria/public_suffixes.txt b/core/src/main/resources/com/linecorp/armeria/public_suffixes.txt index 51ece8cd59e6..9e6b2a759abc 100644 --- a/core/src/main/resources/com/linecorp/armeria/public_suffixes.txt +++ b/core/src/main/resources/com/linecorp/armeria/public_suffixes.txt @@ -1359,7 +1359,6 @@ clerk.app clerkstage.app cleverapps.io click -clicketcloud.com clickrising.net clinic clinique @@ -3213,7 +3212,6 @@ hidaka.hokkaido.jp hidaka.kochi.jp hidaka.saitama.jp hidaka.wakayama.jp -hidora.com higashi.fukuoka.jp higashi.fukushima.jp higashi.okinawa.jp @@ -3367,7 +3365,6 @@ hot hotel.hu hotel.lk hotel.tz -hoteles hotels hotelwithflight.com hotmail @@ -6226,7 +6223,6 @@ parti.se partners parts party -passagens passenger-association.aero patria.bo pavia.it @@ -7388,6 +7384,7 @@ store.st store.ve storebase.store storfjord.no +storipress.app storj.farm strand.no stranda.no @@ -8074,7 +8071,6 @@ user.party.eus user.srcf.net user.webaccel.jp usercontent.jp -users.scale.virtualcloud.com.br ushiku.ibaraki.jp usr.cloud.muni.cz ustka.pl @@ -8272,7 +8268,6 @@ vs.mythic-beasts.com vt.it vt.us vu -vuelos vv.it vxl.sh w.bg diff --git a/core/src/test/java/com/linecorp/armeria/client/DocServiceAssetCompressionTest.java b/core/src/test/java/com/linecorp/armeria/client/DocServiceAssetCompressionTest.java index ec8e5a8c8ee0..f248419d2ed0 100644 --- a/core/src/test/java/com/linecorp/armeria/client/DocServiceAssetCompressionTest.java +++ b/core/src/test/java/com/linecorp/armeria/client/DocServiceAssetCompressionTest.java @@ -18,19 +18,18 @@ import static org.assertj.core.api.Assertions.assertThat; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; +import org.junit.jupiter.api.Test; import com.linecorp.armeria.server.docs.DocService; class DocServiceAssetCompressionTest { - @ValueSource(strings = {"index.html", "main.js"}) - @ParameterizedTest - void shouldNotIncludeUncompressedAssets(String file) { + @Test + void shouldNotIncludeUncompressedAssets() { // `doc-client` should produce compressed assets when building bundle files for DocService and // they should exist in the classpath of the core module. // If Gradle build task is executed with `-PnoWeb`, this test may be broken. + final String file = "index.html"; assertThat(DocService.class.getResource(file)).isNull(); assertThat(DocService.class.getResource(file + ".gz")).isNotNull(); } diff --git a/core/src/test/java/com/linecorp/armeria/client/TrailingDotAddressResolverTest.java b/core/src/test/java/com/linecorp/armeria/client/TrailingDotAddressResolverTest.java index ab063fa893d4..68fb9c5d9510 100644 --- a/core/src/test/java/com/linecorp/armeria/client/TrailingDotAddressResolverTest.java +++ b/core/src/test/java/com/linecorp/armeria/client/TrailingDotAddressResolverTest.java @@ -92,9 +92,10 @@ void resolve() throws Exception { final AggregatedHttpResponse response = client.get( "http://foo.com.:" + server.httpPort() + '/'); assertThat(response.contentUtf8()).isEqualTo("Hello, world!"); - assertThat(dnsRecordCaptor.records).hasSize(1); - final DnsRecord record = dnsRecordCaptor.records.poll(); - assertThat(record.name()).isEqualTo("foo.com."); + assertThat(dnsRecordCaptor.records).isNotEmpty(); + dnsRecordCaptor.records.forEach(record -> { + assertThat(record.name()).isEqualTo("foo.com."); + }); } } } diff --git a/core/src/test/java/com/linecorp/armeria/client/endpoint/FileWatcherRunnableTest.java b/core/src/test/java/com/linecorp/armeria/client/endpoint/FileWatcherRunnableTest.java index 38325d7259ad..c5eb18a406f4 100644 --- a/core/src/test/java/com/linecorp/armeria/client/endpoint/FileWatcherRunnableTest.java +++ b/core/src/test/java/com/linecorp/armeria/client/endpoint/FileWatcherRunnableTest.java @@ -23,14 +23,14 @@ import java.nio.file.WatchService; -import org.junit.Test; +import org.junit.jupiter.api.Test; import com.linecorp.armeria.client.endpoint.FileWatcherRegistry.FileSystemWatchContext; -public class FileWatcherRunnableTest { +class FileWatcherRunnableTest { @Test - public void testPropertyFileWatcherRunnableExitsOnInterrupt() throws InterruptedException { + void testPropertyFileWatcherRunnableExitsOnInterrupt() throws InterruptedException { final WatchService watchService = mock(WatchService.class); final FileWatcherRunnable fileWatcherRunnable = new FileWatcherRunnable(watchService, mock( FileSystemWatchContext.class)); diff --git a/core/src/test/java/com/linecorp/armeria/client/endpoint/PropertiesEndpointGroupTest.java b/core/src/test/java/com/linecorp/armeria/client/endpoint/PropertiesEndpointGroupTest.java index 2d2e21e2b19a..e551bf724891 100644 --- a/core/src/test/java/com/linecorp/armeria/client/endpoint/PropertiesEndpointGroupTest.java +++ b/core/src/test/java/com/linecorp/armeria/client/endpoint/PropertiesEndpointGroupTest.java @@ -43,6 +43,9 @@ class PropertiesEndpointGroupTest { + private static final String RESOURCE_PATH = + "testing/core/" + PropertiesEndpointGroupTest.class.getSimpleName() + "/server-list.properties"; + private static final Properties PROPS = new Properties(); @BeforeAll @@ -99,7 +102,7 @@ void propertiesWithDefaultPort() { @Test void resourceWithoutDefaultPort() { final PropertiesEndpointGroup endpointGroup = PropertiesEndpointGroup.of( - getClass().getClassLoader(), "server-list.properties", "serverA.hosts"); + getClass().getClassLoader(), RESOURCE_PATH, "serverA.hosts"); assertThat(endpointGroup.endpoints()).containsExactlyInAnyOrder(Endpoint.parse("127.0.0.1:8080"), Endpoint.parse("127.0.0.1:8081"), @@ -110,14 +113,14 @@ void resourceWithoutDefaultPort() { void resourceWithDefaultPort() { final PropertiesEndpointGroup endpointGroupA = PropertiesEndpointGroup.builder(getClass().getClassLoader(), - "server-list.properties", + RESOURCE_PATH, "serverA.hosts") .defaultPort(80) .build(); final PropertiesEndpointGroup endpointGroupB = PropertiesEndpointGroup.builder(getClass().getClassLoader(), - "server-list.properties", + RESOURCE_PATH, "serverB.hosts") .defaultPort(8080) .build(); @@ -131,7 +134,7 @@ void resourceWithDefaultPort() { @Test void pathWithDefaultPort() throws Exception { - final URL resourceUrl = getClass().getClassLoader().getResource("server-list.properties"); + final URL resourceUrl = getClass().getClassLoader().getResource(RESOURCE_PATH); assertThat(resourceUrl).isNotNull(); final Path resourcePath = new File(resourceUrl.toURI().getPath()).toPath(); final PropertiesEndpointGroup endpointGroupA = PropertiesEndpointGroup.builder( @@ -144,7 +147,7 @@ void pathWithDefaultPort() throws Exception { @Test void pathWithoutDefaultPort() throws URISyntaxException { - final URL resourceUrl = getClass().getClassLoader().getResource("server-list.properties"); + final URL resourceUrl = getClass().getClassLoader().getResource(RESOURCE_PATH); assertThat(resourceUrl).isNotNull(); final Path resourcePath = new File(resourceUrl.toURI().getPath()).toPath(); final PropertiesEndpointGroup endpointGroup = PropertiesEndpointGroup.of( @@ -158,7 +161,7 @@ void pathWithoutDefaultPort() throws URISyntaxException { @Test void testWithPrefixThatEndsWithDot() { final PropertiesEndpointGroup endpointGroup = PropertiesEndpointGroup.of( - getClass().getClassLoader(), "server-list.properties", "serverA.hosts."); + getClass().getClassLoader(), RESOURCE_PATH, "serverA.hosts."); assertThat(endpointGroup.endpoints()).containsExactlyInAnyOrder(Endpoint.parse("127.0.0.1:8080"), Endpoint.parse("127.0.0.1:8081"), @@ -168,7 +171,7 @@ void testWithPrefixThatEndsWithDot() { @Test void containsNoHosts() { assertThat(PropertiesEndpointGroup.builder(getClass().getClassLoader(), - "server-list.properties", "serverC.hosts") + RESOURCE_PATH, "serverC.hosts") .defaultPort(8080) .build() .endpoints()).isEmpty(); @@ -177,14 +180,15 @@ void containsNoHosts() { @Test void illegalDefaultPort() { assertThatThrownBy(() -> PropertiesEndpointGroup.builder(getClass().getClassLoader(), - "server-list.properties", "serverA.hosts") + RESOURCE_PATH, "serverA.hosts") .defaultPort(0)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("defaultPort"); } @Test - @EnabledForJreRange(min = JRE.JAVA_17) // NIO.2 WatchService doesn't work reliably on older Java. + @EnabledForJreRange(min = JRE.JAVA_17) + // NIO.2 WatchService doesn't work reliably on older Java. void propertiesFileUpdatesCorrectly() throws Exception { final Path file = folder.resolve("temp-file.properties"); @@ -224,7 +228,8 @@ void duplicateResourceUrl() throws IOException { } @Test - @EnabledForJreRange(min = JRE.JAVA_17) // NIO.2 WatchService doesn't work reliably on older Java. + @EnabledForJreRange(min = JRE.JAVA_17) + // NIO.2 WatchService doesn't work reliably on older Java. void propertiesFileRestart() throws Exception { final Path file = folder.resolve("temp-file.properties"); @@ -255,7 +260,8 @@ void propertiesFileRestart() throws Exception { } @Test - @EnabledForJreRange(min = JRE.JAVA_17) // NIO.2 WatchService doesn't work reliably on older Java. + @EnabledForJreRange(min = JRE.JAVA_17) + // NIO.2 WatchService doesn't work reliably on older Java. void endpointChangePropagatesToListeners() throws Exception { final Path file = folder.resolve("temp-file.properties"); diff --git a/core/src/test/java/com/linecorp/armeria/common/stream/DefaultStreamMessageTest.java b/core/src/test/java/com/linecorp/armeria/common/stream/DefaultStreamMessageTest.java index 4db93eaadbeb..4625e7dc5031 100644 --- a/core/src/test/java/com/linecorp/armeria/common/stream/DefaultStreamMessageTest.java +++ b/core/src/test/java/com/linecorp/armeria/common/stream/DefaultStreamMessageTest.java @@ -31,6 +31,8 @@ import org.junit.jupiter.api.extension.RegisterExtension; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.linecorp.armeria.common.HttpData; import com.linecorp.armeria.testing.junit5.common.EventLoopExtension; @@ -43,6 +45,8 @@ class DefaultStreamMessageTest { + private static final Logger logger = LoggerFactory.getLogger(DefaultStreamMessageTest.class); + @RegisterExtension static final EventLoopExtension eventLoop = new EventLoopExtension(); @@ -56,7 +60,15 @@ class DefaultStreamMessageTest { void onSubscribeBeforeOnComplete() throws Exception { final BlockingQueue queue = new LinkedTransferQueue<>(); // Repeat to increase the chance of reproduction. - for (int i = 0; i < 8192; i++) { + final int iteration; + if (System.getenv("CI") != null) { + logger.debug("Use 128 iterations for CI environment."); + iteration = 128; + } else { + iteration = 8192; + } + + for (int i = 0; i < iteration; i++) { final StreamWriter stream = new DefaultStreamMessage<>(); eventLoop.get().execute(stream::close); stream.subscribe(new Subscriber() { diff --git a/core/src/test/java/com/linecorp/armeria/common/stream/DeferredStreamMessageTest.java b/core/src/test/java/com/linecorp/armeria/common/stream/DeferredStreamMessageTest.java index c52709918a6a..74cf5496b9a6 100644 --- a/core/src/test/java/com/linecorp/armeria/common/stream/DeferredStreamMessageTest.java +++ b/core/src/test/java/com/linecorp/armeria/common/stream/DeferredStreamMessageTest.java @@ -38,6 +38,7 @@ import com.linecorp.armeria.common.annotation.Nullable; import com.linecorp.armeria.common.util.Exceptions; +import com.linecorp.armeria.internal.testing.AnticipatedException; import io.netty.util.concurrent.ImmediateEventExecutor; @@ -170,6 +171,52 @@ void testLateSubscription() { assertFailedSubscription(m, IllegalStateException.class); } + @Test + void setStreamMessageAfterSubscribe() { + final CompletableFuture> future = new CompletableFuture<>(); + final StreamMessage streamMessage = StreamMessage.of(future); + final CompletableFuture> collectFuture = streamMessage.collect(); + // Set StreamMessage. + future.complete(StreamMessage.of("foo")); + final List collected = collectFuture.join(); + assertThat(collected).containsExactly("foo"); + } + + @Test + void abortedStreamMessage() { + final CompletableFuture> future = new CompletableFuture<>(); + final StreamMessage streamMessage = StreamMessage.of(future); + final CompletableFuture> collectFuture = streamMessage.collect(); + + future.complete(StreamMessage.aborted(new AnticipatedException())); + assertThatThrownBy(collectFuture::join).hasCauseInstanceOf(AnticipatedException.class); + } + + @Test + void cancellationPropagatesToUpstream() { + final CompletableFuture> future = new CompletableFuture<>(); + final StreamMessage streamMessage = StreamMessage.of(future); + streamMessage.subscribe(new Subscriber() { + @Override + public void onSubscribe(Subscription s) { + s.cancel(); // Cancel immediately. + } + + @Override + public void onNext(String str) {} + + @Override + public void onError(Throwable t) {} + + @Override + public void onComplete() {} + }, ImmediateEventExecutor.INSTANCE); + + // Should not cancel the upstream CompletableFuture. + // A StreamMessage could be leaked if it is set after completion. + assertThat(future).isNotDone(); + } + private static void assertAborted(StreamMessage m, @Nullable Throwable cause) { final Class causeType = cause != null ? cause.getClass() : AbortedStreamException.class; diff --git a/core/src/test/java/com/linecorp/armeria/common/stream/PathStreamMessageTest.java b/core/src/test/java/com/linecorp/armeria/common/stream/PathStreamMessageTest.java index 53ffb75b0dcc..d62c19d8bdde 100644 --- a/core/src/test/java/com/linecorp/armeria/common/stream/PathStreamMessageTest.java +++ b/core/src/test/java/com/linecorp/armeria/common/stream/PathStreamMessageTest.java @@ -49,11 +49,15 @@ class PathStreamMessageTest { + private static final Path testFilePath = Paths.get( + "src/test/resources/testing/core", + PathStreamMessageTest.class.getSimpleName(), + "test.txt"); + @ArgumentsSource(SubscriptionOptionsProvider.class) @ParameterizedTest void readFile(SubscriptionOption[] options) { - final Path path = Paths.get("src/test/resources/com/linecorp/armeria/common/stream/test.txt"); - final ByteStreamMessage publisher = StreamMessage.builder(path) + final ByteStreamMessage publisher = StreamMessage.builder(testFilePath) .bufferSize(12) .build(); final AtomicBoolean completed = new AtomicBoolean(); @@ -91,8 +95,7 @@ public void onComplete() { @CsvSource({ "1", "12", "128" }) @ParameterizedTest void differentBufferSize(int bufferSize) { - final Path path = Paths.get("src/test/resources/com/linecorp/armeria/common/stream/test.txt"); - final ByteStreamMessage publisher = StreamMessage.builder(path).bufferSize(bufferSize).build(); + final ByteStreamMessage publisher = StreamMessage.builder(testFilePath).bufferSize(bufferSize).build(); final StringBuilder stringBuilder = new StringBuilder(); final AtomicBoolean completed = new AtomicBoolean(); @@ -136,8 +139,7 @@ public void onComplete() { @ParameterizedTest void differentPosition(int start, int end, String expected, int bufferSize) { expected = expected.replaceAll("\\\\n", "\n"); - final Path path = Paths.get("src/test/resources/com/linecorp/armeria/common/stream/test.txt"); - final ByteStreamMessage publisher = StreamMessage.builder(path).bufferSize(bufferSize).build(); + final ByteStreamMessage publisher = StreamMessage.builder(testFilePath).bufferSize(bufferSize).build(); final int length = end - start; publisher.range(start, length); @@ -172,16 +174,15 @@ public void onComplete() { @Test void nonPositiveNumber() { - final Path path = Paths.get("src/test/resources/com/linecorp/armeria/common/stream/test.txt"); - assertThatThrownBy(() -> StreamMessage.builder(path).build().range(-1, 0)) + assertThatThrownBy(() -> StreamMessage.builder(testFilePath).build().range(-1, 0)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("offset: -1 (expected: >= 0)"); - assertThatThrownBy(() -> StreamMessage.builder(path).build().range(0, 0)) + assertThatThrownBy(() -> StreamMessage.builder(testFilePath).build().range(0, 0)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("length: 0 (expected: > 0)"); - assertThatThrownBy(() -> StreamMessage.builder(path).bufferSize(0)) + assertThatThrownBy(() -> StreamMessage.builder(testFilePath).bufferSize(0)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("bufferSize: 0 (expected: > 0)"); } @@ -189,8 +190,7 @@ void nonPositiveNumber() { @Test void defaultBlockingTaskExecutor_withServiceRequestContext() { final ServiceRequestContext sctx = ServiceRequestContext.of(HttpRequest.of(HttpMethod.GET, "/")); - final Path path = Paths.get("src/test/resources/com/linecorp/armeria/common/stream/test.txt"); - final ByteStreamMessage publisher = StreamMessage.builder(path).bufferSize(1).build(); + final ByteStreamMessage publisher = StreamMessage.builder(testFilePath).bufferSize(1).build(); final StringAggregator stringAggregator = new StringAggregator(); try (SafeCloseable ignored = sctx.push()) { publisher.subscribe(stringAggregator); @@ -202,8 +202,7 @@ void defaultBlockingTaskExecutor_withServiceRequestContext() { @Test void nullBlockingTaskExecutor_withClientRequestContext() { final ClientRequestContext cctx = ClientRequestContext.of(HttpRequest.of(HttpMethod.GET, "/")); - final Path path = Paths.get("src/test/resources/com/linecorp/armeria/common/stream/test.txt"); - final ByteStreamMessage publisher = StreamMessage.builder(path).bufferSize(1).build(); + final ByteStreamMessage publisher = StreamMessage.builder(testFilePath).bufferSize(1).build(); final StringAggregator stringAggregator = new StringAggregator(); try (SafeCloseable ignored = cctx.push()) { publisher.subscribe(stringAggregator); @@ -214,8 +213,7 @@ void nullBlockingTaskExecutor_withClientRequestContext() { @Test void skip0() { - final Path path = Paths.get("src/test/resources/com/linecorp/armeria/common/stream/test.txt"); - final ByteStreamMessage publisher = StreamMessage.builder(path).bufferSize(1).build() + final ByteStreamMessage publisher = StreamMessage.builder(testFilePath).bufferSize(1).build() .range(0, Long.MAX_VALUE); final StringAggregator stringAggregator = new StringAggregator(); @@ -227,8 +225,7 @@ void skip0() { @Test void skip0_take13() { - final Path path = Paths.get("src/test/resources/com/linecorp/armeria/common/stream/test.txt"); - final ByteStreamMessage publisher = StreamMessage.builder(path).bufferSize(1).build() + final ByteStreamMessage publisher = StreamMessage.builder(testFilePath).bufferSize(1).build() .range(0, 13); final StringAggregator stringAggregator = new StringAggregator(); @@ -240,8 +237,7 @@ void skip0_take13() { @Test void skip12() { - final Path path = Paths.get("src/test/resources/com/linecorp/armeria/common/stream/test.txt"); - final ByteStreamMessage publisher = StreamMessage.builder(path).bufferSize(1).build() + final ByteStreamMessage publisher = StreamMessage.builder(testFilePath).bufferSize(1).build() .range(12, Long.MAX_VALUE); final StringAggregator stringAggregator = new StringAggregator(); @@ -253,8 +249,7 @@ void skip12() { @Test void skip12_take13() { - final Path path = Paths.get("src/test/resources/com/linecorp/armeria/common/stream/test.txt"); - final ByteStreamMessage publisher = StreamMessage.builder(path).bufferSize(1).build() + final ByteStreamMessage publisher = StreamMessage.builder(testFilePath).bufferSize(1).build() .range(12, 13); final StringAggregator stringAggregator = new StringAggregator(); @@ -266,8 +261,7 @@ void skip12_take13() { @Test void skipAll() { - final Path path = Paths.get("src/test/resources/com/linecorp/armeria/common/stream/test.txt"); - final ByteStreamMessage publisher = StreamMessage.builder(path).bufferSize(1).build() + final ByteStreamMessage publisher = StreamMessage.builder(testFilePath).bufferSize(1).build() .range(999, Long.MAX_VALUE); final StringAggregator stringAggregator = new StringAggregator(); @@ -279,8 +273,7 @@ void skipAll() { @Test void skipMost() { - final Path path = Paths.get("src/test/resources/com/linecorp/armeria/common/stream/test.txt"); - final ByteStreamMessage publisher = StreamMessage.builder(path).bufferSize(1).build() + final ByteStreamMessage publisher = StreamMessage.builder(testFilePath).bufferSize(1).build() .range(48, Long.MAX_VALUE); final StringAggregator stringAggregator = new StringAggregator(); @@ -292,8 +285,7 @@ void skipMost() { @Test void skip1() { - final Path path = Paths.get("src/test/resources/com/linecorp/armeria/common/stream/test.txt"); - final ByteStreamMessage publisher = StreamMessage.builder(path).bufferSize(1).build() + final ByteStreamMessage publisher = StreamMessage.builder(testFilePath).bufferSize(1).build() .range(1, Long.MAX_VALUE); final StringAggregator stringAggregator = new StringAggregator(); diff --git a/core/src/test/java/com/linecorp/armeria/common/util/StartStopSupportTest.java b/core/src/test/java/com/linecorp/armeria/common/util/StartStopSupportTest.java index 46d6ebe71f5a..91813c5dc7c6 100644 --- a/core/src/test/java/com/linecorp/armeria/common/util/StartStopSupportTest.java +++ b/core/src/test/java/com/linecorp/armeria/common/util/StartStopSupportTest.java @@ -43,34 +43,27 @@ import java.util.concurrent.atomic.AtomicLong; import org.assertj.core.api.ThrowableAssert.ThrowingCallable; -import org.junit.ClassRule; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.DisableOnDebug; -import org.junit.rules.TestRule; -import org.junit.rules.Timeout; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; import com.google.common.base.Stopwatch; import com.linecorp.armeria.common.annotation.Nullable; import com.linecorp.armeria.internal.testing.AnticipatedException; -import com.linecorp.armeria.testing.junit4.common.EventLoopRule; +import com.linecorp.armeria.testing.junit5.common.EventLoopExtension; import io.netty.util.concurrent.FutureListener; -public class StartStopSupportTest { +class StartStopSupportTest { private static final String THREAD_NAME_PREFIX = StartStopSupportTest.class.getSimpleName(); - @ClassRule - public static final EventLoopRule rule = new EventLoopRule( + @RegisterExtension + static final EventLoopExtension eventLoop = new EventLoopExtension( ThreadFactories.newThreadFactory(THREAD_NAME_PREFIX, false)); - @Rule - public TestRule globalTimeout = new DisableOnDebug(new Timeout(10, TimeUnit.SECONDS)); - @Test - public void simpleStartStop() throws Throwable { + void simpleStartStop() throws Throwable { final StartTask startTask = SpiedStartTask.of("foo"); final StopTask stopTask = mock(StopTask.class); final StartStop startStop = new StartStop(startTask, stopTask); @@ -88,7 +81,7 @@ public void simpleStartStop() throws Throwable { } @Test - public void startingWhileStarting() { + void startingWhileStarting() { final CountDownLatch startLatch = new CountDownLatch(2); final StartStop startStop = new StartStop(arg -> { // Signal the main thread that it entered the STARTING state. @@ -116,7 +109,7 @@ public void startingWhileStarting() { } @Test - public void startingWhileStarted() { + void startingWhileStarted() { final StartStop startStop = new StartStop(arg -> "foo", arg -> null); // Enter the STARTED state. @@ -133,7 +126,7 @@ public void startingWhileStarted() { } @Test - public void startingWhileStopping() throws Throwable { + void startingWhileStopping() throws Throwable { final StartTask startTask = SpiedStartTask.of("bar"); final CountDownLatch stopLatch = new CountDownLatch(2); final StartStop startStop = new StartStop(startTask, arg -> { @@ -167,7 +160,7 @@ public void startingWhileStopping() throws Throwable { } @Test - public void stoppingWhileStarting() throws Throwable { + void stoppingWhileStarting() throws Throwable { final StopTask stopTask = mock(StopTask.class); final CountDownLatch startLatch = new CountDownLatch(2); final StartStop startStop = new StartStop(arg -> { @@ -198,7 +191,7 @@ public void stoppingWhileStarting() throws Throwable { } @Test - public void stoppingWhileStopping() { + void stoppingWhileStopping() { final AtomicLong stopArg = new AtomicLong(); final CountDownLatch stopLatch = new CountDownLatch(2); final StartStop startStop = new StartStop(arg -> "bar", arg -> { @@ -228,7 +221,7 @@ public void stoppingWhileStopping() { } @Test - public void stoppingWhileStopped() { + void stoppingWhileStopped() { final StartStop startStop = new StartStop(arg -> "foo", arg -> null); // Enter the STOPPED state. @@ -241,7 +234,7 @@ public void stoppingWhileStopped() { } @Test - public void rollback() throws Throwable { + void rollback() throws Throwable { final StopTask stopTask = mock(StopTask.class); final Exception exception = new AnticipatedException(); final StartStop startStop = new StartStop(arg -> { @@ -255,7 +248,7 @@ public void rollback() throws Throwable { } @Test - public void rollbackFailure() throws Throwable { + void rollbackFailure() throws Throwable { final Exception startException = new AnticipatedException(); final Exception stopException = new AnticipatedException(); final List rollbackFailed = new ArrayList<>(); @@ -278,7 +271,7 @@ protected void rollbackFailed(Throwable cause) { } @Test - public void listenerNotifications() { + void listenerNotifications() { final CountDownLatch startLatch = new CountDownLatch(1); final CountDownLatch stopLatch = new CountDownLatch(1); final EventListener listener = new EventListener() { @@ -349,7 +342,7 @@ protected void notifyStopped(EventListener listener, @Nullable Long arg) throws } @Test - public void listenerNotifyStartingFailure() throws Exception { + void listenerNotifyStartingFailure() throws Exception { final EventListener listener = mock(EventListener.class); final AnticipatedException exception = new AnticipatedException(); final List recording = new ArrayList<>(); @@ -373,7 +366,7 @@ protected void notificationFailed(EventListener listener, Throwable cause) { } @Test - public void listenerNotifyStartedFailure() throws Exception { + void listenerNotifyStartedFailure() throws Exception { final EventListener listener = mock(EventListener.class); final AnticipatedException exception = new AnticipatedException(); final List recording = new ArrayList<>(); @@ -396,7 +389,7 @@ protected void notificationFailed(EventListener listener, Throwable cause) { } @Test - public void listenerRemoval() throws Exception { + void listenerRemoval() throws Exception { final EventListener listener = mock(EventListener.class); final AtomicInteger called = new AtomicInteger(); final StartStop startStop = new StartStop(arg -> "bar", arg -> null) { @@ -432,7 +425,7 @@ protected void notifyStopped(EventListener listener, @Nullable Long arg) { } @Test - public void close() { + void close() { final StartStop startStop = new StartStop(arg -> "foo", arg -> null); startStop.close(); assertThat(startStop.isClosing()).isTrue(); @@ -440,7 +433,7 @@ public void close() { } @Test - public void closeWhileStopped() throws Throwable { + void closeWhileStopped() throws Throwable { final StartTask startTask = SpiedStartTask.of("bar"); final StopTask stopTask = mock(StopTask.class); final StartStop startStop = new StartStop(startTask, stopTask); @@ -453,7 +446,7 @@ public void closeWhileStopped() throws Throwable { } @Test - public void closeWhileStarted() throws Throwable { + void closeWhileStarted() throws Throwable { final StartTask startTask = SpiedStartTask.of("foo"); final StopTask stopTask = mock(StopTask.class); final StartStop startStop = new StartStop(startTask, stopTask); @@ -467,7 +460,7 @@ public void closeWhileStarted() throws Throwable { } @Test - public void closeFailure() { + void closeFailure() { final Exception exception = new AnticipatedException(); final List recording = new ArrayList<>(); final StartStop startStop = new StartStop(arg -> "bar", arg -> { @@ -488,7 +481,7 @@ protected void closeFailed(Throwable cause) { } @Test - public void interruptedWhileClosing() throws Throwable { + void interruptedWhileClosing() throws Throwable { final AtomicBoolean interrupted = new AtomicBoolean(); final CountDownLatch stopLatch = new CountDownLatch(2); final StartStop startStop = new StartStop(arg -> "foo", arg -> { @@ -525,7 +518,7 @@ public void interruptedWhileClosing() throws Throwable { } @Test - public void startAfterClose() throws Exception { + void startAfterClose() throws Exception { final StartStop startStop = new StartStop(arg -> "foo", arg -> null); startStop.close(); assertThatThrownBy(() -> startStop.start(false).join()).isInstanceOf(CompletionException.class) @@ -534,9 +527,9 @@ public void startAfterClose() throws Exception { } @Test - public void doStartReturnsNull() throws Exception { + void doStartReturnsNull() throws Exception { final StartStopSupport startStop = - new StartStopSupport(rule.get()) { + new StartStopSupport(eventLoop.get()) { @Override protected CompletionStage doStart(@Nullable Void arg) throws Exception { return null; @@ -557,9 +550,9 @@ protected CompletionStage doStop(@Nullable Void arg) throws Exception { } @Test - public void doStopReturnsNull() throws Exception { + void doStopReturnsNull() throws Exception { final StartStopSupport startStop = - new StartStopSupport(rule.get()) { + new StartStopSupport(eventLoop.get()) { @Override protected CompletionStage doStart(@Nullable Void arg) throws Exception { return UnmodifiableFuture.completedFuture("started"); @@ -581,7 +574,7 @@ protected CompletionStage doStop(@Nullable Void arg) throws Exception { } @Test - public void rejectingExecutor() throws Exception { + void rejectingExecutor() throws Exception { final Executor executor = mock(Executor.class); final StartStopSupport startStop = new StartStopSupport(executor) { @@ -604,7 +597,7 @@ protected CompletionStage doStop(@Nullable Void arg) throws Exception { // Run the first execution so that startup succeeds. doAnswer(invocation -> { - rule.get().execute(invocation.getArgument(0)); + eventLoop.get().execute(invocation.getArgument(0)); return null; }).when(executor).execute(any()); assertThat(startStop.start(true).join()).isEqualTo("started"); @@ -622,7 +615,7 @@ private static class StartStop extends StartStopSupport doStop(@Nullable Long arg) throws Exception { private static CompletionStage execute(ThrowingFunction task, @Nullable T arg) { final CompletableFuture future = new CompletableFuture<>(); - rule.get().submit(() -> task.run(arg)).addListener((FutureListener) f -> { + eventLoop.get().submit(() -> task.run(arg)).addListener((FutureListener) f -> { if (f.isSuccess()) { future.complete(f.getNow()); } else { diff --git a/core/src/test/java/com/linecorp/armeria/internal/common/util/KeyStoreUtilTest.java b/core/src/test/java/com/linecorp/armeria/internal/common/util/KeyStoreUtilTest.java index 89308bb6039e..3202a4f649a3 100644 --- a/core/src/test/java/com/linecorp/armeria/internal/common/util/KeyStoreUtilTest.java +++ b/core/src/test/java/com/linecorp/armeria/internal/common/util/KeyStoreUtilTest.java @@ -116,7 +116,8 @@ void shouldFailIfFileIsNeitherJksNorPkcs12(String filename) throws Exception { } private File getFile(String filename) { - final URL url = getClass().getResource(filename); + final URL url = getClass().getClassLoader().getResource( + "testing/core/" + KeyStoreUtilTest.class.getSimpleName() + '/' + filename); assertThat(url).isNotNull(); return new File(url.getFile()); } diff --git a/core/src/test/java/com/linecorp/armeria/internal/common/util/MinifiedBouncyCastleProviderTest.java b/core/src/test/java/com/linecorp/armeria/internal/common/util/MinifiedBouncyCastleProviderTest.java index e83b19b21125..bfff9b731b08 100644 --- a/core/src/test/java/com/linecorp/armeria/internal/common/util/MinifiedBouncyCastleProviderTest.java +++ b/core/src/test/java/com/linecorp/armeria/internal/common/util/MinifiedBouncyCastleProviderTest.java @@ -65,15 +65,15 @@ void nestedInvocation() { } private void loadPkcs5() { - loadKey("/pkcs5.pem"); + loadKey("/testing/core/ServerBuilderTest/pkcs5.pem"); } private void loadPkcs8() { - loadKey("/pkcs8.pem"); + loadKey("/testing/core/ServerBuilderTest/pkcs8.pem"); } private void loadKey(String privateKeyPath) { - SslContextBuilder.forServer(getClass().getResourceAsStream("/cert.pem"), + SslContextBuilder.forServer(getClass().getResourceAsStream("/testing/core/ServerBuilderTest/cert.pem"), getClass().getResourceAsStream(privateKeyPath), null); } diff --git a/core/src/test/java/com/linecorp/armeria/internal/server/annotation/DefaultDescriptiveTypeInfoProviderTest.java b/core/src/test/java/com/linecorp/armeria/internal/server/annotation/DefaultDescriptiveTypeInfoProviderTest.java index 720ce7e6c3ca..2799650b7231 100644 --- a/core/src/test/java/com/linecorp/armeria/internal/server/annotation/DefaultDescriptiveTypeInfoProviderTest.java +++ b/core/src/test/java/com/linecorp/armeria/internal/server/annotation/DefaultDescriptiveTypeInfoProviderTest.java @@ -69,6 +69,9 @@ class DefaultDescriptiveTypeInfoProviderTest { + private static final String RESOURCE_PATH_PREFIX = + "/testing/core/" + DefaultDescriptiveTypeInfoProviderTest.class.getSimpleName() + '/'; + private static final JsonMapper json5Mapper = JsonMapper.builder() .enable(JsonReadFeature.ALLOW_JAVA_COMMENTS.mappedFeature()) @@ -250,7 +253,7 @@ void paramSpecification() throws IOException { .content(); final InputStream resourceAsStream = DefaultDescriptiveTypeInfoProviderTest.class.getResourceAsStream( - "ReflectiveDescriptiveTypeInfoProviderTest_specification.json5"); + RESOURCE_PATH_PREFIX + "ReflectiveDescriptiveTypeInfoProviderTest_specification.json5"); final JsonNode expected = json5Mapper.readTree(resourceAsStream); assertThat(response.get("services").get(0).get("name").textValue()) @@ -270,7 +273,7 @@ void jsonSpecification() throws Exception { .execute() .content(); final InputStream resourceAsStream = DefaultDescriptiveTypeInfoProviderTest.class.getResourceAsStream( - "JsonDescriptiveTypeInfoProviderTest_specification.json5"); + RESOURCE_PATH_PREFIX + "JsonDescriptiveTypeInfoProviderTest_specification.json5"); final JsonNode expected = json5Mapper.readTree(resourceAsStream); assertThat(response.get("services").get(0).get("name").textValue()) diff --git a/core/src/test/java/com/linecorp/armeria/server/FallbackServiceRedirectionTest.java b/core/src/test/java/com/linecorp/armeria/server/FallbackServiceRedirectionTest.java new file mode 100644 index 000000000000..a230e2b2a89f --- /dev/null +++ b/core/src/test/java/com/linecorp/armeria/server/FallbackServiceRedirectionTest.java @@ -0,0 +1,95 @@ +/* + * Copyright 2023 LINE Corporation + * + * LINE Corporation licenses this file to you 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. + */ +package com.linecorp.armeria.server; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.extension.RegisterExtension; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +import com.linecorp.armeria.client.BlockingWebClient; +import com.linecorp.armeria.client.redirect.RedirectConfig; +import com.linecorp.armeria.common.AggregatedHttpResponse; +import com.linecorp.armeria.common.HttpHeaderNames; +import com.linecorp.armeria.common.HttpRequest; +import com.linecorp.armeria.common.HttpResponse; +import com.linecorp.armeria.testing.junit5.server.ServerExtension; + +class FallbackServiceRedirectionTest { + + @RegisterExtension + static final ServerExtension server = new ServerExtension() { + @Override + protected void configure(ServerBuilder sb) throws Exception { + final HttpService service = (ctx, req) -> HttpResponse.of(req.path()); + sb.serviceUnder("/service", service); + sb.serviceUnder("/service%2F", service); + sb.serviceUnder("/foo/bar", service); + sb.serviceUnder("/foo/bar%2F", service); + } + }; + + @RegisterExtension + static final ServerExtension proxy = new ServerExtension() { + @Override + protected void configure(ServerBuilder sb) throws Exception { + sb.serviceUnder("/proxy", (ctx, req) -> { + final HttpRequest request = req.withHeaders(req.headers() + .toBuilder() + .path(req.path().replace("/proxy", "")) + .build()); + ctx.updateRequest(request); + return server.webClient().execute(request); + }); + } + }; + + @CsvSource({ + "/service, service/", + "/service?a=b, service/?a=b", + "/service%2F, service%2F/", + "/service%2F?a=b, service%2F/?a=b", + "/foo/bar, bar/", + "/foo/bar?a=b, bar/?a=b", + "/foo/bar%2F, bar%2F/", + "/foo/bar%2F?a=b, bar%2F/?a=b" + }) + @ParameterizedTest + void redirection(String path, String redirectLocation) { + final BlockingWebClient client = server.blockingWebClient(); + final AggregatedHttpResponse response = client.get(path); + assertThat(response.headers().get(HttpHeaderNames.LOCATION)).isEqualTo(redirectLocation); + } + + @CsvSource({ + "/proxy/service, /service/", + "/proxy/service?a=b, /service/?a=b", + "/proxy/service%2F, /service%2F/", + "/proxy/service%2F?a=b, /service%2F/?a=b", + "/proxy/foo/bar, /foo/bar/", + "/proxy/foo/bar?a=b, /foo/bar/?a=b", + "/proxy/foo/bar%2F, /foo/bar%2F/", + "/proxy/foo/bar%2F?a=b, /foo/bar%2F/?a=b" + }) + @ParameterizedTest + void redirectingClient(String path, String changedPath) { + final BlockingWebClient client = + proxy.blockingWebClient(builder -> builder.followRedirects(RedirectConfig.of())); + final AggregatedHttpResponse response = client.get(path); + assertThat(response.contentUtf8()).isEqualTo(changedPath); + } +} diff --git a/core/src/test/java/com/linecorp/armeria/server/HttpServerAutoRedirectTest.java b/core/src/test/java/com/linecorp/armeria/server/HttpServerAutoRedirectTest.java index 430f25bd0c30..3c58940bb936 100644 --- a/core/src/test/java/com/linecorp/armeria/server/HttpServerAutoRedirectTest.java +++ b/core/src/test/java/com/linecorp/armeria/server/HttpServerAutoRedirectTest.java @@ -71,29 +71,29 @@ void redirection() { res = client.get("/a"); assertThat(res.status()).isSameAs(HttpStatus.TEMPORARY_REDIRECT); - assertThat(res.headers().get(HttpHeaderNames.LOCATION)).isEqualTo("/a/"); + assertThat(res.headers().get(HttpHeaderNames.LOCATION)).isEqualTo("a/"); res = client.get("/b"); assertThat(res.status()).isSameAs(HttpStatus.TEMPORARY_REDIRECT); - assertThat(res.headers().get(HttpHeaderNames.LOCATION)).isEqualTo("/b/"); + assertThat(res.headers().get(HttpHeaderNames.LOCATION)).isEqualTo("b/"); res = client.get("/c/1"); assertThat(res.status()).isSameAs(HttpStatus.TEMPORARY_REDIRECT); - assertThat(res.headers().get(HttpHeaderNames.LOCATION)).isEqualTo("/c/1/"); + assertThat(res.headers().get(HttpHeaderNames.LOCATION)).isEqualTo("1/"); res = client.get("/d"); assertThat(res.status()).isSameAs(HttpStatus.OK); res = client.get("/e"); assertThat(res.status()).isSameAs(HttpStatus.TEMPORARY_REDIRECT); - assertThat(res.headers().get(HttpHeaderNames.LOCATION)).isEqualTo("/e/"); + assertThat(res.headers().get(HttpHeaderNames.LOCATION)).isEqualTo("e/"); res = client.delete("/e"); assertThat(res.status()).isSameAs(HttpStatus.NOT_FOUND); res = client.get("/f"); assertThat(res.status()).isSameAs(HttpStatus.TEMPORARY_REDIRECT); - assertThat(res.headers().get(HttpHeaderNames.LOCATION)).isEqualTo("/f/"); + assertThat(res.headers().get(HttpHeaderNames.LOCATION)).isEqualTo("f/"); res = client.get("/f/"); assertThat(res.status()).isSameAs(HttpStatus.ACCEPTED); diff --git a/core/src/test/java/com/linecorp/armeria/server/ServerBuilderTest.java b/core/src/test/java/com/linecorp/armeria/server/ServerBuilderTest.java index ec084bc408e6..0abf99cf3ae1 100644 --- a/core/src/test/java/com/linecorp/armeria/server/ServerBuilderTest.java +++ b/core/src/test/java/com/linecorp/armeria/server/ServerBuilderTest.java @@ -66,6 +66,9 @@ class ServerBuilderTest { + private static final String RESOURCE_PATH_PREFIX = + "/testing/core/" + ServerBuilderTest.class.getSimpleName() + '/'; + private static ClientFactory clientFactory; @RegisterExtension @@ -500,26 +503,26 @@ void tlsCustomizerWithoutTlsSelfSigned() { } @ParameterizedTest - @CsvSource({ "/pkcs5.pem", "/pkcs8.pem" }) - void tlsPkcsPrivateKeys(String privateKeyPath) { + @CsvSource({ "pkcs5.pem", "pkcs8.pem" }) + void tlsPkcsPrivateKeys(String privateKeyFileName) { final String resourceRoot = '/' + MinifiedBouncyCastleProvider.class.getPackage().getName().replace('.', '/') + '/'; Server.builder() - .tls(getClass().getResourceAsStream("/cert.pem"), - getClass().getResourceAsStream(privateKeyPath)) + .tls(getClass().getResourceAsStream(RESOURCE_PATH_PREFIX + "cert.pem"), + getClass().getResourceAsStream(RESOURCE_PATH_PREFIX + privateKeyFileName)) .service("/", (ctx, req) -> HttpResponse.of(200)) .build(); } @ParameterizedTest - @CsvSource({ "/pkcs5.pem", "/pkcs8.pem" }) - void tlsPkcsPrivateKeysWithCustomizer(String privateKeyPath) { + @CsvSource({ "pkcs5.pem", "pkcs8.pem" }) + void tlsPkcsPrivateKeysWithCustomizer(String privateKeyFileName) { Server.builder() .tlsSelfSigned() .tlsCustomizer(sslCtxBuilder -> { sslCtxBuilder.keyManager( - getClass().getResourceAsStream("/cert.pem"), - getClass().getResourceAsStream(privateKeyPath)); + getClass().getResourceAsStream(RESOURCE_PATH_PREFIX + "cert.pem"), + getClass().getResourceAsStream(RESOURCE_PATH_PREFIX + privateKeyFileName)); }) .service("/", (ctx, req) -> HttpResponse.of(200)) .build(); diff --git a/core/src/test/java/com/linecorp/armeria/server/ServerTlsCertificateMetricsTest.java b/core/src/test/java/com/linecorp/armeria/server/ServerTlsCertificateMetricsTest.java index 8928b6551424..73d8e97ec3bf 100644 --- a/core/src/test/java/com/linecorp/armeria/server/ServerTlsCertificateMetricsTest.java +++ b/core/src/test/java/com/linecorp/armeria/server/ServerTlsCertificateMetricsTest.java @@ -35,6 +35,9 @@ class ServerTlsCertificateMetricsTest { + private static final String RESOURCE_PATH_PREFIX = + "/testing/core/" + ServerTlsCertificateMetricsTest.class.getSimpleName() + '/'; + private static final String CERT_VALIDITY_GAUGE_NAME = "armeria.server.tls.certificate.validity"; private static final String CERT_VALIDITY_DAYS_GAUGE_NAME = "armeria.server.tls.certificate.validity.days"; @@ -127,8 +130,9 @@ void tlsMetricGivenVirtualHostCertificateNotExpired() throws CertificateExceptio @Test void tlsMetricGivenCertificateChainNotExpired() { - final InputStream expiredCertificateChain = getClass().getResourceAsStream("certificate-chain.pem"); - final InputStream pk = getClass().getResourceAsStream("pk.key"); + final InputStream expiredCertificateChain = getClass().getResourceAsStream( + RESOURCE_PATH_PREFIX + "certificate-chain.pem"); + final InputStream pk = getClass().getResourceAsStream(RESOURCE_PATH_PREFIX + "pk.key"); final MeterRegistry meterRegistry = PrometheusMeterRegistries.newRegistry(); Server.builder() @@ -166,8 +170,8 @@ void tlsMetricGivenExpired() throws CertificateException { @Test void tlsMetricGivenCertificateChainExpired() { final InputStream expiredCertificateChain = getClass() - .getResourceAsStream("expired-certificate-chain.pem"); - final InputStream pk = getClass().getResourceAsStream("expire-pk.key"); + .getResourceAsStream(RESOURCE_PATH_PREFIX + "expired-certificate-chain.pem"); + final InputStream pk = getClass().getResourceAsStream(RESOURCE_PATH_PREFIX + "expire-pk.key"); final MeterRegistry meterRegistry = PrometheusMeterRegistries.newRegistry(); Server.builder() diff --git a/core/src/test/java/com/linecorp/armeria/server/ServerTlsValidationTest.java b/core/src/test/java/com/linecorp/armeria/server/ServerTlsValidationTest.java index e118c66282be..e800f5d79e2c 100644 --- a/core/src/test/java/com/linecorp/armeria/server/ServerTlsValidationTest.java +++ b/core/src/test/java/com/linecorp/armeria/server/ServerTlsValidationTest.java @@ -31,6 +31,9 @@ class ServerTlsValidationTest { + private static final String RESOURCE_PATH_PREFIX = + "/testing/core/" + ServerTlsValidationTest.class.getSimpleName() + '/'; + // TODO: Re-enable this test once we figure out why it does not raise an exception. When key store password // is not given to key store, it is expected that this test raise an exception. For reference, in case // of PKCS12 key store, an exception is raised when key store password is not given. @@ -44,7 +47,7 @@ void testJksKeyStoreWithNullPassword() throws Exception { * key password = keypassword */ final KeyStore keyStore = KeyStore.getInstance("JKS"); - keyStore.load(getClass().getResource("keystore.jks").openStream(), null); + keyStore.load(getClass().getResourceAsStream(RESOURCE_PATH_PREFIX + "keystore.jks"), null); final KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); @@ -67,7 +70,7 @@ void testPkcs12KeyStoreWithNullPassword() throws Exception { * keypassword = keystorepassword = password */ final KeyStore keyStore = KeyStore.getInstance("PKCS12"); - keyStore.load(getClass().getResource("keystore.p12").openStream(), null); + keyStore.load(getClass().getResourceAsStream(RESOURCE_PATH_PREFIX + "keystore.p12"), null); final KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(keyStore, "password".toCharArray()); @@ -89,7 +92,8 @@ void testPkcs12KeyStoreWithPassword() throws Exception { * keypassword = keystorepassword = password */ final KeyStore keyStore = KeyStore.getInstance("PKCS12"); - keyStore.load(getClass().getResource("keystore.p12").openStream(), "password".toCharArray()); + keyStore.load(getClass().getResourceAsStream(RESOURCE_PATH_PREFIX + "keystore.p12"), + "password".toCharArray()); final KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(keyStore, "password".toCharArray()); diff --git a/core/src/test/java/com/linecorp/armeria/server/file/FileServiceBuilderTest.java b/core/src/test/java/com/linecorp/armeria/server/file/FileServiceBuilderTest.java index c9ea876e0679..b5e2c6b77441 100644 --- a/core/src/test/java/com/linecorp/armeria/server/file/FileServiceBuilderTest.java +++ b/core/src/test/java/com/linecorp/armeria/server/file/FileServiceBuilderTest.java @@ -16,6 +16,7 @@ package com.linecorp.armeria.server.file; +import static com.linecorp.armeria.server.file.FileServiceTest.baseResourceDir; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -30,16 +31,13 @@ class FileServiceBuilderTest { - private static final String BASE_RESOURCE_DIR = - FileServiceBuilderTest.class.getPackage().getName().replace('.', '/') + '/'; - @RegisterExtension static final ServerExtension server = new ServerExtension() { @Override protected void configure(ServerBuilder sb) { sb.serviceUnder( "/mediaTypeResolver", - FileService.builder(getClass().getClassLoader(), BASE_RESOURCE_DIR + "bar") + FileService.builder(getClass().getClassLoader(), baseResourceDir + "bar") .mediaTypeResolver((path, contentEncoding) -> { if (path.endsWith(".custom-json-extension")) { return MediaType.JSON_UTF_8; diff --git a/core/src/test/java/com/linecorp/armeria/server/file/FileServiceTest.java b/core/src/test/java/com/linecorp/armeria/server/file/FileServiceTest.java index b94681ea4890..b686b4a75dde 100644 --- a/core/src/test/java/com/linecorp/armeria/server/file/FileServiceTest.java +++ b/core/src/test/java/com/linecorp/armeria/server/file/FileServiceTest.java @@ -74,8 +74,8 @@ class FileServiceTest { private static final ZoneId UTC = ZoneId.of("UTC"); private static final Pattern ETAG_PATTERN = Pattern.compile("^\"[^\"]+\"$"); - private static final String baseResourceDir = - FileServiceTest.class.getPackage().getName().replace('.', '/') + '/'; + static final String baseResourceDir = + "testing/core/" + FileServiceTest.class.getSimpleName() + '/'; @TempDir static Path tmpDir; diff --git a/core/src/test/java/com/linecorp/armeria/server/websocket/WebSocketServiceConfigTest.java b/core/src/test/java/com/linecorp/armeria/server/websocket/WebSocketServiceConfigTest.java new file mode 100644 index 000000000000..7303cfcc7b32 --- /dev/null +++ b/core/src/test/java/com/linecorp/armeria/server/websocket/WebSocketServiceConfigTest.java @@ -0,0 +1,54 @@ +/* + * Copyright 2023 LINE Corporation + * + * LINE Corporation licenses this file to you 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. + */ + +package com.linecorp.armeria.server.websocket; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; + +import com.linecorp.armeria.internal.common.websocket.WebSocketUtil; +import com.linecorp.armeria.server.Server; +import com.linecorp.armeria.server.ServiceConfig; +import com.linecorp.armeria.server.websocket.WebSocketServiceTest.AbstractWebSocketHandler; + +class WebSocketServiceConfigTest { + + @Test + void webSocketServiceDefaultConfigValues() { + final WebSocketService webSocketService = WebSocketService.of(new AbstractWebSocketHandler()); + final Server server = Server.builder().service("/", webSocketService).build(); + assertThat(server.config().serviceConfigs()).hasSize(1); + ServiceConfig serviceConfig = server.config().serviceConfigs().get(0); + assertThat(serviceConfig.requestTimeoutMillis()).isEqualTo( + WebSocketUtil.DEFAULT_REQUEST_TIMEOUT_MILLIS); + assertThat(serviceConfig.maxRequestLength()).isEqualTo(WebSocketUtil.DEFAULT_MAX_REQUEST_LENGTH); + assertThat(serviceConfig.requestAutoAbortDelayMillis()).isEqualTo( + WebSocketUtil.DEFAULT_REQUEST_AUTO_ABORT_DELAY_MILLIS); + + server.reconfigure(sb -> sb.requestAutoAbortDelayMillis(1000) + .route() + .get("/") + .requestTimeoutMillis(2000) + .build(webSocketService)); + + assertThat(server.config().serviceConfigs()).hasSize(1); + serviceConfig = server.config().serviceConfigs().get(0); + assertThat(serviceConfig.requestTimeoutMillis()).isEqualTo(2000); + assertThat(serviceConfig.maxRequestLength()).isEqualTo(WebSocketUtil.DEFAULT_MAX_REQUEST_LENGTH); + assertThat(serviceConfig.requestAutoAbortDelayMillis()).isEqualTo(1000); + } +} diff --git a/core/src/test/resources/com/linecorp/armeria/internal/server/annotation/JsonDescriptiveTypeInfoProviderTest_specification.json5 b/core/src/test/resources/testing/core/DefaultDescriptiveTypeInfoProviderTest/JsonDescriptiveTypeInfoProviderTest_specification.json5 similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/internal/server/annotation/JsonDescriptiveTypeInfoProviderTest_specification.json5 rename to core/src/test/resources/testing/core/DefaultDescriptiveTypeInfoProviderTest/JsonDescriptiveTypeInfoProviderTest_specification.json5 diff --git a/core/src/test/resources/com/linecorp/armeria/internal/server/annotation/ReflectiveDescriptiveTypeInfoProviderTest_specification.json5 b/core/src/test/resources/testing/core/DefaultDescriptiveTypeInfoProviderTest/ReflectiveDescriptiveTypeInfoProviderTest_specification.json5 similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/internal/server/annotation/ReflectiveDescriptiveTypeInfoProviderTest_specification.json5 rename to core/src/test/resources/testing/core/DefaultDescriptiveTypeInfoProviderTest/ReflectiveDescriptiveTypeInfoProviderTest_specification.json5 diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/bar/bar.custom-json-extension b/core/src/test/resources/testing/core/FileServiceTest/bar/bar.custom-json-extension similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/bar/bar.custom-json-extension rename to core/src/test/resources/testing/core/FileServiceTest/bar/bar.custom-json-extension diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/bar/bar.custom-txt-extension b/core/src/test/resources/testing/core/FileServiceTest/bar/bar.custom-txt-extension similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/bar/bar.custom-txt-extension rename to core/src/test/resources/testing/core/FileServiceTest/bar/bar.custom-txt-extension diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/bar/bar.txt b/core/src/test/resources/testing/core/FileServiceTest/bar/bar.txt similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/bar/bar.txt rename to core/src/test/resources/testing/core/FileServiceTest/bar/bar.txt diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/bar/bar.unknown b/core/src/test/resources/testing/core/FileServiceTest/bar/bar.unknown similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/bar/bar.unknown rename to core/src/test/resources/testing/core/FileServiceTest/bar/bar.unknown diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/bar/bar.xhtml b/core/src/test/resources/testing/core/FileServiceTest/bar/bar.xhtml similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/bar/bar.xhtml rename to core/src/test/resources/testing/core/FileServiceTest/bar/bar.xhtml diff --git "a/core/src/test/resources/com/linecorp/armeria/server/file/bar/\302\242.txt" "b/core/src/test/resources/testing/core/FileServiceTest/bar/\302\242.txt" similarity index 100% rename from "core/src/test/resources/com/linecorp/armeria/server/file/bar/\302\242.txt" rename to "core/src/test/resources/testing/core/FileServiceTest/bar/\302\242.txt" diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/baz/baz.txt.br b/core/src/test/resources/testing/core/FileServiceTest/baz/baz.txt.br similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/baz/baz.txt.br rename to core/src/test/resources/testing/core/FileServiceTest/baz/baz.txt.br diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/baz/baz.txt.gz b/core/src/test/resources/testing/core/FileServiceTest/baz/baz.txt.gz similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/baz/baz.txt.gz rename to core/src/test/resources/testing/core/FileServiceTest/baz/baz.txt.gz diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/foo/foo.txt b/core/src/test/resources/testing/core/FileServiceTest/foo/foo.txt similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/foo/foo.txt rename to core/src/test/resources/testing/core/FileServiceTest/foo/foo.txt diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/foo/foo.txt.br b/core/src/test/resources/testing/core/FileServiceTest/foo/foo.txt.br similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/foo/foo.txt.br rename to core/src/test/resources/testing/core/FileServiceTest/foo/foo.txt.br diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/foo/foo.txt.gz b/core/src/test/resources/testing/core/FileServiceTest/foo/foo.txt.gz similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/foo/foo.txt.gz rename to core/src/test/resources/testing/core/FileServiceTest/foo/foo.txt.gz diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/foo/foo_alone.txt b/core/src/test/resources/testing/core/FileServiceTest/foo/foo_alone.txt similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/foo/foo_alone.txt rename to core/src/test/resources/testing/core/FileServiceTest/foo/foo_alone.txt diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/foo/index.html b/core/src/test/resources/testing/core/FileServiceTest/foo/index.html similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/foo/index.html rename to core/src/test/resources/testing/core/FileServiceTest/foo/index.html diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/qux/qux.json b/core/src/test/resources/testing/core/FileServiceTest/qux/qux.json similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/qux/qux.json rename to core/src/test/resources/testing/core/FileServiceTest/qux/qux.json diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/qux/qux.json.br b/core/src/test/resources/testing/core/FileServiceTest/qux/qux.json.br similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/qux/qux.json.br rename to core/src/test/resources/testing/core/FileServiceTest/qux/qux.json.br diff --git a/core/src/test/resources/com/linecorp/armeria/server/file/qux/qux.json.gz b/core/src/test/resources/testing/core/FileServiceTest/qux/qux.json.gz similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/file/qux/qux.json.gz rename to core/src/test/resources/testing/core/FileServiceTest/qux/qux.json.gz diff --git a/core/src/test/resources/com/linecorp/armeria/internal/common/util/keystore-different-password.jks b/core/src/test/resources/testing/core/KeyStoreUtilTest/keystore-different-password.jks similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/internal/common/util/keystore-different-password.jks rename to core/src/test/resources/testing/core/KeyStoreUtilTest/keystore-different-password.jks diff --git a/core/src/test/resources/com/linecorp/armeria/internal/common/util/keystore-two-keys.p12 b/core/src/test/resources/testing/core/KeyStoreUtilTest/keystore-two-keys.p12 similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/internal/common/util/keystore-two-keys.p12 rename to core/src/test/resources/testing/core/KeyStoreUtilTest/keystore-two-keys.p12 diff --git a/core/src/test/resources/com/linecorp/armeria/internal/common/util/keystore.jks b/core/src/test/resources/testing/core/KeyStoreUtilTest/keystore.jks similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/internal/common/util/keystore.jks rename to core/src/test/resources/testing/core/KeyStoreUtilTest/keystore.jks diff --git a/core/src/test/resources/com/linecorp/armeria/internal/common/util/keystore.p12 b/core/src/test/resources/testing/core/KeyStoreUtilTest/keystore.p12 similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/internal/common/util/keystore.p12 rename to core/src/test/resources/testing/core/KeyStoreUtilTest/keystore.p12 diff --git a/core/src/test/resources/com/linecorp/armeria/internal/common/util/not-keystore-empty.p12 b/core/src/test/resources/testing/core/KeyStoreUtilTest/not-keystore-empty.p12 similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/internal/common/util/not-keystore-empty.p12 rename to core/src/test/resources/testing/core/KeyStoreUtilTest/not-keystore-empty.p12 diff --git a/core/src/test/resources/com/linecorp/armeria/internal/common/util/not-keystore.p12 b/core/src/test/resources/testing/core/KeyStoreUtilTest/not-keystore.p12 similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/internal/common/util/not-keystore.p12 rename to core/src/test/resources/testing/core/KeyStoreUtilTest/not-keystore.p12 diff --git a/core/src/test/resources/com/linecorp/armeria/common/stream/test.txt b/core/src/test/resources/testing/core/PathStreamMessageTest/test.txt similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/common/stream/test.txt rename to core/src/test/resources/testing/core/PathStreamMessageTest/test.txt diff --git a/core/src/test/resources/server-list.properties b/core/src/test/resources/testing/core/PropertiesEndpointGroupTest/server-list.properties similarity index 100% rename from core/src/test/resources/server-list.properties rename to core/src/test/resources/testing/core/PropertiesEndpointGroupTest/server-list.properties diff --git a/core/src/test/resources/cert.pem b/core/src/test/resources/testing/core/ServerBuilderTest/cert.pem similarity index 100% rename from core/src/test/resources/cert.pem rename to core/src/test/resources/testing/core/ServerBuilderTest/cert.pem diff --git a/core/src/test/resources/pkcs5.pem b/core/src/test/resources/testing/core/ServerBuilderTest/pkcs5.pem similarity index 100% rename from core/src/test/resources/pkcs5.pem rename to core/src/test/resources/testing/core/ServerBuilderTest/pkcs5.pem diff --git a/core/src/test/resources/pkcs8.pem b/core/src/test/resources/testing/core/ServerBuilderTest/pkcs8.pem similarity index 100% rename from core/src/test/resources/pkcs8.pem rename to core/src/test/resources/testing/core/ServerBuilderTest/pkcs8.pem diff --git a/core/src/test/resources/com/linecorp/armeria/server/certificate-chain.pem b/core/src/test/resources/testing/core/ServerTlsCertificateMetricsTest/certificate-chain.pem similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/certificate-chain.pem rename to core/src/test/resources/testing/core/ServerTlsCertificateMetricsTest/certificate-chain.pem diff --git a/core/src/test/resources/com/linecorp/armeria/server/expire-pk.key b/core/src/test/resources/testing/core/ServerTlsCertificateMetricsTest/expire-pk.key similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/expire-pk.key rename to core/src/test/resources/testing/core/ServerTlsCertificateMetricsTest/expire-pk.key diff --git a/core/src/test/resources/com/linecorp/armeria/server/expired-certificate-chain.pem b/core/src/test/resources/testing/core/ServerTlsCertificateMetricsTest/expired-certificate-chain.pem similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/expired-certificate-chain.pem rename to core/src/test/resources/testing/core/ServerTlsCertificateMetricsTest/expired-certificate-chain.pem diff --git a/core/src/test/resources/com/linecorp/armeria/server/pk.key b/core/src/test/resources/testing/core/ServerTlsCertificateMetricsTest/pk.key similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/pk.key rename to core/src/test/resources/testing/core/ServerTlsCertificateMetricsTest/pk.key diff --git a/core/src/test/resources/com/linecorp/armeria/server/keystore.jks b/core/src/test/resources/testing/core/ServerTlsValidationTest/keystore.jks similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/keystore.jks rename to core/src/test/resources/testing/core/ServerTlsValidationTest/keystore.jks diff --git a/core/src/test/resources/com/linecorp/armeria/server/keystore.p12 b/core/src/test/resources/testing/core/ServerTlsValidationTest/keystore.p12 similarity index 100% rename from core/src/test/resources/com/linecorp/armeria/server/keystore.p12 rename to core/src/test/resources/testing/core/ServerTlsValidationTest/keystore.p12 diff --git a/dependencies.toml b/dependencies.toml index 3cefb5a0c008..2fc58f96fe0e 100644 --- a/dependencies.toml +++ b/dependencies.toml @@ -62,7 +62,6 @@ jetty11-jstl = "11.0.0" jetty93 = "9.3.30.v20211001" jetty94 = "9.4.51.v20230217" jetty-alpn-api = "1.1.3.v20160715" -jetty-alpn-agent = "2.0.10" jmh-core = "1.36" jmh-extras = "0.3.7" jmh-gradle-plugin = "0.7.1" @@ -84,7 +83,7 @@ micrometer13 = "1.3.20" mockito = "4.11.0" monix = "3.4.1" munit = "0.7.29" -netty = "4.1.94.Final" +netty = "4.1.95.Final" netty-incubator-transport-native-io_uring = "0.0.21.Final" nexus-publish = "1.3.0" node-gradle-plugin = "5.0.0" @@ -662,9 +661,6 @@ version.ref = "jetty94" [libraries.jetty-alpn-api] module = "org.eclipse.jetty.alpn:alpn-api" version.ref = "jetty-alpn-api" -[libraries.jetty-alpn-agent] -module = "org.mortbay.jetty.alpn:jetty-alpn-agent" -version.ref = "jetty-alpn-agent" [libraries.jmh-extras] module = "pl.project13.scala:sbt-jmh-extras" diff --git a/docs-client/package-lock.json b/docs-client/package-lock.json index 6bf80c6e2f8a..3d95ab26cd4e 100644 --- a/docs-client/package-lock.json +++ b/docs-client/package-lock.json @@ -1851,7 +1851,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1865,7 +1864,6 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -1874,7 +1872,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -1883,7 +1880,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -1892,14 +1888,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", - "dev": true + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.14", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -2278,7 +2272,6 @@ "version": "8.4.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", - "dev": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -2288,7 +2281,6 @@ "version": "3.7.3", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dev": true, "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -2297,8 +2289,7 @@ "node_modules/@types/estree": { "version": "0.0.51", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" }, "node_modules/@types/express": { "version": "4.17.13", @@ -2426,8 +2417,7 @@ "node_modules/@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" }, "node_modules/@types/json5": { "version": "0.0.29", @@ -2493,8 +2483,7 @@ "node_modules/@types/node": { "version": "17.0.24", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.24.tgz", - "integrity": "sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==", - "dev": true + "integrity": "sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==" }, "node_modules/@types/prop-types": { "version": "15.7.4", @@ -2931,7 +2920,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" @@ -2940,26 +2928,22 @@ "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -2969,14 +2953,12 @@ "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -2988,7 +2970,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -2997,7 +2978,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -3005,14 +2985,12 @@ "node_modules/@webassemblyjs/utf8": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -3028,7 +3006,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -3041,7 +3018,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -3053,7 +3029,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -3067,7 +3042,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" @@ -3112,14 +3086,12 @@ "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "node_modules/accepts": { "version": "1.3.8", @@ -3138,7 +3110,6 @@ "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -3150,7 +3121,6 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, "peerDependencies": { "acorn": "^8" } @@ -3177,7 +3147,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3232,7 +3201,6 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, "peerDependencies": { "ajv": "^6.9.1" } @@ -3415,6 +3383,13 @@ "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", "dev": true }, + "node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "dev": true, + "peer": true + }, "node_modules/babel-loader": { "version": "8.2.4", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.4.tgz", @@ -3676,7 +3651,6 @@ "version": "4.19.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.3.tgz", "integrity": "sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==", - "dev": true, "dependencies": { "caniuse-lite": "^1.0.30001312", "electron-to-chromium": "^1.4.71", @@ -3722,8 +3696,7 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/bytes": { "version": "3.0.0", @@ -3770,7 +3743,6 @@ "version": "1.0.30001312", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==", - "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/browserslist" @@ -3863,7 +3835,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, "engines": { "node": ">=6.0" } @@ -5103,8 +5074,7 @@ "node_modules/electron-to-chromium": { "version": "1.4.72", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.72.tgz", - "integrity": "sha512-9LkRQwjW6/wnSfevR21a3k8sOJ+XWSH7kkzs9/EUenKmuDkndP3W9y1yCZpOxufwGbX3JV8glZZSDb4o95zwXQ==", - "dev": true + "integrity": "sha512-9LkRQwjW6/wnSfevR21a3k8sOJ+XWSH7kkzs9/EUenKmuDkndP3W9y1yCZpOxufwGbX3JV8glZZSDb4o95zwXQ==" }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -5142,7 +5112,6 @@ "version": "5.12.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "dev": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -5209,8 +5178,7 @@ "node_modules/es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" }, "node_modules/es-to-primitive": { "version": "1.2.1", @@ -5233,7 +5201,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { "node": ">=6" } @@ -5615,7 +5582,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -5628,7 +5594,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, "engines": { "node": ">=4.0" } @@ -5821,7 +5786,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -5833,7 +5797,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -5866,7 +5829,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, "engines": { "node": ">=0.8.x" } @@ -5999,8 +5961,7 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-diff": { "version": "1.2.0", @@ -6008,6 +5969,13 @@ "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, + "node_modules/fast-fifo": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.0.tgz", + "integrity": "sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw==", + "dev": true, + "peer": true + }, "node_modules/fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -6027,8 +5995,7 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -6062,6 +6029,21 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/favicons": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/favicons/-/favicons-7.1.3.tgz", + "integrity": "sha512-G3lfvEroOij3k8JR+FH53EKQaloVz0PtxkDUmMcWRfeMFV1Mclh/6Wz7jHc4vodWOAwm6ISEpCgJHDU19Vm9pw==", + "dev": true, + "peer": true, + "dependencies": { + "escape-html": "^1.0.3", + "sharp": "^0.32.0", + "xml2js": "^0.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/favicons-webpack-plugin": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/favicons-webpack-plugin/-/favicons-webpack-plugin-5.0.2.tgz", @@ -6093,6 +6075,77 @@ "@types/node": "*" } }, + "node_modules/favicons/node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "dev": true, + "peer": true + }, + "node_modules/favicons/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/favicons/node_modules/sharp": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.3.tgz", + "integrity": "sha512-i1gFPiNqyqxC4ouVvCKj5G8WfPIMeeSxpKcMrjic6NY4e8zktW7bIdqHPc3FCG+pNKU/XCEabKA57hhvZi8UmQ==", + "dev": true, + "hasInstallScript": true, + "peer": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.1", + "node-addon-api": "^6.1.0", + "prebuild-install": "^7.1.1", + "semver": "^7.5.4", + "simple-get": "^4.0.1", + "tar-fs": "^3.0.4", + "tunnel-agent": "^0.6.0" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/favicons/node_modules/tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "dev": true, + "peer": true, + "dependencies": { + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "node_modules/favicons/node_modules/tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dev": true, + "peer": true, + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "node_modules/faye-websocket": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", @@ -6458,8 +6511,7 @@ "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "node_modules/global": { "version": "4.4.0", @@ -6502,8 +6554,7 @@ "node_modules/graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", - "dev": true + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, "node_modules/graphql": { "version": "16.3.0", @@ -7359,7 +7410,6 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -7373,7 +7423,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -7382,7 +7431,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -7433,14 +7481,12 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -7645,7 +7691,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "dev": true, "engines": { "node": ">=6.11.5" } @@ -8053,8 +8098,7 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "node_modules/merge2": { "version": "1.4.1", @@ -8674,7 +8718,6 @@ "version": "2.1.34", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dev": true, "dependencies": { "mime-db": "1.51.0" }, @@ -8686,7 +8729,6 @@ "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -8894,8 +8936,7 @@ "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/no-case": { "version": "3.0.4", @@ -8952,8 +8993,7 @@ "node_modules/node-releases": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", - "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", - "dev": true + "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==" }, "node_modules/non-layered-tidy-tree-layout": { "version": "2.0.2", @@ -9384,8 +9424,7 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -9655,7 +9694,6 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", - "dev": true, "bin": { "prettier": "bin-prettier.js" }, @@ -9764,7 +9802,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, "engines": { "node": ">=6" } @@ -9801,11 +9838,17 @@ } ] }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true, + "peer": true + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -10476,14 +10519,20 @@ "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "peer": true + }, "node_modules/scheduler": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", @@ -10587,7 +10636,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, "dependencies": { "randombytes": "^2.1.0" } @@ -10879,7 +10927,6 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -10889,7 +10936,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -10961,6 +11007,17 @@ "node": ">= 0.6" } }, + "node_modules/streamx": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.0.tgz", + "integrity": "sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==", + "dev": true, + "peer": true, + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -11114,7 +11171,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -11165,7 +11221,6 @@ "version": "5.14.2", "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -11183,7 +11238,6 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", - "dev": true, "dependencies": { "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", @@ -11217,7 +11271,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -11235,7 +11288,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -11243,8 +11295,7 @@ "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/text-table": { "version": "0.2.0", @@ -11754,7 +11805,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -11908,7 +11958,6 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -11930,7 +11979,6 @@ "version": "5.76.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", - "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^0.0.51", @@ -12355,7 +12403,6 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, "engines": { "node": ">=10.13.0" } @@ -12364,7 +12411,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -12439,9 +12485,9 @@ "dev": true }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -12474,6 +12520,30 @@ } } }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "peer": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/docs-client/webpack.config.ts b/docs-client/webpack.config.ts index 968c86c83d78..312d4be96a64 100644 --- a/docs-client/webpack.config.ts +++ b/docs-client/webpack.config.ts @@ -30,6 +30,7 @@ const config: Configuration = { path: path.resolve(process.cwd(), './build/web'), // We don't mount to '/' for production build since we want the code to be relocatable. publicPath: isDev ? '/' : '', + filename: isDev ? '[name].js' : '[name].[contenthash].js' }, module: { rules: [ @@ -54,7 +55,7 @@ const config: Configuration = { ], '@babel/react', ], - plugins: ['react-hot-loader/babel'], + plugins: isDev ? ['react-hot-loader/babel'] : [], }, }, { @@ -117,7 +118,6 @@ const config: Configuration = { const plugins = config.plugins as any[]; plugins.push(new HtmlWebpackPlugin({ template: './src/index.html', - hash: true, })); plugins.push(new FaviconsWebpackPlugin({ logo: './src/images/logo.png', diff --git a/gradle/scripts/README.md b/gradle/scripts/README.md index d511149cde4a..ea555f5e9b7c 100644 --- a/gradle/scripts/README.md +++ b/gradle/scripts/README.md @@ -374,15 +374,6 @@ When a project has a `java` flag: } ``` -- [Jetty ALPN agent](https://github.com/jetty-project/jetty-alpn-agent) is - loaded automatically when launching a Java process if you specified it in - `dependencies.toml`: - - ```toml - [libraries] - jetty-alpn = { module = "org.mortbay.jetty.alpn:jetty-alpn-agent", version = "2.0.10" } - ``` - - The `package-list` files of the Javadocs specified in `dependencies.toml` will be downloaded and cached. The downloaded `package-list` files will be used when generating Javadocs, e.g. in `dependencies.toml`: diff --git a/gradle/scripts/build-flags.gradle b/gradle/scripts/build-flags.gradle index dd6df24fdb77..12ace042b534 100644 --- a/gradle/scripts/build-flags.gradle +++ b/gradle/scripts/build-flags.gradle @@ -22,7 +22,6 @@ if (!projectsWithFlags('java').isEmpty()) { apply from: "${libDir}/java.gradle" apply from: "${libDir}/java-javadoc.gradle" apply from: "${libDir}/java-coverage.gradle" - apply from: "${libDir}/java-alpn.gradle" apply from: "${libDir}/java-rpc-thrift.gradle" if (projectsWithFlags('java').find { it.ext.hasSourceDirectory('proto') }) { diff --git a/gradle/scripts/lib/java-alpn.gradle b/gradle/scripts/lib/java-alpn.gradle deleted file mode 100644 index 7a2debbf4d44..000000000000 --- a/gradle/scripts/lib/java-alpn.gradle +++ /dev/null @@ -1,38 +0,0 @@ -configure(projectsWithFlags('java')) { - // JDK 9 or above does not require Jetty ALPN agent at all. - if (JavaVersion.current() >= JavaVersion.VERSION_1_9 && project.ext.testJavaVersion != 8) { - return - } - - // Use Jetty ALPN agent if dependencyManagement mentions it. - if (managedVersions.containsKey('org.mortbay.jetty.alpn:jetty-alpn-agent')) { - configurations { - alpnAgent { - visible = false - canBeConsumed = false - } - } - - dependencies { - alpnAgent "org.mortbay.jetty.alpn:jetty-alpn-agent:${managedVersions['org.mortbay.jetty.alpn:jetty-alpn-agent']}" - } - - task copyAlpnAgent(type: Copy) { - from configurations.alpnAgent - into "${project.buildDir}" - rename { String fileName -> - fileName.replaceFirst("-[0-9]+\\.[0-9]+\\.[0-9]+(?:\\.[^.]+)?\\.jar", ".jar") - } - } - tasks.compileJava.dependsOn(tasks.copyAlpnAgent) - tasks.processResources.dependsOn(tasks.copyAlpnAgent) - tasks.sourcesJar.dependsOn(tasks.copyAlpnAgent) - tasks.javadoc.dependsOn(tasks.copyAlpnAgent) - project.ext.getLintTask().dependsOn(tasks.copyAlpnAgent) - - tasks.withType(JavaForkOptions) { - dependsOn tasks.copyAlpnAgent - jvmArgs "-javaagent:${project.buildDir}/jetty-alpn-agent.jar" - } - } -} diff --git a/gradle/scripts/lib/java-rpc-proto.gradle b/gradle/scripts/lib/java-rpc-proto.gradle index 9ec0c29ca249..cb7b2b048fd0 100644 --- a/gradle/scripts/lib/java-rpc-proto.gradle +++ b/gradle/scripts/lib/java-rpc-proto.gradle @@ -137,13 +137,6 @@ configure(projectsWithFlags('java')) { kotlinSourcesJar.dependsOn(task) } - def copyAlpnAgentTask= tasks.findByName('copyAlpnAgent') - if (copyAlpnAgentTask) { - // A workaround for ':generateProto' uses this output of task ':copyAlpnAgent' without - // declaring an explicit or implicit dependency. - task.dependsOn(copyAlpnAgentTask) - } - project.ext.getGenerateSourcesTask().dependsOn(task) } } diff --git a/gradle/scripts/lib/java-rpc-thrift.gradle b/gradle/scripts/lib/java-rpc-thrift.gradle index 41b69904d81a..4921c665b25d 100644 --- a/gradle/scripts/lib/java-rpc-thrift.gradle +++ b/gradle/scripts/lib/java-rpc-thrift.gradle @@ -112,13 +112,6 @@ configure(projectsWithFlags('java')) { compileTask.dependsOn(task) } - def copyAlpnAgentTask= tasks.findByName('copyAlpnAgent') - if (copyAlpnAgentTask) { - // A workaround for ':generateProto' uses this output of task ':copyAlpnAgent' without - // declaring an explicit or implicit dependency. - task.dependsOn(copyAlpnAgentTask) - } - project.ext.getGenerateSourcesTask().dependsOn(task) } } diff --git a/gradle/scripts/lib/java-versionprops.gradle b/gradle/scripts/lib/java-versionprops.gradle index dc404df59412..e50a7cbf567b 100644 --- a/gradle/scripts/lib/java-versionprops.gradle +++ b/gradle/scripts/lib/java-versionprops.gradle @@ -1,3 +1,15 @@ +import java.nio.charset.StandardCharsets + +/** + * Writes {@link Properties} without the date format for better caching. + */ +static def writeProps(Properties props, OutputStream os) { + props.entrySet().forEach {e -> + os.write("${e.key}=${e.value}\n".getBytes(StandardCharsets.UTF_8)) + } + os.flush() +} + configure(projectsWithFlags('java', 'publish')) { def generatedResourcesDir = project.file("${project.projectDir}/gen-src/main/resources") sourceSets.main.resources.srcDir generatedResourcesDir @@ -9,6 +21,7 @@ configure(projectsWithFlags('java', 'publish')) { task versionProperties { def propsFile = project.file("${generatedResourcesDir}/META-INF/${project.group}.versions.properties") outputs.file propsFile + inputs.property("project.ext.repoStatus", project.ext.repoStatus) doLast { def artifactId = project.ext.artifactId @@ -32,7 +45,7 @@ configure(projectsWithFlags('java', 'publish')) { if (!upToDate) { project.mkdir(propsFile.parentFile) logger.info("Writing ${propsFile} ..") - propsFile.withOutputStream { props.store(it, null) } + propsFile.withOutputStream { writeProps(props, it) } } else { logger.info("${propsFile} is up-to-date.") } diff --git a/gradle/scripts/lib/java.gradle b/gradle/scripts/lib/java.gradle index 1eb0fff42052..1f431b6f5863 100644 --- a/gradle/scripts/lib/java.gradle +++ b/gradle/scripts/lib/java.gradle @@ -206,8 +206,8 @@ configure(projectsWithFlags('java')) { apply plugin: 'checkstyle' checkstyle { + configDirectory = new File("${checkstyleConfigDir}") configFile = new File("${checkstyleConfigDir}/checkstyle.xml") - configProperties = ['checkstyleConfigDir': "$checkstyleConfigDir"] if (managedVersions.containsKey('com.puppycrawl.tools:checkstyle')) { toolVersion = managedVersions['com.puppycrawl.tools:checkstyle'] } diff --git a/gradle/scripts/lib/kotlin.gradle b/gradle/scripts/lib/kotlin.gradle index ddf5cc043bd2..21b02894873c 100644 --- a/gradle/scripts/lib/kotlin.gradle +++ b/gradle/scripts/lib/kotlin.gradle @@ -7,7 +7,6 @@ configure(projectsWithFlags('kotlin')) { def target = project.tasks.findByName('compileJava')?.targetCompatibility ?: project.findProperty('javaTargetCompatibility') ?: '1.8' def compilerArgs = ['-java-parameters', '-Xjsr305=strict', '-Xskip-prerelease-check'] - def copyAlpnAgentTask = tasks.findByName("copyAlpnAgent") // A workaround to find all Kotlin compilation tasks. // The standard way, `tasks.withType(KotlinCompile)`, does not work here. tasks.matching { @@ -17,15 +16,6 @@ configure(projectsWithFlags('kotlin')) { }.each { task -> task.kotlinOptions.jvmTarget = target task.kotlinOptions.freeCompilerArgs = compilerArgs - - if (copyAlpnAgentTask != null) { - task.dependsOn(copyAlpnAgentTask) - } - } - - def kotlinSourcesJar = tasks.findByName('kotlinSourcesJar') - if (kotlinSourcesJar != null && copyAlpnAgentTask != null) { - kotlinSourcesJar.dependsOn(copyAlpnAgentTask) } } @@ -51,21 +41,10 @@ configure(projectsWithFlags('kotlin')) { ['Main', 'Test', 'Jmh'].each { name -> // A workaround for 'runKtlintCheckOverMainSourceSet' uses this output of task ':generateProto' // without declaring an explicit or implicit dependency. - def copyAlpnAgentTask = tasks.findByName("copyAlpnAgent") def ktlintTask = tasks.findByName("runKtlintCheckOver${name}SourceSet") if (ktlintTask != null) { ktlintTask.dependsOn(project.ext.getGenerateSourcesTask()) - if (copyAlpnAgentTask != null) { - ktlintTask.dependsOn(copyAlpnAgentTask) - } - } - def ktlintScriptTask = tasks.findByName("runKtlintCheckOverKotlinScripts") - if (ktlintScriptTask != null) { - if (copyAlpnAgentTask != null) { - ktlintScriptTask.dependsOn(copyAlpnAgentTask) - } } - // A workaround for 'compileJmhKotlin' uses this output of task 'compileJmhThrift' without // declaring an explicit or implicit dependency. def compileTask = tasks.findByName("compile${name}Kotlin") diff --git a/graphql/src/test/java/com/linecorp/armeria/internal/server/graphql/GraphqlDocServiceTest.java b/graphql/src/test/java/com/linecorp/armeria/internal/server/graphql/GraphqlDocServiceTest.java index 742a93323477..1b6efb580e5e 100644 --- a/graphql/src/test/java/com/linecorp/armeria/internal/server/graphql/GraphqlDocServiceTest.java +++ b/graphql/src/test/java/com/linecorp/armeria/internal/server/graphql/GraphqlDocServiceTest.java @@ -63,7 +63,7 @@ protected void configure(ServerBuilder sb) throws Exception { sb.http(8080); } final File graphqlSchemaFile = - new File(getClass().getResource("/test.graphqls").toURI()); + new File(getClass().getResource("/testing/graphql/test.graphqls").toURI()); final GraphqlService service = GraphqlService.builder() .schemaFile(graphqlSchemaFile) diff --git a/graphql/src/test/java/com/linecorp/armeria/server/graphql/ExecutionIdGeneratorTest.java b/graphql/src/test/java/com/linecorp/armeria/server/graphql/ExecutionIdGeneratorTest.java index 4480de0581c4..d2ab983d7da7 100644 --- a/graphql/src/test/java/com/linecorp/armeria/server/graphql/ExecutionIdGeneratorTest.java +++ b/graphql/src/test/java/com/linecorp/armeria/server/graphql/ExecutionIdGeneratorTest.java @@ -75,7 +75,7 @@ public ExecutionId generate(ServiceRequestContext requestContext, String query, @Override protected void configure(ServerBuilder sb) throws Exception { final File graphqlSchemaFile = - new File(getClass().getResource("/test.graphqls").toURI()); + new File(getClass().getResource("/testing/graphql/test.graphqls").toURI()); final GraphqlService service = GraphqlService.builder() .configureGraphql(builder -> builder.queryExecutionStrategy(idStrategy)) diff --git a/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlErrorHandlerTest.java b/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlErrorHandlerTest.java index dd4c944556dc..5938af365b54 100644 --- a/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlErrorHandlerTest.java +++ b/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlErrorHandlerTest.java @@ -44,7 +44,7 @@ class GraphqlErrorHandlerTest { @Override protected void configure(ServerBuilder sb) throws Exception { final File graphqlSchemaFile = - new File(getClass().getResource("/test.graphqls").toURI()); + new File(getClass().getResource("/testing/graphql/test.graphqls").toURI()); final GraphqlErrorHandler errorHandler = (ctx, input, result, cause) -> { diff --git a/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceBlockingTest.java b/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceBlockingTest.java index 62600034ef79..432dffacc661 100644 --- a/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceBlockingTest.java +++ b/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceBlockingTest.java @@ -40,7 +40,7 @@ class GraphqlServiceBlockingTest { @Override protected void configure(ServerBuilder sb) throws Exception { final File graphqlSchemaFile = - new File(getClass().getResource("/test.graphqls").toURI()); + new File(getClass().getResource("/testing/graphql/test.graphqls").toURI()); final GraphqlService service = GraphqlService.builder() .schemaFile(graphqlSchemaFile) diff --git a/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceBuilderTest.java b/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceBuilderTest.java index cac8b91e716e..5788bb7e039d 100644 --- a/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceBuilderTest.java +++ b/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceBuilderTest.java @@ -56,22 +56,24 @@ void notFoundDefaultSchemaFile() { @Test void specifySchemaFile() throws Exception { - final File graphqlSchemaFile = new File(getClass().getResource("/test.graphqls").toURI()); + final File graphqlSchemaFile = new File( + getClass().getResource("/testing/graphql/test.graphqls").toURI()); final GraphqlService service = new GraphqlServiceBuilder().schemaFile(graphqlSchemaFile).build(); assertThat(service).isNotNull(); } @Test void specifySchemaUrl() throws Exception { - final GraphqlService service = new GraphqlServiceBuilder().schemaUrls("classpath:test.graphqls") - .build(); + final GraphqlService service = + new GraphqlServiceBuilder().schemaUrls("classpath:testing/graphql/test.graphqls") + .build(); assertThat(service).isNotNull(); } @Test void notFoundSpecifySchemaUrl() throws Exception { assertThatThrownBy(() -> { - new GraphqlServiceBuilder().schemaUrls("test.graphqls") + new GraphqlServiceBuilder().schemaUrls("testing/graphql/test.graphqls") .build(); }).isInstanceOf(UncheckedIOException.class).hasMessageContaining("java.io.FileNotFoundException"); } @@ -103,7 +105,7 @@ void specifySchema(List urls, List runtimeWir private static Stream provideSpecifySchemaArguments() throws URISyntaxException { return Stream.of( - Arguments.of(ImmutableList.of("classpath:test.graphqls"), ImmutableList.of(), + Arguments.of(ImmutableList.of("classpath:testing/graphql/test.graphqls"), ImmutableList.of(), ImmutableList.of()), Arguments.of(ImmutableList.of(), ImmutableList.of((RuntimeWiringConfigurator) builder -> { @@ -117,7 +119,7 @@ private static Stream provideSpecifySchemaArguments() throws URISynta private GraphQLSchema makeGraphQLSchema() throws URISyntaxException { final File graphqlSchemaFile = - new File(getClass().getResource("/test.graphqls").toURI()); + new File(getClass().getResource("/testing/graphql/test.graphqls").toURI()); final TypeDefinitionRegistry typeDefinitionRegistry = new TypeDefinitionRegistry(); final SchemaParser parser = new SchemaParser(); typeDefinitionRegistry.merge(parser.parse(graphqlSchemaFile)); @@ -129,7 +131,7 @@ private GraphQLSchema makeGraphQLSchema() throws URISyntaxException { @Test void successful() throws Exception { final File graphqlSchemaFile = - new File(getClass().getResource("/test.graphqls").toURI()); + new File(getClass().getResource("/testing/graphql/test.graphqls").toURI()); final GraphqlServiceBuilder builder = new GraphqlServiceBuilder(); final GraphqlService service = builder.schemaFile(graphqlSchemaFile) .instrumentation(SimpleInstrumentation.INSTANCE) @@ -153,15 +155,15 @@ void bothDataLoaderConfig() { .dataLoaderRegistry(ctx -> new DataLoaderRegistry()) .configureDataLoaderRegistry(dlr -> dlr.register("dummy1", dataLoader)); }) - .isInstanceOf(IllegalStateException.class) - .hasMessage("configureDataLoaderRegistry() and dataLoaderRegistry() are mutually exclusive."); + .isInstanceOf(IllegalStateException.class) + .hasMessage("configureDataLoaderRegistry() and dataLoaderRegistry() are mutually exclusive."); assertThatThrownBy(() -> { new GraphqlServiceBuilder() .configureDataLoaderRegistry(dlr -> dlr.register("dummy1", dataLoader)) .dataLoaderRegistry(ctx -> new DataLoaderRegistry()); }) - .isInstanceOf(IllegalStateException.class) - .hasMessage("configureDataLoaderRegistry() and dataLoaderRegistry() are mutually exclusive."); + .isInstanceOf(IllegalStateException.class) + .hasMessage("configureDataLoaderRegistry() and dataLoaderRegistry() are mutually exclusive."); } } diff --git a/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceDataLoaderTest.java b/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceDataLoaderTest.java index d3acbff80063..7172f6ebd966 100644 --- a/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceDataLoaderTest.java +++ b/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceDataLoaderTest.java @@ -42,7 +42,7 @@ class GraphqlServiceDataLoaderTest { @Override protected void configure(ServerBuilder sb) throws Exception { final File graphqlSchemaFile = - new File(getClass().getResource("/test.graphqls").toURI()); + new File(getClass().getResource("/testing/graphql/test.graphqls").toURI()); final GraphqlService service = GraphqlService.builder() .schemaFile(graphqlSchemaFile) diff --git a/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceMultipartTest.java b/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceMultipartTest.java index a40f9076d1dd..27a27ccfc213 100644 --- a/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceMultipartTest.java +++ b/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceMultipartTest.java @@ -52,7 +52,7 @@ class GraphqlServiceMultipartTest { @Override protected void configure(ServerBuilder sb) throws Exception { final File graphqlSchemaFile = - new File(getClass().getResource("/multipart.graphqls").toURI()); + new File(getClass().getResource("/testing/graphql/multipart.graphqls").toURI()); final GraphqlService service = GraphqlService.builder() .schemaFile(graphqlSchemaFile) @@ -137,7 +137,7 @@ void multipartFileList() { @Test void shouldCreateGraphqlServiceWithoutPathScalar() throws Exception { final File graphqlSchemaFile = - new File(getClass().getResource("/multipart.graphqls").toURI()); + new File(getClass().getResource("/testing/graphql/multipart.graphqls").toURI()); assertThatThrownBy(() -> { GraphqlService.builder() diff --git a/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceSubscriptionTest.java b/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceSubscriptionTest.java index ec017bd06fa7..9007b3d1e229 100644 --- a/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceSubscriptionTest.java +++ b/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceSubscriptionTest.java @@ -47,7 +47,7 @@ class GraphqlServiceSubscriptionTest { @Override protected void configure(ServerBuilder sb) throws Exception { final File graphqlSchemaFile = - new File(getClass().getResource("/subscription.graphqls").toURI()); + new File(getClass().getResource("/testing/graphql/subscription.graphqls").toURI()); final GraphqlService service = GraphqlService.builder() .schemaFile(graphqlSchemaFile) diff --git a/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceTest.java b/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceTest.java index 9e60a5d4c5d8..34bd231c93c7 100644 --- a/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceTest.java +++ b/graphql/src/test/java/com/linecorp/armeria/server/graphql/GraphqlServiceTest.java @@ -50,7 +50,7 @@ class GraphqlServiceTest { @Override protected void configure(ServerBuilder sb) throws Exception { final File graphqlSchemaFile = - new File(getClass().getResource("/test.graphqls").toURI()); + new File(getClass().getResource("/testing/graphql/test.graphqls").toURI()); final GraphqlService service = GraphqlService.builder() .schemaFile(graphqlSchemaFile) diff --git a/graphql/src/test/resources/multipart.graphqls b/graphql/src/test/resources/testing/graphql/multipart.graphqls similarity index 100% rename from graphql/src/test/resources/multipart.graphqls rename to graphql/src/test/resources/testing/graphql/multipart.graphqls diff --git a/graphql/src/test/resources/subscription.graphqls b/graphql/src/test/resources/testing/graphql/subscription.graphqls similarity index 100% rename from graphql/src/test/resources/subscription.graphqls rename to graphql/src/test/resources/testing/graphql/subscription.graphqls diff --git a/graphql/src/test/resources/test.graphqls b/graphql/src/test/resources/testing/graphql/test.graphqls similarity index 100% rename from graphql/src/test/resources/test.graphqls rename to graphql/src/test/resources/testing/graphql/test.graphqls diff --git a/grpc-kotlin/src/test/kotlin/com/linecorp/armeria/server/grpc/kotlin/CoroutineServerInterceptorTest.kt b/grpc-kotlin/src/test/kotlin/com/linecorp/armeria/server/grpc/kotlin/CoroutineServerInterceptorTest.kt index 0df23891f5ed..9e9c2c228885 100644 --- a/grpc-kotlin/src/test/kotlin/com/linecorp/armeria/server/grpc/kotlin/CoroutineServerInterceptorTest.kt +++ b/grpc-kotlin/src/test/kotlin/com/linecorp/armeria/server/grpc/kotlin/CoroutineServerInterceptorTest.kt @@ -22,14 +22,6 @@ import com.linecorp.armeria.client.grpc.GrpcClients import com.linecorp.armeria.common.RequestContext import com.linecorp.armeria.common.auth.AuthToken import com.linecorp.armeria.common.grpc.GrpcStatusFunction -import com.linecorp.armeria.grpc.testing.Messages.Payload -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse -import com.linecorp.armeria.grpc.testing.Messages.StreamingInputCallRequest -import com.linecorp.armeria.grpc.testing.Messages.StreamingInputCallResponse -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallRequest -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallResponse -import com.linecorp.armeria.grpc.testing.TestServiceGrpcKt import com.linecorp.armeria.internal.testing.AnticipatedException import com.linecorp.armeria.server.ServerBuilder import com.linecorp.armeria.server.ServiceRequestContext @@ -66,6 +58,14 @@ import org.assertj.core.api.Assertions.assertThatThrownBy import org.junit.jupiter.api.extension.RegisterExtension import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.ValueSource +import testing.grpc.Messages.Payload +import testing.grpc.Messages.SimpleRequest +import testing.grpc.Messages.SimpleResponse +import testing.grpc.Messages.StreamingInputCallRequest +import testing.grpc.Messages.StreamingInputCallResponse +import testing.grpc.Messages.StreamingOutputCallRequest +import testing.grpc.Messages.StreamingOutputCallResponse +import testing.grpc.TestServiceGrpcKt import java.util.concurrent.CompletableFuture import java.util.concurrent.Executors import java.util.concurrent.TimeUnit diff --git a/grpc-kotlin/src/test/proto/com/linecorp/armeria/grpc/testing/messages.proto b/grpc-kotlin/src/test/proto/testing/grpc/messages.proto similarity index 99% rename from grpc-kotlin/src/test/proto/com/linecorp/armeria/grpc/testing/messages.proto rename to grpc-kotlin/src/test/proto/testing/grpc/messages.proto index 62dfb9f62593..4284d1313ea8 100644 --- a/grpc-kotlin/src/test/proto/com/linecorp/armeria/grpc/testing/messages.proto +++ b/grpc-kotlin/src/test/proto/testing/grpc/messages.proto @@ -47,7 +47,7 @@ syntax = "proto3"; package armeria.grpc.testing; -option java_package = "com.linecorp.armeria.grpc.testing"; +option java_package = "testing.grpc"; // The type of payload that should be returned. enum PayloadType { diff --git a/grpc-kotlin/src/test/proto/com/linecorp/armeria/grpc/testing/test.proto b/grpc-kotlin/src/test/proto/testing/grpc/test.proto similarity index 96% rename from grpc-kotlin/src/test/proto/com/linecorp/armeria/grpc/testing/test.proto rename to grpc-kotlin/src/test/proto/testing/grpc/test.proto index 0f691c3e4273..025998a1f44d 100644 --- a/grpc-kotlin/src/test/proto/com/linecorp/armeria/grpc/testing/test.proto +++ b/grpc-kotlin/src/test/proto/testing/grpc/test.proto @@ -45,12 +45,12 @@ // of unary/streaming requests/responses. syntax = "proto3"; -import "com/linecorp/armeria/grpc/testing/messages.proto"; +import "testing/grpc/messages.proto"; import "google/api/annotations.proto"; package armeria.grpc.testing; -option java_package = "com.linecorp.armeria.grpc.testing"; +option java_package = "testing.grpc"; // A simple service to test the various types of RPCs and experiment with // performance with various types of payload. diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientAdditionalAuthorityTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientAdditionalAuthorityTest.java index d46b4e175ebf..4840d8ae1050 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientAdditionalAuthorityTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientAdditionalAuthorityTest.java @@ -28,10 +28,6 @@ import com.linecorp.armeria.client.ClientRequestContextCaptor; import com.linecorp.armeria.client.Clients; import com.linecorp.armeria.common.util.SafeCloseable; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; import com.linecorp.armeria.internal.testing.MockAddressResolverGroup; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; @@ -44,6 +40,10 @@ import io.grpc.ClientInterceptor; import io.grpc.MethodDescriptor; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class GrpcClientAdditionalAuthorityTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientBuilderTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientBuilderTest.java index b66a1199b462..d7f02d20f8ba 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientBuilderTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientBuilderTest.java @@ -26,13 +26,13 @@ import com.linecorp.armeria.client.endpoint.EndpointGroup; import com.linecorp.armeria.common.SerializationFormat; import com.linecorp.armeria.common.grpc.GrpcSerializationFormats; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; import io.grpc.CallOptions; import io.grpc.Channel; import io.grpc.ClientCall; import io.grpc.ClientInterceptor; import io.grpc.MethodDescriptor; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class GrpcClientBuilderTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientCompressionTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientCompressionTest.java index ae61dae2b6c8..dcbf10836208 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientCompressionTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientCompressionTest.java @@ -29,14 +29,6 @@ import com.linecorp.armeria.common.grpc.protocol.GrpcHeaderNames; import com.linecorp.armeria.common.logging.RequestLog; -import com.linecorp.armeria.grpc.testing.Messages.Payload; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingInputCallRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingInputCallResponse; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceStub; import com.linecorp.armeria.internal.common.grpc.TestServiceImpl; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.ServiceRequestContext; @@ -49,6 +41,14 @@ import io.grpc.Codec.Identity; import io.grpc.DecompressorRegistry; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.Payload; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.StreamingInputCallRequest; +import testing.grpc.Messages.StreamingInputCallResponse; +import testing.grpc.Messages.StreamingOutputCallRequest; +import testing.grpc.Messages.StreamingOutputCallResponse; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpc.TestServiceGrpc.TestServiceStub; class GrpcClientCompressionTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientExchangeTypeTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientExchangeTypeTest.java index 050881936129..3c1803beedc4 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientExchangeTypeTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientExchangeTypeTest.java @@ -27,19 +27,19 @@ import com.linecorp.armeria.client.ClientRequestContextCaptor; import com.linecorp.armeria.client.Clients; import com.linecorp.armeria.common.ExchangeType; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.Messages.StreamingInputCallRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingInputCallResponse; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceStub; import com.linecorp.armeria.internal.common.grpc.TestServiceImpl; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.Messages.StreamingInputCallRequest; +import testing.grpc.Messages.StreamingInputCallResponse; +import testing.grpc.Messages.StreamingOutputCallRequest; +import testing.grpc.Messages.StreamingOutputCallResponse; +import testing.grpc.TestServiceGrpc.TestServiceStub; class GrpcClientExchangeTypeTest { @RegisterExtension diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientListenerTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientListenerTest.java index 04c669029d21..beef1667df71 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientListenerTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientListenerTest.java @@ -31,12 +31,7 @@ import com.linecorp.armeria.common.HttpStatus; import com.linecorp.armeria.common.annotation.Nullable; import com.linecorp.armeria.common.grpc.protocol.GrpcHeaderNames; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceStub; import com.linecorp.armeria.internal.common.grpc.TestServiceImpl; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.server.logging.LoggingService; @@ -55,6 +50,11 @@ import io.grpc.Status; import io.grpc.Status.Code; import io.grpc.stub.StreamObserver; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceStub; class GrpcClientListenerTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientRequestContextInitFailureTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientRequestContextInitFailureTest.java index 5e0759e7b3b7..2269224dd4c3 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientRequestContextInitFailureTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientRequestContextInitFailureTest.java @@ -32,11 +32,11 @@ import com.linecorp.armeria.common.SessionProtocol; import com.linecorp.armeria.common.logging.RequestLog; import com.linecorp.armeria.common.util.SafeCloseable; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import io.grpc.Status.Code; import io.grpc.StatusRuntimeException; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class GrpcClientRequestContextInitFailureTest { @Test diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientRetryTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientRetryTest.java index c8d99e1ceb51..dc0bed491967 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientRetryTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientRetryTest.java @@ -31,10 +31,6 @@ import com.linecorp.armeria.common.HttpResponse; import com.linecorp.armeria.common.grpc.protocol.GrpcHeaderNames; import com.linecorp.armeria.common.logging.RequestLogAccess; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; @@ -42,6 +38,10 @@ import io.grpc.Status; import io.grpc.StatusException; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; final class GrpcClientRetryTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientTest.java index 3b4e3cbc869d..28e27a611bb1 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientTest.java @@ -16,7 +16,6 @@ package com.linecorp.armeria.client.grpc; -import static com.linecorp.armeria.grpc.testing.Messages.PayloadType.COMPRESSABLE; import static com.linecorp.armeria.internal.common.grpc.GrpcTestUtil.REQUEST_MESSAGE; import static com.linecorp.armeria.internal.common.grpc.GrpcTestUtil.RESPONSE_MESSAGE; import static org.assertj.core.api.Assertions.assertThat; @@ -30,6 +29,7 @@ import static org.mockito.Mockito.timeout; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; +import static testing.grpc.Messages.PayloadType.COMPRESSABLE; import java.net.URI; import java.util.ArrayList; @@ -82,23 +82,6 @@ import com.linecorp.armeria.common.logging.RequestLog; import com.linecorp.armeria.common.util.Exceptions; import com.linecorp.armeria.common.util.ThreadFactories; -import com.linecorp.armeria.grpc.testing.Messages.CompressionType; -import com.linecorp.armeria.grpc.testing.Messages.EchoStatus; -import com.linecorp.armeria.grpc.testing.Messages.Payload; -import com.linecorp.armeria.grpc.testing.Messages.ResponseParameters; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.Messages.StreamingInputCallRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingInputCallResponse; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceStub; -import com.linecorp.armeria.grpc.testing.UnimplementedServiceGrpc; -import com.linecorp.armeria.grpc.testing.UnitTestServiceGrpc.UnitTestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.UnitTestServiceGrpc.UnitTestServiceImplBase; -import com.linecorp.armeria.grpc.testing.UnitTestServiceGrpc.UnitTestServiceStub; import com.linecorp.armeria.internal.common.RequestTargetCache; import com.linecorp.armeria.internal.common.grpc.GrpcLogUtil; import com.linecorp.armeria.internal.common.grpc.GrpcStatus; @@ -107,7 +90,6 @@ import com.linecorp.armeria.internal.common.grpc.TestServiceImpl; import com.linecorp.armeria.internal.common.grpc.TimeoutHeaderUtil; import com.linecorp.armeria.internal.common.util.EventLoopThread; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; @@ -132,6 +114,24 @@ import io.grpc.stub.StreamObserver; import io.netty.buffer.ByteBuf; import io.netty.handler.codec.http.HttpHeaderValues; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.Messages.CompressionType; +import testing.grpc.Messages.EchoStatus; +import testing.grpc.Messages.Payload; +import testing.grpc.Messages.ResponseParameters; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.Messages.StreamingInputCallRequest; +import testing.grpc.Messages.StreamingInputCallResponse; +import testing.grpc.Messages.StreamingOutputCallRequest; +import testing.grpc.Messages.StreamingOutputCallResponse; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpc.TestServiceGrpc.TestServiceStub; +import testing.grpc.UnimplementedServiceGrpc; +import testing.grpc.UnitTestServiceGrpc.UnitTestServiceBlockingStub; +import testing.grpc.UnitTestServiceGrpc.UnitTestServiceImplBase; +import testing.grpc.UnitTestServiceGrpc.UnitTestServiceStub; class GrpcClientTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientTimeoutTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientTimeoutTest.java index 98a56763e74b..b61f1d3bae11 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientTimeoutTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcClientTimeoutTest.java @@ -35,10 +35,6 @@ import com.google.common.util.concurrent.Uninterruptibles; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.server.grpc.GrpcService; @@ -50,6 +46,10 @@ import io.grpc.Status.Code; import io.grpc.StatusRuntimeException; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; class GrpcClientTimeoutTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcRetryWithCircuitBreakerTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcRetryWithCircuitBreakerTest.java index 193d5d909593..18c1d875eeff 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcRetryWithCircuitBreakerTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcRetryWithCircuitBreakerTest.java @@ -30,16 +30,16 @@ import com.linecorp.armeria.common.HttpResponse; import com.linecorp.armeria.common.HttpStatusClass; import com.linecorp.armeria.common.grpc.protocol.GrpcHeaderNames; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.server.logging.LoggingService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class GrpcRetryWithCircuitBreakerTest { @RegisterExtension diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcServicePathTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcServicePathTest.java index 6312daabe47e..f58c6b84b8ad 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcServicePathTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcServicePathTest.java @@ -26,9 +26,6 @@ import com.linecorp.armeria.common.ExchangeType; import com.linecorp.armeria.common.logging.RequestLog; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; import com.linecorp.armeria.internal.common.grpc.TestServiceImpl; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; @@ -36,6 +33,9 @@ import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.netty.util.AttributeKey; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class GrpcServicePathTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcWebRetryTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcWebRetryTest.java index 1a85f78e2e02..1a878863adcb 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcWebRetryTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcWebRetryTest.java @@ -42,12 +42,6 @@ import com.linecorp.armeria.common.grpc.protocol.GrpcHeaderNames; import com.linecorp.armeria.common.grpc.protocol.GrpcWebTrailers; import com.linecorp.armeria.common.logging.RequestLog; -import com.linecorp.armeria.grpc.testing.Messages.CompressionType; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; @@ -56,6 +50,12 @@ import io.grpc.StatusException; import io.grpc.stub.ServerCallStreamObserver; import io.grpc.stub.StreamObserver; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.Messages.CompressionType; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class GrpcWebRetryTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcWebTextTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcWebTextTest.java index 16fed83c46a2..310e3c35061e 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcWebTextTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/GrpcWebTextTest.java @@ -44,10 +44,6 @@ import com.linecorp.armeria.common.grpc.protocol.DeframedMessage; import com.linecorp.armeria.common.grpc.protocol.GrpcHeaderNames; import com.linecorp.armeria.common.util.UnmodifiableFuture; -import com.linecorp.armeria.grpc.testing.Messages.Payload; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; import com.linecorp.armeria.internal.common.grpc.protocol.GrpcTrailersUtil; import com.linecorp.armeria.internal.common.grpc.protocol.StatusCodes; import com.linecorp.armeria.server.AbstractHttpService; @@ -59,6 +55,10 @@ import io.netty.buffer.ByteBufAllocator; import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; +import testing.grpc.Messages.Payload; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class GrpcWebTextTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/InvalidGrpcResponseTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/InvalidGrpcResponseTest.java index 4fc00aefb056..302a26c2f187 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/InvalidGrpcResponseTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/InvalidGrpcResponseTest.java @@ -24,11 +24,11 @@ import com.linecorp.armeria.common.HttpResponse; import com.linecorp.armeria.common.HttpStatus; import com.linecorp.armeria.common.ResponseHeaders; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; import io.grpc.Status.Code; import io.grpc.StatusRuntimeException; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class InvalidGrpcResponseTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/LazyDynamicEndpointGroupTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/LazyDynamicEndpointGroupTest.java index ab010ebaa4ea..1bafdd27d789 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/LazyDynamicEndpointGroupTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/LazyDynamicEndpointGroupTest.java @@ -45,9 +45,6 @@ import com.linecorp.armeria.common.SessionProtocol; import com.linecorp.armeria.common.annotation.Nullable; import com.linecorp.armeria.common.grpc.GrpcSerializationFormats; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceStub; import com.linecorp.armeria.internal.common.grpc.TestServiceImpl; import com.linecorp.armeria.internal.testing.AnticipatedException; import com.linecorp.armeria.server.ServerBuilder; @@ -56,6 +53,9 @@ import io.grpc.StatusRuntimeException; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc.TestServiceStub; class LazyDynamicEndpointGroupTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/client/grpc/protocol/UnaryGrpcClientTest.java b/grpc/src/test/java/com/linecorp/armeria/client/grpc/protocol/UnaryGrpcClientTest.java index 60a205c873b4..ddcc5f70f3f5 100644 --- a/grpc/src/test/java/com/linecorp/armeria/client/grpc/protocol/UnaryGrpcClientTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/client/grpc/protocol/UnaryGrpcClientTest.java @@ -42,12 +42,6 @@ import com.linecorp.armeria.common.grpc.protocol.ArmeriaStatusException; import com.linecorp.armeria.common.grpc.protocol.GrpcHeaderNames; import com.linecorp.armeria.common.grpc.protocol.GrpcWebTrailers; -import com.linecorp.armeria.grpc.testing.Messages.Payload; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; import com.linecorp.armeria.internal.common.grpc.protocol.StatusCodes; import com.linecorp.armeria.internal.common.grpc.protocol.UnaryGrpcSerializationFormats; import com.linecorp.armeria.server.ServerBuilder; @@ -57,6 +51,12 @@ import io.grpc.Status; import io.grpc.StatusException; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.Payload; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.Messages.StreamingOutputCallRequest; +import testing.grpc.Messages.StreamingOutputCallResponse; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; class UnaryGrpcClientTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/common/grpc/GrpcMeterIdPrefixFunctionTest.java b/grpc/src/test/java/com/linecorp/armeria/common/grpc/GrpcMeterIdPrefixFunctionTest.java index a8854ae4831c..14bc6fe69dab 100644 --- a/grpc/src/test/java/com/linecorp/armeria/common/grpc/GrpcMeterIdPrefixFunctionTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/common/grpc/GrpcMeterIdPrefixFunctionTest.java @@ -49,11 +49,6 @@ import com.linecorp.armeria.common.logging.RequestLogProperty; import com.linecorp.armeria.common.metric.MeterIdPrefix; import com.linecorp.armeria.common.metric.PrometheusMeterRegistries; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; @@ -64,6 +59,11 @@ import io.grpc.stub.StreamObserver; import io.micrometer.core.instrument.Statistic; import io.micrometer.prometheus.PrometheusMeterRegistry; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class GrpcMeterIdPrefixFunctionTest { @@ -231,4 +231,3 @@ public void unaryCall2(SimpleRequest request, StreamObserver res } } } - diff --git a/grpc/src/test/java/com/linecorp/armeria/common/grpc/protocol/ArmeriaMessageDeframerTest.java b/grpc/src/test/java/com/linecorp/armeria/common/grpc/protocol/ArmeriaMessageDeframerTest.java index 7703e59e60a8..66106d850bc0 100644 --- a/grpc/src/test/java/com/linecorp/armeria/common/grpc/protocol/ArmeriaMessageDeframerTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/common/grpc/protocol/ArmeriaMessageDeframerTest.java @@ -49,8 +49,6 @@ import com.linecorp.armeria.common.stream.StreamMessage; import com.linecorp.armeria.common.stream.StreamWriter; import com.linecorp.armeria.common.util.Exceptions; -import com.linecorp.armeria.grpc.testing.Messages.Payload; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; import com.linecorp.armeria.internal.common.grpc.ForwardingDecompressor; import com.linecorp.armeria.internal.common.grpc.GrpcTestUtil; @@ -58,6 +56,8 @@ import io.netty.buffer.Unpooled; import io.netty.buffer.UnpooledByteBufAllocator; import reactor.test.StepVerifier; +import testing.grpc.Messages.Payload; +import testing.grpc.Messages.SimpleRequest; class ArmeriaMessageDeframerTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/common/grpc/protocol/ArmeriaMessageFramerTest.java b/grpc/src/test/java/com/linecorp/armeria/common/grpc/protocol/ArmeriaMessageFramerTest.java index 93fa3016b3a2..b0a1f2482711 100644 --- a/grpc/src/test/java/com/linecorp/armeria/common/grpc/protocol/ArmeriaMessageFramerTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/common/grpc/protocol/ArmeriaMessageFramerTest.java @@ -38,8 +38,6 @@ import com.linecorp.armeria.common.ResponseHeaders; import com.linecorp.armeria.common.ResponseHeadersBuilder; import com.linecorp.armeria.common.grpc.GrpcSerializationFormats; -import com.linecorp.armeria.grpc.testing.Messages.Payload; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; import com.linecorp.armeria.internal.common.grpc.ForwardingCompressor; import com.linecorp.armeria.internal.common.grpc.GrpcTestUtil; import com.linecorp.armeria.internal.common.grpc.protocol.GrpcTrailersUtil; @@ -49,6 +47,8 @@ import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import io.netty.buffer.UnpooledByteBufAllocator; +import testing.grpc.Messages.Payload; +import testing.grpc.Messages.SimpleRequest; class ArmeriaMessageFramerTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/internal/client/grpc/CustomGrpcClientFactoryTest.java b/grpc/src/test/java/com/linecorp/armeria/internal/client/grpc/CustomGrpcClientFactoryTest.java index 38388fefe3a1..dd9db28b06bc 100644 --- a/grpc/src/test/java/com/linecorp/armeria/internal/client/grpc/CustomGrpcClientFactoryTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/internal/client/grpc/CustomGrpcClientFactoryTest.java @@ -27,12 +27,6 @@ import com.linecorp.armeria.client.grpc.GrpcClientStubFactory; import com.linecorp.armeria.client.grpc.GrpcClients; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceStub; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.server.logging.LoggingService; @@ -47,6 +41,12 @@ import io.grpc.MethodDescriptor; import io.grpc.ServiceDescriptor; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; +import testing.grpc.TestServiceGrpc.TestServiceStub; class CustomGrpcClientFactoryTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/internal/client/grpc/GrpcClientUnwrapTest.java b/grpc/src/test/java/com/linecorp/armeria/internal/client/grpc/GrpcClientUnwrapTest.java index e4378f05f27e..d40fae201ca5 100644 --- a/grpc/src/test/java/com/linecorp/armeria/internal/client/grpc/GrpcClientUnwrapTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/internal/client/grpc/GrpcClientUnwrapTest.java @@ -28,7 +28,8 @@ import com.linecorp.armeria.client.retry.RetryingClient; import com.linecorp.armeria.common.util.UnmodifiableFuture; import com.linecorp.armeria.common.util.Unwrappable; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; + +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class GrpcClientUnwrapTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/internal/common/grpc/GrpcMessageMarshallerTest.java b/grpc/src/test/java/com/linecorp/armeria/internal/common/grpc/GrpcMessageMarshallerTest.java index ee89b7c4cfe4..0d97d1707f56 100644 --- a/grpc/src/test/java/com/linecorp/armeria/internal/common/grpc/GrpcMessageMarshallerTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/internal/common/grpc/GrpcMessageMarshallerTest.java @@ -29,13 +29,13 @@ import com.linecorp.armeria.common.grpc.GrpcJsonMarshaller; import com.linecorp.armeria.common.grpc.GrpcSerializationFormats; import com.linecorp.armeria.common.grpc.protocol.DeframedMessage; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import io.netty.buffer.ByteBufUtil; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc; class GrpcMessageMarshallerTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/internal/common/grpc/GrpcTestUtil.java b/grpc/src/test/java/com/linecorp/armeria/internal/common/grpc/GrpcTestUtil.java index 491a05325253..8b0c98d735f0 100644 --- a/grpc/src/test/java/com/linecorp/armeria/internal/common/grpc/GrpcTestUtil.java +++ b/grpc/src/test/java/com/linecorp/armeria/internal/common/grpc/GrpcTestUtil.java @@ -24,15 +24,14 @@ import com.google.protobuf.ByteString; import com.google.protobuf.MessageLite; -import com.linecorp.armeria.grpc.testing.Messages.Payload; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; - import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufInputStream; import io.netty.buffer.ByteBufOutputStream; import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; +import testing.grpc.Messages.Payload; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; public final class GrpcTestUtil { public static final SimpleRequest REQUEST_MESSAGE = diff --git a/grpc/src/test/java/com/linecorp/armeria/internal/common/grpc/TestServiceImpl.java b/grpc/src/test/java/com/linecorp/armeria/internal/common/grpc/TestServiceImpl.java index a0c4ffbf8796..653762e3529b 100644 --- a/grpc/src/test/java/com/linecorp/armeria/internal/common/grpc/TestServiceImpl.java +++ b/grpc/src/test/java/com/linecorp/armeria/internal/common/grpc/TestServiceImpl.java @@ -34,18 +34,6 @@ import com.linecorp.armeria.common.HttpHeaderNames; import com.linecorp.armeria.common.HttpRequest; import com.linecorp.armeria.common.HttpResponse; -import com.linecorp.armeria.grpc.testing.Messages; -import com.linecorp.armeria.grpc.testing.Messages.PayloadType; -import com.linecorp.armeria.grpc.testing.Messages.ResponseParameters; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.Messages.StreamingInputCallRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingInputCallResponse; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.protobuf.EmptyProtos; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.HttpService; import com.linecorp.armeria.server.Service; import com.linecorp.armeria.server.ServiceRequestContext; @@ -59,6 +47,18 @@ import io.grpc.stub.ServerCallStreamObserver; import io.grpc.stub.StreamObserver; import io.netty.util.AsciiString; +import testing.grpc.EmptyProtos; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.Messages; +import testing.grpc.Messages.PayloadType; +import testing.grpc.Messages.ResponseParameters; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.Messages.StreamingInputCallRequest; +import testing.grpc.Messages.StreamingInputCallResponse; +import testing.grpc.Messages.StreamingOutputCallRequest; +import testing.grpc.Messages.StreamingOutputCallResponse; +import testing.grpc.TestServiceGrpc; public class TestServiceImpl extends TestServiceGrpc.TestServiceImplBase { @@ -71,7 +71,7 @@ public class TestServiceImpl extends TestServiceGrpc.TestServiceImplBase { ProtoUtils.keyForProto(StringValue.getDefaultInstance()); private static final String UNCOMPRESSABLE_FILE = - "/io/grpc/testing/integration/testdata/uncompressable.bin"; + "/testing/grpc/uncompressable.bin"; private final Random random = new Random(); private final ScheduledExecutorService executor; diff --git a/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServiceJsonSchemaTest.java b/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServiceJsonSchemaTest.java index 00a906cb4203..069560c1899d 100644 --- a/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServiceJsonSchemaTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServiceJsonSchemaTest.java @@ -33,9 +33,6 @@ import com.linecorp.armeria.client.WebClient; import com.linecorp.armeria.common.AggregatedHttpResponse; import com.linecorp.armeria.common.HttpStatus; -import com.linecorp.armeria.grpc.testing.Messages.ExtendedTestMessage; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; import com.linecorp.armeria.internal.testing.TestUtil; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.docs.DocService; @@ -45,11 +42,14 @@ import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.ExtendedTestMessage; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; class GrpcDocServiceJsonSchemaTest { private static final ServiceDescriptor TEST_SERVICE_DESCRIPTOR = - com.linecorp.armeria.grpc.testing.Test.getDescriptor() + testing.grpc.Test.getDescriptor() .findServiceByName("TestService"); private static class TestService extends TestServiceImplBase { diff --git a/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServicePluginTest.java b/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServicePluginTest.java index 1b79b18e2aca..31fae653ac1e 100644 --- a/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServicePluginTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServicePluginTest.java @@ -37,19 +37,8 @@ import com.linecorp.armeria.common.HttpMethod; import com.linecorp.armeria.common.MediaType; import com.linecorp.armeria.common.grpc.GrpcSerializationFormats; -import com.linecorp.armeria.grpc.testing.HttpJsonTranscodingTestServiceGrpc; -import com.linecorp.armeria.grpc.testing.HttpJsonTranscodingTestServiceGrpc.HttpJsonTranscodingTestServiceImplBase; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.ReconnectServiceGrpc; -import com.linecorp.armeria.grpc.testing.ReconnectServiceGrpc.ReconnectServiceImplBase; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; -import com.linecorp.armeria.grpc.testing.UnitTestServiceGrpc; -import com.linecorp.armeria.grpc.testing.UnitTestServiceGrpc.UnitTestServiceImplBase; import com.linecorp.armeria.internal.server.grpc.GrpcDocServicePlugin.HttpEndpoint; import com.linecorp.armeria.internal.server.grpc.GrpcDocServicePlugin.ServiceInfosBuilder; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.DecoratingHttpServiceFunction; import com.linecorp.armeria.server.HttpServiceWithRoutes; import com.linecorp.armeria.server.Route; @@ -71,11 +60,22 @@ import com.linecorp.armeria.server.protobuf.ProtobufDescriptiveTypeInfoProvider; import io.grpc.MethodDescriptor; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.HttpJsonTranscodingTestServiceGrpc; +import testing.grpc.HttpJsonTranscodingTestServiceGrpc.HttpJsonTranscodingTestServiceImplBase; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.ReconnectServiceGrpc; +import testing.grpc.ReconnectServiceGrpc.ReconnectServiceImplBase; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; +import testing.grpc.UnitTestServiceGrpc; +import testing.grpc.UnitTestServiceGrpc.UnitTestServiceImplBase; class GrpcDocServicePluginTest { private static final ServiceDescriptor TEST_SERVICE_DESCRIPTOR = - com.linecorp.armeria.grpc.testing.Test.getDescriptor() + testing.grpc.Test.getDescriptor() .findServiceByName("TestService"); private static final GrpcDocServicePlugin generator = new GrpcDocServicePlugin(); diff --git a/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServicePrefixTest.java b/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServicePrefixTest.java index 3c8d2b683970..21048743bb0c 100644 --- a/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServicePrefixTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServicePrefixTest.java @@ -30,12 +30,13 @@ import com.linecorp.armeria.client.WebClient; import com.linecorp.armeria.common.AggregatedHttpResponse; import com.linecorp.armeria.common.HttpStatus; -import com.linecorp.armeria.grpc.testing.GrpcDocServicePrefixTestServiceGrpc.GrpcDocServicePrefixTestServiceImplBase; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.docs.DocService; import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.grpc.GrpcDocServicePrefixTestServiceGrpc.GrpcDocServicePrefixTestServiceImplBase; + class GrpcDocServicePrefixTest { private static final ObjectMapper mapper = new ObjectMapper(); diff --git a/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServiceTest.java b/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServiceTest.java index 6a799440d05a..748364352581 100644 --- a/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServiceTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServiceTest.java @@ -48,12 +48,6 @@ import com.linecorp.armeria.common.HttpStatus; import com.linecorp.armeria.common.MediaType; import com.linecorp.armeria.common.grpc.GrpcSerializationFormats; -import com.linecorp.armeria.grpc.testing.Messages.Payload; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.ReconnectServiceGrpc.ReconnectServiceImplBase; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; import com.linecorp.armeria.internal.server.grpc.GrpcDocServicePlugin.ServiceInfosBuilder; import com.linecorp.armeria.internal.testing.TestUtil; import com.linecorp.armeria.server.ServerBuilder; @@ -69,15 +63,21 @@ import io.grpc.MethodDescriptor; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.Payload; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.ReconnectServiceGrpc.ReconnectServiceImplBase; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; class GrpcDocServiceTest { private static final ServiceDescriptor TEST_SERVICE_DESCRIPTOR = - com.linecorp.armeria.grpc.testing.Test.getDescriptor() + testing.grpc.Test.getDescriptor() .findServiceByName("TestService"); private static final ServiceDescriptor RECONNECT_SERVICE_DESCRIPTOR = - com.linecorp.armeria.grpc.testing.Test.getDescriptor() + testing.grpc.Test.getDescriptor() .findServiceByName("ReconnectService"); private static final String INJECTED_HEADER_PROVIDER1 = diff --git a/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServiceWithCustomRouteTest.java b/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServiceWithCustomRouteTest.java index 569b2dd349d9..38548c2b3375 100644 --- a/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServiceWithCustomRouteTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/internal/server/grpc/GrpcDocServiceWithCustomRouteTest.java @@ -31,14 +31,15 @@ import com.linecorp.armeria.client.WebClient; import com.linecorp.armeria.common.AggregatedHttpResponse; import com.linecorp.armeria.common.MediaType; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.docs.DocService; import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; + class GrpcDocServiceWithCustomRouteTest { private static final ObjectMapper mapper = new ObjectMapper(); diff --git a/grpc/src/test/java/com/linecorp/armeria/it/grpc/DuplicateStructInfoSpecificationTest.java b/grpc/src/test/java/com/linecorp/armeria/it/grpc/DuplicateStructInfoSpecificationTest.java index 6d2eb58d3268..a42c1a017a17 100644 --- a/grpc/src/test/java/com/linecorp/armeria/it/grpc/DuplicateStructInfoSpecificationTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/it/grpc/DuplicateStructInfoSpecificationTest.java @@ -25,7 +25,6 @@ import com.linecorp.armeria.client.BlockingWebClient; import com.linecorp.armeria.common.CommonPools; -import com.linecorp.armeria.grpc.testing.Messages; import com.linecorp.armeria.internal.common.grpc.TestServiceImpl; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.annotation.ConsumesJson; @@ -36,6 +35,8 @@ import com.linecorp.armeria.server.logging.LoggingService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.grpc.Messages; + class DuplicateStructInfoSpecificationTest { @RegisterExtension @@ -63,7 +64,7 @@ void shouldHaveAliasInSpecification() throws InterruptedException { if ("armeria.grpc.testing.SimpleRequest".equals(struct.get("name").asText())) { found = true; assertThat(struct.get("alias").asText()) - .isEqualTo("com.linecorp.armeria.grpc.testing.Messages$SimpleRequest"); + .isEqualTo("testing.grpc.Messages$SimpleRequest"); } } assertThat(found) diff --git a/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcDecoratingServiceItTest.java b/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcDecoratingServiceItTest.java index 817bdd3d5fa3..6340dff96d50 100644 --- a/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcDecoratingServiceItTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcDecoratingServiceItTest.java @@ -28,10 +28,6 @@ import com.linecorp.armeria.client.grpc.GrpcClients; import com.linecorp.armeria.common.HttpRequest; import com.linecorp.armeria.common.HttpResponse; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; import com.linecorp.armeria.server.DecoratingHttpServiceFunction; import com.linecorp.armeria.server.HttpService; import com.linecorp.armeria.server.ServerBuilder; @@ -42,6 +38,10 @@ import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; class GrpcDecoratingServiceItTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcDecoratingServiceSupportHttpJsonTranscodingTest.java b/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcDecoratingServiceSupportHttpJsonTranscodingTest.java index 90b7b7588b30..db03c4f53420 100644 --- a/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcDecoratingServiceSupportHttpJsonTranscodingTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcDecoratingServiceSupportHttpJsonTranscodingTest.java @@ -27,9 +27,6 @@ import com.linecorp.armeria.client.BlockingWebClient; import com.linecorp.armeria.common.HttpRequest; import com.linecorp.armeria.common.HttpResponse; -import com.linecorp.armeria.grpc.testing.HttpJsonTranscodingTestServiceGrpc.HttpJsonTranscodingTestServiceImplBase; -import com.linecorp.armeria.grpc.testing.Transcoding.GetMessageRequestV1; -import com.linecorp.armeria.grpc.testing.Transcoding.Message; import com.linecorp.armeria.internal.common.JacksonUtil; import com.linecorp.armeria.server.DecoratingHttpServiceFunction; import com.linecorp.armeria.server.HttpService; @@ -41,6 +38,9 @@ import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.grpc.stub.StreamObserver; +import testing.grpc.HttpJsonTranscodingTestServiceGrpc.HttpJsonTranscodingTestServiceImplBase; +import testing.grpc.Transcoding.GetMessageRequestV1; +import testing.grpc.Transcoding.Message; class GrpcDecoratingServiceSupportHttpJsonTranscodingTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcFlowControlTest.java b/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcFlowControlTest.java index 5c42db2786f8..08724a201998 100644 --- a/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcFlowControlTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcFlowControlTest.java @@ -37,11 +37,6 @@ import com.google.protobuf.ByteString; import com.linecorp.armeria.client.grpc.GrpcClients; -import com.linecorp.armeria.grpc.testing.FlowControlTestServiceGrpc.FlowControlTestServiceImplBase; -import com.linecorp.armeria.grpc.testing.FlowControlTestServiceGrpc.FlowControlTestServiceStub; -import com.linecorp.armeria.grpc.testing.Messages.Payload; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.testing.junit4.server.ServerRule; @@ -50,6 +45,11 @@ import io.grpc.stub.ClientResponseObserver; import io.grpc.stub.ServerCallStreamObserver; import io.grpc.stub.StreamObserver; +import testing.grpc.FlowControlTestServiceGrpc.FlowControlTestServiceImplBase; +import testing.grpc.FlowControlTestServiceGrpc.FlowControlTestServiceStub; +import testing.grpc.Messages.Payload; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; public class GrpcFlowControlTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcHttpJsonTranscodingServiceAnnotatedAuthServiceTest.java b/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcHttpJsonTranscodingServiceAnnotatedAuthServiceTest.java index b5391500f0c0..633062bb2940 100644 --- a/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcHttpJsonTranscodingServiceAnnotatedAuthServiceTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcHttpJsonTranscodingServiceAnnotatedAuthServiceTest.java @@ -38,9 +38,6 @@ import com.linecorp.armeria.common.HttpRequest; import com.linecorp.armeria.common.HttpStatus; import com.linecorp.armeria.common.util.UnmodifiableFuture; -import com.linecorp.armeria.grpc.testing.HttpJsonTranscodingTestServiceGrpc.HttpJsonTranscodingTestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.HttpJsonTranscodingTestServiceGrpc.HttpJsonTranscodingTestServiceImplBase; -import com.linecorp.armeria.grpc.testing.Transcoding; import com.linecorp.armeria.internal.common.JacksonUtil; import com.linecorp.armeria.server.HttpService; import com.linecorp.armeria.server.ServerBuilder; @@ -58,6 +55,9 @@ import io.grpc.StatusRuntimeException; import io.grpc.stub.MetadataUtils; import io.grpc.stub.StreamObserver; +import testing.grpc.HttpJsonTranscodingTestServiceGrpc.HttpJsonTranscodingTestServiceBlockingStub; +import testing.grpc.HttpJsonTranscodingTestServiceGrpc.HttpJsonTranscodingTestServiceImplBase; +import testing.grpc.Transcoding; public class GrpcHttpJsonTranscodingServiceAnnotatedAuthServiceTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcMetricsIntegrationTest.java b/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcMetricsIntegrationTest.java index 0cd3f3d5b8b6..7b2975ff8ca4 100644 --- a/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcMetricsIntegrationTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcMetricsIntegrationTest.java @@ -45,11 +45,6 @@ import com.linecorp.armeria.common.metric.MeterIdPrefix; import com.linecorp.armeria.common.metric.MoreMeters; import com.linecorp.armeria.common.metric.PrometheusMeterRegistries; -import com.linecorp.armeria.grpc.testing.Messages.Payload; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.server.logging.LoggingService; @@ -59,6 +54,11 @@ import io.grpc.stub.StreamObserver; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.Statistic; +import testing.grpc.Messages.Payload; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; public class GrpcMetricsIntegrationTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcProtoVersionTest.java b/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcProtoVersionTest.java index d2985be940ee..a37c54666e0d 100644 --- a/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcProtoVersionTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcProtoVersionTest.java @@ -30,17 +30,17 @@ import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; -import example.armeria.grpc.Proto2.Foo2; -import example.armeria.grpc.Proto2.Proto2Message; -import example.armeria.grpc.Proto2ServiceGrpc.Proto2ServiceBlockingStub; -import example.armeria.grpc.Proto2ServiceGrpc.Proto2ServiceImplBase; -import example.armeria.grpc.Proto3.Foo3; -import example.armeria.grpc.Proto3.Proto3Message; -import example.armeria.grpc.Proto3ServiceGrpc.Proto3ServiceBlockingStub; -import example.armeria.grpc.Proto3ServiceGrpc.Proto3ServiceImplBase; -import example.armeria.grpc.Proto3WithProto2ServiceGrpc.Proto3WithProto2ServiceBlockingStub; -import example.armeria.grpc.Proto3WithProto2ServiceGrpc.Proto3WithProto2ServiceImplBase; import io.grpc.stub.StreamObserver; +import testing.grpc.Proto2.Foo2; +import testing.grpc.Proto2.Proto2Message; +import testing.grpc.Proto2ServiceGrpc.Proto2ServiceBlockingStub; +import testing.grpc.Proto2ServiceGrpc.Proto2ServiceImplBase; +import testing.grpc.Proto3.Foo3; +import testing.grpc.Proto3.Proto3Message; +import testing.grpc.Proto3ServiceGrpc.Proto3ServiceBlockingStub; +import testing.grpc.Proto3ServiceGrpc.Proto3ServiceImplBase; +import testing.grpc.Proto3WithProto2ServiceGrpc.Proto3WithProto2ServiceBlockingStub; +import testing.grpc.Proto3WithProto2ServiceGrpc.Proto3WithProto2ServiceImplBase; class GrpcProtoVersionTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcStatusCauseTest.java b/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcStatusCauseTest.java index 5bf8ae48dc96..210431215b69 100644 --- a/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcStatusCauseTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/it/grpc/GrpcStatusCauseTest.java @@ -29,10 +29,6 @@ import com.linecorp.armeria.common.grpc.StatusCauseException; import com.linecorp.armeria.common.util.Exceptions; import com.linecorp.armeria.common.util.Sampler; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.testing.junit4.server.ServerRule; @@ -40,6 +36,10 @@ import io.grpc.Status; import io.grpc.StatusRuntimeException; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; public class GrpcStatusCauseTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/it/grpc/HttpJsonTranscodingTest.java b/grpc/src/test/java/com/linecorp/armeria/it/grpc/HttpJsonTranscodingTest.java index ffa8e8cac6b7..d4595688aea3 100644 --- a/grpc/src/test/java/com/linecorp/armeria/it/grpc/HttpJsonTranscodingTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/it/grpc/HttpJsonTranscodingTest.java @@ -60,37 +60,6 @@ import com.linecorp.armeria.common.QueryParamsBuilder; import com.linecorp.armeria.common.RequestHeaders; import com.linecorp.armeria.common.grpc.GrpcJsonMarshaller; -import com.linecorp.armeria.grpc.testing.HttpJsonTranscodingTestServiceGrpc.HttpJsonTranscodingTestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.HttpJsonTranscodingTestServiceGrpc.HttpJsonTranscodingTestServiceImplBase; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoAnyRequest; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoAnyResponse; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoFieldMaskRequest; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoFieldMaskResponse; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoListValueRequest; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoListValueResponse; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoNestedMessageRequest; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoNestedMessageResponse; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoRecursiveRequest; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoRecursiveResponse; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoResponseBodyRequest; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoResponseBodyResponse; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoStructRequest; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoStructResponse; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoTimestampAndDurationRequest; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoTimestampAndDurationResponse; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoValueRequest; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoValueResponse; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoWrappersRequest; -import com.linecorp.armeria.grpc.testing.Transcoding.EchoWrappersResponse; -import com.linecorp.armeria.grpc.testing.Transcoding.GetMessageRequestV1; -import com.linecorp.armeria.grpc.testing.Transcoding.GetMessageRequestV2; -import com.linecorp.armeria.grpc.testing.Transcoding.GetMessageRequestV2.SubMessage; -import com.linecorp.armeria.grpc.testing.Transcoding.GetMessageRequestV3; -import com.linecorp.armeria.grpc.testing.Transcoding.GetMessageRequestV4; -import com.linecorp.armeria.grpc.testing.Transcoding.Message; -import com.linecorp.armeria.grpc.testing.Transcoding.MessageType; -import com.linecorp.armeria.grpc.testing.Transcoding.Recursive; -import com.linecorp.armeria.grpc.testing.Transcoding.UpdateMessageRequestV1; import com.linecorp.armeria.internal.common.JacksonUtil; import com.linecorp.armeria.internal.server.grpc.GrpcDocServicePlugin; import com.linecorp.armeria.server.ServerBuilder; @@ -103,6 +72,37 @@ import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.grpc.stub.StreamObserver; +import testing.grpc.HttpJsonTranscodingTestServiceGrpc.HttpJsonTranscodingTestServiceBlockingStub; +import testing.grpc.HttpJsonTranscodingTestServiceGrpc.HttpJsonTranscodingTestServiceImplBase; +import testing.grpc.Transcoding.EchoAnyRequest; +import testing.grpc.Transcoding.EchoAnyResponse; +import testing.grpc.Transcoding.EchoFieldMaskRequest; +import testing.grpc.Transcoding.EchoFieldMaskResponse; +import testing.grpc.Transcoding.EchoListValueRequest; +import testing.grpc.Transcoding.EchoListValueResponse; +import testing.grpc.Transcoding.EchoNestedMessageRequest; +import testing.grpc.Transcoding.EchoNestedMessageResponse; +import testing.grpc.Transcoding.EchoRecursiveRequest; +import testing.grpc.Transcoding.EchoRecursiveResponse; +import testing.grpc.Transcoding.EchoResponseBodyRequest; +import testing.grpc.Transcoding.EchoResponseBodyResponse; +import testing.grpc.Transcoding.EchoStructRequest; +import testing.grpc.Transcoding.EchoStructResponse; +import testing.grpc.Transcoding.EchoTimestampAndDurationRequest; +import testing.grpc.Transcoding.EchoTimestampAndDurationResponse; +import testing.grpc.Transcoding.EchoValueRequest; +import testing.grpc.Transcoding.EchoValueResponse; +import testing.grpc.Transcoding.EchoWrappersRequest; +import testing.grpc.Transcoding.EchoWrappersResponse; +import testing.grpc.Transcoding.GetMessageRequestV1; +import testing.grpc.Transcoding.GetMessageRequestV2; +import testing.grpc.Transcoding.GetMessageRequestV2.SubMessage; +import testing.grpc.Transcoding.GetMessageRequestV3; +import testing.grpc.Transcoding.GetMessageRequestV4; +import testing.grpc.Transcoding.Message; +import testing.grpc.Transcoding.MessageType; +import testing.grpc.Transcoding.Recursive; +import testing.grpc.Transcoding.UpdateMessageRequestV1; // The public Static methods in this class are used by the classes in other packages. public class HttpJsonTranscodingTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/AsyncServerInterceptorTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/AsyncServerInterceptorTest.java index 72d7227e8f98..6588116c1753 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/AsyncServerInterceptorTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/AsyncServerInterceptorTest.java @@ -31,10 +31,6 @@ import com.linecorp.armeria.client.grpc.GrpcClients; import com.linecorp.armeria.common.auth.AuthToken; import com.linecorp.armeria.common.grpc.GrpcStatusFunction; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; import com.linecorp.armeria.internal.testing.AnticipatedException; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.ServiceRequestContext; @@ -48,6 +44,10 @@ import io.grpc.Status; import io.grpc.StatusRuntimeException; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; class AsyncServerInterceptorTest { private static final AtomicInteger exceptionCounter = new AtomicInteger(0); diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/CustomRouteTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/CustomRouteTest.java index 1d9f12621d1c..a1c2e242bafd 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/CustomRouteTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/CustomRouteTest.java @@ -31,15 +31,15 @@ import com.linecorp.armeria.common.HttpStatus; import com.linecorp.armeria.common.MediaType; import com.linecorp.armeria.common.grpc.protocol.GrpcHeaderNames; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.grpc.stub.StreamObserver; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; class CustomRouteTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/DeferredListenerTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/DeferredListenerTest.java index 4233b9c47e9e..a6e939641dc3 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/DeferredListenerTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/DeferredListenerTest.java @@ -38,15 +38,15 @@ import com.linecorp.armeria.common.HttpResponse; import com.linecorp.armeria.common.ResponseHeaders; import com.linecorp.armeria.common.grpc.GrpcSerializationFormats; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; import com.linecorp.armeria.server.ServiceRequestContext; import io.grpc.CompressorRegistry; import io.grpc.DecompressorRegistry; import io.grpc.ServerCall; import io.netty.channel.EventLoop; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc; class DeferredListenerTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/FramedGrpcServiceTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/FramedGrpcServiceTest.java index 41a59911dd29..929f6dd288b3 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/FramedGrpcServiceTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/FramedGrpcServiceTest.java @@ -32,11 +32,12 @@ import com.linecorp.armeria.common.RequestHeaders; import com.linecorp.armeria.common.ResponseHeaders; import com.linecorp.armeria.common.grpc.protocol.GrpcHeaderNames; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; import com.linecorp.armeria.server.Route; import com.linecorp.armeria.server.RoutingResult; import com.linecorp.armeria.server.ServiceRequestContext; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; + // Tests error cases, success cases are checked in ArmeriaGrpcServiceInteropTest class FramedGrpcServiceTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcDecoratingServiceTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcDecoratingServiceTest.java index 8717934e2138..89c2b9e2761d 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcDecoratingServiceTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcDecoratingServiceTest.java @@ -30,22 +30,6 @@ import com.linecorp.armeria.client.grpc.GrpcClients; import com.linecorp.armeria.common.HttpRequest; import com.linecorp.armeria.common.HttpResponse; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.Metrics.GaugeRequest; -import com.linecorp.armeria.grpc.testing.Metrics.GaugeResponse; -import com.linecorp.armeria.grpc.testing.MetricsServiceGrpc.MetricsServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.MetricsServiceGrpc.MetricsServiceImplBase; -import com.linecorp.armeria.grpc.testing.ReconnectServiceGrpc.ReconnectServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.ReconnectServiceGrpc.ReconnectServiceImplBase; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; -import com.linecorp.armeria.grpc.testing.UnitTestBarServiceGrpc.UnitTestBarServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.UnitTestBarServiceGrpc.UnitTestBarServiceImplBase; -import com.linecorp.armeria.grpc.testing.UnitTestFooServiceGrpc.UnitTestFooServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.UnitTestFooServiceGrpc.UnitTestFooServiceImplBase; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.DecoratingHttpServiceFunction; import com.linecorp.armeria.server.HttpService; import com.linecorp.armeria.server.ServerBuilder; @@ -55,6 +39,22 @@ import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.grpc.stub.StreamObserver; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.Metrics.GaugeRequest; +import testing.grpc.Metrics.GaugeResponse; +import testing.grpc.MetricsServiceGrpc.MetricsServiceBlockingStub; +import testing.grpc.MetricsServiceGrpc.MetricsServiceImplBase; +import testing.grpc.ReconnectServiceGrpc.ReconnectServiceBlockingStub; +import testing.grpc.ReconnectServiceGrpc.ReconnectServiceImplBase; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; +import testing.grpc.UnitTestBarServiceGrpc.UnitTestBarServiceBlockingStub; +import testing.grpc.UnitTestBarServiceGrpc.UnitTestBarServiceImplBase; +import testing.grpc.UnitTestFooServiceGrpc.UnitTestFooServiceBlockingStub; +import testing.grpc.UnitTestFooServiceGrpc.UnitTestFooServiceImplBase; class GrpcDecoratingServiceTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcExchangeTypeTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcExchangeTypeTest.java index 9618cb1a47ec..e7a1ee542465 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcExchangeTypeTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcExchangeTypeTest.java @@ -32,11 +32,11 @@ import com.linecorp.armeria.common.MediaType; import com.linecorp.armeria.common.RequestHeaders; import com.linecorp.armeria.common.grpc.GrpcSerializationFormats; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; import com.linecorp.armeria.internal.common.grpc.TestServiceImpl; import com.linecorp.armeria.server.ServiceRequestContext; import io.grpc.MethodDescriptor; +import testing.grpc.TestServiceGrpc; class GrpcExchangeTypeTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcHealthCheckServiceTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcHealthCheckServiceTest.java index a656c6df0014..b2943ab83a87 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcHealthCheckServiceTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcHealthCheckServiceTest.java @@ -36,9 +36,6 @@ import com.google.common.collect.ImmutableSet; import com.linecorp.armeria.client.grpc.GrpcClients; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; import com.linecorp.armeria.internal.common.grpc.StreamRecorder; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.healthcheck.SettableHealthChecker; @@ -53,6 +50,9 @@ import io.grpc.health.v1.HealthGrpc.HealthBlockingStub; import io.grpc.health.v1.HealthGrpc.HealthStub; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; class GrpcHealthCheckServiceTest { @@ -61,7 +61,7 @@ class GrpcHealthCheckServiceTest { static final GrpcHealthCheckService service = GrpcHealthCheckService .builder() .checkers(serverHealth) - .serviceCheckers("com.linecorp.armeria.grpc.testing.TestService", + .serviceCheckers("testing.grpc.TestService", new SettableHealthChecker(true)) .build(); @@ -92,18 +92,18 @@ void check() { assertThat(response.getStatus()).isEqualTo(ServingStatus.SERVING); request = HealthCheckRequest.newBuilder() - .setService("com.linecorp.armeria.grpc.testing.TestService") + .setService("testing.grpc.TestService") .build(); response = client.check(request); assertThat(response.getStatus()).isEqualTo(ServingStatus.SERVING); assertThatThrownBy(() -> client.check( HealthCheckRequest.newBuilder() - .setService("com.linecorp.armeria.grpc.testing.NotFoundTestService") + .setService("testing.grpc.NotFoundTestService") .build())) .isInstanceOf(StatusRuntimeException.class) .hasMessage( - "NOT_FOUND: The service name(com.linecorp.armeria.grpc.testing.NotFoundTestService) " + + "NOT_FOUND: The service name(testing.grpc.NotFoundTestService) " + "is not registered in this service") .extracting(throwable -> ((StatusRuntimeException) throwable).getStatus().getCode()) .isEqualTo(Status.NOT_FOUND.getCode()); diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServerInterceptorTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServerInterceptorTest.java index 21ad6803ceeb..c846e941cf8e 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServerInterceptorTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServerInterceptorTest.java @@ -26,10 +26,7 @@ import org.junit.jupiter.api.extension.RegisterExtension; import com.linecorp.armeria.client.grpc.GrpcClients; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; import com.linecorp.armeria.internal.common.grpc.TestServiceImpl; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.testing.junit5.server.ServerExtension; @@ -41,6 +38,9 @@ import io.grpc.ServerInterceptor; import io.grpc.Status; import io.grpc.StatusRuntimeException; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class GrpcServerInterceptorTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceAutoCompressTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceAutoCompressTest.java index 52b08cb7747f..82f3e563df61 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceAutoCompressTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceAutoCompressTest.java @@ -29,10 +29,6 @@ import com.linecorp.armeria.client.grpc.GrpcClients; import com.linecorp.armeria.common.logging.RequestLog; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.UnitTestServiceGrpc.UnitTestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.UnitTestServiceGrpc.UnitTestServiceImplBase; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.logging.LoggingService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; @@ -40,6 +36,10 @@ import io.grpc.Codec; import io.grpc.DecompressorRegistry; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.UnitTestServiceGrpc.UnitTestServiceBlockingStub; +import testing.grpc.UnitTestServiceGrpc.UnitTestServiceImplBase; public class GrpcServiceAutoCompressTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceBlockingTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceBlockingTest.java index df8b9925c8f6..6510bdb74ad6 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceBlockingTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceBlockingTest.java @@ -29,21 +29,21 @@ import com.linecorp.armeria.client.grpc.GrpcClients; import com.linecorp.armeria.common.HttpRequest; import com.linecorp.armeria.common.util.ThreadFactories; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; -import com.linecorp.armeria.grpc.testing.UnitTestBarServiceGrpc.UnitTestBarServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.UnitTestBarServiceGrpc.UnitTestBarServiceImplBase; -import com.linecorp.armeria.grpc.testing.UnitTestFooServiceGrpc.UnitTestFooServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.UnitTestFooServiceGrpc.UnitTestFooServiceImplBase; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.annotation.Blocking; import com.linecorp.armeria.server.logging.LoggingService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; +import testing.grpc.UnitTestBarServiceGrpc.UnitTestBarServiceBlockingStub; +import testing.grpc.UnitTestBarServiceGrpc.UnitTestBarServiceImplBase; +import testing.grpc.UnitTestFooServiceGrpc.UnitTestFooServiceBlockingStub; +import testing.grpc.UnitTestFooServiceGrpc.UnitTestFooServiceImplBase; class GrpcServiceBlockingTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceBuilderTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceBuilderTest.java index 1cd9a3645b7e..30792af9cde8 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceBuilderTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceBuilderTest.java @@ -34,14 +34,8 @@ import com.linecorp.armeria.common.HttpResponse; import com.linecorp.armeria.common.grpc.GrpcStatusFunction; import com.linecorp.armeria.common.logging.LogLevel; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.MetricsServiceGrpc.MetricsServiceImplBase; -import com.linecorp.armeria.grpc.testing.ReconnectServiceGrpc.ReconnectServiceImplBase; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; import com.linecorp.armeria.internal.common.grpc.GrpcStatus; import com.linecorp.armeria.internal.server.annotation.DecoratorAnnotationUtil.DecoratorAndOrder; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.DecoratingHttpServiceFunction; import com.linecorp.armeria.server.HttpService; import com.linecorp.armeria.server.ServiceRequestContext; @@ -66,6 +60,12 @@ import io.grpc.Status; import io.grpc.Status.Code; import io.grpc.stub.StreamObserver; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.MetricsServiceGrpc.MetricsServiceImplBase; +import testing.grpc.ReconnectServiceGrpc.ReconnectServiceImplBase; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; class GrpcServiceBuilderTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceLogTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceLogTest.java index 53c8aea369f3..ecb80bb663f3 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceLogTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceLogTest.java @@ -40,14 +40,8 @@ import com.linecorp.armeria.client.Clients; import com.linecorp.armeria.client.grpc.GrpcClients; import com.linecorp.armeria.common.logging.RequestLog; -import com.linecorp.armeria.grpc.testing.Messages.StreamingInputCallRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingInputCallResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceStub; import com.linecorp.armeria.internal.common.grpc.StreamRecorder; import com.linecorp.armeria.internal.common.grpc.TestServiceImpl; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.logging.AccessLogWriter; import com.linecorp.armeria.testing.junit5.server.ServerExtension; @@ -56,6 +50,12 @@ import ch.qos.logback.core.Appender; import io.grpc.StatusRuntimeException; import io.grpc.stub.StreamObserver; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.Messages.StreamingInputCallRequest; +import testing.grpc.Messages.StreamingInputCallResponse; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpc.TestServiceGrpc.TestServiceStub; class GrpcServiceLogTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceServerTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceServerTest.java index cb8e99b1131f..aee3f1e7a51b 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceServerTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcServiceServerTest.java @@ -80,15 +80,6 @@ import com.linecorp.armeria.common.logging.RequestLog; import com.linecorp.armeria.common.stream.ClosedStreamException; import com.linecorp.armeria.common.util.TimeoutMode; -import com.linecorp.armeria.grpc.testing.Messages.EchoStatus; -import com.linecorp.armeria.grpc.testing.Messages.Payload; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallRequest; -import com.linecorp.armeria.grpc.testing.UnitTestServiceGrpc; -import com.linecorp.armeria.grpc.testing.UnitTestServiceGrpc.UnitTestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.UnitTestServiceGrpc.UnitTestServiceImplBase; -import com.linecorp.armeria.grpc.testing.UnitTestServiceGrpc.UnitTestServiceStub; import com.linecorp.armeria.internal.common.RequestTargetCache; import com.linecorp.armeria.internal.common.grpc.GrpcLogUtil; import com.linecorp.armeria.internal.common.grpc.GrpcTestUtil; @@ -128,6 +119,15 @@ import io.netty.buffer.UnpooledByteBufAllocator; import io.netty.util.AsciiString; import io.netty.util.AttributeKey; +import testing.grpc.Messages.EchoStatus; +import testing.grpc.Messages.Payload; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.Messages.StreamingOutputCallRequest; +import testing.grpc.UnitTestServiceGrpc; +import testing.grpc.UnitTestServiceGrpc.UnitTestServiceBlockingStub; +import testing.grpc.UnitTestServiceGrpc.UnitTestServiceImplBase; +import testing.grpc.UnitTestServiceGrpc.UnitTestServiceStub; class GrpcServiceServerTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcStatusDetailsBinHeaderTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcStatusDetailsBinHeaderTest.java index b1e74ea7ad18..516949f7405a 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcStatusDetailsBinHeaderTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcStatusDetailsBinHeaderTest.java @@ -34,14 +34,14 @@ import com.linecorp.armeria.common.MediaType; import com.linecorp.armeria.common.ResponseHeaders; import com.linecorp.armeria.common.grpc.protocol.GrpcHeaderNames; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.grpc.protobuf.StatusProto; import io.grpc.stub.StreamObserver; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; public class GrpcStatusDetailsBinHeaderTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcStatusMappingTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcStatusMappingTest.java index 953dc78c0ce1..e25bd6aee033 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcStatusMappingTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/GrpcStatusMappingTest.java @@ -36,11 +36,6 @@ import com.linecorp.armeria.client.grpc.GrpcClients; import com.linecorp.armeria.common.annotation.Nullable; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.testing.junit5.server.ServerExtension; @@ -58,6 +53,11 @@ import io.grpc.StatusRuntimeException; import io.grpc.stub.StreamObserver; import io.netty.util.AttributeKey; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class GrpcStatusMappingTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/HandlerRegistryTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/HandlerRegistryTest.java index 1f5f4707f9e9..b8fb039fc823 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/HandlerRegistryTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/HandlerRegistryTest.java @@ -21,7 +21,7 @@ import com.google.common.collect.ImmutableList; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; class HandlerRegistryTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/InternalReflectionUtilsTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/InternalReflectionUtilsTest.java index c612bb4586dd..37d34770ab04 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/InternalReflectionUtilsTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/InternalReflectionUtilsTest.java @@ -26,12 +26,11 @@ import org.junit.jupiter.api.Test; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; - import io.grpc.stub.StreamObserver; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; class InternalReflectionUtilsTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/InvalidRequestMessageTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/InvalidRequestMessageTest.java index 61cf0e51f20d..4510ff6e45f6 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/InvalidRequestMessageTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/InvalidRequestMessageTest.java @@ -37,12 +37,6 @@ import com.linecorp.armeria.client.grpc.protocol.UnaryGrpcClient; import com.linecorp.armeria.common.grpc.protocol.ArmeriaStatusException; import com.linecorp.armeria.common.logging.RequestLog; -import com.linecorp.armeria.grpc.testing.Messages.Payload; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; import com.linecorp.armeria.internal.common.grpc.TestServiceImpl; import com.linecorp.armeria.internal.common.grpc.protocol.UnaryGrpcSerializationFormats; import com.linecorp.armeria.server.ServerBuilder; @@ -53,6 +47,12 @@ import io.grpc.Status.Code; import io.grpc.StatusException; import io.grpc.StatusRuntimeException; +import testing.grpc.Messages.Payload; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.StreamingOutputCallRequest; +import testing.grpc.Messages.StreamingOutputCallResponse; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class InvalidRequestMessageTest { @RegisterExtension diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/InvalidResponseLengthTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/InvalidResponseLengthTest.java index c5fe2be30e1a..6dad1155287d 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/InvalidResponseLengthTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/InvalidResponseLengthTest.java @@ -27,13 +27,6 @@ import com.linecorp.armeria.client.grpc.GrpcClients; import com.linecorp.armeria.common.CommonPools; -import com.linecorp.armeria.grpc.testing.Messages.ResponseParameters; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceStub; import com.linecorp.armeria.internal.common.grpc.TestServiceImpl; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.testing.junit5.server.ServerExtension; @@ -45,6 +38,13 @@ import io.grpc.ServerCallHandler; import io.grpc.ServerInterceptor; import io.grpc.stub.StreamObserver; +import testing.grpc.Messages.ResponseParameters; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.Messages.StreamingOutputCallRequest; +import testing.grpc.Messages.StreamingOutputCallResponse; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpc.TestServiceGrpc.TestServiceStub; class InvalidResponseLengthTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/InvalidResponseMetadataTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/InvalidResponseMetadataTest.java index a45dc7a6561c..9d7c34c9bd09 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/InvalidResponseMetadataTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/InvalidResponseMetadataTest.java @@ -22,9 +22,6 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.logging.LoggingService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; @@ -40,6 +37,9 @@ import io.grpc.Status.Code; import io.grpc.StatusRuntimeException; import io.grpc.stub.StreamObserver; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class InvalidResponseMetadataTest { private static final ExceptionalService testService = new ExceptionalService(); diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/ServerCallListenerCompatibilityTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/ServerCallListenerCompatibilityTest.java index b6b4e3014ce9..efd657fcfc4d 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/ServerCallListenerCompatibilityTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/ServerCallListenerCompatibilityTest.java @@ -41,11 +41,6 @@ import com.linecorp.armeria.common.annotation.Nullable; import com.linecorp.armeria.common.util.Exceptions; import com.linecorp.armeria.common.util.ReleasableHolder; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.Server; import io.grpc.ForwardingServerCallListener; @@ -57,6 +52,11 @@ import io.grpc.Status.Code; import io.grpc.StatusRuntimeException; import io.grpc.stub.StreamObserver; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.Messages.StreamingOutputCallRequest; +import testing.grpc.Messages.StreamingOutputCallResponse; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; class ServerCallListenerCompatibilityTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/StreamingServerCallTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/StreamingServerCallTest.java index ee050292fe5c..49c34ad2312e 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/StreamingServerCallTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/StreamingServerCallTest.java @@ -57,11 +57,6 @@ import com.linecorp.armeria.common.grpc.GrpcSerializationFormats; import com.linecorp.armeria.common.grpc.protocol.DeframedMessage; import com.linecorp.armeria.common.util.EventLoopGroups; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallRequest; -import com.linecorp.armeria.grpc.testing.Messages.StreamingOutputCallResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; import com.linecorp.armeria.internal.common.grpc.DefaultJsonMarshaller; import com.linecorp.armeria.internal.common.grpc.GrpcTestUtil; import com.linecorp.armeria.server.ServiceRequestContext; @@ -77,6 +72,11 @@ import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufInputStream; import io.netty.util.AsciiString; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.Messages.StreamingOutputCallRequest; +import testing.grpc.Messages.StreamingOutputCallResponse; +import testing.grpc.TestServiceGrpc; // TODO(anuraag): Currently only grpc-protobuf has been published so we only test proto here. // Once grpc-thrift is published, add tests for thrift stubs which will not go through the diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnaryMessageDeframerTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnaryMessageDeframerTest.java index 3960cc5b5769..36a2af53e61a 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnaryMessageDeframerTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnaryMessageDeframerTest.java @@ -28,12 +28,12 @@ import com.linecorp.armeria.common.HttpData; import com.linecorp.armeria.common.grpc.protocol.ArmeriaStatusException; import com.linecorp.armeria.common.grpc.protocol.DeframedMessage; -import com.linecorp.armeria.grpc.testing.Messages.Payload; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufAllocator; import io.netty.buffer.ByteBufUtil; +import testing.grpc.Messages.Payload; +import testing.grpc.Messages.SimpleRequest; class UnaryMessageDeframerTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnaryServerCallTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnaryServerCallTest.java index 1becb504df67..d9cb625e20d8 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnaryServerCallTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnaryServerCallTest.java @@ -55,9 +55,6 @@ import com.linecorp.armeria.common.grpc.GrpcSerializationFormats; import com.linecorp.armeria.common.grpc.protocol.DeframedMessage; import com.linecorp.armeria.common.util.EventLoopGroups; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; import com.linecorp.armeria.internal.common.grpc.DefaultJsonMarshaller; import com.linecorp.armeria.internal.common.grpc.GrpcTestUtil; import com.linecorp.armeria.server.ServiceRequestContext; @@ -73,6 +70,9 @@ import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufInputStream; import io.netty.util.AsciiString; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc; class UnaryServerCallTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcErrorHandlerTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcErrorHandlerTest.java index ea80edeec11a..33c8bda10c00 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcErrorHandlerTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcErrorHandlerTest.java @@ -32,16 +32,16 @@ import com.linecorp.armeria.common.AggregatedHttpResponse; import com.linecorp.armeria.common.HttpStatus; import com.linecorp.armeria.common.MediaType; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; import com.linecorp.armeria.internal.common.JacksonUtil; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.grpc.Status; import io.grpc.protobuf.StatusProto; import io.grpc.stub.StreamObserver; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; public class UnframedGrpcErrorHandlerTest { @RegisterExtension diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcServerCancellationTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcServerCancellationTest.java index bb2912d84835..b44809d39cde 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcServerCancellationTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcServerCancellationTest.java @@ -26,14 +26,14 @@ import com.linecorp.armeria.common.HttpStatus; import com.linecorp.armeria.common.MediaType; import com.linecorp.armeria.common.grpc.protocol.GrpcHeaderNames; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.grpc.Status.Code; import io.grpc.stub.StreamObserver; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; class UnframedGrpcServerCancellationTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcServiceResponseMediaTypeTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcServiceResponseMediaTypeTest.java index d7fea89ace53..61ec56e37f8b 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcServiceResponseMediaTypeTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcServiceResponseMediaTypeTest.java @@ -33,13 +33,13 @@ import com.linecorp.armeria.common.HttpRequest; import com.linecorp.armeria.common.HttpStatus; import com.linecorp.armeria.common.MediaType; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.protobuf.EmptyProtos; import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.testing.junit5.common.EventLoopExtension; import io.grpc.BindableService; import io.grpc.stub.StreamObserver; +import testing.grpc.EmptyProtos; +import testing.grpc.TestServiceGrpc; public class UnframedGrpcServiceResponseMediaTypeTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcServiceTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcServiceTest.java index 906e6a8304a4..250e5f6890ba 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcServiceTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/UnframedGrpcServiceTest.java @@ -37,8 +37,6 @@ import com.linecorp.armeria.common.MediaType; import com.linecorp.armeria.common.ResponseHeaders; import com.linecorp.armeria.common.grpc.protocol.GrpcHeaderNames; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceImplBase; -import com.linecorp.armeria.protobuf.EmptyProtos.Empty; import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.testing.junit5.common.EventLoopExtension; @@ -48,6 +46,8 @@ import io.grpc.stub.StreamObserver; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; +import testing.grpc.EmptyProtos.Empty; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; class UnframedGrpcServiceTest { diff --git a/grpc/src/test/java/com/linecorp/armeria/server/grpc/protocol/AbstractUnaryGrpcServiceTest.java b/grpc/src/test/java/com/linecorp/armeria/server/grpc/protocol/AbstractUnaryGrpcServiceTest.java index 0e07caee8374..ca7cebe9625b 100644 --- a/grpc/src/test/java/com/linecorp/armeria/server/grpc/protocol/AbstractUnaryGrpcServiceTest.java +++ b/grpc/src/test/java/com/linecorp/armeria/server/grpc/protocol/AbstractUnaryGrpcServiceTest.java @@ -45,13 +45,6 @@ import com.linecorp.armeria.common.grpc.protocol.GrpcHeaderNames; import com.linecorp.armeria.common.grpc.protocol.GrpcWebTrailers; import com.linecorp.armeria.common.util.UnmodifiableFuture; -import com.linecorp.armeria.grpc.testing.Messages; -import com.linecorp.armeria.grpc.testing.Messages.EchoStatus; -import com.linecorp.armeria.grpc.testing.Messages.Payload; -import com.linecorp.armeria.grpc.testing.Messages.SimpleRequest; -import com.linecorp.armeria.grpc.testing.Messages.SimpleResponse; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc; -import com.linecorp.armeria.grpc.testing.TestServiceGrpc.TestServiceBlockingStub; import com.linecorp.armeria.internal.common.grpc.protocol.StatusCodes; import com.linecorp.armeria.internal.common.grpc.protocol.UnaryGrpcSerializationFormats; import com.linecorp.armeria.server.ServerBuilder; @@ -63,6 +56,13 @@ import io.grpc.ManagedChannelBuilder; import io.grpc.Status; import io.grpc.StatusRuntimeException; +import testing.grpc.Messages; +import testing.grpc.Messages.EchoStatus; +import testing.grpc.Messages.Payload; +import testing.grpc.Messages.SimpleRequest; +import testing.grpc.Messages.SimpleResponse; +import testing.grpc.TestServiceGrpc; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; class AbstractUnaryGrpcServiceTest { private static final String METHOD_NAME = "/armeria.grpc.testing.TestService/UnaryCall"; diff --git a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/docservice_prefix.proto b/grpc/src/test/proto/testing/grpc/docservice_prefix.proto similarity index 89% rename from grpc/src/test/proto/com/linecorp/armeria/grpc/testing/docservice_prefix.proto rename to grpc/src/test/proto/testing/grpc/docservice_prefix.proto index 21a73cfaa9a9..d3747a095398 100644 --- a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/docservice_prefix.proto +++ b/grpc/src/test/proto/testing/grpc/docservice_prefix.proto @@ -16,9 +16,9 @@ syntax = "proto3"; package armeria.grpc.testing; -option java_package = "com.linecorp.armeria.grpc.testing"; +option java_package = "testing.grpc"; -import "com/linecorp/armeria/grpc/testing/transcoding.proto"; +import "testing/grpc/transcoding.proto"; import "google/api/annotations.proto"; service GrpcDocServicePrefixTestService { diff --git a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/empty.proto b/grpc/src/test/proto/testing/grpc/empty.proto similarity index 97% rename from grpc/src/test/proto/com/linecorp/armeria/grpc/testing/empty.proto rename to grpc/src/test/proto/testing/grpc/empty.proto index 2c7f6c25e7da..2ad4c34ece44 100644 --- a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/empty.proto +++ b/grpc/src/test/proto/testing/grpc/empty.proto @@ -45,7 +45,7 @@ syntax = "proto2"; package armeria.grpc.testing; -option java_package = "com.linecorp.armeria.protobuf"; +option java_package = "testing.grpc"; option java_outer_classname = "EmptyProtos"; // An empty message that you can re-use to avoid defining duplicated empty diff --git a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/flow.proto b/grpc/src/test/proto/testing/grpc/flow.proto similarity index 92% rename from grpc/src/test/proto/com/linecorp/armeria/grpc/testing/flow.proto rename to grpc/src/test/proto/testing/grpc/flow.proto index ebf43f7149fb..65d8032bfc36 100644 --- a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/flow.proto +++ b/grpc/src/test/proto/testing/grpc/flow.proto @@ -19,9 +19,9 @@ syntax = "proto3"; package armeria.grpc.testing; -option java_package = "com.linecorp.armeria.grpc.testing"; +option java_package = "testing.grpc"; -import "com/linecorp/armeria/grpc/testing/messages.proto"; +import "testing/grpc/messages.proto"; service FlowControlTestService { // Neither server nor control exert backpressure. diff --git a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/messages.proto b/grpc/src/test/proto/testing/grpc/messages.proto similarity index 99% rename from grpc/src/test/proto/com/linecorp/armeria/grpc/testing/messages.proto rename to grpc/src/test/proto/testing/grpc/messages.proto index bc167138f690..740548d9634a 100644 --- a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/messages.proto +++ b/grpc/src/test/proto/testing/grpc/messages.proto @@ -47,7 +47,7 @@ syntax = "proto3"; package armeria.grpc.testing; -option java_package = "com.linecorp.armeria.grpc.testing"; +option java_package = "testing.grpc"; // The type of payload that should be returned. enum PayloadType { diff --git a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/metrics.proto b/grpc/src/test/proto/testing/grpc/metrics.proto similarity index 98% rename from grpc/src/test/proto/com/linecorp/armeria/grpc/testing/metrics.proto rename to grpc/src/test/proto/testing/grpc/metrics.proto index bad22fcc5e7c..823c93cfd91b 100644 --- a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/metrics.proto +++ b/grpc/src/test/proto/testing/grpc/metrics.proto @@ -51,7 +51,7 @@ syntax = "proto3"; package armeria.grpc.testing; -option java_package = "com.linecorp.armeria.grpc.testing"; +option java_package = "testing.grpc"; // Response message containing the gauge name and value message GaugeResponse { diff --git a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/options.proto b/grpc/src/test/proto/testing/grpc/options.proto similarity index 100% rename from grpc/src/test/proto/com/linecorp/armeria/grpc/testing/options.proto rename to grpc/src/test/proto/testing/grpc/options.proto diff --git a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/proto2.proto b/grpc/src/test/proto/testing/grpc/proto2.proto similarity index 82% rename from grpc/src/test/proto/com/linecorp/armeria/grpc/testing/proto2.proto rename to grpc/src/test/proto/testing/grpc/proto2.proto index 1892e8e7a8bc..e6f882437b32 100644 --- a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/proto2.proto +++ b/grpc/src/test/proto/testing/grpc/proto2.proto @@ -1,7 +1,7 @@ syntax = "proto2"; package example.grpc.protoversion; -option java_package = "example.armeria.grpc"; +option java_package = "testing.grpc"; service Proto2Service { rpc echo (Proto2Message) returns (Proto2Message) {} diff --git a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/proto3.proto b/grpc/src/test/proto/testing/grpc/proto3.proto similarity index 82% rename from grpc/src/test/proto/com/linecorp/armeria/grpc/testing/proto3.proto rename to grpc/src/test/proto/testing/grpc/proto3.proto index fbe3050dbcb0..b9b91a273452 100644 --- a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/proto3.proto +++ b/grpc/src/test/proto/testing/grpc/proto3.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package example.grpc.protoversion; -option java_package = "example.armeria.grpc"; +option java_package = "testing.grpc"; service Proto3Service { rpc echo (Proto3Message) returns (Proto3Message) {} diff --git a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/proto3_importing_proto2.proto b/grpc/src/test/proto/testing/grpc/proto3_importing_proto2.proto similarity index 57% rename from grpc/src/test/proto/com/linecorp/armeria/grpc/testing/proto3_importing_proto2.proto rename to grpc/src/test/proto/testing/grpc/proto3_importing_proto2.proto index 5305aeabcf69..ef5d03270ee9 100644 --- a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/proto3_importing_proto2.proto +++ b/grpc/src/test/proto/testing/grpc/proto3_importing_proto2.proto @@ -1,9 +1,9 @@ syntax = "proto3"; -import public "com/linecorp/armeria/grpc/testing/proto2.proto"; +import public "testing/grpc/proto2.proto"; package example.grpc.protoversion; -option java_package = "example.armeria.grpc"; +option java_package = "testing.grpc"; service Proto3WithProto2Service { rpc echo (Proto2Message) returns (Proto2Message) {} diff --git a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/test.proto b/grpc/src/test/proto/testing/grpc/test.proto similarity index 98% rename from grpc/src/test/proto/com/linecorp/armeria/grpc/testing/test.proto rename to grpc/src/test/proto/testing/grpc/test.proto index 04b9ea0efee4..b4beae7e099b 100644 --- a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/test.proto +++ b/grpc/src/test/proto/testing/grpc/test.proto @@ -45,13 +45,13 @@ // of unary/streaming requests/responses. syntax = "proto3"; -import "com/linecorp/armeria/grpc/testing/empty.proto"; -import "com/linecorp/armeria/grpc/testing/messages.proto"; +import "testing/grpc/empty.proto"; +import "testing/grpc/messages.proto"; import "google/api/annotations.proto"; package armeria.grpc.testing; -option java_package = "com.linecorp.armeria.grpc.testing"; +option java_package = "testing.grpc"; // A simple service to test the various types of RPCs and experiment with // performance with various types of payload. diff --git a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/transcoding.proto b/grpc/src/test/proto/testing/grpc/transcoding.proto similarity index 99% rename from grpc/src/test/proto/com/linecorp/armeria/grpc/testing/transcoding.proto rename to grpc/src/test/proto/testing/grpc/transcoding.proto index 11c3c30d59e1..82e72b363267 100644 --- a/grpc/src/test/proto/com/linecorp/armeria/grpc/testing/transcoding.proto +++ b/grpc/src/test/proto/testing/grpc/transcoding.proto @@ -18,7 +18,7 @@ syntax = "proto3"; package armeria.grpc.testing; -option java_package = "com.linecorp.armeria.grpc.testing"; +option java_package = "testing.grpc"; import "google/api/annotations.proto"; import "google/protobuf/timestamp.proto"; diff --git a/grpc/src/test/resources/io/grpc/testing/integration/testdata/uncompressable.bin b/grpc/src/test/resources/testing/grpc/uncompressable.bin similarity index 100% rename from grpc/src/test/resources/io/grpc/testing/integration/testdata/uncompressable.bin rename to grpc/src/test/resources/testing/grpc/uncompressable.bin diff --git a/it/dgs/src/test/java/com/linecorp/armeria/graphql/GraphQLTest.java b/it/dgs/src/test/java/com/linecorp/armeria/graphql/GraphQLTest.java index 6a77bfcca1da..b3e046677c5b 100644 --- a/it/dgs/src/test/java/com/linecorp/armeria/graphql/GraphQLTest.java +++ b/it/dgs/src/test/java/com/linecorp/armeria/graphql/GraphQLTest.java @@ -49,7 +49,8 @@ class GraphQLTest { static ServerExtension server = new ServerExtension() { @Override protected void configure(ServerBuilder sb) throws Exception { - final File graphqlSchemaFile = new File(ClassLoader.getSystemResource("test.graphqls").toURI()); + final File graphqlSchemaFile = new File( + ClassLoader.getSystemResource("testing/dgs/test.graphqls").toURI()); final GraphqlService service = GraphqlService.builder() .schemaFile(graphqlSchemaFile) diff --git a/it/dgs/src/test/resources/test.graphqls b/it/dgs/src/test/resources/testing/dgs/test.graphqls similarity index 100% rename from it/dgs/src/test/resources/test.graphqls rename to it/dgs/src/test/resources/testing/dgs/test.graphqls diff --git a/it/flags-provider/src/test/java/com/linecorp/armeria/common/FlagsProviderTest.java b/it/flags-provider/src/test/java/com/linecorp/armeria/common/FlagsProviderTest.java index c1b363c0877e..cf9556f08548 100644 --- a/it/flags-provider/src/test/java/com/linecorp/armeria/common/FlagsProviderTest.java +++ b/it/flags-provider/src/test/java/com/linecorp/armeria/common/FlagsProviderTest.java @@ -41,8 +41,10 @@ import io.micrometer.core.instrument.Metrics; -@SetSystemProperty(key = "com.linecorp.armeria.requestContextStorageProvider", - value = "com.linecorp.armeria.common.Custom2RequestContextStorageProvider") +@SetSystemProperty( + key = "com.linecorp.armeria.requestContextStorageProvider", + value = "com.linecorp.armeria.common.Custom2RequestContextStorageProvider" +) class FlagsProviderTest { private Class flags; diff --git a/it/graphql-multipart/src/test/java/com/linecorp/armeria/graphql/GraphqlTest.java b/it/graphql-multipart/src/test/java/com/linecorp/armeria/graphql/GraphqlTest.java index 9a27658b4fa5..6242913f2074 100644 --- a/it/graphql-multipart/src/test/java/com/linecorp/armeria/graphql/GraphqlTest.java +++ b/it/graphql-multipart/src/test/java/com/linecorp/armeria/graphql/GraphqlTest.java @@ -55,7 +55,8 @@ class GraphqlTest { static ServerExtension server = new ServerExtension() { @Override protected void configure(ServerBuilder sb) throws Exception { - final File graphqlSchemaFile = new File(ClassLoader.getSystemResource("test.graphqls").toURI()); + final File graphqlSchemaFile = new File(ClassLoader.getSystemResource( + "testing/graphql/multipart/test.graphqls").toURI()); final GraphqlService service = GraphqlService.builder() .schemaFile(graphqlSchemaFile) diff --git a/it/graphql-multipart/src/test/resources/test.graphqls b/it/graphql-multipart/src/test/resources/testing/graphql/multipart/test.graphqls similarity index 100% rename from it/graphql-multipart/src/test/resources/test.graphqls rename to it/graphql-multipart/src/test/resources/testing/graphql/multipart/test.graphqls diff --git a/it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/ClientHttp2GracefulShutdownTimeoutOverridingTest.java b/it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/ClientHttp2GracefulShutdownTimeoutOverridingTest.java index 9a11b5a8f7cc..09cb595eb2c5 100644 --- a/it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/ClientHttp2GracefulShutdownTimeoutOverridingTest.java +++ b/it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/ClientHttp2GracefulShutdownTimeoutOverridingTest.java @@ -27,13 +27,14 @@ import com.linecorp.armeria.client.ClientFactory; import com.linecorp.armeria.client.grpc.GrpcClients; -import com.linecorp.armeria.grpc.java.Hello.HelloReply; -import com.linecorp.armeria.grpc.java.Hello.HelloRequest; -import com.linecorp.armeria.grpc.java.HelloServiceGrpc.HelloServiceFutureStub; import io.grpc.Server; import io.grpc.ServerBuilder; import io.grpc.stub.StreamObserver; +import testing.grpc.Hello; +import testing.grpc.Hello.HelloReply; +import testing.grpc.Hello.HelloRequest; +import testing.grpc.TestServiceGrpc.TestServiceFutureStub; class ClientHttp2GracefulShutdownTimeoutOverridingTest { @@ -41,7 +42,7 @@ class ClientHttp2GracefulShutdownTimeoutOverridingTest { void idleTimeoutIsUsedForHttp2GracefulShutdownTimeout() throws Exception { final CountDownLatch latch = new CountDownLatch(1); final Server server = ServerBuilder.forPort(0) - .addService(new HelloSleepService(latch)) + .addService(new TestSleepService(latch)) .build() .start(); @@ -49,11 +50,11 @@ void idleTimeoutIsUsedForHttp2GracefulShutdownTimeout() throws Exception { // Set greater than 40 seconds for HTTP/2 graceful shutdown. .idleTimeout(Duration.ofSeconds(50)) .build()) { - final HelloServiceFutureStub client = + final TestServiceFutureStub client = GrpcClients.builder("http://127.0.0.1:" + server.getPort()) .responseTimeout(Duration.ofSeconds(120)) .factory(factory) - .build(HelloServiceFutureStub.class); + .build(TestServiceFutureStub.class); final ListenableFuture responseFuture = client.hello( HelloRequest.newBuilder().setName("hello").build()); @@ -65,11 +66,11 @@ void idleTimeoutIsUsedForHttp2GracefulShutdownTimeout() throws Exception { } } - private static class HelloSleepService extends HelloServiceImpl { + private static class TestSleepService extends TestServiceImpl { private final CountDownLatch latch; - HelloSleepService(CountDownLatch latch) { + TestSleepService(CountDownLatch latch) { this.latch = latch; } diff --git a/it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/HelloServiceImpl.java b/it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/TestServiceImpl.java similarity index 96% rename from it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/HelloServiceImpl.java rename to it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/TestServiceImpl.java index 709819544731..a43aeb9b5abf 100644 --- a/it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/HelloServiceImpl.java +++ b/it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/TestServiceImpl.java @@ -20,17 +20,17 @@ import java.util.ArrayList; import java.util.concurrent.TimeUnit; -import com.linecorp.armeria.grpc.java.Hello.HelloReply; -import com.linecorp.armeria.grpc.java.Hello.HelloRequest; -import com.linecorp.armeria.grpc.java.HelloServiceGrpc.HelloServiceImplBase; import com.linecorp.armeria.server.ServiceRequestContext; import io.grpc.Status; import io.grpc.stub.StreamObserver; import reactor.core.publisher.Flux; import reactor.core.scheduler.Schedulers; +import testing.grpc.Hello.HelloReply; +import testing.grpc.Hello.HelloRequest; +import testing.grpc.TestServiceGrpc.TestServiceImplBase; -public class HelloServiceImpl extends HelloServiceImplBase { +public class TestServiceImpl extends TestServiceImplBase { /** * Sends a {@link HelloReply} immediately when receiving a request. diff --git a/it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/HelloServiceTest.java b/it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/TestServiceTest.java similarity index 82% rename from it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/HelloServiceTest.java rename to it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/TestServiceTest.java index 5da80bf9ec01..3112c57104dc 100644 --- a/it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/HelloServiceTest.java +++ b/it/grpc/java/src/test/java/com/linecorp/armeria/grpc/java/TestServiceTest.java @@ -16,7 +16,7 @@ package com.linecorp.armeria.grpc.java; -import static com.linecorp.armeria.grpc.java.HelloServiceImpl.toMessage; +import static com.linecorp.armeria.grpc.java.TestServiceImpl.toMessage; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; @@ -38,25 +38,25 @@ import com.linecorp.armeria.client.grpc.GrpcClients; import com.linecorp.armeria.common.grpc.GrpcSerializationFormats; -import com.linecorp.armeria.grpc.java.Hello.HelloReply; -import com.linecorp.armeria.grpc.java.Hello.HelloRequest; -import com.linecorp.armeria.grpc.java.HelloServiceGrpc.HelloServiceBlockingStub; -import com.linecorp.armeria.grpc.java.HelloServiceGrpc.HelloServiceFutureStub; -import com.linecorp.armeria.grpc.java.HelloServiceGrpc.HelloServiceStub; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.grpc.GrpcService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.grpc.stub.StreamObserver; +import testing.grpc.Hello.HelloReply; +import testing.grpc.Hello.HelloRequest; +import testing.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpc.TestServiceGrpc.TestServiceFutureStub; +import testing.grpc.TestServiceGrpc.TestServiceStub; -class HelloServiceTest { +class TestServiceTest { @RegisterExtension static final ServerExtension server = new ServerExtension() { @Override protected void configure(ServerBuilder sb) throws Exception { sb.service(GrpcService.builder() - .addService(new HelloServiceImpl()) + .addService(new TestServiceImpl()) .enableUnframedRequests(true) .build()); } @@ -64,17 +64,17 @@ protected void configure(ServerBuilder sb) throws Exception { @Test void getReply() { - final HelloServiceBlockingStub helloService = - GrpcClients.newClient(uri(), HelloServiceBlockingStub.class); - assertThat(helloService.hello(HelloRequest.newBuilder().setName("Armeria").build()).getMessage()) + final TestServiceBlockingStub TestService = + GrpcClients.newClient(uri(), TestServiceBlockingStub.class); + assertThat(TestService.hello(HelloRequest.newBuilder().setName("Armeria").build()).getMessage()) .isEqualTo("Hello, Armeria!"); } @Test void getReplyWithDelay() { - final HelloServiceFutureStub helloService = GrpcClients.newClient(uri(), HelloServiceFutureStub.class); + final TestServiceFutureStub TestService = GrpcClients.newClient(uri(), TestServiceFutureStub.class); final ListenableFuture future = - helloService.lazyHello(HelloRequest.newBuilder().setName("Armeria").build()); + TestService.lazyHello(HelloRequest.newBuilder().setName("Armeria").build()); final AtomicBoolean completed = new AtomicBoolean(); Futures.addCallback(future, new FutureCallback() { @Override @@ -95,20 +95,20 @@ public void onFailure(Throwable t) { @Test void getReplyFromServerSideBlockingCall() { - final HelloServiceBlockingStub helloService = - GrpcClients.newClient(uri(), HelloServiceBlockingStub.class); + final TestServiceBlockingStub TestService = + GrpcClients.newClient(uri(), TestServiceBlockingStub.class); final Stopwatch watch = Stopwatch.createStarted(); - assertThat(helloService.blockingHello(HelloRequest.newBuilder().setName("Armeria").build()) + assertThat(TestService.blockingHello(HelloRequest.newBuilder().setName("Armeria").build()) .getMessage()).isEqualTo("Hello, Armeria!"); assertThat(watch.elapsed(TimeUnit.SECONDS)).isGreaterThanOrEqualTo(3); } @Test void getLotsOfReplies() { - final HelloServiceStub helloService = helloService(); + final TestServiceStub TestService = service(); final AtomicBoolean completed = new AtomicBoolean(); final AtomicInteger sequence = new AtomicInteger(); - helloService.lotsOfReplies( + TestService.lotsOfReplies( HelloRequest.newBuilder().setName("Armeria").build(), new StreamObserver() { @@ -138,10 +138,10 @@ public void onCompleted() { @Test void blockForLotsOfReplies() throws Exception { - final HelloServiceStub helloService = helloService(); + final TestServiceStub TestService = service(); final BlockingQueue replies = new LinkedBlockingQueue<>(); final AtomicBoolean completed = new AtomicBoolean(); - helloService.lotsOfReplies( + TestService.lotsOfReplies( HelloRequest.newBuilder().setName("Armeria").build(), new StreamObserver() { @@ -176,11 +176,11 @@ public void onCompleted() { @Test void sendLotsOfGreetings() { - final HelloServiceStub helloService = helloService(); + final TestServiceStub TestService = service(); final String[] names = { "Armeria", "Grpc", "Streaming" }; final AtomicBoolean completed = new AtomicBoolean(); final StreamObserver request = - helloService.lotsOfGreetings(new StreamObserver() { + TestService.lotsOfGreetings(new StreamObserver() { private boolean received; @Override @@ -213,11 +213,11 @@ public void onCompleted() { @Test void bidirectionalHello() { - final HelloServiceStub helloService = helloService(); + final TestServiceStub TestService = service(); final String[] names = { "Armeria", "Grpc", "Streaming" }; final AtomicBoolean completed = new AtomicBoolean(); final StreamObserver request = - helloService.bidiHello(new StreamObserver() { + TestService.bidiHello(new StreamObserver() { private int received; @Override @@ -246,8 +246,8 @@ public void onCompleted() { await().untilTrue(completed); } - private static HelloServiceStub helloService() { - return GrpcClients.newClient(uri(), HelloServiceStub.class); + private static TestServiceStub service() { + return GrpcClients.newClient(uri(), TestServiceStub.class); } private static String uri() { diff --git a/it/grpc/java/src/test/proto/hello.proto b/it/grpc/java/src/test/proto/hello.proto index 40d504f5eaa9..0be2908dcd65 100644 --- a/it/grpc/java/src/test/proto/hello.proto +++ b/it/grpc/java/src/test/proto/hello.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package com.linecorp.armeria.grpc.java; +package testing.grpc; -service HelloService { +service TestService { rpc Hello (HelloRequest) returns (HelloReply) {} rpc LazyHello (HelloRequest) returns (HelloReply) {} rpc BlockingHello (HelloRequest) returns (HelloReply) {} diff --git a/it/grpc/kotlin-coroutine-context-provider/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/CustomCoroutineContextProviderTest.kt b/it/grpc/kotlin-coroutine-context-provider/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/CustomCoroutineContextProviderTest.kt index f46cc5170915..6cb07bffd132 100644 --- a/it/grpc/kotlin-coroutine-context-provider/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/CustomCoroutineContextProviderTest.kt +++ b/it/grpc/kotlin-coroutine-context-provider/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/CustomCoroutineContextProviderTest.kt @@ -17,8 +17,6 @@ package com.linecorp.armeria.grpc.kotlin import com.linecorp.armeria.client.grpc.GrpcClients -import com.linecorp.armeria.grpc.kotlin.context.Hello -import com.linecorp.armeria.grpc.kotlin.context.HelloServiceGrpcKt import com.linecorp.armeria.server.ServerBuilder import com.linecorp.armeria.server.grpc.GrpcService import com.linecorp.armeria.testing.junit5.server.ServerExtension @@ -26,6 +24,8 @@ import kotlinx.coroutines.runBlocking import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.RegisterExtension +import testing.grpc.Hello +import testing.grpc.TestServiceGrpcKt class CustomCoroutineContextProviderTest { @@ -36,7 +36,7 @@ class CustomCoroutineContextProviderTest { override fun configure(sb: ServerBuilder) { sb.service( GrpcService.builder() - .addService(HelloServiceImpl()) + .addService(TestServiceImpl()) .build() ) } @@ -47,7 +47,7 @@ class CustomCoroutineContextProviderTest { fun shouldExecuteServiceInCustomDispatcher() { runBlocking { val client = - GrpcClients.newClient(server.httpUri(), HelloServiceGrpcKt.HelloServiceCoroutineStub::class.java) + GrpcClients.newClient(server.httpUri(), TestServiceGrpcKt.TestServiceCoroutineStub::class.java) GrpcClients.builder(server.httpUri()) .intercept() val response = client.hello(Hello.HelloRequest.newBuilder().setName("Armeria").build()) diff --git a/it/grpc/kotlin-coroutine-context-provider/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/HelloServiceImpl.kt b/it/grpc/kotlin-coroutine-context-provider/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/TestServiceImpl.kt similarity index 84% rename from it/grpc/kotlin-coroutine-context-provider/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/HelloServiceImpl.kt rename to it/grpc/kotlin-coroutine-context-provider/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/TestServiceImpl.kt index 381d3ec98734..1af09e0d282b 100644 --- a/it/grpc/kotlin-coroutine-context-provider/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/HelloServiceImpl.kt +++ b/it/grpc/kotlin-coroutine-context-provider/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/TestServiceImpl.kt @@ -16,11 +16,11 @@ package com.linecorp.armeria.grpc.kotlin -import com.linecorp.armeria.grpc.kotlin.context.Hello -import com.linecorp.armeria.grpc.kotlin.context.HelloServiceGrpcKt import org.assertj.core.api.Assertions.assertThat +import testing.grpc.Hello +import testing.grpc.TestServiceGrpcKt -class HelloServiceImpl : HelloServiceGrpcKt.HelloServiceCoroutineImplBase() { +class TestServiceImpl : TestServiceGrpcKt.TestServiceCoroutineImplBase() { override suspend fun hello(request: Hello.HelloRequest): Hello.HelloReply { val threadName = Thread.currentThread().name diff --git a/it/grpc/kotlin-coroutine-context-provider/src/test/proto/hello.proto b/it/grpc/kotlin-coroutine-context-provider/src/test/proto/hello.proto index 58d3b5964a6b..eb1d19aa706f 100644 --- a/it/grpc/kotlin-coroutine-context-provider/src/test/proto/hello.proto +++ b/it/grpc/kotlin-coroutine-context-provider/src/test/proto/hello.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package com.linecorp.armeria.grpc.kotlin.context; +package testing.grpc; -service HelloService { +service TestService { rpc Hello (HelloRequest) returns (HelloReply) {} } diff --git a/it/grpc/kotlin/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/HelloServiceImpl.kt b/it/grpc/kotlin/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/TestServiceImpl.kt similarity index 93% rename from it/grpc/kotlin/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/HelloServiceImpl.kt rename to it/grpc/kotlin/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/TestServiceImpl.kt index 6c12950eed3d..77a7d5fb83a2 100644 --- a/it/grpc/kotlin/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/HelloServiceImpl.kt +++ b/it/grpc/kotlin/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/TestServiceImpl.kt @@ -17,8 +17,6 @@ package com.linecorp.armeria.grpc.kotlin import com.linecorp.armeria.common.CommonPools -import com.linecorp.armeria.grpc.kotlin.Hello.HelloReply -import com.linecorp.armeria.grpc.kotlin.Hello.HelloRequest import com.linecorp.armeria.server.ServiceRequestContext import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope @@ -28,8 +26,12 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.withContext +import testing.grpc.Hello.HelloReply +import testing.grpc.Hello.HelloRequest +import testing.grpc.TestServiceGrpcKt +import java.io.Serial -class HelloServiceImpl : HelloServiceGrpcKt.HelloServiceCoroutineImplBase() { +class TestServiceImpl : TestServiceGrpcKt.TestServiceCoroutineImplBase() { /** * Sends a [HelloReply] with a small amount of blocking time using `ArmeriaBlockingContext`. @@ -55,7 +57,6 @@ class HelloServiceImpl : HelloServiceGrpcKt.HelloServiceCoroutineImplBase() { /** * Sends 5 [HelloReply] responses using [armeriaBlockingDispatcher] when receiving a request. - * @see lazyHello(HelloRequest, StreamObserver) */ override fun blockingLotsOfReplies(request: HelloRequest): Flow { // You can also write this code without Reactor like 'lazyHello' example. @@ -74,8 +75,6 @@ class HelloServiceImpl : HelloServiceGrpcKt.HelloServiceCoroutineImplBase() { /** * Sends 5 [HelloReply] responses with a small amount of blocking time when receiving a request * using [armeriaBlockingDispatcher]. - * - * @see lazyHello(HelloRequest, StreamObserver) */ override fun shortBlockingLotsOfReplies(request: HelloRequest): Flow { // You can also write this code without Reactor like 'lazyHello' example. @@ -117,4 +116,9 @@ class HelloServiceImpl : HelloServiceGrpcKt.HelloServiceCoroutineImplBase() { } } -class AuthError(override val message: String) : RuntimeException() +class AuthError(override val message: String) : RuntimeException() { + companion object { + @Serial + private const val serialVersionUID: Long = 2540197703864104385L + } +} diff --git a/it/grpc/kotlin/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/HelloServiceTest.kt b/it/grpc/kotlin/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/TestServiceTest.kt similarity index 88% rename from it/grpc/kotlin/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/HelloServiceTest.kt rename to it/grpc/kotlin/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/TestServiceTest.kt index 56c84af1c42f..a551606ed201 100644 --- a/it/grpc/kotlin/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/HelloServiceTest.kt +++ b/it/grpc/kotlin/src/test/kotlin/com/linecorp/armeria/grpc/kotlin/TestServiceTest.kt @@ -18,8 +18,6 @@ package com.linecorp.armeria.grpc.kotlin import com.linecorp.armeria.client.Clients import com.linecorp.armeria.client.grpc.GrpcClients -import com.linecorp.armeria.grpc.kotlin.Hello.HelloRequest -import com.linecorp.armeria.grpc.kotlin.HelloServiceGrpcKt.HelloServiceCoroutineStub import com.linecorp.armeria.server.Server import com.linecorp.armeria.server.grpc.GrpcService import io.grpc.CallOptions @@ -33,7 +31,6 @@ import io.grpc.MethodDescriptor import io.grpc.Status import io.grpc.Status.Code import io.grpc.StatusException -import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import org.assertj.core.api.Assertions.assertThat @@ -44,15 +41,17 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.Arguments import org.junit.jupiter.params.provider.MethodSource +import testing.grpc.Hello.HelloRequest +import testing.grpc.TestServiceGrpcKt.TestServiceCoroutineStub import java.util.concurrent.atomic.AtomicInteger -class HelloServiceTest { +class TestServiceTest { @ParameterizedTest @MethodSource("uris") fun parallelReplyFromServerSideBlockingCall(uri: String) { runBlocking { - val helloService = GrpcClients.newClient(uri, HelloServiceCoroutineStub::class.java) + val helloService = GrpcClients.newClient(uri, TestServiceCoroutineStub::class.java) repeat(30) { launch { val message = helloService.shortBlockingHello( @@ -70,7 +69,7 @@ class HelloServiceTest { repeat(30) { launch { var sequence = 0 - helloService.blockingLotsOfReplies(HelloRequest.newBuilder().setName("Armeria").build()) + service.blockingLotsOfReplies(HelloRequest.newBuilder().setName("Armeria").build()) .collect { assertThat(it.message).isEqualTo("Hello, Armeria! (sequence: ${++sequence})") } @@ -86,7 +85,7 @@ class HelloServiceTest { repeat(30) { launch { var sequence = 0 - helloService.shortBlockingLotsOfReplies( + service.shortBlockingLotsOfReplies( HelloRequest.newBuilder().setName("Armeria").build() ) .collect { @@ -102,7 +101,7 @@ class HelloServiceTest { fun serverShouldSendAdditionalResponseHeaders() { runBlocking { Clients.newContextCaptor().use { captor -> - val response = helloService.shortBlockingHello(HelloRequest.newBuilder().setName("Armeria").build()) + val response = service.shortBlockingHello(HelloRequest.newBuilder().setName("Armeria").build()) assertThat(response.message).isEqualTo("Hello, Armeria!") val ctx = captor.get() val log = ctx.log().whenComplete().join() @@ -114,7 +113,7 @@ class HelloServiceTest { @ParameterizedTest @MethodSource("uris") fun exceptionMapping(uri: String) { - val helloService = GrpcClients.newClient(uri, HelloServiceCoroutineStub::class.java) + val helloService = GrpcClients.newClient(uri, TestServiceCoroutineStub::class.java) assertThatThrownBy { runBlocking { helloService.helloError(HelloRequest.newBuilder().setName("Armeria").build()) } }.isInstanceOfSatisfying(StatusException::class.java) { @@ -127,7 +126,7 @@ class HelloServiceTest { @MethodSource("uris") fun shouldReportCloseExactlyOnceWithNonOK(uri: String) { val closeCalled = AtomicInteger() - val helloService = GrpcClients.newClient(uri, HelloServiceCoroutineStub::class.java) + val helloService = GrpcClients.newClient(uri, TestServiceCoroutineStub::class.java) .withInterceptors(object : ClientInterceptor { override fun interceptCall( method: MethodDescriptor, @@ -165,7 +164,7 @@ class HelloServiceTest { private lateinit var server: Server private lateinit var blockingServer: Server - private lateinit var helloService: HelloServiceCoroutineStub + private lateinit var service: TestServiceCoroutineStub @BeforeAll @JvmStatic @@ -175,7 +174,7 @@ class HelloServiceTest { blockingServer = newServer(0, true) blockingServer.start().join() - helloService = GrpcClients.newClient(protoUri(), HelloServiceCoroutineStub::class.java) + service = GrpcClients.newClient(protoUri(), TestServiceCoroutineStub::class.java) } @AfterAll @@ -194,7 +193,7 @@ class HelloServiceTest { .http(httpPort) .service( GrpcService.builder() - .addService(HelloServiceImpl()) + .addService(TestServiceImpl()) .exceptionMapping { _, throwable, _ -> when (throwable) { is AuthError -> { diff --git a/it/grpc/kotlin/src/test/proto/hello.proto b/it/grpc/kotlin/src/test/proto/hello.proto index fb79ac2ccc70..8e56fef88701 100644 --- a/it/grpc/kotlin/src/test/proto/hello.proto +++ b/it/grpc/kotlin/src/test/proto/hello.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package com.linecorp.armeria.grpc.kotlin; +package testing.grpc; -service HelloService { +service TestService { rpc ShortBlockingHello (HelloRequest) returns (HelloReply) {} rpc BlockingLotsOfReplies (HelloRequest) returns (stream HelloReply) {} rpc ShortBlockingLotsOfReplies (HelloRequest) returns (stream HelloReply) {} diff --git a/it/grpc/reactor/src/test/java/com/linecorp/armeria/grpc/reactor/HelloServiceImpl.java b/it/grpc/reactor/src/test/java/com/linecorp/armeria/grpc/reactor/TestServiceImpl.java similarity index 74% rename from it/grpc/reactor/src/test/java/com/linecorp/armeria/grpc/reactor/HelloServiceImpl.java rename to it/grpc/reactor/src/test/java/com/linecorp/armeria/grpc/reactor/TestServiceImpl.java index 56810244c847..7ba36dc4247a 100644 --- a/it/grpc/reactor/src/test/java/com/linecorp/armeria/grpc/reactor/HelloServiceImpl.java +++ b/it/grpc/reactor/src/test/java/com/linecorp/armeria/grpc/reactor/TestServiceImpl.java @@ -19,15 +19,15 @@ import java.time.Duration; import com.linecorp.armeria.common.grpc.GrpcStatusFunction; -import com.linecorp.armeria.grpc.reactor.Hello.HelloReply; -import com.linecorp.armeria.grpc.reactor.Hello.HelloRequest; -import com.linecorp.armeria.grpc.reactor.ReactorHelloServiceGrpc.HelloServiceImplBase; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.scheduler.Scheduler; +import testing.grpc.Hello.HelloReply; +import testing.grpc.Hello.HelloRequest; +import testing.grpc.ReactorTestServiceGrpc.TestServiceImplBase; -public class HelloServiceImpl extends HelloServiceImplBase { +public class TestServiceImpl extends TestServiceImplBase { /** * Sends 5 {@link HelloReply} responses published without a specific {@link Scheduler} @@ -41,16 +41,16 @@ public Flux lotsOfRepliesWithoutScheduler(Mono request .take(5) .map(index -> "Hello, " + it.getName() + "! (sequence: " + (index + 1) + ')') ) - .map(HelloServiceImpl::buildReply); + .map(TestServiceImpl::buildReply); } /** - * Throws an {@link AuthError}, and the exception will be handled by {@link GrpcStatusFunction}. + * Throws an {@link AuthException}, and the exception will be handled by {@link GrpcStatusFunction}. */ @Override public Mono helloError(Mono request) { return request.map(req -> { - throw new AuthError(req.getName() + " is unauthenticated"); + throw new AuthException(req.getName() + " is unauthenticated"); }); } @@ -58,9 +58,10 @@ private static HelloReply buildReply(Object message) { return HelloReply.newBuilder().setMessage(String.valueOf(message)).build(); } - public static class AuthError extends RuntimeException { + public static class AuthException extends RuntimeException { + private static final long serialVersionUID = -3942846700041299419L; - public AuthError(String message) { + public AuthException(String message) { super(message); } } diff --git a/it/grpc/reactor/src/test/java/com/linecorp/armeria/grpc/reactor/HelloServiceTest.java b/it/grpc/reactor/src/test/java/com/linecorp/armeria/grpc/reactor/TestServiceTest.java similarity index 73% rename from it/grpc/reactor/src/test/java/com/linecorp/armeria/grpc/reactor/HelloServiceTest.java rename to it/grpc/reactor/src/test/java/com/linecorp/armeria/grpc/reactor/TestServiceTest.java index a70d4f1cc26e..8debb32b3058 100644 --- a/it/grpc/reactor/src/test/java/com/linecorp/armeria/grpc/reactor/HelloServiceTest.java +++ b/it/grpc/reactor/src/test/java/com/linecorp/armeria/grpc/reactor/TestServiceTest.java @@ -26,9 +26,6 @@ import org.junit.jupiter.api.Test; import com.linecorp.armeria.client.grpc.GrpcClients; -import com.linecorp.armeria.grpc.reactor.Hello.HelloReply; -import com.linecorp.armeria.grpc.reactor.Hello.HelloRequest; -import com.linecorp.armeria.grpc.reactor.HelloServiceImpl.AuthError; import com.linecorp.armeria.server.HttpServiceWithRoutes; import com.linecorp.armeria.server.Server; import com.linecorp.armeria.server.grpc.GrpcService; @@ -36,17 +33,20 @@ import io.grpc.Status; import io.grpc.Status.Code; import io.grpc.StatusRuntimeException; +import testing.grpc.Hello.HelloReply; +import testing.grpc.Hello.HelloRequest; +import testing.grpc.ReactorTestServiceGrpc; -class HelloServiceTest { +class TestServiceTest { private static Server server; - private static ReactorHelloServiceGrpc.ReactorHelloServiceStub helloService; + private static ReactorTestServiceGrpc.ReactorTestServiceStub service; @BeforeAll static void beforeClass() throws Exception { server = newServer(0); server.start().join(); - helloService = GrpcClients.newClient(uri(), ReactorHelloServiceGrpc.ReactorHelloServiceStub.class); + service = GrpcClients.newClient(uri(), ReactorTestServiceGrpc.ReactorTestServiceStub.class); } @AfterAll @@ -59,9 +59,9 @@ static void afterClass() { private static Server newServer(int httpPort) { final HttpServiceWithRoutes grpcService = GrpcService.builder() - .addService(new HelloServiceImpl()) + .addService(new TestServiceImpl()) .exceptionMapping((ctx, throwable, metadata) -> { - if (throwable instanceof AuthError) { + if (throwable instanceof TestServiceImpl.AuthException) { return Status.UNAUTHENTICATED.withDescription(throwable.getMessage()) .withCause(throwable); } @@ -78,10 +78,10 @@ private static String uri() { @Test void getLotsOfRepliesWithoutScheduler() { final List messages = - helloService.lotsOfRepliesWithoutScheduler(HelloRequest.newBuilder().setName("Armeria").build()) - .map(HelloReply::getMessage) - .collectList() - .block(); + service.lotsOfRepliesWithoutScheduler(HelloRequest.newBuilder().setName("Armeria").build()) + .map(HelloReply::getMessage) + .collectList() + .block(); assertThat(messages).hasSize(5); @@ -93,11 +93,11 @@ void getLotsOfRepliesWithoutScheduler() { @Test void exceptionMapping() { assertThatThrownBy(() -> { - helloService.helloError(HelloRequest.newBuilder() - .setName("Armeria") - .build()) - .map(HelloReply::getMessage) - .block(); + service.helloError(HelloRequest.newBuilder() + .setName("Armeria") + .build()) + .map(HelloReply::getMessage) + .block(); }).isInstanceOfSatisfying(StatusRuntimeException.class, e -> { assertThat(e.getStatus().getCode()).isEqualTo(Code.UNAUTHENTICATED); assertThat(e.getMessage()).isEqualTo("UNAUTHENTICATED: Armeria is unauthenticated"); diff --git a/it/grpc/reactor/src/test/proto/hello.proto b/it/grpc/reactor/src/test/proto/hello.proto index 69b6e50be21e..b2458d7d3ee7 100644 --- a/it/grpc/reactor/src/test/proto/hello.proto +++ b/it/grpc/reactor/src/test/proto/hello.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package com.linecorp.armeria.grpc.reactor; +package testing.grpc; -service HelloService { +service TestService { rpc LotsOfRepliesWithoutScheduler (HelloRequest) returns (stream HelloReply) {} rpc HelloError (HelloRequest) returns (HelloReply) {} } diff --git a/it/grpc/scala/src/test/proto/hello.proto b/it/grpc/scala/src/test/proto/hello.proto index 07bb1e810c00..efbe0756b023 100644 --- a/it/grpc/scala/src/test/proto/hello.proto +++ b/it/grpc/scala/src/test/proto/hello.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package com.linecorp.armeria.grpc.scala; +package testing.grpc; -service HelloService { +service TestService { rpc HelloError (HelloRequest) returns (HelloReply) {} } diff --git a/it/grpc/scala/src/test/scala/com/linecorp/armeria/grpc/scala/HelloServiceImpl.scala b/it/grpc/scala/src/test/scala/com/linecorp/armeria/grpc/scala/TestServiceImpl.scala similarity index 85% rename from it/grpc/scala/src/test/scala/com/linecorp/armeria/grpc/scala/HelloServiceImpl.scala rename to it/grpc/scala/src/test/scala/com/linecorp/armeria/grpc/scala/TestServiceImpl.scala index 6934d07d735b..807afd2f0cf9 100644 --- a/it/grpc/scala/src/test/scala/com/linecorp/armeria/grpc/scala/HelloServiceImpl.scala +++ b/it/grpc/scala/src/test/scala/com/linecorp/armeria/grpc/scala/TestServiceImpl.scala @@ -16,11 +16,11 @@ package com.linecorp.armeria.grpc.scala -import com.linecorp.armeria.grpc.scala.hello.{HelloReply, HelloRequest, HelloServiceGrpc} +import testing.grpc.hello.{HelloReply, HelloRequest, TestServiceGrpc} import scala.concurrent.Future -class HelloServiceImpl extends HelloServiceGrpc.HelloService { +class TestServiceImpl extends TestServiceGrpc.TestService { override def helloError(request: HelloRequest): Future[HelloReply] = { throw new AuthError(request.name + " is unauthenticated") diff --git a/it/grpc/scala/src/test/scala/com/linecorp/armeria/grpc/scala/HelloServiceTest.scala b/it/grpc/scala/src/test/scala/com/linecorp/armeria/grpc/scala/TestServiceTest.scala similarity index 88% rename from it/grpc/scala/src/test/scala/com/linecorp/armeria/grpc/scala/HelloServiceTest.scala rename to it/grpc/scala/src/test/scala/com/linecorp/armeria/grpc/scala/TestServiceTest.scala index 13d293366688..9d2e4da9a294 100644 --- a/it/grpc/scala/src/test/scala/com/linecorp/armeria/grpc/scala/HelloServiceTest.scala +++ b/it/grpc/scala/src/test/scala/com/linecorp/armeria/grpc/scala/TestServiceTest.scala @@ -20,30 +20,31 @@ import com.linecorp.armeria.client.grpc.GrpcClients import com.linecorp.armeria.common.SerializationFormat import com.linecorp.armeria.common.grpc.GrpcSerializationFormats import com.linecorp.armeria.common.scalapb.ScalaPbJsonMarshaller -import com.linecorp.armeria.grpc.scala.HelloServiceTest.{GrpcSerializationProvider, newClient} -import com.linecorp.armeria.grpc.scala.hello.HelloServiceGrpc.HelloServiceStub -import com.linecorp.armeria.grpc.scala.hello.{HelloRequest, HelloServiceGrpc} +import com.linecorp.armeria.grpc.scala.TestServiceTest.{GrpcSerializationProvider, newClient} import com.linecorp.armeria.server.Server import com.linecorp.armeria.server.grpc.GrpcService import com.linecorp.armeria.server.logging.LoggingService import io.grpc.Status.Code import io.grpc.{Status, StatusRuntimeException} -import java.util.stream import org.assertj.core.api.Assertions.{assertThat, assertThatThrownBy} import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.extension.ExtensionContext import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.{Arguments, ArgumentsProvider, ArgumentsSource} +import testing.grpc.hello.TestServiceGrpc.TestServiceStub +import testing.grpc.hello.{HelloRequest, TestServiceGrpc} + +import java.util.stream import scala.concurrent.duration.Duration import scala.concurrent.{Await, ExecutionContext} import scala.reflect.ClassTag -class HelloServiceTest { +class TestServiceTest { @ArgumentsSource(classOf[GrpcSerializationProvider]) @ParameterizedTest def exceptionMapping(serializationFormat: SerializationFormat): Unit = { - val helloService = newClient[HelloServiceStub](serializationFormat) + val helloService = newClient[TestServiceStub](serializationFormat) assertThatThrownBy(() => Await.result(helloService.helloError(HelloRequest("Armeria")), Duration.Inf)) .isInstanceOfSatisfying[StatusRuntimeException]( classOf[StatusRuntimeException], @@ -55,7 +56,7 @@ class HelloServiceTest { } } -object HelloServiceTest { +object TestServiceTest { var server: Server = _ @@ -85,7 +86,7 @@ object HelloServiceTest { .service( GrpcService .builder() - .addService(HelloServiceGrpc.bindService(new HelloServiceImpl, ExecutionContext.global)) + .addService(TestServiceGrpc.bindService(new TestServiceImpl, ExecutionContext.global)) .exceptionMapping { case (_, e: AuthError, _) => Status.UNAUTHENTICATED.withDescription(e.getMessage).withCause(e) diff --git a/it/grpcweb/src/test/java/com/linecorp/armeria/server/grpc/GrpcWebServiceTest.java b/it/grpcweb/src/test/java/com/linecorp/armeria/server/grpc/GrpcWebServiceTest.java index 99f55d56dcc4..8abe8ac0bd26 100644 --- a/it/grpcweb/src/test/java/com/linecorp/armeria/server/grpc/GrpcWebServiceTest.java +++ b/it/grpcweb/src/test/java/com/linecorp/armeria/server/grpc/GrpcWebServiceTest.java @@ -29,11 +29,6 @@ import org.junit.jupiter.params.provider.ArgumentsProvider; import org.junit.jupiter.params.provider.ArgumentsSource; -import com.example.helloworld.GreeterServiceGrpc.GreeterServiceBlockingStub; -import com.example.helloworld.GreeterServiceHandlerFactory; -import com.example.helloworld.GreeterServiceImpl; -import com.example.helloworld.HelloReply; -import com.example.helloworld.HelloRequest; import com.google.common.collect.ImmutableList; import com.linecorp.armeria.client.ClientRequestContextCaptor; @@ -55,6 +50,11 @@ import akka.japi.Function; import akka.stream.Materializer; import akka.stream.SystemMaterializer; +import testing.grpcweb.HelloReply; +import testing.grpcweb.HelloRequest; +import testing.grpcweb.TestServiceGrpc.TestServiceBlockingStub; +import testing.grpcweb.TestServiceHandlerFactory; +import testing.grpcweb.TestServiceImpl; class GrpcWebServiceTest { @@ -65,7 +65,7 @@ static void setUp() { final ActorSystem system = ActorSystem.create(Behaviors.empty(), "GreeterServer"); final Materializer materializer = SystemMaterializer.get(system).materializer(); final Function> handler = - GreeterServiceHandlerFactory.create(new GreeterServiceImpl(system), system); + TestServiceHandlerFactory.create(new TestServiceImpl(system), system); final Function> grpcWebServiceHandlers = WebHandler.grpcWebHandler(ImmutableList.of(handler), system, materializer); @@ -86,8 +86,8 @@ static void tearDown() { void grpcProtoWebClient(SerializationFormat serializationFormat) { final String serverUri = serializationFormat.uriText() + "+http://127.0.0.1:" + serverBinding.localAddress().getPort(); - final GreeterServiceBlockingStub blockingStub = - GrpcClients.newClient(serverUri, GreeterServiceBlockingStub.class); + final TestServiceBlockingStub blockingStub = + GrpcClients.newClient(serverUri, TestServiceBlockingStub.class); try (ClientRequestContextCaptor captor = Clients.newContextCaptor()) { final HelloReply armeria = blockingStub.sayHello(HelloRequest.newBuilder().setName("Armeria").build()); diff --git a/it/grpcweb/src/test/java/com/linecorp/armeria/server/grpc/protocol/UnaryGrpcWebServiceTest.java b/it/grpcweb/src/test/java/com/linecorp/armeria/server/grpc/protocol/UnaryGrpcWebServiceTest.java index 738f763d5410..e6a59bcb5cbe 100644 --- a/it/grpcweb/src/test/java/com/linecorp/armeria/server/grpc/protocol/UnaryGrpcWebServiceTest.java +++ b/it/grpcweb/src/test/java/com/linecorp/armeria/server/grpc/protocol/UnaryGrpcWebServiceTest.java @@ -27,10 +27,6 @@ import org.junit.jupiter.params.provider.ArgumentsProvider; import org.junit.jupiter.params.provider.ArgumentsSource; -import com.example.helloworld.GreeterServiceHandlerFactory; -import com.example.helloworld.GreeterServiceImpl; -import com.example.helloworld.HelloReply; -import com.example.helloworld.HelloRequest; import com.google.common.collect.ImmutableList; import com.linecorp.armeria.client.WebClient; @@ -50,6 +46,10 @@ import akka.japi.Function; import akka.stream.Materializer; import akka.stream.SystemMaterializer; +import testing.grpcweb.HelloReply; +import testing.grpcweb.HelloRequest; +import testing.grpcweb.TestServiceHandlerFactory; +import testing.grpcweb.TestServiceImpl; class UnaryGrpcWebServiceTest { @@ -57,10 +57,10 @@ class UnaryGrpcWebServiceTest { @BeforeAll static void setUp() { - final ActorSystem system = ActorSystem.create(Behaviors.empty(), "GreeterServer"); + final ActorSystem system = ActorSystem.create(Behaviors.empty(), "TestServer"); final Materializer materializer = SystemMaterializer.get(system).materializer(); final Function> handler = - GreeterServiceHandlerFactory.create(new GreeterServiceImpl(system), system); + TestServiceHandlerFactory.create(new TestServiceImpl(system), system); final Function> grpcWebServiceHandlers = WebHandler.grpcWebHandler(ImmutableList.of(handler), system, materializer); @@ -77,7 +77,7 @@ void grpcProtoWebClient(SerializationFormat serializationFormat) throws Exceptio final String serverUri = String.format("http://127.0.0.1:%d", serverBinding.localAddress().getPort()); final UnaryGrpcClient client = new UnaryGrpcClient(WebClient.of(serverUri), serializationFormat); final HelloRequest request = HelloRequest.newBuilder().setName("Armeria").build(); - final byte[] responseBytes = client.execute("/GreeterService/SayHello", + final byte[] responseBytes = client.execute("/TestService/SayHello", request.toByteArray()).join(); final HelloReply response = HelloReply.parseFrom(responseBytes); assertThat(response.getMessage()).isEqualTo("Hello, Armeria"); diff --git a/it/grpcweb/src/test/java/com/example/helloworld/GreeterServiceImpl.java b/it/grpcweb/src/test/java/testing/grpcweb/TestServiceImpl.java similarity index 93% rename from it/grpcweb/src/test/java/com/example/helloworld/GreeterServiceImpl.java rename to it/grpcweb/src/test/java/testing/grpcweb/TestServiceImpl.java index 7a62ad077dca..1a3d69027da0 100644 --- a/it/grpcweb/src/test/java/com/example/helloworld/GreeterServiceImpl.java +++ b/it/grpcweb/src/test/java/testing/grpcweb/TestServiceImpl.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations * under the License. */ -package com.example.helloworld; +package testing.grpcweb; import java.util.concurrent.CompletionStage; @@ -30,13 +30,13 @@ // Forked from https://github.com/akka/akka-grpc-quickstart-java.g8/blob/master // /src/main/g8/src/main/java/com/example/helloworld/GreeterServiceImpl.java -public final class GreeterServiceImpl implements GreeterService { +public final class TestServiceImpl implements TestService { private final ActorSystem system; private final Sink inboundHub; private final Source outboundHub; - public GreeterServiceImpl(ActorSystem system) { + public TestServiceImpl(ActorSystem system) { this.system = system; final Pair, Source> hubInAndOut = MergeHub.of(HelloRequest.class) diff --git a/it/grpcweb/src/test/proto/helloworld.proto b/it/grpcweb/src/test/proto/helloworld.proto index 9c416296e424..d06158476e03 100644 --- a/it/grpcweb/src/test/proto/helloworld.proto +++ b/it/grpcweb/src/test/proto/helloworld.proto @@ -3,12 +3,11 @@ syntax = "proto3"; option java_multiple_files = true; -option java_package = "com.example.helloworld"; +option java_package = "testing.grpcweb"; option java_outer_classname = "HelloWorldProto"; -service GreeterService { +service TestService { rpc SayHello (HelloRequest) returns (HelloReply) {} - rpc SayHelloToAll (stream HelloRequest) returns (stream HelloReply) {} } diff --git a/it/multipart/src/test/java/com/linecorp/armeria/common/multipart/MultipartCollectIntegrationTest.java b/it/multipart/src/test/java/com/linecorp/armeria/common/multipart/MultipartCollectIntegrationTest.java index bc6696255fc7..cbdc503a60aa 100644 --- a/it/multipart/src/test/java/com/linecorp/armeria/common/multipart/MultipartCollectIntegrationTest.java +++ b/it/multipart/src/test/java/com/linecorp/armeria/common/multipart/MultipartCollectIntegrationTest.java @@ -151,7 +151,7 @@ void fileUpload() { final HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); - final ClassPathResource file = new ClassPathResource("test.txt"); + final ClassPathResource file = new ClassPathResource("testing/multipart/test.txt"); final MultiValueMap body = new LinkedMultiValueMap<>(); body.add("file1", file); body.add("file2", file); diff --git a/it/multipart/src/test/java/com/linecorp/armeria/common/multipart/RestTemplateMultipartTest.java b/it/multipart/src/test/java/com/linecorp/armeria/common/multipart/RestTemplateMultipartTest.java index 1bc9e8087cf3..79c916667736 100644 --- a/it/multipart/src/test/java/com/linecorp/armeria/common/multipart/RestTemplateMultipartTest.java +++ b/it/multipart/src/test/java/com/linecorp/armeria/common/multipart/RestTemplateMultipartTest.java @@ -81,7 +81,7 @@ void multipartFile() { final HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); - final ClassPathResource file = new ClassPathResource("test.txt"); + final ClassPathResource file = new ClassPathResource("testing/multipart/test.txt"); final MultiValueMap body = new LinkedMultiValueMap<>(); body.add("file", file); diff --git a/it/multipart/src/test/resources/test.txt b/it/multipart/src/test/resources/testing/multipart/test.txt similarity index 100% rename from it/multipart/src/test/resources/test.txt rename to it/multipart/src/test/resources/testing/multipart/test.txt diff --git a/it/resilience4j/src/test/java/resilience4j/thrift/Resilience4jWithThriftTest.java b/it/resilience4j/src/test/java/resilience4j/thrift/Resilience4jWithThriftTest.java index 27893d996ee7..da1e7839ee16 100644 --- a/it/resilience4j/src/test/java/resilience4j/thrift/Resilience4jWithThriftTest.java +++ b/it/resilience4j/src/test/java/resilience4j/thrift/Resilience4jWithThriftTest.java @@ -44,7 +44,11 @@ import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig; import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig.Builder; import io.github.resilience4j.circuitbreaker.CircuitBreakerRegistry; -import resilience4j.thrift.HelloService.Iface; +import testing.resilience4j.HelloReply; +import testing.resilience4j.HelloRequest; +import testing.resilience4j.NoHelloException; +import testing.resilience4j.TestService; +import testing.resilience4j.TestService.Iface; class Resilience4jWithThriftTest { @@ -54,13 +58,13 @@ class Resilience4jWithThriftTest { protected void configure(ServerBuilder sb) throws Exception { final THttpService thriftService = THttpService.builder() - .addService(new HelloServiceImpl()) + .addService(new TestServiceImpl()) .build(); sb.service("/thrift", thriftService); } }; - static class HelloServiceImpl implements HelloService.Iface { + static class TestServiceImpl implements TestService.Iface { @Override public HelloReply hello(HelloRequest request) throws TException { throw new NoHelloException(); @@ -85,13 +89,13 @@ void testBasicClientIntegration() throws Exception { final Function decorator = CircuitBreakerRpcClient.newDecorator( Resilience4JCircuitBreakerClientHandler.of(mapping), rule); - final Iface helloService = ThriftClients.builder(server.httpUri()) + final Iface TestService = ThriftClients.builder(server.httpUri()) .path("/thrift") .rpcDecorator(decorator) .build(Iface.class); for (int i = 0; i < minimumNumberOfCalls; i++) { - assertThatThrownBy(() -> helloService.hello(new HelloRequest("hello"))) + assertThatThrownBy(() -> TestService.hello(new HelloRequest("hello"))) .isInstanceOf(NoHelloException.class); } @@ -100,7 +104,7 @@ void testBasicClientIntegration() throws Exception { final CircuitBreaker cb = registry.getAllCircuitBreakers().stream().findFirst().orElseThrow(); await().untilAsserted(() -> assertThat(cb.getState()).isEqualTo(State.OPEN)); - assertThatThrownBy(() -> helloService.hello(new HelloRequest("hello"))) + assertThatThrownBy(() -> TestService.hello(new HelloRequest("hello"))) .isInstanceOf(UnprocessedRequestException.class) .hasCauseInstanceOf(CallNotPermittedException.class); } diff --git a/it/resilience4j/src/test/thrift/hello.thrift b/it/resilience4j/src/test/thrift/hello.thrift index bebf10030036..705a95ba2507 100644 --- a/it/resilience4j/src/test/thrift/hello.thrift +++ b/it/resilience4j/src/test/thrift/hello.thrift @@ -1,4 +1,4 @@ -namespace java resilience4j.thrift +namespace java testing.resilience4j struct HelloRequest { 1: required string name; @@ -11,6 +11,6 @@ struct HelloReply { exception NoHelloException { } -service HelloService { +service TestService { HelloReply hello(1:HelloRequest request) throws (1:NoHelloException nhe) } diff --git a/it/thrift-fullcamel/src/test/java/server/thrift/CamelNameThriftServiceTest.java b/it/thrift-fullcamel/src/test/java/com/linecorp/armeria/internal/server/thrift/CamelNameThriftServiceTest.java similarity index 96% rename from it/thrift-fullcamel/src/test/java/server/thrift/CamelNameThriftServiceTest.java rename to it/thrift-fullcamel/src/test/java/com/linecorp/armeria/internal/server/thrift/CamelNameThriftServiceTest.java index 67b991e4376c..8e8357420939 100644 --- a/it/thrift-fullcamel/src/test/java/server/thrift/CamelNameThriftServiceTest.java +++ b/it/thrift-fullcamel/src/test/java/com/linecorp/armeria/internal/server/thrift/CamelNameThriftServiceTest.java @@ -14,7 +14,7 @@ * under the License. */ -package server.thrift; +package com.linecorp.armeria.internal.server.thrift; import static org.assertj.core.api.Assertions.assertThat; @@ -25,9 +25,10 @@ import com.linecorp.armeria.client.thrift.ThriftClients; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.SayHelloService.Iface; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.thrift.full.camel.TestService.Iface; + /** * Special test for `fullcamel` option in thrift compiler. */ diff --git a/it/thrift-fullcamel/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServicePluginTest.java b/it/thrift-fullcamel/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServicePluginTest.java index 090f38406538..086adc6e21fc 100644 --- a/it/thrift-fullcamel/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServicePluginTest.java +++ b/it/thrift-fullcamel/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServicePluginTest.java @@ -34,11 +34,12 @@ import com.linecorp.armeria.server.docs.ServiceInfo; import com.linecorp.armeria.server.docs.ServiceSpecification; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.SayHelloService; -import com.linecorp.armeria.service.test.thrift.main.SayHelloService.AsyncIface; + +import testing.thrift.full.camel.TestService; +import testing.thrift.full.camel.TestService.AsyncIface; class ThriftDocServicePluginTest { - private static final String SAY_HELLO_NAME = SayHelloService.class.getName(); + private static final String SERVICE_NAME = TestService.class.getName(); private static final ThriftDocServicePlugin GENERATOR = new ThriftDocServicePlugin(); private static final ThriftDescriptiveTypeInfoProvider DESCRIPTIVE_TYPE_INFO_PROVIDER = new ThriftDescriptiveTypeInfoProvider(); @@ -47,8 +48,8 @@ class ThriftDocServicePluginTest { void servicesTest() { final Map services = services((plugin, service, method) -> true, (plugin, service, method) -> false); - assertThat(services).containsKey(SAY_HELLO_NAME); - final ServiceInfo serviceInfo = services.get(SAY_HELLO_NAME); + assertThat(services).containsKey(SERVICE_NAME); + final ServiceInfo serviceInfo = services.get(SERVICE_NAME); final Map methods = serviceInfo.methods().stream() .collect(toImmutableMap(MethodInfo::name, Function.identity())); diff --git a/it/thrift-fullcamel/src/test/java/server/thrift/ThriftServiceMetadataTest.java b/it/thrift-fullcamel/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftServiceMetadataTest.java similarity index 89% rename from it/thrift-fullcamel/src/test/java/server/thrift/ThriftServiceMetadataTest.java rename to it/thrift-fullcamel/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftServiceMetadataTest.java index 75a2a58f7b21..c41e0849e35c 100644 --- a/it/thrift-fullcamel/src/test/java/server/thrift/ThriftServiceMetadataTest.java +++ b/it/thrift-fullcamel/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftServiceMetadataTest.java @@ -14,14 +14,15 @@ * under the License. */ -package server.thrift; +package com.linecorp.armeria.internal.server.thrift; import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.Test; import com.linecorp.armeria.internal.common.thrift.ThriftServiceMetadata; -import com.linecorp.armeria.service.test.thrift.main.SayHelloService; + +import testing.thrift.full.camel.TestService; /** * Additional test for camel name support. @@ -30,7 +31,7 @@ public class ThriftServiceMetadataTest { @Test void testCamelName() { - final ThriftServiceMetadata metadata = new ThriftServiceMetadata(SayHelloService.Iface.class); + final ThriftServiceMetadata metadata = new ThriftServiceMetadata(TestService.Iface.class); assertThat(metadata.function("say_hello")).isNotNull(); assertThat(metadata.function("sayHello")).isNotNull(); } diff --git a/it/thrift-fullcamel/src/test/thrift/main.thrift b/it/thrift-fullcamel/src/test/thrift/main.thrift index bea5997c9d2c..28142abe47d8 100644 --- a/it/thrift-fullcamel/src/test/thrift/main.thrift +++ b/it/thrift-fullcamel/src/test/thrift/main.thrift @@ -1,7 +1,7 @@ -namespace java com.linecorp.armeria.service.test.thrift.main +namespace java testing.thrift.full.camel -service SayHelloService { +service TestService { // Test a underscored method name string say_hello(1:string name) diff --git a/it/thrift0.9.1/src/test/thrift/RpcDebugTest.thrift b/it/thrift0.9.1/src/test/thrift/RpcDebugTest.thrift index 3a9ff9ba2e6f..1218198cb9b8 100644 --- a/it/thrift0.9.1/src/test/thrift/RpcDebugTest.thrift +++ b/it/thrift0.9.1/src/test/thrift/RpcDebugTest.thrift @@ -1,4 +1,4 @@ -namespace java com.linecorp.armeria.common.thrift.text +namespace java testing.thrift.debug struct RequestDetails { 1: string detailsArg1, diff --git a/it/thrift0.9.1/src/test/thrift/TTextProtocolTest.thrift b/it/thrift0.9.1/src/test/thrift/TTextProtocolTest.thrift index d90e9e125507..4ee188f3b9cd 100644 --- a/it/thrift0.9.1/src/test/thrift/TTextProtocolTest.thrift +++ b/it/thrift0.9.1/src/test/thrift/TTextProtocolTest.thrift @@ -20,7 +20,7 @@ * Authors: * "Alex Roetter" */ -namespace java com.linecorp.armeria.common.thrift.text +namespace java testing.thrift.text enum Letter { ALPHA = 1, diff --git a/it/thrift0.9.1/src/test/thrift/cassandra.thrift b/it/thrift0.9.1/src/test/thrift/cassandra.thrift index 0c0b3b671f4b..1dde15e503f5 100644 --- a/it/thrift0.9.1/src/test/thrift/cassandra.thrift +++ b/it/thrift0.9.1/src/test/thrift/cassandra.thrift @@ -23,7 +23,7 @@ # Interface definition for Cassandra Service # -namespace java com.linecorp.armeria.service.test.thrift.cassandra +namespace java testing.thrift.cassandra # The API version (NOT the product version), composed as a dot delimited # string with major, minor, and patch level components. diff --git a/it/thrift0.9.1/src/test/thrift/hbase.thrift b/it/thrift0.9.1/src/test/thrift/hbase.thrift index ddb41fd8607f..13483f40775c 100644 --- a/it/thrift0.9.1/src/test/thrift/hbase.thrift +++ b/it/thrift0.9.1/src/test/thrift/hbase.thrift @@ -30,7 +30,7 @@ // used to generate the *.java files checked into the Hbase project. // ---------------------------------------------------------------- -namespace java com.linecorp.armeria.service.test.thrift.hbase +namespace java testing.thrift.hbase // // Types diff --git a/it/thrift0.9.1/src/test/thrift/main.thrift b/it/thrift0.9.1/src/test/thrift/main.thrift index 6c984c0ac964..32162322c11e 100644 --- a/it/thrift0.9.1/src/test/thrift/main.thrift +++ b/it/thrift0.9.1/src/test/thrift/main.thrift @@ -1,4 +1,4 @@ -namespace java com.linecorp.armeria.service.test.thrift.main +namespace java testing.thrift.main // Tests a non-oneway method with a return value. service HelloService { diff --git a/logback/src/test/java/com/linecorp/armeria/common/logback/RequestContextExportingAppenderTest.java b/logback/src/test/java/com/linecorp/armeria/common/logback/RequestContextExportingAppenderTest.java index 1c1734af82da..4e86c9989738 100644 --- a/logback/src/test/java/com/linecorp/armeria/common/logback/RequestContextExportingAppenderTest.java +++ b/logback/src/test/java/com/linecorp/armeria/common/logback/RequestContextExportingAppenderTest.java @@ -58,8 +58,6 @@ import com.linecorp.armeria.common.RpcRequest; import com.linecorp.armeria.common.RpcResponse; import com.linecorp.armeria.common.annotation.Nullable; -import com.linecorp.armeria.common.logback.HelloService.hello_args; -import com.linecorp.armeria.common.logback.HelloService.hello_result; import com.linecorp.armeria.common.logging.BuiltInProperty; import com.linecorp.armeria.common.logging.RequestLogBuilder; import com.linecorp.armeria.common.thrift.ThriftCall; @@ -81,6 +79,8 @@ import ch.qos.logback.core.status.StatusManager; import io.netty.util.AttributeKey; import io.netty.util.internal.logging.InternalLoggerFactory; +import testing.logback.TestService.hello_args; +import testing.logback.TestService.hello_result; class RequestContextExportingAppenderTest { @@ -179,7 +179,7 @@ void beforeEach() throws Exception { final JoranConfigurator configurator = new JoranConfigurator(); configurator.setContext(context); context.reset(); - configurator.doConfigure(getClass().getResource("testXmlConfig.xml")); + configurator.doConfigure(getClass().getResource("/testing/logback/testXmlConfig.xml")); } @AfterEach diff --git a/logback/src/test/resources/com/linecorp/armeria/common/logback/testXmlConfig.xml b/logback/src/test/resources/testing/logback/testXmlConfig.xml similarity index 100% rename from logback/src/test/resources/com/linecorp/armeria/common/logback/testXmlConfig.xml rename to logback/src/test/resources/testing/logback/testXmlConfig.xml diff --git a/logback/src/test/thrift/HelloService.thrift b/logback/src/test/thrift/HelloService.thrift index 2b2d1fc60aca..edc0541b18b0 100644 --- a/logback/src/test/thrift/HelloService.thrift +++ b/logback/src/test/thrift/HelloService.thrift @@ -1,5 +1,5 @@ -namespace java com.linecorp.armeria.common.logback +namespace java testing.logback -service HelloService { +service TestService { string hello(1:string name) } diff --git a/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufDescriptiveTypeInfoProviderTest.java b/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufDescriptiveTypeInfoProviderTest.java index eb643edb9d58..070f8e9b6d1b 100644 --- a/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufDescriptiveTypeInfoProviderTest.java +++ b/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufDescriptiveTypeInfoProviderTest.java @@ -48,12 +48,6 @@ import com.linecorp.armeria.client.BlockingWebClient; import com.linecorp.armeria.common.annotation.Nullable; import com.linecorp.armeria.common.util.UnmodifiableFuture; -import com.linecorp.armeria.protobuf.testing.Messages.CompressionType; -import com.linecorp.armeria.protobuf.testing.Messages.ReconnectInfo; -import com.linecorp.armeria.protobuf.testing.Messages.SimpleRequest; -import com.linecorp.armeria.protobuf.testing.Messages.SimpleResponse; -import com.linecorp.armeria.protobuf.testing.Messages.StreamingOutputCallRequest; -import com.linecorp.armeria.protobuf.testing.Messages.TestMessage; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.annotation.ConsumesJson; import com.linecorp.armeria.server.annotation.Post; @@ -71,6 +65,13 @@ import com.linecorp.armeria.server.docs.TypeSignatureType; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.protobuf.Messages.CompressionType; +import testing.protobuf.Messages.ReconnectInfo; +import testing.protobuf.Messages.SimpleRequest; +import testing.protobuf.Messages.SimpleResponse; +import testing.protobuf.Messages.StreamingOutputCallRequest; +import testing.protobuf.Messages.TestMessage; + class ProtobufDescriptiveTypeInfoProviderTest { @RegisterExtension @@ -192,7 +193,7 @@ void specification() throws Exception { .execute() .content(); final InputStream resourceAsStream = ProtobufDescriptiveTypeInfoProviderTest.class.getResourceAsStream( - "ProtobufDescriptiveTypeInfoProviderTest_specification.json5"); + "/testing/protobuf/ProtobufDescriptiveTypeInfoProviderTest_specification.json5"); final JsonMapper json5Mapper = JsonMapper.builder() .enable(JsonReadFeature.ALLOW_JAVA_COMMENTS.mappedFeature()) .enable(JsonReadFeature.ALLOW_TRAILING_COMMA.mappedFeature()) @@ -220,7 +221,7 @@ void customStructInfo() { .get("parameters").get(0); assertThat(param.get("name").textValue()).isEqualTo("req"); assertThat(param.get("typeSignature").textValue()).isEqualTo( - "com.linecorp.armeria.protobuf.testing.Messages$SimpleRequest"); + "testing.protobuf.Messages$SimpleRequest"); final JsonNode struct = response.get("structs").get(0); assertThat(struct.get("name").textValue()).isEqualTo("CustomSimpleRequest"); final JsonNode fields = struct.get("fields"); diff --git a/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufRequestAnnotatedServiceTest.java b/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufRequestAnnotatedServiceTest.java index 20c43f8eaf43..1bf6981cbd53 100644 --- a/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufRequestAnnotatedServiceTest.java +++ b/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufRequestAnnotatedServiceTest.java @@ -38,13 +38,14 @@ import com.linecorp.armeria.common.HttpMethod; import com.linecorp.armeria.common.HttpRequest; import com.linecorp.armeria.common.MediaType; -import com.linecorp.armeria.protobuf.testing.Messages.SimpleRequest; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.annotation.ConsumesJson; import com.linecorp.armeria.server.annotation.ConsumesProtobuf; import com.linecorp.armeria.server.annotation.Post; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.protobuf.Messages.SimpleRequest; + class ProtobufRequestAnnotatedServiceTest { @RegisterExtension diff --git a/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufRequestConverterFunctionTest.java b/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufRequestConverterFunctionTest.java index 30b1d26037aa..3fa0129fa3c9 100644 --- a/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufRequestConverterFunctionTest.java +++ b/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufRequestConverterFunctionTest.java @@ -50,8 +50,6 @@ import com.linecorp.armeria.common.MediaType; import com.linecorp.armeria.common.MediaTypeNames; import com.linecorp.armeria.common.util.Exceptions; -import com.linecorp.armeria.protobuf.testing.Messages.SimpleRequest; -import com.linecorp.armeria.protobuf.testing.Messages.SimpleResponse; import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.server.annotation.FallthroughException; import com.linecorp.armeria.server.annotation.Get; @@ -59,6 +57,9 @@ import com.linecorp.armeria.server.annotation.RequestConverterFunction; import com.linecorp.armeria.server.protobuf.ProtobufRequestConverterFunction.ResultType; +import testing.protobuf.Messages.SimpleRequest; +import testing.protobuf.Messages.SimpleResponse; + class ProtobufRequestConverterFunctionTest { private static final ServiceRequestContext ctx = diff --git a/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufResponseAnnotatedServiceJsonArrayTest.java b/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufResponseAnnotatedServiceJsonArrayTest.java index 595fe5cfa781..404130d02872 100644 --- a/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufResponseAnnotatedServiceJsonArrayTest.java +++ b/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufResponseAnnotatedServiceJsonArrayTest.java @@ -26,12 +26,13 @@ import com.google.protobuf.util.JsonFormat; import com.linecorp.armeria.common.AggregatedHttpResponse; -import com.linecorp.armeria.protobuf.testing.Messages; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.annotation.Get; import com.linecorp.armeria.server.annotation.ProducesJson; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.protobuf.Messages; + /** * Given a ProtobufResponseConverterFunction with a custom JsonPrinter configured via the service builder, * the produced JSON should show that the custom JsonPrinter was used. diff --git a/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufResponseAnnotatedServiceTest.java b/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufResponseAnnotatedServiceTest.java index 05fe1366b9c0..f06f064c9b44 100644 --- a/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufResponseAnnotatedServiceTest.java +++ b/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufResponseAnnotatedServiceTest.java @@ -50,7 +50,6 @@ import com.linecorp.armeria.common.MediaTypeNames; import com.linecorp.armeria.common.annotation.Nullable; import com.linecorp.armeria.common.util.UnmodifiableFuture; -import com.linecorp.armeria.protobuf.testing.Messages.SimpleResponse; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.server.annotation.ExceptionHandler; @@ -63,6 +62,7 @@ import com.linecorp.armeria.testing.junit5.server.ServerExtension; import reactor.core.publisher.Flux; +import testing.protobuf.Messages.SimpleResponse; class ProtobufResponseAnnotatedServiceTest { diff --git a/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufResponseConverterFunctionTest.java b/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufResponseConverterFunctionTest.java index b5cefce802c4..83b91b82a5cd 100644 --- a/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufResponseConverterFunctionTest.java +++ b/protobuf/src/test/java/com/linecorp/armeria/server/protobuf/ProtobufResponseConverterFunctionTest.java @@ -39,7 +39,6 @@ import com.linecorp.armeria.common.MediaType; import com.linecorp.armeria.common.MediaTypeNames; -import com.linecorp.armeria.protobuf.testing.Messages.SimpleResponse; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.annotation.Get; import com.linecorp.armeria.server.annotation.Produces; @@ -47,6 +46,7 @@ import com.linecorp.armeria.testing.junit5.server.ServerExtension; import reactor.core.publisher.Mono; +import testing.protobuf.Messages.SimpleResponse; class ProtobufResponseConverterFunctionTest { diff --git a/protobuf/src/test/proto/messages.proto b/protobuf/src/test/proto/messages.proto index ed292b0d9f9e..2575d8651198 100644 --- a/protobuf/src/test/proto/messages.proto +++ b/protobuf/src/test/proto/messages.proto @@ -16,7 +16,7 @@ syntax = "proto3"; package armeria.protobuf.testing; -option java_package = "com.linecorp.armeria.protobuf.testing"; +option java_package = "testing.protobuf"; message SimpleRequest { string payload = 1; diff --git a/protobuf/src/test/resources/com/linecorp/armeria/server/protobuf/ProtobufDescriptiveTypeInfoProviderTest_specification.json5 b/protobuf/src/test/resources/testing/protobuf/ProtobufDescriptiveTypeInfoProviderTest_specification.json5 similarity index 96% rename from protobuf/src/test/resources/com/linecorp/armeria/server/protobuf/ProtobufDescriptiveTypeInfoProviderTest_specification.json5 rename to protobuf/src/test/resources/testing/protobuf/ProtobufDescriptiveTypeInfoProviderTest_specification.json5 index 8290cb38dbaa..1a5ca150b42a 100644 --- a/protobuf/src/test/resources/com/linecorp/armeria/server/protobuf/ProtobufDescriptiveTypeInfoProviderTest_specification.json5 +++ b/protobuf/src/test/resources/testing/protobuf/ProtobufDescriptiveTypeInfoProviderTest_specification.json5 @@ -4,12 +4,12 @@ "methods" : [ { "name" : "json", "id" : "com.linecorp.armeria.server.protobuf.ProtobufDescriptiveTypeInfoProviderTest$ProtobufService/json/POST", - "returnTypeSignature" : "CompletableFuture", + "returnTypeSignature" : "CompletableFuture", "parameters" : [ { "name" : "req", "location" : "UNSPECIFIED", "requirement" : "REQUIRED", - "typeSignature" : "com.linecorp.armeria.protobuf.testing.Messages$TestMessage", + "typeSignature" : "testing.protobuf.Messages$TestMessage", "descriptionInfo" : { "docString" : "", "markup" : "NONE" @@ -68,7 +68,7 @@ } ], "structs" : [ { "name" : "armeria.protobuf.testing.TestMessage", - "alias" : "com.linecorp.armeria.protobuf.testing.Messages$TestMessage", + "alias" : "testing.protobuf.Messages$TestMessage", "fields" : [ { "name" : "bool", "location" : "UNSPECIFIED", diff --git a/retrofit2/src/test/java/com/linecorp/armeria/client/retrofit2/ArmeriaCallFactoryLargeStreamTest.java b/retrofit2/src/test/java/com/linecorp/armeria/client/retrofit2/ArmeriaCallFactoryLargeStreamTest.java index 8ad5466a21df..2fc702e6e99b 100644 --- a/retrofit2/src/test/java/com/linecorp/armeria/client/retrofit2/ArmeriaCallFactoryLargeStreamTest.java +++ b/retrofit2/src/test/java/com/linecorp/armeria/client/retrofit2/ArmeriaCallFactoryLargeStreamTest.java @@ -24,8 +24,8 @@ import java.time.temporal.ChronoUnit; import java.util.concurrent.CompletableFuture; -import org.junit.ClassRule; -import org.junit.Test; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; import org.reactivestreams.Subscription; import com.fasterxml.jackson.databind.ObjectMapper; @@ -39,14 +39,14 @@ import com.linecorp.armeria.server.AbstractHttpService; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.ServiceRequestContext; -import com.linecorp.armeria.testing.junit4.server.ServerRule; +import com.linecorp.armeria.testing.junit5.server.ServerExtension; import okhttp3.ResponseBody; import retrofit2.converter.jackson.JacksonConverterFactory; import retrofit2.http.GET; import retrofit2.http.Streaming; -public class ArmeriaCallFactoryLargeStreamTest { +class ArmeriaCallFactoryLargeStreamTest { interface Service { @Streaming @@ -56,8 +56,8 @@ interface Service { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - @ClassRule - public static final ServerRule server = new ServerRule() { + @RegisterExtension + static final ServerExtension server = new ServerExtension() { @Override protected void configure(ServerBuilder sb) throws Exception { sb.service("/large-stream", new AbstractHttpService() { @@ -98,8 +98,8 @@ public void cancel() { } }; - @Test(timeout = 30 * 1000L) - public void largeStream() throws Exception { + @Test + void largeStream() throws Exception { final WebClient webClient = WebClient.builder(server.httpUri()) .maxResponseLength(Long.MAX_VALUE) diff --git a/retrofit2/src/test/java/com/linecorp/armeria/client/retrofit2/BlockingCallSubscriberTest.java b/retrofit2/src/test/java/com/linecorp/armeria/client/retrofit2/BlockingCallSubscriberTest.java index 19b6066ac078..11c822c08dbc 100644 --- a/retrofit2/src/test/java/com/linecorp/armeria/client/retrofit2/BlockingCallSubscriberTest.java +++ b/retrofit2/src/test/java/com/linecorp/armeria/client/retrofit2/BlockingCallSubscriberTest.java @@ -21,11 +21,8 @@ import java.io.IOException; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.mockito.Mock; -import org.mockito.junit.MockitoJUnit; -import org.mockito.junit.MockitoRule; import org.reactivestreams.Subscription; import com.linecorp.armeria.client.retrofit2.ArmeriaCallFactory.ArmeriaCall; @@ -40,7 +37,7 @@ import okhttp3.Request; import okhttp3.Response; -public class BlockingCallSubscriberTest { +class BlockingCallSubscriberTest { private static class ManualMockCallback implements Callback { private int callbackCallingCount; @@ -62,9 +59,6 @@ public void onResponse(Call call, Response response) throws IOException { } } - @Rule - public final MockitoRule mockingRule = MockitoJUnit.rule(); - @Mock @Nullable ArmeriaCall armeriaCall; @@ -74,7 +68,7 @@ public void onResponse(Call call, Response response) throws IOException { Subscription subscription; @Test - public void completeNormally() throws Exception { + void completeNormally() throws Exception { when(armeriaCall.tryFinish()).thenReturn(true); final ManualMockCallback callback = new ManualMockCallback(); @@ -91,7 +85,7 @@ public void completeNormally() throws Exception { } @Test - public void dataIsIgnoredAfterTrailers() throws Exception { + void dataIsIgnoredAfterTrailers() throws Exception { when(armeriaCall.tryFinish()).thenReturn(true); final ManualMockCallback callback = new ManualMockCallback(); @@ -111,7 +105,7 @@ public void dataIsIgnoredAfterTrailers() throws Exception { } @Test - public void cancel() throws Exception { + void cancel() throws Exception { when(armeriaCall.tryFinish()).thenReturn(false); when(armeriaCall.isCanceled()).thenReturn(false, false, true); diff --git a/retrofit2/src/test/java/com/linecorp/armeria/client/retrofit2/StreamingCallSubscriberTest.java b/retrofit2/src/test/java/com/linecorp/armeria/client/retrofit2/StreamingCallSubscriberTest.java index 1efa336cfa6d..633fc0e9a0d1 100644 --- a/retrofit2/src/test/java/com/linecorp/armeria/client/retrofit2/StreamingCallSubscriberTest.java +++ b/retrofit2/src/test/java/com/linecorp/armeria/client/retrofit2/StreamingCallSubscriberTest.java @@ -26,11 +26,8 @@ import java.io.IOException; import java.util.concurrent.TimeUnit; -import org.junit.Rule; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.mockito.Mock; -import org.mockito.junit.MockitoJUnit; -import org.mockito.junit.MockitoRule; import org.reactivestreams.Subscription; import com.google.common.util.concurrent.MoreExecutors; @@ -48,7 +45,7 @@ import okhttp3.Request; import okhttp3.Response; -public class StreamingCallSubscriberTest { +class StreamingCallSubscriberTest { private static class ManualMockCallback implements Callback { private int callbackCallingCount; @@ -70,9 +67,6 @@ public void onResponse(Call call, Response response) throws IOException { } } - @Rule - public final MockitoRule mockingRule = MockitoJUnit.rule(); - @Mock @Nullable ArmeriaCall armeriaCall; @@ -82,7 +76,7 @@ public void onResponse(Call call, Response response) throws IOException { Subscription subscription; @Test - public void completeNormally() throws Exception { + void completeNormally() throws Exception { when(armeriaCall.tryFinish()).thenReturn(true); final ManualMockCallback callback = new ManualMockCallback(); @@ -102,7 +96,7 @@ public void completeNormally() throws Exception { } @Test - public void completeOnlyHeaders() throws Exception { + void completeOnlyHeaders() throws Exception { when(armeriaCall.tryFinish()).thenReturn(true); final ManualMockCallback callback = new ManualMockCallback(); @@ -121,7 +115,7 @@ public void completeOnlyHeaders() throws Exception { } @Test - public void dataIsIgnoredAfterTrailers() throws Exception { + void dataIsIgnoredAfterTrailers() throws Exception { when(armeriaCall.tryFinish()).thenReturn(true); final ManualMockCallback callback = new ManualMockCallback(); @@ -147,7 +141,7 @@ public void dataIsIgnoredAfterTrailers() throws Exception { } @Test - public void cancel() throws Exception { + void cancel() throws Exception { when(armeriaCall.tryFinish()).thenReturn(false); when(armeriaCall.isCanceled()).thenReturn(false, false, true); @@ -167,7 +161,7 @@ public void cancel() throws Exception { } @Test - public void cancel_duringReadingData() throws Exception { + void cancel_duringReadingData() throws Exception { when(armeriaCall.tryFinish()).thenReturn(false); when(armeriaCall.isCanceled()).thenReturn(false, false, false, true); @@ -190,7 +184,7 @@ public void cancel_duringReadingData() throws Exception { } @Test - public void exception_beforeReceivingHttpData() throws Exception { + void exception_beforeReceivingHttpData() throws Exception { when(armeriaCall.tryFinish()).thenReturn(true); when(armeriaCall.isCanceled()).thenReturn(false); @@ -208,7 +202,7 @@ public void exception_beforeReceivingHttpData() throws Exception { } @Test - public void exception_afterReceivingHttpData() throws Exception { + void exception_afterReceivingHttpData() throws Exception { when(armeriaCall.tryFinish()).thenReturn(true); when(armeriaCall.isCanceled()).thenReturn(false); diff --git a/saml/src/test/java/com/linecorp/armeria/server/saml/KeyStoreCredentialResolverBuilderTest.java b/saml/src/test/java/com/linecorp/armeria/server/saml/KeyStoreCredentialResolverBuilderTest.java index 62639453a07a..b75cfd72f400 100644 --- a/saml/src/test/java/com/linecorp/armeria/server/saml/KeyStoreCredentialResolverBuilderTest.java +++ b/saml/src/test/java/com/linecorp/armeria/server/saml/KeyStoreCredentialResolverBuilderTest.java @@ -51,16 +51,17 @@ public void expectSuccessWithFile() throws Exception { @Test public void expectSuccessWithResource() throws Exception { - new KeyStoreCredentialResolverBuilder(getClass().getClassLoader(), "keystore/test.jks").build(); + new KeyStoreCredentialResolverBuilder(getClass().getClassLoader(), "testing/saml/test.jks").build(); } @Test public void expectNotFound() throws Exception { assertThatThrownBy( - () -> new KeyStoreCredentialResolverBuilder(new File("/not_exist")).build()) + () -> new KeyStoreCredentialResolverBuilder(new File("/testing/saml/not_exist")).build()) .isInstanceOf(FileNotFoundException.class); assertThatThrownBy( - () -> new KeyStoreCredentialResolverBuilder(getClass().getClassLoader(), "not_exist").build()) + () -> new KeyStoreCredentialResolverBuilder(getClass().getClassLoader(), + "testing/saml/not_exist").build()) .isInstanceOf(FileNotFoundException.class) .hasMessageContaining("Resource not found"); } diff --git a/saml/src/test/resources/keystore/test.jks b/saml/src/test/resources/testing/saml/test.jks similarity index 100% rename from saml/src/test/resources/keystore/test.jks rename to saml/src/test/resources/testing/saml/test.jks diff --git a/scalapb/scalapb_2.13/src/test/proto/hello.proto b/scalapb/scalapb_2.13/src/test/proto/hello.proto index a03e4312f3f9..19c3346c9906 100644 --- a/scalapb/scalapb_2.13/src/test/proto/hello.proto +++ b/scalapb/scalapb_2.13/src/test/proto/hello.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package armeria.scalapb; +package testing.scalapb.service; -service HelloService { +service TestService { rpc Hello (HelloRequest) returns (HelloReply) {} rpc LazyHello (HelloRequest) returns (HelloReply) {} rpc BlockingHello (HelloRequest) returns (HelloReply) {} diff --git a/scalapb/scalapb_2.13/src/test/proto/messages.proto b/scalapb/scalapb_2.13/src/test/proto/messages.proto index 5cbf45f4b4a5..d21438c28b8d 100644 --- a/scalapb/scalapb_2.13/src/test/proto/messages.proto +++ b/scalapb/scalapb_2.13/src/test/proto/messages.proto @@ -14,9 +14,7 @@ syntax = "proto3"; -package armeria.protobuf.testing; - -option java_package = "com.linecorp.armeria.scalapb.testing"; +package testing.scalapb; message SimpleRequest { string payload = 1; diff --git a/scalapb/scalapb_2.13/src/test/resources/com/linecorp/armeria/server/protobuf/ScalaPbDescriptiveTypeInfoProviderTest_specification.json5 b/scalapb/scalapb_2.13/src/test/resources/testing/scalapb/ScalaPbDescriptiveTypeInfoProviderTest_specification.json5 similarity index 88% rename from scalapb/scalapb_2.13/src/test/resources/com/linecorp/armeria/server/protobuf/ScalaPbDescriptiveTypeInfoProviderTest_specification.json5 rename to scalapb/scalapb_2.13/src/test/resources/testing/scalapb/ScalaPbDescriptiveTypeInfoProviderTest_specification.json5 index e6af02b9ea8b..7f1893060ace 100644 --- a/scalapb/scalapb_2.13/src/test/resources/com/linecorp/armeria/server/protobuf/ScalaPbDescriptiveTypeInfoProviderTest_specification.json5 +++ b/scalapb/scalapb_2.13/src/test/resources/testing/scalapb/ScalaPbDescriptiveTypeInfoProviderTest_specification.json5 @@ -6,13 +6,13 @@ { "name": "json", "id": "com.linecorp.armeria.server.protobuf.ScalaPbDescriptiveTypeInfoProviderTest$ScalaPbService/json/POST", - "returnTypeSignature": "Future", + "returnTypeSignature": "Future", "parameters": [ { "name": "req", "location": "UNSPECIFIED", "requirement": "REQUIRED", - "typeSignature": "com.linecorp.armeria.scalapb.testing.messages.TestMessage", + "typeSignature": "testing.scalapb.messages.TestMessage", "descriptionInfo": { "docString": "", "markup": "NONE" @@ -47,7 +47,7 @@ ], "enums": [ { - "name": "armeria.protobuf.testing.TestEnum", + "name": "testing.scalapb.TestEnum", "values": [ { "name": "ZERO", @@ -80,13 +80,13 @@ ], "structs": [ { - "name": "armeria.protobuf.testing.Add", + "name": "testing.scalapb.Add", "fields": [ { "name": "left", "location": "UNSPECIFIED", "requirement": "OPTIONAL", - "typeSignature": "armeria.protobuf.testing.SimpleOneof", + "typeSignature": "testing.scalapb.SimpleOneof", "descriptionInfo": { "docString": "", "markup": "NONE" @@ -95,7 +95,7 @@ "name": "right", "location": "UNSPECIFIED", "requirement": "OPTIONAL", - "typeSignature": "armeria.protobuf.testing.SimpleOneof", + "typeSignature": "testing.scalapb.SimpleOneof", "descriptionInfo": { "docString": "", "markup": "NONE" @@ -107,7 +107,7 @@ "markup": "NONE" } }, { - "name": "armeria.protobuf.testing.Literal", + "name": "testing.scalapb.Literal", "fields": [ { "name": "value", @@ -125,13 +125,13 @@ "markup": "NONE" } }, { - "name": "armeria.protobuf.testing.SimpleOneof", + "name": "testing.scalapb.SimpleOneof", "fields": [ { "name": "lit", "location": "UNSPECIFIED", "requirement": "OPTIONAL", - "typeSignature": "armeria.protobuf.testing.Literal", + "typeSignature": "testing.scalapb.Literal", "descriptionInfo": { "docString": "", "markup": "NONE" @@ -140,7 +140,7 @@ "name": "add", "location": "UNSPECIFIED", "requirement": "OPTIONAL", - "typeSignature": "armeria.protobuf.testing.Add", + "typeSignature": "testing.scalapb.Add", "descriptionInfo": { "docString": "", "markup": "NONE" @@ -152,8 +152,8 @@ "markup": "NONE" } }, { - "name": "armeria.protobuf.testing.TestMessage", - "alias": "com.linecorp.armeria.scalapb.testing.messages.TestMessage", + "name": "testing.scalapb.TestMessage", + "alias": "testing.scalapb.messages.TestMessage", "fields": [ { "name": "bool", @@ -276,7 +276,7 @@ "name": "test_enum", "location": "UNSPECIFIED", "requirement": "OPTIONAL", - "typeSignature": "armeria.protobuf.testing.TestEnum", + "typeSignature": "testing.scalapb.TestEnum", "descriptionInfo": { "docString": "", "markup": "NONE" @@ -285,7 +285,7 @@ "name": "nested", "location": "UNSPECIFIED", "requirement": "OPTIONAL", - "typeSignature": "armeria.protobuf.testing.TestMessage.Nested", + "typeSignature": "testing.scalapb.TestMessage.Nested", "descriptionInfo": { "docString": "", "markup": "NONE" @@ -312,7 +312,7 @@ "name": "self", "location": "UNSPECIFIED", "requirement": "OPTIONAL", - "typeSignature": "armeria.protobuf.testing.TestMessage", + "typeSignature": "testing.scalapb.TestMessage", "descriptionInfo": { "docString": "", "markup": "NONE" @@ -321,7 +321,7 @@ "name": "oneof", "location": "UNSPECIFIED", "requirement": "OPTIONAL", - "typeSignature": "armeria.protobuf.testing.SimpleOneof", + "typeSignature": "testing.scalapb.SimpleOneof", "descriptionInfo": { "docString": "", "markup": "NONE" @@ -333,7 +333,7 @@ "markup": "NONE" } }, { - "name": "armeria.protobuf.testing.TestMessage.Nested", + "name": "testing.scalapb.TestMessage.Nested", "fields": [ { "name": "string", diff --git a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/common/scalapb/ScalaPbJsonMarshallerTest.scala b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/common/scalapb/ScalaPbJsonMarshallerTest.scala index 261b7d0d6293..2986332055be 100644 --- a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/common/scalapb/ScalaPbJsonMarshallerTest.scala +++ b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/common/scalapb/ScalaPbJsonMarshallerTest.scala @@ -1,11 +1,12 @@ package com.linecorp.armeria.common.scalapb -import com.linecorp.armeria.scalapb.testing.messages.{Add, Literal} -import java.io.ByteArrayOutputStream import net.javacrumbs.jsonunit.fluent.JsonFluentAssert.assertThatJson import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test import scalapb.GeneratedSealedOneof +import testing.scalapb.messages.{Add, Literal} + +import java.io.ByteArrayOutputStream class ScalaPbJsonMarshallerTest { diff --git a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/protobuf/ScalaPbDescriptiveTypeInfoProviderTest.scala b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/protobuf/ScalaPbDescriptiveTypeInfoProviderTest.scala index cfa9c8289488..0353dabe27bf 100644 --- a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/protobuf/ScalaPbDescriptiveTypeInfoProviderTest.scala +++ b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/protobuf/ScalaPbDescriptiveTypeInfoProviderTest.scala @@ -19,14 +19,14 @@ package com.linecorp.armeria.server.protobuf import com.fasterxml.jackson.core.json.JsonReadFeature import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.json.JsonMapper -import com.linecorp.armeria.scalapb.testing.messages.TestMessage import com.linecorp.armeria.server.ServerBuilder import com.linecorp.armeria.server.annotation.{ConsumesJson, Post, ProducesJson} -import com.linecorp.armeria.server.docs.{ContainerTypeSignature, DocService, FieldInfo, FieldRequirement, MapTypeSignature, StructInfo, TypeSignatureType} -import ProtobufDescriptiveTypeInfoProvider._ +import com.linecorp.armeria.server.docs.{ContainerTypeSignature, DocService, MapTypeSignature, StructInfo, TypeSignatureType} +import com.linecorp.armeria.server.protobuf.ProtobufDescriptiveTypeInfoProvider._ import com.linecorp.armeria.server.scalapb.{ScalaPbDescriptiveTypeInfoProvider, ServerSuite} import munit.FunSuite import net.javacrumbs.jsonunit.fluent.JsonFluentAssert.assertThatJson +import testing.scalapb.messages.TestMessage import scala.concurrent.Future @@ -42,7 +42,7 @@ class ScalaPbDescriptiveTypeInfoProviderTest extends FunSuite with ServerSuite { val namedInfo = provider.newDescriptiveTypeInfo(classOf[TestMessage]) assert(namedInfo.isInstanceOf[StructInfo]) val structInfo: StructInfo = namedInfo.asInstanceOf[StructInfo] - assertEquals(structInfo.name, "armeria.protobuf.testing.TestMessage") + assertEquals(structInfo.name, "testing.scalapb.TestMessage") assertEquals(structInfo.fields.size(), 19) assertEquals(structInfo.fields.get(0).name, "bool") assertEquals(structInfo.fields.get(0).typeSignature, BOOL) @@ -71,11 +71,11 @@ class ScalaPbDescriptiveTypeInfoProviderTest extends FunSuite with ServerSuite { assertEquals(structInfo.fields.get(12).name, "bytes") assertEquals(structInfo.fields.get(12).typeSignature, BYTES) assertEquals(structInfo.fields.get(13).name, "test_enum") - assertEquals(structInfo.fields.get(13).typeSignature.signature, "armeria.protobuf.testing.TestEnum") + assertEquals(structInfo.fields.get(13).typeSignature.signature, "testing.scalapb.TestEnum") val nested = structInfo.fields.get(14) assertEquals(nested.name, "nested") - assertEquals(nested.typeSignature.signature, "armeria.protobuf.testing.TestMessage.Nested") + assertEquals(nested.typeSignature.signature, "testing.scalapb.TestMessage.Nested") assertEquals(structInfo.fields.get(15).name, "strings") val repeatedTypeSignature = structInfo.fields.get(15).typeSignature @@ -90,11 +90,11 @@ class ScalaPbDescriptiveTypeInfoProviderTest extends FunSuite with ServerSuite { assertEquals(mapTypeSignature.asInstanceOf[MapTypeSignature].valueTypeSignature(), INT32) val self = structInfo.fields.get(17) assertEquals(self.name, "self") - assertEquals(self.typeSignature.signature, "armeria.protobuf.testing.TestMessage") + assertEquals(self.typeSignature.signature, "testing.scalapb.TestMessage") val oneof = structInfo.fields.get(18) assertEquals(oneof.name(), "oneof") - assertEquals(oneof.typeSignature.signature, "armeria.protobuf.testing.SimpleOneof") + assertEquals(oneof.typeSignature.signature, "testing.scalapb.SimpleOneof") } test("should not handle com.google.protobuf.Message with ScalaPbDescriptiveTypeInfoProvider") { @@ -118,7 +118,7 @@ class ScalaPbDescriptiveTypeInfoProviderTest extends FunSuite with ServerSuite { .content() val resourceAsStream = classOf[ScalaPbDescriptiveTypeInfoProviderTest].getResourceAsStream( - "ScalaPbDescriptiveTypeInfoProviderTest_specification.json5") + "/testing/scalapb/ScalaPbDescriptiveTypeInfoProviderTest_specification.json5") val json5Mapper = JsonMapper .builder() .enable(JsonReadFeature.ALLOW_JAVA_COMMENTS.mappedFeature) diff --git a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbRequestAnnotatedServiceTest.scala b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbRequestAnnotatedServiceTest.scala index 676046f1185f..62d778d526ce 100644 --- a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbRequestAnnotatedServiceTest.scala +++ b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbRequestAnnotatedServiceTest.scala @@ -18,7 +18,6 @@ package com.linecorp.armeria.server.scalapb import com.linecorp.armeria.client.WebClient import com.linecorp.armeria.common.{AggregatedHttpResponse, HttpMethod, HttpRequest, MediaType} -import com.linecorp.armeria.scalapb.testing.messages.SimpleRequest import com.linecorp.armeria.server.ServerBuilder import com.linecorp.armeria.server.annotation.{ConsumesJson, ConsumesProtobuf, Post} import com.linecorp.armeria.server.scalapb.ScalaPbRequestAnnotatedServiceTest.server @@ -29,6 +28,7 @@ import org.junit.jupiter.api.{AfterEach, BeforeEach, Test} import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.CsvSource import scalapb.json4s.Printer +import testing.scalapb.messages.SimpleRequest class ScalaPbRequestAnnotatedServiceTest { diff --git a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbRequestConverterFunctionTest.scala b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbRequestConverterFunctionTest.scala index c446247414a9..6d9956f4db5f 100644 --- a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbRequestConverterFunctionTest.scala +++ b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbRequestConverterFunctionTest.scala @@ -18,22 +18,21 @@ package com.linecorp.armeria.server.scalapb import com.fasterxml.jackson.core.`type`.TypeReference import com.google.common.collect.{ImmutableList, ImmutableMap, ImmutableSet} -import com.linecorp.armeria.common.{AggregatedHttpRequest, HttpData, HttpMethod, HttpRequest, MediaType} -import com.linecorp.armeria.scalapb.testing.messages.SimpleRequest +import com.linecorp.armeria.common._ import com.linecorp.armeria.server.ServiceRequestContext import com.linecorp.armeria.server.annotation.FallthroughException import com.linecorp.armeria.server.scalapb.ScalaPbRequestConverterFunctionTest._ - -import java.lang.reflect.ParameterizedType import org.assertj.core.api.Assertions.{assertThat, assertThatThrownBy} import org.junit.jupiter.api.Test import org.junit.jupiter.api.`extension`.ExtensionContext import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.{Arguments, ArgumentsProvider, ArgumentsSource} +import _root_.scalapb.GeneratedMessage +import _root_.scalapb.json4s.Printer +import testing.scalapb.messages.SimpleRequest +import java.lang.reflect.ParameterizedType import scala.collection.mutable.ArrayBuffer -import scalapb.GeneratedMessage -import scalapb.json4s.Printer class ScalaPbRequestConverterFunctionTest { diff --git a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbResponseAnnotatedServiceTest.scala b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbResponseAnnotatedServiceTest.scala index 06d777247694..86de06376de1 100644 --- a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbResponseAnnotatedServiceTest.scala +++ b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbResponseAnnotatedServiceTest.scala @@ -18,38 +18,12 @@ package com.linecorp.armeria.server.scalapb import com.google.common.collect.{ImmutableList, ImmutableMap, ImmutableSet} import com.linecorp.armeria.client.WebClient -import com.linecorp.armeria.common.{ - AggregatedHttpResponse, - HttpRequest, - HttpResponse, - HttpStatus, - MediaType, - MediaTypeNames -} -import com.linecorp.armeria.scalapb.testing.messages.{ - Add, - Literal, - SimpleOneof, - SimpleOneofMessage, - SimpleResponse -} -import com.linecorp.armeria.server.annotation.{ - Blocking, - ExceptionHandler, - ExceptionHandlerFunction, - Get, - Post, - Produces, - ProducesJson, - ProducesJsonSequences, - ProducesProtobuf -} +import com.linecorp.armeria.common._ +import com.linecorp.armeria.server.annotation._ import com.linecorp.armeria.server.logging.LoggingService import com.linecorp.armeria.server.scalapb.ScalaPbResponseAnnotatedServiceTest.server import com.linecorp.armeria.server.{ServerBuilder, ServiceRequestContext} import com.linecorp.armeria.testing.junit5.server.ServerExtension -import java.io.ByteArrayOutputStream -import java.util.stream.Stream import net.javacrumbs.jsonunit.fluent.JsonFluentAssert.assertThatJson import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.extension.RegisterExtension @@ -58,8 +32,12 @@ import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.CsvSource import org.reactivestreams.Publisher import reactor.core.publisher.Flux +import _root_.scalapb.json4s.{JsonFormat, Parser} +import testing.scalapb.messages._ + +import java.io.ByteArrayOutputStream +import java.util.stream.Stream import scala.concurrent.{ExecutionContext, Future} -import scalapb.json4s.{JsonFormat, Parser} class ScalaPbResponseAnnotatedServiceTest { diff --git a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbResponseConverterFunctionTest.scala b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbResponseConverterFunctionTest.scala index 2e39707058f8..889e7ab85e20 100644 --- a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbResponseConverterFunctionTest.scala +++ b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/ScalaPbResponseConverterFunctionTest.scala @@ -17,13 +17,12 @@ package com.linecorp.armeria.server.scalapb import com.linecorp.armeria.common.{MediaType, MediaTypeNames} -import com.linecorp.armeria.scalapb.testing.messages.SimpleResponse import com.linecorp.armeria.server.annotation.Produces - -import java.lang.reflect.Type import munit.FunSuite import org.reactivestreams.Publisher +import testing.scalapb.messages.SimpleResponse +import java.lang.reflect.Type import scala.concurrent.Future class ScalaPbResponseConverterFunctionTest extends FunSuite { diff --git a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/HelloServiceImpl.scala b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/TestServiceImpl.scala similarity index 94% rename from scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/HelloServiceImpl.scala rename to scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/TestServiceImpl.scala index 7df6a31a3d0a..443ebb562445 100644 --- a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/HelloServiceImpl.scala +++ b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/TestServiceImpl.scala @@ -16,20 +16,21 @@ package com.linecorp.armeria.server.scalapb -import armeria.scalapb.hello.{HelloReply, HelloRequest, HelloServiceGrpc, SimpleOneof} import com.linecorp.armeria.server.ServiceRequestContext -import com.linecorp.armeria.server.scalapb.HelloServiceImpl.{toMessage, _} +import com.linecorp.armeria.server.scalapb.TestServiceImpl._ import io.grpc.stub.StreamObserver -import java.util.concurrent.{ScheduledExecutorService, TimeUnit} import monix.execution import monix.execution.Ack.Continue import monix.execution.Scheduler import monix.reactive.Observable +import testing.scalapb.service.hello.{HelloReply, HelloRequest, SimpleOneof, TestServiceGrpc} + +import java.util.concurrent.{ScheduledExecutorService, TimeUnit} import scala.collection.mutable import scala.concurrent.duration._ import scala.concurrent.{ExecutionContext, Future, Promise} -class HelloServiceImpl extends HelloServiceGrpc.HelloService { +class TestServiceImpl extends TestServiceGrpc.TestService { override def hello(request: HelloRequest): Future[HelloReply] = { ServiceRequestContext.current() @@ -130,7 +131,7 @@ class HelloServiceImpl extends HelloServiceGrpc.HelloService { Future.successful(request) } -object HelloServiceImpl { +object TestServiceImpl { implicit def blockingContextAwareExecutionContext: ExecutionContext = ExecutionContext.fromExecutor(ServiceRequestContext.current().blockingTaskExecutor()) diff --git a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/HelloServiceTest.scala b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/TestServiceTest.scala similarity index 79% rename from scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/HelloServiceTest.scala rename to scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/TestServiceTest.scala index c51d74f8d56b..247f03f8f4ee 100644 --- a/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/HelloServiceTest.scala +++ b/scalapb/scalapb_2.13/src/test/scala/com/linecorp/armeria/server/scalapb/TestServiceTest.scala @@ -1,7 +1,5 @@ package com.linecorp.armeria.server.scalapb -import armeria.scalapb.hello.HelloServiceGrpc.{HelloServiceBlockingStub, HelloServiceStub} -import armeria.scalapb.hello._ import com.google.common.base.Stopwatch import com.linecorp.armeria.client.grpc.GrpcClients import com.linecorp.armeria.common.SerializationFormat @@ -9,47 +7,50 @@ import com.linecorp.armeria.common.grpc.GrpcSerializationFormats import com.linecorp.armeria.common.scalapb.ScalaPbJsonMarshaller import com.linecorp.armeria.server.ServerBuilder import com.linecorp.armeria.server.grpc.GrpcService -import com.linecorp.armeria.server.scalapb.HelloServiceImpl.toMessage -import com.linecorp.armeria.server.scalapb.HelloServiceTest.{GrpcSerializationProvider, newClient} +import com.linecorp.armeria.server.scalapb.TestServiceImpl.toMessage +import com.linecorp.armeria.server.scalapb.TestServiceTest.{GrpcSerializationProvider, newClient} import com.linecorp.armeria.testing.junit5.server.ServerExtension import io.grpc.stub.StreamObserver -import java.time -import java.util.concurrent.TimeUnit -import java.util.concurrent.atomic.{AtomicBoolean, AtomicInteger} -import java.util.stream import org.assertj.core.api.Assertions.assertThat import org.awaitility.Awaitility.await import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.extension.ExtensionContext import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.{Arguments, ArgumentsProvider, ArgumentsSource} +import testing.scalapb.service.hello.TestServiceGrpc.{TestServiceBlockingStub, TestServiceStub} +import testing.scalapb.service.hello._ + +import java.time +import java.util.concurrent.TimeUnit +import java.util.concurrent.atomic.{AtomicBoolean, AtomicInteger} +import java.util.stream import scala.concurrent.duration.Duration import scala.concurrent.{Await, ExecutionContext} import scala.reflect.ClassTag -class HelloServiceTest { +class TestServiceTest { @ArgumentsSource(classOf[GrpcSerializationProvider]) @ParameterizedTest def getReply(serializationFormat: SerializationFormat): Unit = { - val helloService = newClient[HelloServiceBlockingStub](serializationFormat) - assertThat(helloService.hello(HelloRequest("Armeria")).message).isEqualTo("Hello, Armeria!") + val TestService = newClient[TestServiceBlockingStub](serializationFormat) + assertThat(TestService.hello(HelloRequest("Armeria")).message).isEqualTo("Hello, Armeria!") } @ArgumentsSource(classOf[GrpcSerializationProvider]) @ParameterizedTest def replyWithDelay(serializationFormat: SerializationFormat): Unit = { - val helloService = newClient[HelloServiceStub](serializationFormat) - val reply: HelloReply = Await.result(helloService.lazyHello(HelloRequest("Armeria")), Duration.Inf) + val TestService = newClient[TestServiceStub](serializationFormat) + val reply: HelloReply = Await.result(TestService.lazyHello(HelloRequest("Armeria")), Duration.Inf) assertThat(reply.message).isEqualTo("Hello, Armeria!") } @ArgumentsSource(classOf[GrpcSerializationProvider]) @ParameterizedTest def replyFromServerSideBlockingCall(serializationFormat: SerializationFormat): Unit = { - val helloService = newClient[HelloServiceStub](serializationFormat) + val TestService = newClient[TestServiceStub](serializationFormat) val watch = Stopwatch.createStarted() - val reply: HelloReply = Await.result(helloService.blockingHello(HelloRequest("Armeria")), Duration.Inf) + val reply: HelloReply = Await.result(TestService.blockingHello(HelloRequest("Armeria")), Duration.Inf) assertThat(reply.message).isEqualTo("Hello, Armeria!") assertThat(watch.elapsed(TimeUnit.SECONDS)).isGreaterThanOrEqualTo(3) } @@ -58,10 +59,10 @@ class HelloServiceTest { @ParameterizedTest def lotsOfReplies(serializationFormat: SerializationFormat): Unit = { val completed = new AtomicBoolean() - val helloService = newClient[HelloServiceStub](serializationFormat) + val TestService = newClient[TestServiceStub](serializationFormat) val sequence = new AtomicInteger() - helloService.lotsOfReplies( + TestService.lotsOfReplies( HelloRequest("Armeria"), new StreamObserver[HelloReply]() { override def onNext(value: HelloReply): Unit = { @@ -87,9 +88,9 @@ class HelloServiceTest { def sendLotsOfGreetings(serializationFormat: SerializationFormat): Unit = { val names = List("Armeria", "Grpc", "Streaming") val completed = new AtomicBoolean() - val helloService = newClient[HelloServiceStub](serializationFormat) + val TestService = newClient[TestServiceStub](serializationFormat) - val request = helloService.lotsOfGreetings(new StreamObserver[HelloReply]() { + val request = TestService.lotsOfGreetings(new StreamObserver[HelloReply]() { private var received = false override def onNext(value: HelloReply): Unit = { @@ -120,9 +121,9 @@ class HelloServiceTest { def bidirectionalHello(serializationFormat: SerializationFormat): Unit = { val names = List("Armeria", "Grpc", "Streaming") val completed = new AtomicBoolean() - val helloService = newClient[HelloServiceStub](serializationFormat) + val TestService = newClient[TestServiceStub](serializationFormat) - val request = helloService.bidiHello(new StreamObserver[HelloReply]() { + val request = TestService.bidiHello(new StreamObserver[HelloReply]() { private var received = 0 override def onNext(value: HelloReply): Unit = { @@ -151,21 +152,21 @@ class HelloServiceTest { @ParameterizedTest def oneof(serializationFormat: SerializationFormat): Unit = { val oneof: Add = Add(Literal(1), Literal(2)) - val helloService = newClient[HelloServiceStub](serializationFormat) - val actual = helloService.oneof(oneof) + val TestService = newClient[TestServiceStub](serializationFormat) + val actual = TestService.oneof(oneof) val res = Await.result(actual, Duration.Inf) assertThat(res).isEqualTo(oneof) } } -object HelloServiceTest { +object TestServiceTest { var server: ServerExtension = new ServerExtension() { override protected def configure(sb: ServerBuilder): Unit = sb.service( GrpcService .builder() - .addService(HelloServiceGrpc.bindService(new HelloServiceImpl, ExecutionContext.global)) + .addService(TestServiceGrpc.bindService(new TestServiceImpl, ExecutionContext.global)) .supportedSerializationFormats(GrpcSerializationFormats.values) .jsonMarshallerFactory(_ => ScalaPbJsonMarshaller()) .enableUnframedRequests(true) diff --git a/settings.gradle b/settings.gradle index 03a4cb233d6d..a6e1a4d2f8e0 100644 --- a/settings.gradle +++ b/settings.gradle @@ -5,21 +5,12 @@ plugins { // If Gradle can’t find a locally available toolchain that matches the requirements of the build, it can // automatically download one based on the foojay Disco API. // https://docs.gradle.org/8.1.1/userguide/toolchains.html#sec:provisioning - id("org.gradle.toolchains.foojay-resolver") version "0.5.0" - id "com.gradle.enterprise" version "3.13.3" + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.6.0' + id 'com.gradle.enterprise' version '3.13.3' // adds additional metadata to build scans id 'com.gradle.common-custom-user-data-gradle-plugin' version '1.11' - -} -toolchainManagement { - jvm { - javaRepositories { - repository("foojay") { - resolverClass = org.gradle.toolchains.foojay.FoojayToolchainResolver - } - } - } } + gradleEnterprise { server = "https://ge.armeria.dev" buildScan { diff --git a/settings/checkstyle/checkstyle.xml b/settings/checkstyle/checkstyle.xml index 5295650660c1..6e58540c7037 100644 --- a/settings/checkstyle/checkstyle.xml +++ b/settings/checkstyle/checkstyle.xml @@ -10,7 +10,7 @@ - + diff --git a/site/package-lock.json b/site/package-lock.json index 654f6436a06c..e42f2a6a5832 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -218,9 +218,9 @@ } }, "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -251,9 +251,9 @@ } }, "node_modules/@babel/eslint-parser/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -312,9 +312,9 @@ } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -371,9 +371,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -1558,9 +1558,9 @@ } }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -1769,9 +1769,9 @@ } }, "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -4162,9 +4162,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -4293,9 +4293,9 @@ } }, "node_modules/@typescript-eslint/experimental-utils/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -4428,9 +4428,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5234,6 +5234,36 @@ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" }, + "node_modules/babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">= 4.12.1" + } + }, + "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/babel-jsx-utils": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/babel-jsx-utils/-/babel-jsx-utils-1.1.0.tgz", @@ -5352,9 +5382,9 @@ } }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -6845,6 +6875,17 @@ "node": ">=6" } }, + "node_modules/contentful-management/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/contentful-sdk-core": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-6.11.0.tgz", @@ -7154,9 +7195,9 @@ } }, "node_modules/css-loader/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -8563,9 +8604,9 @@ } }, "node_modules/eslint-config-airbnb-base/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -8836,9 +8877,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -10499,9 +10540,9 @@ } }, "node_modules/gatsby-cli/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -10763,9 +10804,9 @@ } }, "node_modules/gatsby-plugin-manifest/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -10967,9 +11008,9 @@ } }, "node_modules/gatsby-plugin-sharp/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -11181,9 +11222,9 @@ } }, "node_modules/gatsby-recipes/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -11695,9 +11736,9 @@ } }, "node_modules/gatsby-transformer-sharp/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -12309,9 +12350,9 @@ } }, "node_modules/gatsby/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -14738,9 +14779,9 @@ } }, "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -15324,9 +15365,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -17235,9 +17276,9 @@ } }, "node_modules/node-abi/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -18054,9 +18095,9 @@ } }, "node_modules/package-json/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -18762,9 +18803,9 @@ } }, "node_modules/postcss-loader/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -21719,9 +21760,9 @@ "integrity": "sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA==" }, "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } @@ -21738,9 +21779,9 @@ } }, "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -21918,9 +21959,9 @@ } }, "node_modules/sharp/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -24044,11 +24085,13 @@ } }, "node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true, + "peer": true, "engines": { - "node": ">=12.20" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -24635,9 +24678,9 @@ } }, "node_modules/update-notifier/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -25328,9 +25371,9 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "engines": { "node": ">=0.10.0" } @@ -25829,9 +25872,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -25851,9 +25894,9 @@ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -25896,9 +25939,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -25939,9 +25982,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -26707,9 +26750,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -26863,9 +26906,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -27299,7 +27342,8 @@ "ws": { "version": "7.4.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", - "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==" + "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "requires": {} } } }, @@ -27919,7 +27963,8 @@ "@mdx-js/react": { "version": "1.6.22", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", - "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==" + "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", + "requires": {} }, "@mdx-js/util": { "version": "1.6.22", @@ -28862,9 +28907,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -28940,9 +28985,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -29012,9 +29057,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -29243,12 +29288,14 @@ "acorn-import-assertions": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==" + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "requires": {} }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "requires": {} }, "acorn-walk": { "version": "7.2.0", @@ -29293,7 +29340,8 @@ "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} }, "anser": { "version": "2.1.1", @@ -29638,6 +29686,28 @@ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "peer": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "peer": true + } + } + }, "babel-jsx-utils": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/babel-jsx-utils/-/babel-jsx-utils-1.1.0.tgz", @@ -29739,9 +29809,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -30878,6 +30948,13 @@ "fast-copy": "^2.1.0", "lodash.isplainobject": "^4.0.6", "type-fest": "^2.5.3" + }, + "dependencies": { + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + } } }, "contentful-sdk-core": { @@ -31102,9 +31179,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -31233,7 +31310,8 @@ "cssnano-utils": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.0.2.tgz", - "integrity": "sha512-KhprijuQv2sP4kT92sSQwhlK3SJTbDIsxcfIEySB0O+3m9esFOai7dP9bMx5enHAh2MwarVIcnwiWoOm01RIbQ==" + "integrity": "sha512-KhprijuQv2sP4kT92sSQwhlK3SJTbDIsxcfIEySB0O+3m9esFOai7dP9bMx5enHAh2MwarVIcnwiWoOm01RIbQ==", + "requires": {} }, "csso": { "version": "4.2.0", @@ -31829,7 +31907,8 @@ "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "requires": {} } } }, @@ -31853,7 +31932,8 @@ "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "requires": {} } } }, @@ -32235,9 +32315,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -32252,7 +32332,8 @@ "eslint-config-prettier": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==" + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "requires": {} }, "eslint-import-resolver-node": { "version": "0.3.6", @@ -32430,16 +32511,17 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, "eslint-plugin-react-hooks": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz", - "integrity": "sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==" + "integrity": "sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==", + "requires": {} }, "eslint-scope": { "version": "5.1.1", @@ -33904,9 +33986,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -34051,9 +34133,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -34164,7 +34246,8 @@ "gatsby-plugin-cname": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gatsby-plugin-cname/-/gatsby-plugin-cname-1.0.0.tgz", - "integrity": "sha512-U0yRgn4cm1zBi+qC5a827acPFnUqKSowoCvAxT3MDmMJVLSWB4vmSyM7m6ThVz35obO4nKr4iP4vZhvA7gEVsA==" + "integrity": "sha512-U0yRgn4cm1zBi+qC5a827acPFnUqKSowoCvAxT3MDmMJVLSWB4vmSyM7m6ThVz35obO4nKr4iP4vZhvA7gEVsA==", + "requires": {} }, "gatsby-plugin-google-analytics": { "version": "3.15.0", @@ -34209,7 +34292,8 @@ "gatsby-plugin-import": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/gatsby-plugin-import/-/gatsby-plugin-import-2.1.7.tgz", - "integrity": "sha512-N3L4kqRY9qQaGCciKmTBbb2NygDWYCY6SEtWAk6MoRa+RHnJnomuQ0QNQvrApXg9hbEQDZOMjv0w4zrXQUXYYg==" + "integrity": "sha512-N3L4kqRY9qQaGCciKmTBbb2NygDWYCY6SEtWAk6MoRa+RHnJnomuQ0QNQvrApXg9hbEQDZOMjv0w4zrXQUXYYg==", + "requires": {} }, "gatsby-plugin-less": { "version": "5.14.0", @@ -34241,9 +34325,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -34405,9 +34489,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -34580,9 +34664,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -34983,9 +35067,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -35336,12 +35420,14 @@ "graphql-type-json": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.3.2.tgz", - "integrity": "sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg==" + "integrity": "sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg==", + "requires": {} }, "graphql-ws": { "version": "4.9.0", "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.9.0.tgz", - "integrity": "sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag==" + "integrity": "sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag==", + "requires": {} }, "gray-matter": { "version": "4.0.3", @@ -35743,7 +35829,8 @@ "icss-utils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "requires": {} }, "ieee754": { "version": "1.2.1", @@ -36357,7 +36444,8 @@ "isomorphic-ws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==" + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "requires": {} }, "iterall": { "version": "1.3.0", @@ -36623,7 +36711,8 @@ "version": "8.5.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -36729,9 +36818,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -37207,9 +37296,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -37779,7 +37868,8 @@ "meros": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/meros/-/meros-1.1.4.tgz", - "integrity": "sha512-E9ZXfK9iQfG9s73ars9qvvvbSIkJZF5yOo9j4tcwM5tN8mUKfj/EKN5PzOr3ZH0y5wL7dLAHw3RVEfpQV9Q7VQ==" + "integrity": "sha512-E9ZXfK9iQfG9s73ars9qvvvbSIkJZF5yOo9j4tcwM5tN8mUKfj/EKN5PzOr3ZH0y5wL7dLAHw3RVEfpQV9Q7VQ==", + "requires": {} }, "methods": { "version": "1.1.2", @@ -38532,9 +38622,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -39137,9 +39227,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -39608,27 +39698,32 @@ "postcss-discard-comments": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.3.tgz", - "integrity": "sha512-6W5BemziRoqIdAKT+1QjM4bNcJAQ7z7zk073730NHg4cUXh3/rQHHj7pmYxUB9aGhuRhBiUf0pXvIHkRwhQP0Q==" + "integrity": "sha512-6W5BemziRoqIdAKT+1QjM4bNcJAQ7z7zk073730NHg4cUXh3/rQHHj7pmYxUB9aGhuRhBiUf0pXvIHkRwhQP0Q==", + "requires": {} }, "postcss-discard-duplicates": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.3.tgz", - "integrity": "sha512-vPtm1Mf+kp7iAENTG7jI1MN1lk+fBqL5y+qxyi4v3H+lzsXEdfS3dwUZD45KVhgzDEgduur8ycB4hMegyMTeRw==" + "integrity": "sha512-vPtm1Mf+kp7iAENTG7jI1MN1lk+fBqL5y+qxyi4v3H+lzsXEdfS3dwUZD45KVhgzDEgduur8ycB4hMegyMTeRw==", + "requires": {} }, "postcss-discard-empty": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.3.tgz", - "integrity": "sha512-xGJugpaXKakwKI7sSdZjUuN4V3zSzb2Y0LOlmTajFbNinEjTfVs9PFW2lmKBaC/E64WwYppfqLD03P8l9BuueA==" + "integrity": "sha512-xGJugpaXKakwKI7sSdZjUuN4V3zSzb2Y0LOlmTajFbNinEjTfVs9PFW2lmKBaC/E64WwYppfqLD03P8l9BuueA==", + "requires": {} }, "postcss-discard-overridden": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.4.tgz", - "integrity": "sha512-3j9QH0Qh1KkdxwiZOW82cId7zdwXVQv/gRXYDnwx5pBtR1sTkU4cXRK9lp5dSdiM0r0OICO/L8J6sV1/7m0kHg==" + "integrity": "sha512-3j9QH0Qh1KkdxwiZOW82cId7zdwXVQv/gRXYDnwx5pBtR1sTkU4cXRK9lp5dSdiM0r0OICO/L8J6sV1/7m0kHg==", + "requires": {} }, "postcss-flexbugs-fixes": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", - "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==" + "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", + "requires": {} }, "postcss-loader": { "version": "5.3.0", @@ -39661,9 +39756,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -39734,7 +39829,8 @@ "postcss-modules-extract-imports": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "requires": {} }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -39765,7 +39861,8 @@ "postcss-normalize-charset": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.3.tgz", - "integrity": "sha512-iKEplDBco9EfH7sx4ut7R2r/dwTnUqyfACf62Unc9UiyFuI7uUqZZtY+u+qp7g8Qszl/U28HIfcsI3pEABWFfA==" + "integrity": "sha512-iKEplDBco9EfH7sx4ut7R2r/dwTnUqyfACf62Unc9UiyFuI7uUqZZtY+u+qp7g8Qszl/U28HIfcsI3pEABWFfA==", + "requires": {} }, "postcss-normalize-display-values": { "version": "5.0.3", @@ -40866,7 +40963,8 @@ "react-iframe-click": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/react-iframe-click/-/react-iframe-click-2.0.2.tgz", - "integrity": "sha512-E3cn6m50xS6wT66Bu/xqF70Wd8OJTnOtUYANioGUXgdPj7F42ZbJhqTlx0wLJYhze67kMeiPdIfaulfFaKAtDQ==" + "integrity": "sha512-E3cn6m50xS6wT66Bu/xqF70Wd8OJTnOtUYANioGUXgdPj7F42ZbJhqTlx0wLJYhze67kMeiPdIfaulfFaKAtDQ==", + "requires": {} }, "react-is": { "version": "16.13.1", @@ -40904,7 +41002,8 @@ "react-side-effect": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz", - "integrity": "sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==" + "integrity": "sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==", + "requires": {} }, "react-sticky-box": { "version": "1.0.2", @@ -41023,7 +41122,8 @@ "redux-thunk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz", - "integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==" + "integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==", + "requires": {} }, "refractor": { "version": "3.6.0", @@ -41808,9 +41908,9 @@ "integrity": "sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA==" }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" }, "semver-diff": { "version": "3.1.1", @@ -41821,9 +41921,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -41975,9 +42075,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -43604,9 +43704,11 @@ } }, "type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true, + "peer": true }, "type-is": { "version": "1.6.18", @@ -44025,9 +44127,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -44553,9 +44655,9 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==" }, "worker-rpc": { "version": "0.1.1", @@ -44617,7 +44719,8 @@ "ws": { "version": "7.5.7", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==" + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "requires": {} }, "x-is-string": { "version": "0.1.0", diff --git a/site/src/pages/community/developer-guide.mdx b/site/src/pages/community/developer-guide.mdx index d9bd76a6c00c..15fd3d417d80 100644 --- a/site/src/pages/community/developer-guide.mdx +++ b/site/src/pages/community/developer-guide.mdx @@ -437,3 +437,18 @@ our [release notes](https://armeria.dev/release-notes/), e.g. Server.builder() .serviceUnder("/internal/management/", ManagementService.of()); ``` + +## Integrating with Gradle Enterprise + +You may want to integrate your local development environment with [Gradle Enterprise](https://gradle.com/). +By doing so, you may: + +1. Visualize and troubleshoot build issues more easily. +2. Experience faster builds due to build caches. + +Let us know at the [Armeria Discord](/s/discord) channel, and we'll create an account +for you. Afterwards, you may integrate your local environment with the following command: + +```shell +./gradlew provisionGradleEnterpriseAccessKey +``` diff --git a/spring/boot3-autoconfigure/src/test/java/com/linecorp/armeria/internal/spring/ThriftServiceUtilsTest.java b/spring/boot3-autoconfigure/src/test/java/com/linecorp/armeria/internal/spring/ThriftServiceUtilsTest.java index 859ff5f9e64b..780e027a9cdf 100644 --- a/spring/boot3-autoconfigure/src/test/java/com/linecorp/armeria/internal/spring/ThriftServiceUtilsTest.java +++ b/spring/boot3-autoconfigure/src/test/java/com/linecorp/armeria/internal/spring/ThriftServiceUtilsTest.java @@ -22,11 +22,12 @@ import com.google.common.collect.ImmutableSet; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.spring.test.thrift.main.HelloService.AsyncIface; -import com.linecorp.armeria.spring.test.thrift.main.HelloService.Iface; + +import testing.spring.thrift.TestService.AsyncIface; +import testing.spring.thrift.TestService.Iface; class ThriftServiceUtilsTest { - private static final String SERVICE_NAME = "com.linecorp.armeria.spring.test.thrift.main.HelloService"; + private static final String SERVICE_NAME = "testing.spring.thrift.TestService"; private final AsyncIface asyncService = (name, cb) -> cb.onComplete("hello"); private final Iface syncService = name -> "hello"; diff --git a/spring/boot3-autoconfigure/src/test/java/com/linecorp/armeria/spring/ArmeriaAutoConfigurationTest.java b/spring/boot3-autoconfigure/src/test/java/com/linecorp/armeria/spring/ArmeriaAutoConfigurationTest.java index 37a3c197ad5f..c3e4905bb3fa 100644 --- a/spring/boot3-autoconfigure/src/test/java/com/linecorp/armeria/spring/ArmeriaAutoConfigurationTest.java +++ b/spring/boot3-autoconfigure/src/test/java/com/linecorp/armeria/spring/ArmeriaAutoConfigurationTest.java @@ -72,15 +72,15 @@ import com.linecorp.armeria.server.logging.LoggingService; import com.linecorp.armeria.server.thrift.THttpService; import com.linecorp.armeria.spring.ArmeriaAutoConfigurationTest.TestConfiguration; -import com.linecorp.armeria.spring.test.grpc.main.Hello.HelloReply; -import com.linecorp.armeria.spring.test.grpc.main.Hello.HelloRequest; -import com.linecorp.armeria.spring.test.grpc.main.HelloServiceGrpc; -import com.linecorp.armeria.spring.test.grpc.main.HelloServiceGrpc.HelloServiceBlockingStub; -import com.linecorp.armeria.spring.test.grpc.main.HelloServiceGrpc.HelloServiceImplBase; -import com.linecorp.armeria.spring.test.thrift.main.HelloService; -import com.linecorp.armeria.spring.test.thrift.main.HelloService.hello_args; import io.grpc.stub.StreamObserver; +import testing.spring.grpc.Hello.HelloReply; +import testing.spring.grpc.Hello.HelloRequest; +import testing.spring.grpc.TestServiceGrpc; +import testing.spring.grpc.TestServiceGrpc.TestServiceBlockingStub; +import testing.spring.grpc.TestServiceGrpc.TestServiceImplBase; +import testing.spring.thrift.TestService; +import testing.spring.thrift.TestService.hello_args; /** * This uses {@link ArmeriaAutoConfiguration} for integration tests. @@ -124,15 +124,15 @@ public ArmeriaServerConfigurator helloThriftService() { .path("/thrift") .defaultServiceName("helloThriftService") .decorators(LoggingService.newDecorator()) - .build(THttpService.of((HelloService.Iface) name -> "hello " + name)); + .build(THttpService.of((TestService.Iface) name -> "hello " + name)); } @Bean public DocServiceConfigurator helloThriftServiceExamples() { return dsb -> dsb.exampleRequests(ImmutableList.of(new hello_args("nameVal"))) - .exampleHeaders(HelloService.class, + .exampleHeaders(TestService.class, HttpHeaders.of("x-additional-header", "headerVal")) - .exampleHeaders(HelloService.class, "hello", + .exampleHeaders(TestService.class, "hello", HttpHeaders.of("x-additional-header", "headerVal")); } @@ -150,11 +150,11 @@ public ArmeriaServerConfigurator helloGrpcService() { @Bean public DocServiceConfigurator helloGrpcServiceExamples() { - return dsb -> dsb.exampleRequests(HelloServiceGrpc.SERVICE_NAME, "Hello", + return dsb -> dsb.exampleRequests(TestServiceGrpc.SERVICE_NAME, "Hello", HelloRequest.newBuilder().setName("Armeria").build()) - .exampleHeaders(HelloServiceGrpc.SERVICE_NAME, + .exampleHeaders(TestServiceGrpc.SERVICE_NAME, HttpHeaders.of("x-additional-header", "headerVal")) - .exampleHeaders(HelloServiceGrpc.SERVICE_NAME, "Hello", + .exampleHeaders(TestServiceGrpc.SERVICE_NAME, "Hello", HttpHeaders.of("x-additional-header", "headerVal")); } @@ -229,7 +229,7 @@ public JsonNode post(@RequestObject JsonNode jsonNode) { } } - public static class HelloGrpcService extends HelloServiceImplBase { + public static class HelloGrpcService extends TestServiceImplBase { @Override public void hello(HelloRequest req, StreamObserver responseObserver) { final HelloReply reply = HelloReply.newBuilder() @@ -302,8 +302,8 @@ public void testAnnotatedService() throws Exception { @Test public void testThriftService() throws Exception { - final HelloService.Iface client = ThriftClients.newClient(newUrl("h1c") + "/thrift", - HelloService.Iface.class); + final TestService.Iface client = ThriftClients.newClient(newUrl("h1c") + "/thrift", + TestService.Iface.class); assertThat(client.hello("world")).isEqualTo("hello world"); final WebClient webClient = WebClient.of(newUrl("h1c")); @@ -312,7 +312,7 @@ public void testThriftService() throws Exception { final AggregatedHttpResponse res = response.aggregate().get(); assertThat(res.status()).isEqualTo(HttpStatus.OK); assertThatJson(res.contentUtf8()).node("services[2].name").isStringEqualTo( - "com.linecorp.armeria.spring.test.thrift.main.HelloService"); + "testing.spring.thrift.TestService"); assertThatJson(res.contentUtf8()) .node("services[2].exampleHeaders[0].x-additional-header").isStringEqualTo("headerVal"); assertThatJson(res.contentUtf8()) @@ -322,8 +322,8 @@ public void testThriftService() throws Exception { @Test public void testGrpcService() throws Exception { - final HelloServiceBlockingStub client = GrpcClients.newClient(newUrl("h2c") + '/', - HelloServiceBlockingStub.class); + final TestServiceBlockingStub client = GrpcClients.newClient(newUrl("h2c") + '/', + TestServiceBlockingStub.class); final HelloRequest request = HelloRequest.newBuilder() .setName("world") .build(); @@ -335,7 +335,7 @@ public void testGrpcService() throws Exception { final AggregatedHttpResponse res = response.aggregate().get(); assertThat(res.status()).isEqualTo(HttpStatus.OK); assertThatJson(res.contentUtf8()).node("services[1].name").isStringEqualTo( - "com.linecorp.armeria.spring.test.grpc.main.HelloService"); + "testing.spring.grpc.TestService"); assertThatJson(res.contentUtf8()) .node("services[1].exampleHeaders[0].x-additional-header").isStringEqualTo("headerVal"); assertThatJson(res.contentUtf8()) @@ -353,7 +353,7 @@ public void testPortConfiguration() { @Test public void testMetrics() { - assertThat(GrpcClients.newClient(newUrl("h2c") + '/', HelloServiceBlockingStub.class) + assertThat(GrpcClients.newClient(newUrl("h2c") + '/', TestServiceBlockingStub.class) .hello(HelloRequest.getDefaultInstance()) .getMessage()).isNotNull(); diff --git a/spring/boot3-autoconfigure/src/test/proto/hello.proto b/spring/boot3-autoconfigure/src/test/proto/hello.proto index 8c6e3216433c..4f57a55545ef 100644 --- a/spring/boot3-autoconfigure/src/test/proto/hello.proto +++ b/spring/boot3-autoconfigure/src/test/proto/hello.proto @@ -1,9 +1,9 @@ syntax = "proto3"; -package com.linecorp.armeria.spring.test.grpc.main; -option java_package = "com.linecorp.armeria.spring.test.grpc.main"; +package testing.spring.grpc; +option java_package = "testing.spring.grpc"; -service HelloService { +service TestService { rpc Hello (HelloRequest) returns (HelloReply) { } } diff --git a/spring/boot3-autoconfigure/src/test/thrift/main.thrift b/spring/boot3-autoconfigure/src/test/thrift/main.thrift index 2e8febc6fd5b..657bfde954df 100644 --- a/spring/boot3-autoconfigure/src/test/thrift/main.thrift +++ b/spring/boot3-autoconfigure/src/test/thrift/main.thrift @@ -1,6 +1,6 @@ -namespace java com.linecorp.armeria.spring.test.thrift.main +namespace java testing.spring.thrift // Tests a non-oneway method with a return value. -service HelloService { +service TestService { string hello(1:string name) } diff --git a/spring/boot3-webflux-autoconfigure/src/test/java/com/linecorp/armeria/spring/web/reactive/ArmeriaWebClientTest.java b/spring/boot3-webflux-autoconfigure/src/test/java/com/linecorp/armeria/spring/web/reactive/ArmeriaWebClientTest.java index 448fae793e12..eec6b1f36dd1 100644 --- a/spring/boot3-webflux-autoconfigure/src/test/java/com/linecorp/armeria/spring/web/reactive/ArmeriaWebClientTest.java +++ b/spring/boot3-webflux-autoconfigure/src/test/java/com/linecorp/armeria/spring/web/reactive/ArmeriaWebClientTest.java @@ -81,7 +81,7 @@ void conflict() { @GetMapping("/resource") ClassPathResource resource() { ensureInContextAwareEventLoop(); - return new ClassPathResource("largeTextFile.txt", getClass()); + return new ClassPathResource("/testing/webflux/largeTextFile.txt", getClass()); } @PostMapping("/birthday") diff --git a/spring/boot3-webflux-autoconfigure/src/test/resources/config/application-test_armeria_ssl_custom_key_over_spring.yml b/spring/boot3-webflux-autoconfigure/src/test/resources/config/application-test_armeria_ssl_custom_key_over_spring.yml index a93ccac75095..54b659af787d 100644 --- a/spring/boot3-webflux-autoconfigure/src/test/resources/config/application-test_armeria_ssl_custom_key_over_spring.yml +++ b/spring/boot3-webflux-autoconfigure/src/test/resources/config/application-test_armeria_ssl_custom_key_over_spring.yml @@ -1,7 +1,7 @@ server: ssl: enabled: true - key-store: classpath:keystore_with_two_keys.pkcs12 + key-store: classpath:testing/webflux/keystore_with_two_keys.pkcs12 key-store-type: PKCS12 key-store-password: mystorepass key-alias: key2 @@ -9,7 +9,7 @@ server: armeria: ssl: enabled: true - key-store: classpath:keystore_with_two_keys.pkcs12 + key-store: classpath:testing/webflux/keystore_with_two_keys.pkcs12 key-store-type: PKCS12 key-store-password: mystorepass key-alias: key1 diff --git a/spring/boot3-webflux-autoconfigure/src/test/resources/config/application-test_custom_key_alias_1.yml b/spring/boot3-webflux-autoconfigure/src/test/resources/config/application-test_custom_key_alias_1.yml index 3d0c1aa3ebd2..0a8740fed1e7 100644 --- a/spring/boot3-webflux-autoconfigure/src/test/resources/config/application-test_custom_key_alias_1.yml +++ b/spring/boot3-webflux-autoconfigure/src/test/resources/config/application-test_custom_key_alias_1.yml @@ -2,7 +2,7 @@ server: address: 127.0.0.1 ssl: enabled: true - key-store: classpath:keystore_with_two_keys.pkcs12 + key-store: classpath:testing/webflux/keystore_with_two_keys.pkcs12 key-store-type: PKCS12 key-store-password: mystorepass key-alias: key1 diff --git a/spring/boot3-webflux-autoconfigure/src/test/resources/config/application-test_custom_key_alias_2.yml b/spring/boot3-webflux-autoconfigure/src/test/resources/config/application-test_custom_key_alias_2.yml index dc31a2bc9038..ea9e1f6bcd91 100644 --- a/spring/boot3-webflux-autoconfigure/src/test/resources/config/application-test_custom_key_alias_2.yml +++ b/spring/boot3-webflux-autoconfigure/src/test/resources/config/application-test_custom_key_alias_2.yml @@ -2,7 +2,7 @@ server: address: 127.0.0.1 ssl: enabled: true - key-store: classpath:keystore_with_two_keys.pkcs12 + key-store: classpath:testing/webflux/keystore_with_two_keys.pkcs12 key-store-type: PKCS12 key-store-password: mystorepass key-alias: key2 diff --git a/spring/boot3-webflux-autoconfigure/src/test/resources/keystore_with_two_keys.pkcs12 b/spring/boot3-webflux-autoconfigure/src/test/resources/testing/webflux/keystore_with_two_keys.pkcs12 similarity index 100% rename from spring/boot3-webflux-autoconfigure/src/test/resources/keystore_with_two_keys.pkcs12 rename to spring/boot3-webflux-autoconfigure/src/test/resources/testing/webflux/keystore_with_two_keys.pkcs12 diff --git a/spring/boot3-webflux-autoconfigure/src/test/resources/com/linecorp/armeria/spring/web/reactive/largeTextFile.txt b/spring/boot3-webflux-autoconfigure/src/test/resources/testing/webflux/largeTextFile.txt similarity index 100% rename from spring/boot3-webflux-autoconfigure/src/test/resources/com/linecorp/armeria/spring/web/reactive/largeTextFile.txt rename to spring/boot3-webflux-autoconfigure/src/test/resources/testing/webflux/largeTextFile.txt diff --git a/testing-internal/src/main/java/com/linecorp/armeria/internal/testing/TemporaryFolder.java b/testing-internal/src/main/java/com/linecorp/armeria/internal/testing/TemporaryFolder.java index 2459ffdfc2fe..9a348afc4e9e 100644 --- a/testing-internal/src/main/java/com/linecorp/armeria/internal/testing/TemporaryFolder.java +++ b/testing-internal/src/main/java/com/linecorp/armeria/internal/testing/TemporaryFolder.java @@ -16,13 +16,15 @@ package com.linecorp.armeria.internal.testing; -import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Comparator; import java.util.stream.Stream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.linecorp.armeria.common.annotation.Nullable; /** @@ -30,6 +32,8 @@ */ public final class TemporaryFolder { + private static final Logger logger = LoggerFactory.getLogger(TemporaryFolder.class); + // Forked from CentralDogma 0.44.4 // https://github.com/line/centraldogma/blob/4dbc351addc92b509f77be784605b88c3d1b21f2/testing/common/src/main/java/com/linecorp/centraldogma/testing/internal/TemporaryFolder.java @Nullable @@ -75,7 +79,13 @@ public void delete() throws IOException { try (Stream walk = Files.walk(root)) { walk.sorted(Comparator.reverseOrder()) .map(Path::toFile) - .forEach(File::delete); + .forEach(file -> { + try { + file.delete(); + } catch (Exception e) { + logger.warn("Unexpected exception while deleting file: {}", file.getName(), e); + } + }); } root = null; diff --git a/thrift/thrift0.12/src/test/thrift/RpcDebugTest.thrift b/thrift/thrift0.12/src/test/thrift/RpcDebugTest.thrift index 3a9ff9ba2e6f..1218198cb9b8 100644 --- a/thrift/thrift0.12/src/test/thrift/RpcDebugTest.thrift +++ b/thrift/thrift0.12/src/test/thrift/RpcDebugTest.thrift @@ -1,4 +1,4 @@ -namespace java com.linecorp.armeria.common.thrift.text +namespace java testing.thrift.debug struct RequestDetails { 1: string detailsArg1, diff --git a/thrift/thrift0.12/src/test/thrift/TTextProtocolTest.thrift b/thrift/thrift0.12/src/test/thrift/TTextProtocolTest.thrift index 758fa28d6759..fcd6d1b62d37 100644 --- a/thrift/thrift0.12/src/test/thrift/TTextProtocolTest.thrift +++ b/thrift/thrift0.12/src/test/thrift/TTextProtocolTest.thrift @@ -20,7 +20,7 @@ * Authors: * "Alex Roetter" */ -namespace java com.linecorp.armeria.common.thrift.text +namespace java testing.thrift.text enum Letter { ALPHA = 1, diff --git a/thrift/thrift0.12/src/test/thrift/TreeStructTest.thrift b/thrift/thrift0.12/src/test/thrift/TreeStructTest.thrift index b7c9c5d9e75f..8d5ad45fc07c 100644 --- a/thrift/thrift0.12/src/test/thrift/TreeStructTest.thrift +++ b/thrift/thrift0.12/src/test/thrift/TreeStructTest.thrift @@ -1,4 +1,4 @@ -namespace java com.linecorp.armeria.service.test.thrift.tree +namespace java testing.thrift.tree struct IntLeaf { 1: i32 value diff --git a/thrift/thrift0.12/src/test/thrift/cassandra.thrift b/thrift/thrift0.12/src/test/thrift/cassandra.thrift index 0c0b3b671f4b..1dde15e503f5 100644 --- a/thrift/thrift0.12/src/test/thrift/cassandra.thrift +++ b/thrift/thrift0.12/src/test/thrift/cassandra.thrift @@ -23,7 +23,7 @@ # Interface definition for Cassandra Service # -namespace java com.linecorp.armeria.service.test.thrift.cassandra +namespace java testing.thrift.cassandra # The API version (NOT the product version), composed as a dot delimited # string with major, minor, and patch level components. diff --git a/thrift/thrift0.12/src/test/thrift/hbase.thrift b/thrift/thrift0.12/src/test/thrift/hbase.thrift index ddb41fd8607f..13483f40775c 100644 --- a/thrift/thrift0.12/src/test/thrift/hbase.thrift +++ b/thrift/thrift0.12/src/test/thrift/hbase.thrift @@ -30,7 +30,7 @@ // used to generate the *.java files checked into the Hbase project. // ---------------------------------------------------------------- -namespace java com.linecorp.armeria.service.test.thrift.hbase +namespace java testing.thrift.hbase // // Types diff --git a/thrift/thrift0.12/src/test/thrift/main.thrift b/thrift/thrift0.12/src/test/thrift/main.thrift index 8f42908f01e5..4f3c52f35696 100644 --- a/thrift/thrift0.12/src/test/thrift/main.thrift +++ b/thrift/thrift0.12/src/test/thrift/main.thrift @@ -1,4 +1,4 @@ -namespace java com.linecorp.armeria.service.test.thrift.main +namespace java testing.thrift.main // Tests a non-oneway method with a return value. service HelloService { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ClientRequestContextPushedOnCallbackTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ClientRequestContextPushedOnCallbackTest.java index 93fd32cc9221..f2658b23a314 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ClientRequestContextPushedOnCallbackTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ClientRequestContextPushedOnCallbackTest.java @@ -31,10 +31,11 @@ import com.linecorp.armeria.internal.testing.AnticipatedException; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.HelloService; -import com.linecorp.armeria.service.test.thrift.main.HelloService.AsyncIface; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.thrift.main.HelloService; +import testing.thrift.main.HelloService.AsyncIface; + class ClientRequestContextPushedOnCallbackTest { @RegisterExtension diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/THttpClientBadSeqIdTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/THttpClientBadSeqIdTest.java index eb6aee5638ab..46dacbb1d9db 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/THttpClientBadSeqIdTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/THttpClientBadSeqIdTest.java @@ -32,7 +32,8 @@ import com.linecorp.armeria.common.RpcResponse; import com.linecorp.armeria.common.util.Exceptions; -import com.linecorp.armeria.service.test.thrift.main.HelloService; + +import testing.thrift.main.HelloService; public class THttpClientBadSeqIdTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientAdditionalAuthorityTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientAdditionalAuthorityTest.java index a430482af10e..0e31cab05e1d 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientAdditionalAuthorityTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientAdditionalAuthorityTest.java @@ -29,9 +29,10 @@ import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.HelloService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.thrift.main.HelloService; + class ThriftClientAdditionalAuthorityTest { @RegisterExtension diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientBuilderTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientBuilderTest.java index 3a00a3693605..0f0575ed9147 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientBuilderTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientBuilderTest.java @@ -37,7 +37,8 @@ import com.linecorp.armeria.common.stream.AbortedStreamException; import com.linecorp.armeria.common.thrift.ThriftSerializationFormats; import com.linecorp.armeria.internal.testing.AnticipatedException; -import com.linecorp.armeria.service.test.thrift.main.HelloService; + +import testing.thrift.main.HelloService; class ThriftClientBuilderTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientExchangeTypeTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientExchangeTypeTest.java index 6f6a24f00fd3..a060415d7b64 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientExchangeTypeTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientExchangeTypeTest.java @@ -29,9 +29,10 @@ import com.linecorp.armeria.common.thrift.ThriftSerializationFormats; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.HelloService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.thrift.main.HelloService; + class ThriftClientExchangeTypeTest { @RegisterExtension static ServerExtension server = new ServerExtension() { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientLengthLimitTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientLengthLimitTest.java index 67239de61881..acf05af1481e 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientLengthLimitTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientLengthLimitTest.java @@ -55,12 +55,12 @@ import com.linecorp.armeria.internal.common.thrift.TByteBufTransport; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.HelloService; -import com.linecorp.armeria.service.test.thrift.main.Name; -import com.linecorp.armeria.service.test.thrift.main.NameSortService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.netty.buffer.ByteBuf; +import testing.thrift.main.HelloService; +import testing.thrift.main.Name; +import testing.thrift.main.NameSortService; class ThriftClientLengthLimitTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientRequestContextInitFailureTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientRequestContextInitFailureTest.java index 11958290baa1..b31131129dfb 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientRequestContextInitFailureTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftClientRequestContextInitFailureTest.java @@ -35,7 +35,8 @@ import com.linecorp.armeria.client.endpoint.EndpointGroup; import com.linecorp.armeria.common.logging.RequestLog; import com.linecorp.armeria.common.util.SafeCloseable; -import com.linecorp.armeria.service.test.thrift.main.HelloService; + +import testing.thrift.main.HelloService; class ThriftClientRequestContextInitFailureTest { @Test diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftOverHttpClientTServletIntegrationTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftOverHttpClientTServletIntegrationTest.java index e796c62ade40..1e982bf5ed60 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftOverHttpClientTServletIntegrationTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftOverHttpClientTServletIntegrationTest.java @@ -68,8 +68,9 @@ import com.linecorp.armeria.common.SessionProtocol; import com.linecorp.armeria.common.logging.RequestLogProperty; import com.linecorp.armeria.common.thrift.ThriftProtocolFactories; -import com.linecorp.armeria.service.test.thrift.main.HelloService; -import com.linecorp.armeria.service.test.thrift.main.HelloService.Processor; + +import testing.thrift.main.HelloService; +import testing.thrift.main.HelloService.Processor; /** * Test to verify interaction between armeria client and official thrift diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftOverHttpClientTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftOverHttpClientTest.java index 375f784424a7..5608e463fd44 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftOverHttpClientTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/client/thrift/ThriftOverHttpClientTest.java @@ -86,17 +86,17 @@ import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.server.logging.LoggingService; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.BinaryService; -import com.linecorp.armeria.service.test.thrift.main.DevNullService; -import com.linecorp.armeria.service.test.thrift.main.FileService; -import com.linecorp.armeria.service.test.thrift.main.FileServiceException; -import com.linecorp.armeria.service.test.thrift.main.HeaderService; -import com.linecorp.armeria.service.test.thrift.main.HelloService; -import com.linecorp.armeria.service.test.thrift.main.OnewayHelloService; -import com.linecorp.armeria.service.test.thrift.main.TimeService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.netty.util.AsciiString; +import testing.thrift.main.BinaryService; +import testing.thrift.main.DevNullService; +import testing.thrift.main.FileService; +import testing.thrift.main.FileServiceException; +import testing.thrift.main.HeaderService; +import testing.thrift.main.HelloService; +import testing.thrift.main.OnewayHelloService; +import testing.thrift.main.TimeService; @SuppressWarnings("unchecked") public class ThriftOverHttpClientTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/common/thrift/ThriftJacksonTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/common/thrift/ThriftJacksonTest.java index 4919abf594dc..ccf481f55d68 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/common/thrift/ThriftJacksonTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/common/thrift/ThriftJacksonTest.java @@ -26,8 +26,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; -import com.linecorp.armeria.service.test.thrift.main.HelloService.hello_args; -import com.linecorp.armeria.service.test.thrift.main.HelloService.hello_result; +import testing.thrift.main.HelloService.hello_args; +import testing.thrift.main.HelloService.hello_result; class ThriftJacksonTest { private static final ObjectMapper defaultMapper = new ObjectMapper(); diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/common/thrift/text/TTextProtocolTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/common/thrift/text/TTextProtocolTest.java index 922c98c654ef..6f3481c99ca6 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/common/thrift/text/TTextProtocolTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/common/thrift/text/TTextProtocolTest.java @@ -58,10 +58,19 @@ import com.google.common.collect.ImmutableSet; import com.google.common.io.Resources; -import com.linecorp.armeria.common.thrift.text.RpcDebugService.doDebug_args; -import com.linecorp.armeria.common.thrift.text.RpcDebugService.doDebug_result; import com.linecorp.armeria.internal.common.thrift.TApplicationExceptions; +import testing.thrift.debug.RpcDebugService; +import testing.thrift.debug.RpcDebugService.doDebug_args; +import testing.thrift.debug.RpcDebugService.doDebug_result; +import testing.thrift.text.Letter; +import testing.thrift.text.Number; +import testing.thrift.text.NumberSub; +import testing.thrift.text.Sub; +import testing.thrift.text.SubSub; +import testing.thrift.text.TTextProtocolTestMsg; +import testing.thrift.text.TestUnion; + /** * Tests the TTextProtocol. * @@ -487,7 +496,7 @@ private static String readFile(String filename) throws IOException { return Resources.toString( Resources.getResource( TTextProtocolTest.class, - "/com/linecorp/armeria/common/thrift/text/" + filename), + "/testing/thrift/text/" + filename), Charsets.UTF_8 ); } diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/common/thrift/text/ThriftMessageClassFinderTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/common/thrift/text/ThriftMessageClassFinderTest.java index dffe21844d4c..d05786bcb5a7 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/common/thrift/text/ThriftMessageClassFinderTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/common/thrift/text/ThriftMessageClassFinderTest.java @@ -25,9 +25,10 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import com.linecorp.armeria.common.thrift.text.RpcDebugService.doDebug_args; import com.linecorp.armeria.common.util.SystemInfo; +import testing.thrift.debug.RpcDebugService.doDebug_args; + class ThriftMessageClassFinderTest { @ParameterizedTest(name = "testThriftMessageClassFinder {index}: finder={0}") @MethodSource("testThriftMessageClassParameters") diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/client/thrift/THttpClientUnwrapTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/client/thrift/THttpClientUnwrapTest.java index e15665ff535c..300eeee4097c 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/client/thrift/THttpClientUnwrapTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/client/thrift/THttpClientUnwrapTest.java @@ -28,7 +28,8 @@ import com.linecorp.armeria.client.thrift.ThriftClients; import com.linecorp.armeria.common.RpcResponse; import com.linecorp.armeria.common.util.Unwrappable; -import com.linecorp.armeria.service.test.thrift.main.HelloService; + +import testing.thrift.main.HelloService; class THttpClientUnwrapTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftClassLoadingTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftClassLoadingTest.java index 69a73db85e27..a238bae9a815 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftClassLoadingTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftClassLoadingTest.java @@ -29,7 +29,7 @@ import net.bytebuddy.dynamic.ClassFileLocator.ForClassLoader; -import com.linecorp.armeria.service.test.thrift.main.FooStruct; +import testing.thrift.main.FooStruct; class ThriftClassLoadingTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDescriptiveTypeInfoProviderTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDescriptiveTypeInfoProviderTest.java index 6748948a84a7..db8f8d2850fc 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDescriptiveTypeInfoProviderTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDescriptiveTypeInfoProviderTest.java @@ -40,10 +40,11 @@ import com.linecorp.armeria.server.docs.FieldRequirement; import com.linecorp.armeria.server.docs.StructInfo; import com.linecorp.armeria.server.docs.TypeSignature; -import com.linecorp.armeria.service.test.thrift.main.FooEnum; -import com.linecorp.armeria.service.test.thrift.main.FooServiceException; -import com.linecorp.armeria.service.test.thrift.main.FooStruct; -import com.linecorp.armeria.service.test.thrift.main.FooUnion; + +import testing.thrift.main.FooEnum; +import testing.thrift.main.FooServiceException; +import testing.thrift.main.FooStruct; +import testing.thrift.main.FooUnion; class ThriftDescriptiveTypeInfoProviderTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServicePluginTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServicePluginTest.java index 5ba94781d635..593195058ccf 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServicePluginTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServicePluginTest.java @@ -44,12 +44,13 @@ import com.linecorp.armeria.server.docs.ServiceSpecification; import com.linecorp.armeria.server.docs.TypeSignature; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.FooEnum; -import com.linecorp.armeria.service.test.thrift.main.FooService; -import com.linecorp.armeria.service.test.thrift.main.FooStruct; -import com.linecorp.armeria.service.test.thrift.main.HelloService; -import com.linecorp.armeria.service.test.thrift.main.HelloService.AsyncIface; -import com.linecorp.armeria.service.test.thrift.main.TypeDefService; + +import testing.thrift.main.FooEnum; +import testing.thrift.main.FooService; +import testing.thrift.main.FooStruct; +import testing.thrift.main.HelloService; +import testing.thrift.main.HelloService.AsyncIface; +import testing.thrift.main.TypeDefService; class ThriftDocServicePluginTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServiceTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServiceTest.java index 351f46e8764c..ee410bafe1b0 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServiceTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServiceTest.java @@ -55,15 +55,16 @@ import com.linecorp.armeria.server.docs.EndpointInfo; import com.linecorp.armeria.server.docs.ServiceSpecification; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.cassandra.Cassandra; -import com.linecorp.armeria.service.test.thrift.hbase.Hbase; -import com.linecorp.armeria.service.test.thrift.main.FooService; -import com.linecorp.armeria.service.test.thrift.main.HelloService; -import com.linecorp.armeria.service.test.thrift.main.HelloService.hello_args; -import com.linecorp.armeria.service.test.thrift.main.OnewayHelloService; -import com.linecorp.armeria.service.test.thrift.main.SleepService; import com.linecorp.armeria.testing.junit4.server.ServerRule; +import testing.thrift.cassandra.Cassandra; +import testing.thrift.hbase.Hbase; +import testing.thrift.main.FooService; +import testing.thrift.main.HelloService; +import testing.thrift.main.HelloService.hello_args; +import testing.thrift.main.OnewayHelloService; +import testing.thrift.main.SleepService; + public class ThriftDocServiceTest { private static final HelloService.AsyncIface HELLO_SERVICE_HANDLER = diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocStringExtractorTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocStringExtractorTest.java index 73af97dfe3c3..f93ecdc20e3d 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocStringExtractorTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocStringExtractorTest.java @@ -52,10 +52,10 @@ void testCassandraJson() throws Exception { "META-INF/armeria/thrift/ThriftTest.json", Resources.toByteArray(Resources.getResource( "META-INF/armeria/thrift/cassandra.json")))); - assertThat(docStrings.get("com.linecorp.armeria.service.test.thrift.cassandra.Compression")) + assertThat(docStrings.get("testing.thrift.cassandra.Compression")) .isEqualTo("CQL query compression"); assertThat( - docStrings.get("com.linecorp.armeria.service.test.thrift.cassandra.CqlResultType")).isNull(); + docStrings.get("testing.thrift.cassandra.CqlResultType")).isNull(); } @Test @@ -63,7 +63,7 @@ void testGetAllDocStrings() throws IOException { final Map docStrings = extractor.getAllDocStrings(getClass().getClassLoader()); assertThat(docStrings.containsKey("thrift.test.Numberz")).isTrue(); assertThat( - docStrings.containsKey("com.linecorp.armeria.service.test.thrift.cassandra.Compression")) + docStrings.containsKey("testing.thrift.cassandra.Compression")) .isTrue(); } } diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/client/endpoint/StaticEndpointGroupIntegrationTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/client/endpoint/StaticEndpointGroupIntegrationTest.java index 4799883478a4..25f29da999af 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/client/endpoint/StaticEndpointGroupIntegrationTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/client/endpoint/StaticEndpointGroupIntegrationTest.java @@ -27,9 +27,10 @@ import com.linecorp.armeria.client.thrift.ThriftClients; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.HelloService; import com.linecorp.armeria.testing.junit4.server.ServerRule; +import testing.thrift.main.HelloService; + public class StaticEndpointGroupIntegrationTest { @Rule public final TestName name = new TestName(); diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/client/retry/RetryingRpcClientTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/client/retry/RetryingRpcClientTest.java index cc9db39c487b..ee42c1708d78 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/client/retry/RetryingRpcClientTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/client/retry/RetryingRpcClientTest.java @@ -55,10 +55,11 @@ import com.linecorp.armeria.common.util.UnmodifiableFuture; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.DevNullService; -import com.linecorp.armeria.service.test.thrift.main.HelloService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.thrift.main.DevNullService; +import testing.thrift.main.HelloService; + class RetryingRpcClientTest { private static final RetryRuleWithContent retryAlways = diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/client/retry/RetryingRpcClientWithEmptyEndpointGroupTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/client/retry/RetryingRpcClientWithEmptyEndpointGroupTest.java index 171cbf844353..1cee9ea03d5f 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/client/retry/RetryingRpcClientWithEmptyEndpointGroupTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/client/retry/RetryingRpcClientWithEmptyEndpointGroupTest.java @@ -41,9 +41,10 @@ import com.linecorp.armeria.internal.testing.CountDownEmptyEndpointStrategy; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.HelloService.Iface; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.thrift.main.HelloService.Iface; + class RetryingRpcClientWithEmptyEndpointGroupTest { private static final String CUSTOM_HEADER = "custom-header"; diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/metric/DropwizardMetricsIntegrationTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/metric/DropwizardMetricsIntegrationTest.java index cfe307ed634c..cbd8908c8852 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/metric/DropwizardMetricsIntegrationTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/metric/DropwizardMetricsIntegrationTest.java @@ -38,10 +38,10 @@ import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.metric.MetricCollectingService; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.HelloService.Iface; import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.micrometer.core.instrument.dropwizard.DropwizardMeterRegistry; +import testing.thrift.main.HelloService.Iface; class DropwizardMetricsIntegrationTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/metric/PrometheusMetricsIntegrationTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/metric/PrometheusMetricsIntegrationTest.java index fcc1f9a54bd0..5e3cc5ba597d 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/metric/PrometheusMetricsIntegrationTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/metric/PrometheusMetricsIntegrationTest.java @@ -54,12 +54,12 @@ import com.linecorp.armeria.server.metric.MetricCollectingService; import com.linecorp.armeria.server.metric.PrometheusExpositionService; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.HelloService.Iface; import com.linecorp.armeria.testing.junit4.server.ServerRule; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.prometheus.PrometheusMeterRegistry; import io.prometheus.client.CollectorRegistry; +import testing.thrift.main.HelloService.Iface; public class PrometheusMetricsIntegrationTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/server/GracefulShutdownIntegrationTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/server/GracefulShutdownIntegrationTest.java index acc8382499f6..ae7972872072 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/server/GracefulShutdownIntegrationTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/server/GracefulShutdownIntegrationTest.java @@ -46,10 +46,11 @@ import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.server.logging.AccessLogWriter; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.SleepService; -import com.linecorp.armeria.service.test.thrift.main.SleepService.AsyncIface; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.thrift.main.SleepService; +import testing.thrift.main.SleepService.AsyncIface; + @FlakyTest class GracefulShutdownIntegrationTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/TMultiplexedProtocolIntegrationTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/TMultiplexedProtocolIntegrationTest.java index 3643a3603b93..3352ec063826 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/TMultiplexedProtocolIntegrationTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/TMultiplexedProtocolIntegrationTest.java @@ -34,9 +34,10 @@ import com.linecorp.armeria.common.logging.RequestLogProperty; import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.HelloService.Iface; import com.linecorp.armeria.testing.junit4.server.ServerRule; +import testing.thrift.main.HelloService.Iface; + /** * Ensures TMultiplexedProtocol works. */ diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThriftDynamicTimeoutTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThriftDynamicTimeoutTest.java index e4daa337f0dc..3d89fa821744 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThriftDynamicTimeoutTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThriftDynamicTimeoutTest.java @@ -44,9 +44,10 @@ import com.linecorp.armeria.server.SimpleDecoratingRpcService; import com.linecorp.armeria.server.thrift.THttpService; import com.linecorp.armeria.server.thrift.ThriftCallService; -import com.linecorp.armeria.service.test.thrift.main.SleepService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.thrift.main.SleepService; + /** * Tests if Armeria decorators can alter the request/response timeout specified in Thrift call parameters * and disable the request/response timeout dynamically. diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThriftHttpErrorResponseTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThriftHttpErrorResponseTest.java index 303379842ebe..ecdbdd6b3f65 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThriftHttpErrorResponseTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThriftHttpErrorResponseTest.java @@ -36,10 +36,11 @@ import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.HelloService; -import com.linecorp.armeria.service.test.thrift.main.HelloService.Iface; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.thrift.main.HelloService; +import testing.thrift.main.HelloService.Iface; + /** * Tests if Armeria decorators can alter the request/response timeout specified in Thrift call parameters. */ diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThriftHttpHeaderTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThriftHttpHeaderTest.java index 65f4f5efb2cb..cf2294512c16 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThriftHttpHeaderTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThriftHttpHeaderTest.java @@ -37,10 +37,11 @@ import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.HelloService; -import com.linecorp.armeria.service.test.thrift.main.HelloService.Iface; import com.linecorp.armeria.testing.junit4.server.ServerRule; +import testing.thrift.main.HelloService; +import testing.thrift.main.HelloService.Iface; + /** * Tests if Armeria decorators can alter the request/response timeout specified in Thrift call parameters. */ diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThrottlingRpcServiceTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThrottlingRpcServiceTest.java index 81985d20e574..d0f3c15fcd08 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThrottlingRpcServiceTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/it/thrift/ThrottlingRpcServiceTest.java @@ -38,9 +38,10 @@ import com.linecorp.armeria.server.thrift.THttpService; import com.linecorp.armeria.server.thrift.ThriftCallService; import com.linecorp.armeria.server.throttling.ThrottlingRpcService; -import com.linecorp.armeria.service.test.thrift.main.HelloService; import com.linecorp.armeria.testing.junit4.server.ServerRule; +import testing.thrift.main.HelloService; + public class ThrottlingRpcServiceTest { @Rule diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/AbstractThriftOverHttpTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/AbstractThriftOverHttpTest.java index bf6e88daaddb..107bced47d08 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/AbstractThriftOverHttpTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/AbstractThriftOverHttpTest.java @@ -56,10 +56,11 @@ import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.server.SimpleDecoratingHttpService; import com.linecorp.armeria.server.logging.LoggingService; -import com.linecorp.armeria.service.test.thrift.main.HelloService; -import com.linecorp.armeria.service.test.thrift.main.HelloService.AsyncIface; -import com.linecorp.armeria.service.test.thrift.main.OnewayHelloService; -import com.linecorp.armeria.service.test.thrift.main.SleepService; + +import testing.thrift.main.HelloService; +import testing.thrift.main.HelloService.AsyncIface; +import testing.thrift.main.OnewayHelloService; +import testing.thrift.main.SleepService; public abstract class AbstractThriftOverHttpTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/THttpClientTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/THttpClientTest.java index 7d1b1b7ca7a0..e3903108bad5 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/THttpClientTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/THttpClientTest.java @@ -29,7 +29,8 @@ import com.linecorp.armeria.server.ServiceConfig; import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.server.SimpleDecoratingRpcService; -import com.linecorp.armeria.service.test.thrift.main.HelloService.AsyncIface; + +import testing.thrift.main.HelloService.AsyncIface; class THttpClientTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/THttpServiceBuilderTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/THttpServiceBuilderTest.java index 3577d0813507..6658373d1422 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/THttpServiceBuilderTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/THttpServiceBuilderTest.java @@ -36,12 +36,13 @@ import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.server.SimpleDecoratingRpcService; -import com.linecorp.armeria.service.test.thrift.main.FooService; -import com.linecorp.armeria.service.test.thrift.main.FooService.AsyncIface; -import com.linecorp.armeria.service.test.thrift.main.FooServiceException; -import com.linecorp.armeria.service.test.thrift.main.HelloService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.thrift.main.FooService; +import testing.thrift.main.FooService.AsyncIface; +import testing.thrift.main.FooServiceException; +import testing.thrift.main.HelloService; + class THttpServiceBuilderTest { @RegisterExtension diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftOverHttp1Test.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftOverHttp1Test.java index 819168b66331..1783c37fddaa 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftOverHttp1Test.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftOverHttp1Test.java @@ -40,9 +40,9 @@ import com.linecorp.armeria.common.HttpHeaders; import com.linecorp.armeria.common.thrift.ThriftProtocolFactories; -import com.linecorp.armeria.service.test.thrift.main.SleepService; import io.netty.util.AsciiString; +import testing.thrift.main.SleepService; public class ThriftOverHttp1Test extends AbstractThriftOverHttpTest { @Override diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftRequiredFieldVerboseTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftRequiredFieldVerboseTest.java index 5608fc3dd7e8..136cc9ec5854 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftRequiredFieldVerboseTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftRequiredFieldVerboseTest.java @@ -29,9 +29,10 @@ import com.linecorp.armeria.common.HttpRequest; import com.linecorp.armeria.common.RequestHeaders; import com.linecorp.armeria.server.ServerBuilder; -import com.linecorp.armeria.service.test.thrift.main.HelloRequiredNameService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.thrift.main.HelloRequiredNameService; + class ThriftRequiredFieldVerboseTest { private static final HelloRequiredNameService.Iface HELLO_SERVICE = diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftSerializationFormatsTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftSerializationFormatsTest.java index 620f7eb72a4d..758d5cf76762 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftSerializationFormatsTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftSerializationFormatsTest.java @@ -42,9 +42,10 @@ import com.linecorp.armeria.common.Scheme; import com.linecorp.armeria.common.SessionProtocol; import com.linecorp.armeria.server.ServerBuilder; -import com.linecorp.armeria.service.test.thrift.main.HelloService; import com.linecorp.armeria.testing.junit4.server.ServerRule; +import testing.thrift.main.HelloService; + /** * Test of serialization format validation / detection based on HTTP headers. */ diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftServiceLengthLimitTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftServiceLengthLimitTest.java index 2b662db4b906..900415e6ae72 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftServiceLengthLimitTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftServiceLengthLimitTest.java @@ -53,12 +53,12 @@ import com.linecorp.armeria.server.ServiceConfig; import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.server.logging.LoggingService; -import com.linecorp.armeria.service.test.thrift.main.HelloService; -import com.linecorp.armeria.service.test.thrift.main.Name; -import com.linecorp.armeria.service.test.thrift.main.NameSortService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; import io.netty.buffer.ByteBuf; +import testing.thrift.main.HelloService; +import testing.thrift.main.Name; +import testing.thrift.main.NameSortService; class ThriftServiceLengthLimitTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftServiceLogNameTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftServiceLogNameTest.java index e28c4991863e..d52517560e96 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftServiceLogNameTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftServiceLogNameTest.java @@ -40,11 +40,11 @@ import com.linecorp.armeria.server.ServerBuilder; import com.linecorp.armeria.server.ServiceRequestContext; import com.linecorp.armeria.server.logging.AccessLogWriter; -import com.linecorp.armeria.service.test.thrift.main.HelloService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.Appender; +import testing.thrift.main.HelloService; class ThriftServiceLogNameTest { diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftServiceTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftServiceTest.java index fc83295cdbf7..e451e68be878 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftServiceTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftServiceTest.java @@ -52,23 +52,23 @@ import com.linecorp.armeria.common.HttpResponse; import com.linecorp.armeria.common.SerializationFormat; import com.linecorp.armeria.common.thrift.ThriftSerializationFormats; -import com.linecorp.armeria.common.thrift.text.ChildRpcDebugService; -import com.linecorp.armeria.common.thrift.text.Response; import com.linecorp.armeria.common.util.CompletionActions; import com.linecorp.armeria.common.util.Exceptions; import com.linecorp.armeria.server.ServiceRequestContext; -import com.linecorp.armeria.service.test.thrift.main.BinaryService; -import com.linecorp.armeria.service.test.thrift.main.DevNullService; -import com.linecorp.armeria.service.test.thrift.main.FileService; -import com.linecorp.armeria.service.test.thrift.main.FileServiceException; -import com.linecorp.armeria.service.test.thrift.main.HelloService; -import com.linecorp.armeria.service.test.thrift.main.Name; -import com.linecorp.armeria.service.test.thrift.main.NameService; -import com.linecorp.armeria.service.test.thrift.main.NameSortService; -import com.linecorp.armeria.service.test.thrift.main.OnewayHelloService; import com.linecorp.armeria.testing.junit5.common.EventLoopExtension; import io.netty.util.concurrent.ImmediateEventExecutor; +import testing.thrift.debug.ChildRpcDebugService; +import testing.thrift.debug.Response; +import testing.thrift.main.BinaryService; +import testing.thrift.main.DevNullService; +import testing.thrift.main.FileService; +import testing.thrift.main.FileServiceException; +import testing.thrift.main.HelloService; +import testing.thrift.main.Name; +import testing.thrift.main.NameService; +import testing.thrift.main.NameSortService; +import testing.thrift.main.OnewayHelloService; /** * Tests {@link ThriftCallService} and {@link THttpService}. diff --git a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftTreeStructureTest.java b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftTreeStructureTest.java index 35f7945e785c..c37de262f33b 100644 --- a/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftTreeStructureTest.java +++ b/thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftTreeStructureTest.java @@ -31,14 +31,15 @@ import com.linecorp.armeria.common.SerializationFormat; import com.linecorp.armeria.common.thrift.ThriftSerializationFormats; import com.linecorp.armeria.server.ServerBuilder; -import com.linecorp.armeria.service.test.thrift.tree.Branch; -import com.linecorp.armeria.service.test.thrift.tree.IntLeaf; -import com.linecorp.armeria.service.test.thrift.tree.LeafType; -import com.linecorp.armeria.service.test.thrift.tree.StringLeaf; -import com.linecorp.armeria.service.test.thrift.tree.TreeRequest; -import com.linecorp.armeria.service.test.thrift.tree.TreeService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.thrift.tree.Branch; +import testing.thrift.tree.IntLeaf; +import testing.thrift.tree.LeafType; +import testing.thrift.tree.StringLeaf; +import testing.thrift.tree.TreeRequest; +import testing.thrift.tree.TreeService; + class ThriftTreeStructureTest { @RegisterExtension static ServerExtension server = new ServerExtension() { diff --git a/thrift/thrift0.13/src/test/resources/META-INF/armeria/thrift/cassandra.json b/thrift/thrift0.13/src/test/resources/META-INF/armeria/thrift/cassandra.json index aec8ee3985b8..7ba6732d4292 100644 --- a/thrift/thrift0.13/src/test/resources/META-INF/armeria/thrift/cassandra.json +++ b/thrift/thrift0.13/src/test/resources/META-INF/armeria/thrift/cassandra.json @@ -1,7 +1,7 @@ { "name": "cassandra", "namespaces": { - "java": "com.linecorp.armeria.service.test.thrift.cassandra" + "java": "testing.thrift.cassandra" }, "includes": [ ], diff --git a/thrift/thrift0.13/src/test/resources/com/linecorp/armeria/common/thrift/text/TTextProtocol_NamedEnum_Serialized.txt b/thrift/thrift0.13/src/test/resources/testing/thrift/text/TTextProtocol_NamedEnum_Serialized.txt similarity index 100% rename from thrift/thrift0.13/src/test/resources/com/linecorp/armeria/common/thrift/text/TTextProtocol_NamedEnum_Serialized.txt rename to thrift/thrift0.13/src/test/resources/testing/thrift/text/TTextProtocol_NamedEnum_Serialized.txt diff --git a/thrift/thrift0.13/src/test/resources/com/linecorp/armeria/common/thrift/text/TTextProtocol_TestData.txt b/thrift/thrift0.13/src/test/resources/testing/thrift/text/TTextProtocol_TestData.txt similarity index 100% rename from thrift/thrift0.13/src/test/resources/com/linecorp/armeria/common/thrift/text/TTextProtocol_TestData.txt rename to thrift/thrift0.13/src/test/resources/testing/thrift/text/TTextProtocol_TestData.txt diff --git a/thrift/thrift0.13/src/test/thrift/RpcDebugTest.thrift b/thrift/thrift0.13/src/test/thrift/RpcDebugTest.thrift index 3a9ff9ba2e6f..1218198cb9b8 100644 --- a/thrift/thrift0.13/src/test/thrift/RpcDebugTest.thrift +++ b/thrift/thrift0.13/src/test/thrift/RpcDebugTest.thrift @@ -1,4 +1,4 @@ -namespace java com.linecorp.armeria.common.thrift.text +namespace java testing.thrift.debug struct RequestDetails { 1: string detailsArg1, diff --git a/thrift/thrift0.13/src/test/thrift/TTextProtocolTest.thrift b/thrift/thrift0.13/src/test/thrift/TTextProtocolTest.thrift index 758fa28d6759..fcd6d1b62d37 100644 --- a/thrift/thrift0.13/src/test/thrift/TTextProtocolTest.thrift +++ b/thrift/thrift0.13/src/test/thrift/TTextProtocolTest.thrift @@ -20,7 +20,7 @@ * Authors: * "Alex Roetter" */ -namespace java com.linecorp.armeria.common.thrift.text +namespace java testing.thrift.text enum Letter { ALPHA = 1, diff --git a/thrift/thrift0.13/src/test/thrift/TreeStructTest.thrift b/thrift/thrift0.13/src/test/thrift/TreeStructTest.thrift index b7c9c5d9e75f..8d5ad45fc07c 100644 --- a/thrift/thrift0.13/src/test/thrift/TreeStructTest.thrift +++ b/thrift/thrift0.13/src/test/thrift/TreeStructTest.thrift @@ -1,4 +1,4 @@ -namespace java com.linecorp.armeria.service.test.thrift.tree +namespace java testing.thrift.tree struct IntLeaf { 1: i32 value diff --git a/thrift/thrift0.13/src/test/thrift/cassandra.thrift b/thrift/thrift0.13/src/test/thrift/cassandra.thrift index 0c0b3b671f4b..1dde15e503f5 100644 --- a/thrift/thrift0.13/src/test/thrift/cassandra.thrift +++ b/thrift/thrift0.13/src/test/thrift/cassandra.thrift @@ -23,7 +23,7 @@ # Interface definition for Cassandra Service # -namespace java com.linecorp.armeria.service.test.thrift.cassandra +namespace java testing.thrift.cassandra # The API version (NOT the product version), composed as a dot delimited # string with major, minor, and patch level components. diff --git a/thrift/thrift0.13/src/test/thrift/hbase.thrift b/thrift/thrift0.13/src/test/thrift/hbase.thrift index 49431926f723..287743e4f7be 100644 --- a/thrift/thrift0.13/src/test/thrift/hbase.thrift +++ b/thrift/thrift0.13/src/test/thrift/hbase.thrift @@ -30,7 +30,7 @@ // used to generate the *.java files checked into the Hbase project. // ---------------------------------------------------------------- -namespace java com.linecorp.armeria.service.test.thrift.hbase +namespace java testing.thrift.hbase // // Types diff --git a/thrift/thrift0.13/src/test/thrift/main.thrift b/thrift/thrift0.13/src/test/thrift/main.thrift index 8f42908f01e5..4f3c52f35696 100644 --- a/thrift/thrift0.13/src/test/thrift/main.thrift +++ b/thrift/thrift0.13/src/test/thrift/main.thrift @@ -1,4 +1,4 @@ -namespace java com.linecorp.armeria.service.test.thrift.main +namespace java testing.thrift.main // Tests a non-oneway method with a return value. service HelloService { diff --git a/thrift/thrift0.17/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServicePluginTest.java b/thrift/thrift0.17/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServicePluginTest.java index fa084efb5150..7d0f93b72fac 100644 --- a/thrift/thrift0.17/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServicePluginTest.java +++ b/thrift/thrift0.17/src/test/java/com/linecorp/armeria/internal/server/thrift/ThriftDocServicePluginTest.java @@ -44,12 +44,13 @@ import com.linecorp.armeria.server.docs.ServiceSpecification; import com.linecorp.armeria.server.docs.TypeSignature; import com.linecorp.armeria.server.thrift.THttpService; -import com.linecorp.armeria.service.test.thrift.main.FooEnum; -import com.linecorp.armeria.service.test.thrift.main.FooService; -import com.linecorp.armeria.service.test.thrift.main.FooStruct; -import com.linecorp.armeria.service.test.thrift.main.HelloService; -import com.linecorp.armeria.service.test.thrift.main.HelloService.AsyncIface; -import com.linecorp.armeria.service.test.thrift.main.TypeDefService; + +import testing.thrift.main.FooEnum; +import testing.thrift.main.FooService; +import testing.thrift.main.FooStruct; +import testing.thrift.main.HelloService; +import testing.thrift.main.HelloService.AsyncIface; +import testing.thrift.main.TypeDefService; /** * The generated code of `FooService` is different from thrift0.13 compiler. diff --git a/thrift/thrift0.18/src/test/java/com/linecorp/armeria/common/thrift/text/uuid/UuidMessageTest.java b/thrift/thrift0.18/src/test/java/com/linecorp/armeria/common/thrift/text/uuid/UuidMessageTest.java index 44672f2838a0..0b6b7da689ca 100644 --- a/thrift/thrift0.18/src/test/java/com/linecorp/armeria/common/thrift/text/uuid/UuidMessageTest.java +++ b/thrift/thrift0.18/src/test/java/com/linecorp/armeria/common/thrift/text/uuid/UuidMessageTest.java @@ -32,28 +32,31 @@ import com.linecorp.armeria.server.thrift.THttpService; import com.linecorp.armeria.testing.junit5.server.ServerExtension; +import testing.thrift.uuid.TestUuidService; +import testing.thrift.uuid.UuidMessage; + class UuidMessageTest { @RegisterExtension static ServerExtension server = new ServerExtension() { @Override protected void configure(ServerBuilder sb) { - sb.service("/", THttpService.of(new UuidServiceImpl())); + sb.service("/", THttpService.of(new TestUuidServiceImpl())); } }; @Test void shouldMarshallUuidType() throws TException { for (SerializationFormat serializationFormat : ThriftSerializationFormats.values()) { - final UuidService.Iface client = ThriftClients.builder(server.httpUri()) - .serializationFormat(serializationFormat) - .build(UuidService.Iface.class); + final TestUuidService.Iface client = ThriftClients.builder(server.httpUri()) + .serializationFormat(serializationFormat) + .build(TestUuidService.Iface.class); final UuidMessage request = new UuidMessage(UUID.randomUUID(), "hello"); final UuidMessage response = client.echo(request); assertThat(response).isEqualTo(request); } } - private static class UuidServiceImpl implements UuidService.AsyncIface { + private static class TestUuidServiceImpl implements TestUuidService.AsyncIface { @Override public void echo(UuidMessage request, AsyncMethodCallback resultHandler) diff --git a/thrift/thrift0.18/src/test/thrift/uuid.thrift b/thrift/thrift0.18/src/test/thrift/uuid.thrift index 4f985bdb76b1..983c7a473cfc 100644 --- a/thrift/thrift0.18/src/test/thrift/uuid.thrift +++ b/thrift/thrift0.18/src/test/thrift/uuid.thrift @@ -1,10 +1,10 @@ -namespace java com.linecorp.armeria.common.thrift.text.uuid +namespace java testing.thrift.uuid struct UuidMessage { 1: uuid id 2: string message } -service UuidService { +service TestUuidService { UuidMessage echo(1: UuidMessage request) } diff --git a/thrift/thrift0.9/src/test/thrift/RpcDebugTest.thrift b/thrift/thrift0.9/src/test/thrift/RpcDebugTest.thrift index 3a9ff9ba2e6f..1218198cb9b8 100644 --- a/thrift/thrift0.9/src/test/thrift/RpcDebugTest.thrift +++ b/thrift/thrift0.9/src/test/thrift/RpcDebugTest.thrift @@ -1,4 +1,4 @@ -namespace java com.linecorp.armeria.common.thrift.text +namespace java testing.thrift.debug struct RequestDetails { 1: string detailsArg1, diff --git a/thrift/thrift0.9/src/test/thrift/TTextProtocolTest.thrift b/thrift/thrift0.9/src/test/thrift/TTextProtocolTest.thrift index d90e9e125507..4ee188f3b9cd 100644 --- a/thrift/thrift0.9/src/test/thrift/TTextProtocolTest.thrift +++ b/thrift/thrift0.9/src/test/thrift/TTextProtocolTest.thrift @@ -20,7 +20,7 @@ * Authors: * "Alex Roetter" */ -namespace java com.linecorp.armeria.common.thrift.text +namespace java testing.thrift.text enum Letter { ALPHA = 1, diff --git a/thrift/thrift0.9/src/test/thrift/TreeStructTest.thrift b/thrift/thrift0.9/src/test/thrift/TreeStructTest.thrift index b7c9c5d9e75f..8d5ad45fc07c 100644 --- a/thrift/thrift0.9/src/test/thrift/TreeStructTest.thrift +++ b/thrift/thrift0.9/src/test/thrift/TreeStructTest.thrift @@ -1,4 +1,4 @@ -namespace java com.linecorp.armeria.service.test.thrift.tree +namespace java testing.thrift.tree struct IntLeaf { 1: i32 value diff --git a/thrift/thrift0.9/src/test/thrift/cassandra.thrift b/thrift/thrift0.9/src/test/thrift/cassandra.thrift index 0c0b3b671f4b..1dde15e503f5 100644 --- a/thrift/thrift0.9/src/test/thrift/cassandra.thrift +++ b/thrift/thrift0.9/src/test/thrift/cassandra.thrift @@ -23,7 +23,7 @@ # Interface definition for Cassandra Service # -namespace java com.linecorp.armeria.service.test.thrift.cassandra +namespace java testing.thrift.cassandra # The API version (NOT the product version), composed as a dot delimited # string with major, minor, and patch level components. diff --git a/thrift/thrift0.9/src/test/thrift/hbase.thrift b/thrift/thrift0.9/src/test/thrift/hbase.thrift index ddb41fd8607f..13483f40775c 100644 --- a/thrift/thrift0.9/src/test/thrift/hbase.thrift +++ b/thrift/thrift0.9/src/test/thrift/hbase.thrift @@ -30,7 +30,7 @@ // used to generate the *.java files checked into the Hbase project. // ---------------------------------------------------------------- -namespace java com.linecorp.armeria.service.test.thrift.hbase +namespace java testing.thrift.hbase // // Types diff --git a/thrift/thrift0.9/src/test/thrift/main.thrift b/thrift/thrift0.9/src/test/thrift/main.thrift index 0c41d92c3f3f..4b4109eaf67c 100644 --- a/thrift/thrift0.9/src/test/thrift/main.thrift +++ b/thrift/thrift0.9/src/test/thrift/main.thrift @@ -1,4 +1,4 @@ -namespace java com.linecorp.armeria.service.test.thrift.main +namespace java testing.thrift.main // Tests a non-oneway method with a return value. service HelloService {