latest: Pulling from course/grpc-messenger Digest: sha256:19b3d8d71ee6f04237e810ecfa20607146a779ca94ed0fdea30b0bf08b25ea62 Status: Image is up to date for distsys.ru/course/grpc-messenger:latest === BUILD IMAGES =========================================================================================================== #0 building with "default" instance using docker driver #1 [internal] load build definition from Dockerfile #1 transferring dockerfile: 178B done #1 DONE 0.1s #2 [internal] load .dockerignore #2 transferring context: 2B done #2 DONE 0.0s #3 [internal] load build context #3 transferring context: 11.68MB 0.0s done #3 DONE 0.1s #4 [1/1] COPY client-test-server /usr/local/bin/client-test-server #4 DONE 0.0s #5 exporting to image #5 exporting layers 0.0s done #5 writing image sha256:eca1d6992583f38849895225041a917675eb656c0c8c52bb9149e6038b0551c5 done #5 naming to docker.io/library/grpc-messenger-client-test-server:local done #5 DONE 0.1s Image grpc-solution-tests Building #1 [internal] load local bake definitions #1 reading from stdin 1.63kB done #1 DONE 0.0s #2 [internal] load build definition from Dockerfile #2 transferring dockerfile: 908B done #2 DONE 0.0s #3 resolve image config for docker-image://docker.io/docker/dockerfile:1 #3 DONE 1.7s #4 docker-image://docker.io/docker/dockerfile:1@sha256:ecfaec9ed6d810b56388c508f4121597bfbba70d41a6dfeee4d8cad5f295fc32 #4 resolve docker.io/docker/dockerfile:1@sha256:ecfaec9ed6d810b56388c508f4121597bfbba70d41a6dfeee4d8cad5f295fc32 0.0s done #4 sha256:9f624ef51ad55db0ea52d755cc777566386156106fbb4f465eecb22c67ac55ed 0B / 14.14MB 0.1s #4 sha256:ecfaec9ed6d810b56388c508f4121597bfbba70d41a6dfeee4d8cad5f295fc32 9.08kB / 9.08kB done #4 sha256:34b128e419449565adc5ed7f487a6f503a73f1077012cfed86354c731338c44f 1.13kB / 1.13kB done #4 sha256:c844dc65644b70ea8b391444db20ff38537384d800ea9896d46ab8f3ce897f51 1.33kB / 1.33kB done #4 sha256:9f624ef51ad55db0ea52d755cc777566386156106fbb4f465eecb22c67ac55ed 1.05MB / 14.14MB 0.3s #4 sha256:9f624ef51ad55db0ea52d755cc777566386156106fbb4f465eecb22c67ac55ed 3.15MB / 14.14MB 0.5s #4 sha256:9f624ef51ad55db0ea52d755cc777566386156106fbb4f465eecb22c67ac55ed 5.24MB / 14.14MB 0.6s #4 sha256:9f624ef51ad55db0ea52d755cc777566386156106fbb4f465eecb22c67ac55ed 7.34MB / 14.14MB 0.8s #4 sha256:9f624ef51ad55db0ea52d755cc777566386156106fbb4f465eecb22c67ac55ed 9.44MB / 14.14MB 0.9s #4 sha256:9f624ef51ad55db0ea52d755cc777566386156106fbb4f465eecb22c67ac55ed 10.49MB / 14.14MB 1.0s #4 sha256:9f624ef51ad55db0ea52d755cc777566386156106fbb4f465eecb22c67ac55ed 13.63MB / 14.14MB 1.2s #4 sha256:9f624ef51ad55db0ea52d755cc777566386156106fbb4f465eecb22c67ac55ed 14.14MB / 14.14MB 1.2s done #4 extracting sha256:9f624ef51ad55db0ea52d755cc777566386156106fbb4f465eecb22c67ac55ed 0.1s #4 extracting sha256:9f624ef51ad55db0ea52d755cc777566386156106fbb4f465eecb22c67ac55ed 0.1s done #4 DONE 1.5s #5 [internal] load metadata for docker.io/library/python:3.12-alpine #5 DONE 1.5s #6 [internal] load .dockerignore #6 transferring context: 2B done #6 DONE 0.0s #7 [stage-0 1/6] FROM docker.io/library/python:3.12-alpine@sha256:4c47124a8391cb7a9f571164147d154777cf012a4ece5f86097130d7a4478111 #7 resolve docker.io/library/python:3.12-alpine@sha256:4c47124a8391cb7a9f571164147d154777cf012a4ece5f86097130d7a4478111 #7 ... #8 [internal] load build context #8 transferring context: 43.45kB 0.1s done #8 DONE 0.1s #7 [stage-0 1/6] FROM docker.io/library/python:3.12-alpine@sha256:4c47124a8391cb7a9f571164147d154777cf012a4ece5f86097130d7a4478111 #7 resolve docker.io/library/python:3.12-alpine@sha256:4c47124a8391cb7a9f571164147d154777cf012a4ece5f86097130d7a4478111 0.0s done #7 sha256:9b8dad7f66b5c7751df6cb7a64a07812e86bed85d0116efe82b3a11209f1440d 1.74kB / 1.74kB done #7 sha256:8614a50e05881ad79bcf2d4f82028b65a463c03d2d666d255a4332e3d2a0c0ba 5.43kB / 5.43kB done #7 sha256:e2de96513ba9eb53b431787ec8a65cdde380ac4772a3e4c4b714dcfde2a102b5 0B / 3.85MB 0.1s #7 sha256:dfd5c69ca31cfb36ae0002c3049cf2d7bf398b9bb1099035e8634e3510ee84da 0B / 416.26kB 0.1s #7 sha256:7abff04c4f315a5424ff8d34ad0c10700efc2fc32961841df78d2bfc17e1a353 0B / 13.77MB 0.1s #7 sha256:4c47124a8391cb7a9f571164147d154777cf012a4ece5f86097130d7a4478111 10.30kB / 10.30kB done #7 sha256:e2de96513ba9eb53b431787ec8a65cdde380ac4772a3e4c4b714dcfde2a102b5 1.05MB / 3.85MB 0.4s #7 sha256:e2de96513ba9eb53b431787ec8a65cdde380ac4772a3e4c4b714dcfde2a102b5 2.10MB / 3.85MB 0.5s #7 sha256:e2de96513ba9eb53b431787ec8a65cdde380ac4772a3e4c4b714dcfde2a102b5 3.85MB / 3.85MB 0.6s done #7 sha256:dfd5c69ca31cfb36ae0002c3049cf2d7bf398b9bb1099035e8634e3510ee84da 416.26kB / 416.26kB 0.5s done #7 sha256:7abff04c4f315a5424ff8d34ad0c10700efc2fc32961841df78d2bfc17e1a353 2.10MB / 13.77MB 0.6s #7 extracting sha256:e2de96513ba9eb53b431787ec8a65cdde380ac4772a3e4c4b714dcfde2a102b5 0.1s #7 sha256:6eec1681053c5141288662af49733b23283c6aa149e2f077733bd515acdfa190 0B / 249B 0.6s #7 sha256:7abff04c4f315a5424ff8d34ad0c10700efc2fc32961841df78d2bfc17e1a353 4.19MB / 13.77MB 0.8s #7 extracting sha256:e2de96513ba9eb53b431787ec8a65cdde380ac4772a3e4c4b714dcfde2a102b5 0.1s done #7 sha256:6eec1681053c5141288662af49733b23283c6aa149e2f077733bd515acdfa190 249B / 249B 0.8s done #7 sha256:7abff04c4f315a5424ff8d34ad0c10700efc2fc32961841df78d2bfc17e1a353 6.29MB / 13.77MB 0.9s #7 extracting sha256:dfd5c69ca31cfb36ae0002c3049cf2d7bf398b9bb1099035e8634e3510ee84da #7 sha256:7abff04c4f315a5424ff8d34ad0c10700efc2fc32961841df78d2bfc17e1a353 8.39MB / 13.77MB 1.0s #7 extracting sha256:dfd5c69ca31cfb36ae0002c3049cf2d7bf398b9bb1099035e8634e3510ee84da 0.2s done #7 sha256:7abff04c4f315a5424ff8d34ad0c10700efc2fc32961841df78d2bfc17e1a353 11.53MB / 13.77MB 1.2s #7 sha256:7abff04c4f315a5424ff8d34ad0c10700efc2fc32961841df78d2bfc17e1a353 12.58MB / 13.77MB 1.3s #7 sha256:7abff04c4f315a5424ff8d34ad0c10700efc2fc32961841df78d2bfc17e1a353 13.77MB / 13.77MB 1.3s done #7 extracting sha256:7abff04c4f315a5424ff8d34ad0c10700efc2fc32961841df78d2bfc17e1a353 0.2s #7 extracting sha256:7abff04c4f315a5424ff8d34ad0c10700efc2fc32961841df78d2bfc17e1a353 1.0s done #7 extracting sha256:6eec1681053c5141288662af49733b23283c6aa149e2f077733bd515acdfa190 #7 extracting sha256:6eec1681053c5141288662af49733b23283c6aa149e2f077733bd515acdfa190 done #7 DONE 2.6s #9 [stage-0 2/6] COPY tests/requirements.txt . #9 DONE 0.1s #10 [stage-0 3/6] RUN --mount=type=cache,id=distsys-course-pip,target=/root/.cache/pip,sharing=locked pip install -r requirements.txt #10 2.241 Collecting grpcio==1.75.0 (from -r requirements.txt (line 1)) #10 2.521 Downloading grpcio-1.75.0-cp312-cp312-musllinux_1_2_x86_64.whl.metadata (3.7 kB) #10 2.983 Collecting grpcio-tools==1.75.0 (from -r requirements.txt (line 2)) #10 3.030 Downloading grpcio_tools-1.75.0-cp312-cp312-musllinux_1_2_x86_64.whl.metadata (5.3 kB) #10 3.219 Collecting protobuf==6.32.1 (from -r requirements.txt (line 3)) #10 3.278 Downloading protobuf-6.32.1-py3-none-any.whl.metadata (593 bytes) #10 3.362 Collecting pytest==8.4.2 (from -r requirements.txt (line 4)) #10 3.414 Downloading pytest-8.4.2-py3-none-any.whl.metadata (7.7 kB) #10 3.501 Collecting requests==2.32.5 (from -r requirements.txt (line 5)) #10 3.553 Downloading requests-2.32.5-py3-none-any.whl.metadata (4.9 kB) #10 3.626 Collecting typing-extensions~=4.12 (from grpcio==1.75.0->-r requirements.txt (line 1)) #10 3.674 Downloading typing_extensions-4.16.0-py3-none-any.whl.metadata (3.3 kB) #10 3.824 Collecting setuptools (from grpcio-tools==1.75.0->-r requirements.txt (line 2)) #10 3.875 Downloading setuptools-84.0.0-py3-none-any.whl.metadata (6.6 kB) #10 3.948 Collecting iniconfig>=1 (from pytest==8.4.2->-r requirements.txt (line 4)) #10 3.996 Downloading iniconfig-2.3.0-py3-none-any.whl.metadata (2.5 kB) #10 4.068 Collecting packaging>=20 (from pytest==8.4.2->-r requirements.txt (line 4)) #10 4.115 Downloading packaging-26.3-py3-none-any.whl.metadata (3.5 kB) #10 4.196 Collecting pluggy<2,>=1.5 (from pytest==8.4.2->-r requirements.txt (line 4)) #10 4.245 Downloading pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB) #10 4.317 Collecting pygments>=2.7.2 (from pytest==8.4.2->-r requirements.txt (line 4)) #10 4.365 Downloading pygments-2.21.0-py3-none-any.whl.metadata (2.5 kB) #10 4.501 Collecting charset_normalizer<4,>=2 (from requests==2.32.5->-r requirements.txt (line 5)) #10 4.552 Downloading charset_normalizer-3.5.1-cp312-cp312-musllinux_1_2_x86_64.whl.metadata (45 kB) #10 4.675 Collecting idna<4,>=2.5 (from requests==2.32.5->-r requirements.txt (line 5)) #10 4.724 Downloading idna-3.20-py3-none-any.whl.metadata (7.2 kB) #10 4.804 Collecting urllib3<3,>=1.21.1 (from requests==2.32.5->-r requirements.txt (line 5)) #10 4.858 Downloading urllib3-2.8.0-py3-none-any.whl.metadata (7.4 kB) #10 4.939 Collecting certifi>=2017.4.17 (from requests==2.32.5->-r requirements.txt (line 5)) #10 4.987 Downloading certifi-2026.7.22-py3-none-any.whl.metadata (2.5 kB) #10 5.061 Downloading grpcio-1.75.0-cp312-cp312-musllinux_1_2_x86_64.whl (7.5 MB) #10 5.707 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.5/7.5 MB 12.8 MB/s eta 0:00:00 #10 5.764 Downloading grpcio_tools-1.75.0-cp312-cp312-musllinux_1_2_x86_64.whl (3.3 MB) #10 6.010 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.3/3.3 MB 13.4 MB/s eta 0:00:00 #10 6.057 Downloading protobuf-6.32.1-py3-none-any.whl (169 kB) #10 6.126 Downloading pytest-8.4.2-py3-none-any.whl (365 kB) #10 6.204 Downloading requests-2.32.5-py3-none-any.whl (64 kB) #10 6.261 Downloading certifi-2026.7.22-py3-none-any.whl (136 kB) #10 6.336 Downloading charset_normalizer-3.5.1-cp312-cp312-musllinux_1_2_x86_64.whl (250 kB) #10 6.409 Downloading idna-3.20-py3-none-any.whl (69 kB) #10 6.466 Downloading iniconfig-2.3.0-py3-none-any.whl (7.5 kB) #10 6.520 Downloading packaging-26.3-py3-none-any.whl (129 kB) #10 6.584 Downloading pluggy-1.6.0-py3-none-any.whl (20 kB) #10 6.639 Downloading pygments-2.21.0-py3-none-any.whl (1.3 MB) #10 6.732 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 12.5 MB/s eta 0:00:00 #10 6.778 Downloading typing_extensions-4.16.0-py3-none-any.whl (45 kB) #10 6.840 Downloading urllib3-2.8.0-py3-none-any.whl (135 kB) #10 6.901 Downloading setuptools-84.0.0-py3-none-any.whl (818 kB) #10 6.970 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 818.2/818.2 kB 11.1 MB/s eta 0:00:00 #10 7.026 Installing collected packages: urllib3, typing-extensions, setuptools, pygments, protobuf, pluggy, packaging, iniconfig, idna, charset_normalizer, certifi, requests, pytest, grpcio, grpcio-tools #10 9.295 Successfully installed certifi-2026.7.22 charset_normalizer-3.5.1 grpcio-1.75.0 grpcio-tools-1.75.0 idna-3.20 iniconfig-2.3.0 packaging-26.3 pluggy-1.6.0 protobuf-6.32.1 pygments-2.21.0 pytest-8.4.2 requests-2.32.5 setuptools-84.0.0 typing-extensions-4.16.0 urllib3-2.8.0 #10 9.295 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning. #10 9.455 #10 9.455 [notice] A new release of pip is available: 25.0.1 -> 26.2.1 #10 9.455 [notice] To update, run: pip install --upgrade pip #10 DONE 9.6s #11 [stage-0 4/6] RUN apk add --no-cache curl tini && curl --fail --silent --show-error --location "https://github.com/fullstorydev/grpcurl/releases/download/v1.9.3/grpcurl_1.9.3_linux_x86_64.tar.gz" --output /tmp/grpcurl.tar.gz && echo "a926b62a85787ccf73ef8736b3ae554f1242e39d92bb8767a79d6dd23b11d1d5 /tmp/grpcurl.tar.gz" | sha256sum -c && tar -xzf /tmp/grpcurl.tar.gz -C /usr/local/bin && rm -f /tmp/grpcurl.tar.gz #11 0.824 ( 1/10) Installing brotli-libs (1.2.0-r1) #11 0.896 ( 2/10) Installing c-ares (1.34.8-r0) #11 0.951 ( 3/10) Installing libunistring (1.4.2-r0) #11 1.049 ( 4/10) Installing libidn2 (2.3.8-r0) #11 1.111 ( 5/10) Installing nghttp2-libs (1.69.0-r0) #11 1.170 ( 6/10) Installing libpsl (0.21.5-r3) #11 1.230 ( 7/10) Installing zstd-libs (1.5.7-r2) #11 1.304 ( 8/10) Installing libcurl (8.22.0-r0) #11 1.374 ( 9/10) Installing curl (8.22.0-r0) #11 1.457 (10/10) Installing tini (0.19.0-r3) #11 1.503 Executing busybox-1.37.0-r31.trigger #11 1.509 OK: 18.5 MiB in 48 packages #11 2.637 /tmp/grpcurl.tar.gz: OK #11 DONE 2.8s #12 [stage-0 5/6] COPY solution/proto/ solution/proto/ #12 DONE 0.1s #13 [stage-0 6/6] COPY tests/*.py tests/ #13 DONE 0.1s #14 exporting to image #14 exporting layers #14 exporting layers 0.4s done #14 writing image sha256:0e3bc1f2aa53e049621712bd06189ff17f9e14f7b1c47f6c0f8f70b490182bee #14 writing image sha256:0e3bc1f2aa53e049621712bd06189ff17f9e14f7b1c47f6c0f8f70b490182bee done #14 naming to docker.io/library/grpc-solution-tests done #14 DONE 0.5s #15 resolving provenance for metadata file #15 DONE 0.0s Image grpc-solution-tests Built Image grpc-solution-server Building #1 [internal] load local bake definitions #1 reading from stdin 502B done #1 DONE 0.0s #2 [internal] load build definition from server.dockerfile #2 transferring dockerfile: 298B 0.0s done #2 DONE 0.0s #3 [internal] load metadata for docker.io/library/python:3.12-slim #3 DONE 0.8s #4 [internal] load .dockerignore #4 transferring context: 2B done #4 DONE 0.0s #5 [1/6] FROM docker.io/library/python:3.12-slim@sha256:f77ac9e44ae96ef2c90b8053ea08c31f8be030f824196b0ae4db6d462c84e51f #5 resolve docker.io/library/python:3.12-slim@sha256:f77ac9e44ae96ef2c90b8053ea08c31f8be030f824196b0ae4db6d462c84e51f 0.0s done #5 ... #6 [internal] load build context #6 transferring context: 20.95kB 0.0s done #6 DONE 0.1s #5 [1/6] FROM docker.io/library/python:3.12-slim@sha256:f77ac9e44ae96ef2c90b8053ea08c31f8be030f824196b0ae4db6d462c84e51f #5 sha256:6b37362b3da78869050b894b799ad4df04f1f3b52774087db0d81151570244c8 0B / 29.83MB 0.2s #5 sha256:3764a9a7d1e8a98213ab2201a41dbf3da9c60240ea35a5ea96ab994555070a70 0B / 1.29MB 0.2s #5 sha256:b0dc7f87bef15c2536cb182d6c48b52f90a0522884ec9eb222f833fa97ffebf0 0B / 12.12MB 0.2s #5 sha256:f77ac9e44ae96ef2c90b8053ea08c31f8be030f824196b0ae4db6d462c84e51f 10.37kB / 10.37kB done #5 sha256:44ff437bba879d4941b710a369a8f19266aea34b29002807f0c487fabc9eec9b 1.75kB / 1.75kB done #5 sha256:9e87977b867847e186d066f531ef783b006d582a985c341c269446088d90f2c4 5.65kB / 5.65kB done #5 sha256:6b37362b3da78869050b894b799ad4df04f1f3b52774087db0d81151570244c8 4.19MB / 29.83MB 0.5s #5 sha256:3764a9a7d1e8a98213ab2201a41dbf3da9c60240ea35a5ea96ab994555070a70 1.29MB / 1.29MB 0.4s done #5 sha256:06ad939ed42b51caafb25b14810875d14e0ee0c441d3e2e5e46475fb8c150bca 0B / 249B 0.5s #5 sha256:6b37362b3da78869050b894b799ad4df04f1f3b52774087db0d81151570244c8 6.29MB / 29.83MB 0.7s #5 sha256:06ad939ed42b51caafb25b14810875d14e0ee0c441d3e2e5e46475fb8c150bca 249B / 249B 0.7s done #5 sha256:6b37362b3da78869050b894b799ad4df04f1f3b52774087db0d81151570244c8 9.44MB / 29.83MB 0.9s #5 sha256:6b37362b3da78869050b894b799ad4df04f1f3b52774087db0d81151570244c8 13.63MB / 29.83MB 1.2s #5 sha256:6b37362b3da78869050b894b799ad4df04f1f3b52774087db0d81151570244c8 16.78MB / 29.83MB 1.4s #5 sha256:b0dc7f87bef15c2536cb182d6c48b52f90a0522884ec9eb222f833fa97ffebf0 1.05MB / 12.12MB 1.4s #5 sha256:6b37362b3da78869050b894b799ad4df04f1f3b52774087db0d81151570244c8 19.92MB / 29.83MB 1.6s #5 sha256:b0dc7f87bef15c2536cb182d6c48b52f90a0522884ec9eb222f833fa97ffebf0 3.15MB / 12.12MB 1.6s #5 sha256:6b37362b3da78869050b894b799ad4df04f1f3b52774087db0d81151570244c8 23.07MB / 29.83MB 1.8s #5 sha256:b0dc7f87bef15c2536cb182d6c48b52f90a0522884ec9eb222f833fa97ffebf0 7.34MB / 12.12MB 1.8s #5 sha256:6b37362b3da78869050b894b799ad4df04f1f3b52774087db0d81151570244c8 27.26MB / 29.83MB 2.0s #5 sha256:b0dc7f87bef15c2536cb182d6c48b52f90a0522884ec9eb222f833fa97ffebf0 10.49MB / 12.12MB 2.0s #5 sha256:6b37362b3da78869050b894b799ad4df04f1f3b52774087db0d81151570244c8 29.83MB / 29.83MB 2.1s done #5 sha256:b0dc7f87bef15c2536cb182d6c48b52f90a0522884ec9eb222f833fa97ffebf0 12.12MB / 12.12MB 2.1s done #5 extracting sha256:6b37362b3da78869050b894b799ad4df04f1f3b52774087db0d81151570244c8 0.1s #5 extracting sha256:6b37362b3da78869050b894b799ad4df04f1f3b52774087db0d81151570244c8 1.6s done #5 extracting sha256:3764a9a7d1e8a98213ab2201a41dbf3da9c60240ea35a5ea96ab994555070a70 #5 extracting sha256:3764a9a7d1e8a98213ab2201a41dbf3da9c60240ea35a5ea96ab994555070a70 0.2s done #5 extracting sha256:b0dc7f87bef15c2536cb182d6c48b52f90a0522884ec9eb222f833fa97ffebf0 #5 extracting sha256:b0dc7f87bef15c2536cb182d6c48b52f90a0522884ec9eb222f833fa97ffebf0 1.0s done #5 extracting sha256:06ad939ed42b51caafb25b14810875d14e0ee0c441d3e2e5e46475fb8c150bca done #5 DONE 5.4s #7 [2/6] WORKDIR /grpc-messenger #7 DONE 0.2s #8 [3/6] COPY server/requirements.txt . #8 DONE 0.1s #9 [4/6] RUN pip install --no-cache-dir -r requirements.txt #9 1.640 Collecting grpcio==1.75.0 (from -r requirements.txt (line 1)) #9 1.861 Downloading grpcio-1.75.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (3.7 kB) #9 2.271 Collecting grpcio-tools==1.75.0 (from -r requirements.txt (line 2)) #9 2.317 Downloading grpcio_tools-1.75.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (5.3 kB) #9 2.372 Collecting typing-extensions~=4.12 (from grpcio==1.75.0->-r requirements.txt (line 1)) #9 2.417 Downloading typing_extensions-4.16.0-py3-none-any.whl.metadata (3.3 kB) #9 2.547 Collecting protobuf<7.0.0,>=6.31.1 (from grpcio-tools==1.75.0->-r requirements.txt (line 2)) #9 2.601 Downloading protobuf-6.33.6-cp39-abi3-manylinux2014_x86_64.whl.metadata (593 bytes) #9 2.717 Collecting setuptools (from grpcio-tools==1.75.0->-r requirements.txt (line 2)) #9 2.774 Downloading setuptools-84.0.0-py3-none-any.whl.metadata (6.6 kB) #9 2.828 Downloading grpcio-1.75.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (6.4 MB) #9 3.225 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.4/6.4 MB 16.5 MB/s eta 0:00:00 #9 3.270 Downloading grpcio_tools-1.75.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (2.7 MB) #9 3.431 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.7/2.7 MB 17.2 MB/s eta 0:00:00 #9 3.479 Downloading protobuf-6.33.6-cp39-abi3-manylinux2014_x86_64.whl (323 kB) #9 3.543 Downloading typing_extensions-4.16.0-py3-none-any.whl (45 kB) #9 3.590 Downloading setuptools-84.0.0-py3-none-any.whl (818 kB) #9 3.642 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 818.2/818.2 kB 14.2 MB/s eta 0:00:00 #9 3.660 Installing collected packages: typing-extensions, setuptools, protobuf, grpcio, grpcio-tools #9 4.275 Successfully installed grpcio-1.75.0 grpcio-tools-1.75.0 protobuf-6.33.6 setuptools-84.0.0 typing-extensions-4.16.0 #9 4.275 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning. #9 4.410 #9 4.410 [notice] A new release of pip is available: 25.0.1 -> 26.2.1 #9 4.410 [notice] To update, run: pip install --upgrade pip #9 DONE 4.5s #10 [5/6] COPY server/server.py solution/server/ #10 DONE 0.1s #11 [6/6] COPY proto solution/proto/ #11 DONE 0.1s #12 exporting to image #12 exporting layers #12 exporting layers 0.3s done #12 writing image sha256:19b34e6acf6c8bebda93bec8b2e6e5832e4b6ca686fd65d5df4fea32b2ab9b4a done #12 naming to docker.io/library/grpc-solution-server done #12 DONE 0.3s #13 resolving provenance for metadata file #13 DONE 0.0s Image grpc-solution-server Built Image grpc-solution-client Building #1 [internal] load local bake definitions #1 reading from stdin 502B done #1 DONE 0.0s #2 [internal] load build definition from client.dockerfile #2 transferring dockerfile: 298B done #2 DONE 0.0s #3 [internal] load metadata for docker.io/library/python:3.12-slim #3 DONE 0.2s #4 [internal] load .dockerignore #4 transferring context: 2B done #4 DONE 0.0s #5 [1/6] FROM docker.io/library/python:3.12-slim@sha256:f77ac9e44ae96ef2c90b8053ea08c31f8be030f824196b0ae4db6d462c84e51f #5 DONE 0.0s #6 [internal] load build context #6 transferring context: 4.41kB 0.0s done #6 DONE 0.1s #7 [2/6] WORKDIR /grpc-messenger #7 CACHED #8 [3/6] COPY client/requirements.txt . #8 CACHED #9 [4/6] RUN pip install --no-cache-dir -r requirements.txt #9 CACHED #10 [5/6] COPY client/client.py solution/client/ #10 DONE 0.0s #11 [6/6] COPY proto solution/proto/ #11 DONE 0.1s #12 exporting to image #12 exporting layers 0.1s done #12 writing image sha256:36b32cb5e7f7327b32d13dd1bb0452f5d07c122e118c01584a37119c910a0f49 done #12 naming to docker.io/library/grpc-solution-client done #12 DONE 0.1s #13 resolving provenance for metadata file #13 DONE 0.0s Image grpc-solution-client Built === START SERVER AND CLIENTS =============================================================================================== Network hw_default Creating Network hw_default Creating Network hw_default Created Network hw_default Created Container hw-client-test-server-1 Creating Container hw-client-test-server-1 Created Container hw-client-test-server-1 Starting Container hw-client-test-server-1 Started Container hw-server-tests-1 Creating Container hw-server-tests-1 Created Container hw-server-tests-1 Starting Container hw-server-tests-1 Started Container hw-client-test-server-1 Running Container hw-client-test2-1 Creating Container hw-client-test1-1 Creating Container hw-client-test2-1 Created Container hw-client-test1-1 Created Container hw-client-test1-1 Starting Container hw-client-test2-1 Starting Container hw-client-test1-1 Started Container hw-client-test2-1 Started === RUN TESTS ============================================================================================================== Container hw-tests-run-f9b269085aa4 Creating Container hw-tests-run-f9b269085aa4 Created ============================= test session starts ============================== platform linux -- Python 3.12.14, pytest-8.4.2, pluggy-1.6.0 -- /usr/local/bin/python3 cachedir: .pytest_cache rootdir: /tests collecting ... collected 1 item tests/test_proto.py::test_proto_contract PASSED ============================== 1 passed in 0.04s =============================== Proto: 2/2 ============================= test session starts ============================== platform linux -- Python 3.12.14, pytest-8.4.2, pluggy-1.6.0 -- /usr/local/bin/python3 cachedir: .pytest_cache rootdir: /tests collecting ... collected 4 items tests/test_server.py::test_send_smoke PASSED tests/test_server.py::test_send_returns_ascending_time PASSED tests/test_server.py::test_get_messages_smoke PASSED tests/test_server.py::test_get_only_sends_new PASSED ============================== 4 passed in 0.28s =============================== Server: 4/4 ============================= test session starts ============================== platform linux -- Python 3.12.14, pytest-8.4.2, pluggy-1.6.0 -- /usr/local/bin/python3 cachedir: .pytest_cache rootdir: /tests collecting ... collected 3 items tests/test_client.py::test_single_client_single_message PASSED tests/test_client.py::test_single_client_multiple_messages PASSED tests/test_client.py::test_two_clients_multiple_messages PASSED ============================== 3 passed in 0.10s =============================== Client: 4/4 SCORE: 10 === PRINT LOGS ============================================================================================================= client-test-server-1 | 2026-09-26T15:30:41.059057862Z 2026/09/26 15:30:41 client test server listening on [::]:51075 for mes_grpc.MessengerServer client-test1-1 | 2026-09-26T15:30:48.132964951Z 172.19.0.6 - - [26/Sep/2026 15:30:48] code 501, message Unsupported method ('GET') client-test1-1 | 2026-09-26T15:30:48.132983222Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "GET / HTTP/1.1" 501 - client-test2-1 | 2026-09-26T15:30:48.134611805Z 172.19.0.6 - - [26/Sep/2026 15:30:48] code 501, message Unsupported method ('GET') client-test2-1 | 2026-09-26T15:30:48.134627636Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "GET / HTTP/1.1" 501 - client-test1-1 | 2026-09-26T15:30:48.135817767Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test2-1 | 2026-09-26T15:30:48.138081583Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test1-1 | 2026-09-26T15:30:48.141358280Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /sendMessage HTTP/1.1" 200 - client-test1-1 | 2026-09-26T15:30:48.142526931Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test2-1 | 2026-09-26T15:30:48.143659089Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test2-1 | 2026-09-26T15:30:48.145236535Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test1-1 | 2026-09-26T15:30:48.146529536Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test1-1 | 2026-09-26T15:30:48.148067340Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test2-1 | 2026-09-26T15:30:48.149446890Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test1-1 | 2026-09-26T15:30:48.151444326Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /sendMessage HTTP/1.1" 200 - client-test1-1 | 2026-09-26T15:30:48.153095421Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /sendMessage HTTP/1.1" 200 - client-test1-1 | 2026-09-26T15:30:48.154428020Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test2-1 | 2026-09-26T15:30:48.155597655Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test2-1 | 2026-09-26T15:30:48.157146350Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test1-1 | 2026-09-26T15:30:48.158246461Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test1-1 | 2026-09-26T15:30:48.159642293Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test2-1 | 2026-09-26T15:30:48.160821078Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test1-1 | 2026-09-26T15:30:48.162425330Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /sendMessage HTTP/1.1" 200 - client-test1-1 | 2026-09-26T15:30:48.164382460Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /sendMessage HTTP/1.1" 200 - client-test2-1 | 2026-09-26T15:30:48.166094167Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /sendMessage HTTP/1.1" 200 - client-test2-1 | 2026-09-26T15:30:48.167784699Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /sendMessage HTTP/1.1" 200 - client-test1-1 | 2026-09-26T15:30:48.169150124Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test2-1 | 2026-09-26T15:30:48.170248210Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test2-1 | 2026-09-26T15:30:48.171932222Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - client-test1-1 | 2026-09-26T15:30:48.173059683Z 172.19.0.6 - - [26/Sep/2026 15:30:48] "POST /getAndFlushMessages HTTP/1.1" 200 - === SHUT DOWN ============================================================================================================== === VERDICT ================================================================================================================ Solution score is 10