test: Add unit tests

This commit is contained in:
muzhi 2024-09-30 12:06:21 +08:00
parent 43bc27cbc3
commit ee73bd4921
7 changed files with 281 additions and 105 deletions

View File

@ -3,7 +3,7 @@
mkdir lib
mkdir include
cp gmssl/include include
cp -r gmssl/include include
mkdir gmssl/build
cd gmssl/build || exit

117
nohup.out
View File

@ -2,3 +2,120 @@ python: can't open file '/home/muzhi/tpre-python/server.py': [Errno 2] No such f
python: can't open file '/home/muzhi/tpre-python/client.py': [Errno 2] No such file or directory
python: can't open file '/home/muzhi/tpre-python/node.py': [Errno 2] No such file or directory
python: can't open file '/home/muzhi/tpre-python/server.py': [Errno 2] No such file or directory
time="2024-09-26T22:09:36.376459942+08:00" level=info msg="Starting up"
time="2024-09-26T22:09:36.377656686+08:00" level=info msg="containerd not running, starting managed containerd"
time="2024-09-26T22:09:36.379426679+08:00" level=info msg="started new containerd process" address=/var/run/docker/containerd/containerd.sock module=libcontainerd pid=45300
time="2024-09-26T22:09:36.429831283+08:00" level=info msg="starting containerd" revision=7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311c version=1.7.22
time="2024-09-26T22:09:36.442939090+08:00" level=info msg="loading plugin \"io.containerd.snapshotter.v1.aufs\"..." type=io.containerd.snapshotter.v1
time="2024-09-26T22:09:36.456812832+08:00" level=info msg="skip loading plugin \"io.containerd.snapshotter.v1.aufs\"..." error="aufs is not supported (modprobe aufs failed: exit status 1 \"modprobe: FATAL: Module aufs not found in directory /lib/modules/5.15.153.1-microsoft-standard-WSL2\\n\"): skip plugin" type=io.containerd.snapshotter.v1
time="2024-09-26T22:09:36.456884831+08:00" level=info msg="loading plugin \"io.containerd.event.v1.exchange\"..." type=io.containerd.event.v1
time="2024-09-26T22:09:36.456905922+08:00" level=info msg="loading plugin \"io.containerd.internal.v1.opt\"..." type=io.containerd.internal.v1
time="2024-09-26T22:09:36.458606154+08:00" level=info msg="loading plugin \"io.containerd.warning.v1.deprecations\"..." type=io.containerd.warning.v1
time="2024-09-26T22:09:36.458650500+08:00" level=info msg="loading plugin \"io.containerd.snapshotter.v1.blockfile\"..." type=io.containerd.snapshotter.v1
time="2024-09-26T22:09:36.459278550+08:00" level=info msg="skip loading plugin \"io.containerd.snapshotter.v1.blockfile\"..." error="no scratch file generator: skip plugin" type=io.containerd.snapshotter.v1
time="2024-09-26T22:09:36.459325491+08:00" level=info msg="loading plugin \"io.containerd.snapshotter.v1.btrfs\"..." type=io.containerd.snapshotter.v1
time="2024-09-26T22:09:36.459887232+08:00" level=info msg="skip loading plugin \"io.containerd.snapshotter.v1.btrfs\"..." error="path /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.btrfs (ext4) must be a btrfs filesystem to be used with the btrfs snapshotter: skip plugin" type=io.containerd.snapshotter.v1
time="2024-09-26T22:09:36.460093853+08:00" level=info msg="loading plugin \"io.containerd.snapshotter.v1.devmapper\"..." type=io.containerd.snapshotter.v1
time="2024-09-26T22:09:36.461105889+08:00" level=info msg="skip loading plugin \"io.containerd.snapshotter.v1.devmapper\"..." error="devmapper not configured: skip plugin" type=io.containerd.snapshotter.v1
time="2024-09-26T22:09:36.461252323+08:00" level=info msg="loading plugin \"io.containerd.snapshotter.v1.native\"..." type=io.containerd.snapshotter.v1
time="2024-09-26T22:09:36.461509442+08:00" level=info msg="loading plugin \"io.containerd.snapshotter.v1.overlayfs\"..." type=io.containerd.snapshotter.v1
time="2024-09-26T22:09:36.461854703+08:00" level=info msg="loading plugin \"io.containerd.snapshotter.v1.zfs\"..." type=io.containerd.snapshotter.v1
time="2024-09-26T22:09:36.462030544+08:00" level=info msg="skip loading plugin \"io.containerd.snapshotter.v1.zfs\"..." error="path /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.zfs must be a zfs filesystem to be used with the zfs snapshotter: skip plugin" type=io.containerd.snapshotter.v1
time="2024-09-26T22:09:36.462067746+08:00" level=info msg="loading plugin \"io.containerd.content.v1.content\"..." type=io.containerd.content.v1
time="2024-09-26T22:09:36.462482502+08:00" level=info msg="loading plugin \"io.containerd.metadata.v1.bolt\"..." type=io.containerd.metadata.v1
time="2024-09-26T22:09:36.462533912+08:00" level=info msg="metadata content store policy set" policy=shared
time="2024-09-26T22:09:36.463147002+08:00" level=info msg="loading plugin \"io.containerd.gc.v1.scheduler\"..." type=io.containerd.gc.v1
time="2024-09-26T22:09:36.463200977+08:00" level=info msg="loading plugin \"io.containerd.differ.v1.walking\"..." type=io.containerd.differ.v1
time="2024-09-26T22:09:36.463216397+08:00" level=info msg="loading plugin \"io.containerd.lease.v1.manager\"..." type=io.containerd.lease.v1
time="2024-09-26T22:09:36.463231386+08:00" level=info msg="loading plugin \"io.containerd.streaming.v1.manager\"..." type=io.containerd.streaming.v1
time="2024-09-26T22:09:36.463244502+08:00" level=info msg="loading plugin \"io.containerd.runtime.v1.linux\"..." type=io.containerd.runtime.v1
time="2024-09-26T22:09:36.463287866+08:00" level=info msg="loading plugin \"io.containerd.monitor.v1.cgroups\"..." type=io.containerd.monitor.v1
time="2024-09-26T22:09:36.463499972+08:00" level=info msg="loading plugin \"io.containerd.runtime.v2.task\"..." type=io.containerd.runtime.v2
time="2024-09-26T22:09:36.464312109+08:00" level=info msg="loading plugin \"io.containerd.runtime.v2.shim\"..." type=io.containerd.runtime.v2
time="2024-09-26T22:09:36.464354031+08:00" level=info msg="loading plugin \"io.containerd.sandbox.store.v1.local\"..." type=io.containerd.sandbox.store.v1
time="2024-09-26T22:09:36.464370964+08:00" level=info msg="loading plugin \"io.containerd.sandbox.controller.v1.local\"..." type=io.containerd.sandbox.controller.v1
time="2024-09-26T22:09:36.464384059+08:00" level=info msg="loading plugin \"io.containerd.service.v1.containers-service\"..." type=io.containerd.service.v1
time="2024-09-26T22:09:36.464396353+08:00" level=info msg="loading plugin \"io.containerd.service.v1.content-service\"..." type=io.containerd.service.v1
time="2024-09-26T22:09:36.464407845+08:00" level=info msg="loading plugin \"io.containerd.service.v1.diff-service\"..." type=io.containerd.service.v1
time="2024-09-26T22:09:36.464422915+08:00" level=info msg="loading plugin \"io.containerd.service.v1.images-service\"..." type=io.containerd.service.v1
time="2024-09-26T22:09:36.464437002+08:00" level=info msg="loading plugin \"io.containerd.service.v1.introspection-service\"..." type=io.containerd.service.v1
time="2024-09-26T22:09:36.464449406+08:00" level=info msg="loading plugin \"io.containerd.service.v1.namespaces-service\"..." type=io.containerd.service.v1
time="2024-09-26T22:09:36.464472751+08:00" level=info msg="loading plugin \"io.containerd.service.v1.snapshots-service\"..." type=io.containerd.service.v1
time="2024-09-26T22:09:36.464484735+08:00" level=info msg="loading plugin \"io.containerd.service.v1.tasks-service\"..." type=io.containerd.service.v1
time="2024-09-26T22:09:36.464693600+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.containers\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.464733678+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.content\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.464746764+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.diff\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.464758586+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.events\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.464769828+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.images\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.464792542+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.introspection\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.464804626+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.leases\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.464815948+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.namespaces\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.464837941+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.sandbox-controllers\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.464871305+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.sandboxes\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.464901955+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.snapshots\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.464932825+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.streaming\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.464945519+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.tasks\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.464968354+08:00" level=info msg="loading plugin \"io.containerd.transfer.v1.local\"..." type=io.containerd.transfer.v1
time="2024-09-26T22:09:36.464986078+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.transfer\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.465008893+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.version\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.465038761+08:00" level=info msg="loading plugin \"io.containerd.internal.v1.restart\"..." type=io.containerd.internal.v1
time="2024-09-26T22:09:36.465092485+08:00" level=info msg="loading plugin \"io.containerd.tracing.processor.v1.otlp\"..." type=io.containerd.tracing.processor.v1
time="2024-09-26T22:09:36.465127934+08:00" level=info msg="skip loading plugin \"io.containerd.tracing.processor.v1.otlp\"..." error="skip plugin: tracing endpoint not configured" type=io.containerd.tracing.processor.v1
time="2024-09-26T22:09:36.465138795+08:00" level=info msg="loading plugin \"io.containerd.internal.v1.tracing\"..." type=io.containerd.internal.v1
time="2024-09-26T22:09:36.465149816+08:00" level=info msg="skip loading plugin \"io.containerd.internal.v1.tracing\"..." error="skip plugin: tracing endpoint not configured" type=io.containerd.internal.v1
time="2024-09-26T22:09:36.465158413+08:00" level=info msg="loading plugin \"io.containerd.grpc.v1.healthcheck\"..." type=io.containerd.grpc.v1
time="2024-09-26T22:09:36.465169154+08:00" level=info msg="loading plugin \"io.containerd.nri.v1.nri\"..." type=io.containerd.nri.v1
time="2024-09-26T22:09:36.465181087+08:00" level=info msg="NRI interface is disabled by configuration."
time="2024-09-26T22:09:36.465891657+08:00" level=info msg=serving... address=/var/run/docker/containerd/containerd-debug.sock
time="2024-09-26T22:09:36.466517121+08:00" level=info msg=serving... address=/var/run/docker/containerd/containerd.sock.ttrpc
time="2024-09-26T22:09:36.466959130+08:00" level=info msg=serving... address=/var/run/docker/containerd/containerd.sock
time="2024-09-26T22:09:36.467011552+08:00" level=info msg="containerd successfully booted in 0.038445s"
time="2024-09-26T22:09:37.442872969+08:00" level=info msg="[graphdriver] using prior storage driver: overlay2"
time="2024-09-26T22:09:37.447160585+08:00" level=info msg="Loading containers: start."
time="2024-09-26T22:09:39.014560587+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
time="2024-09-26T22:09:39.242339674+08:00" level=warning msg="error locating sandbox id 81d08d4c2c0b3dacb9981e18cadd6c4c6f0102b918d7c1088835c3b9da2f3c53: sandbox 81d08d4c2c0b3dacb9981e18cadd6c4c6f0102b918d7c1088835c3b9da2f3c53 not found"
time="2024-09-26T22:09:39.242568849+08:00" level=info msg="Loading containers: done."
time="2024-09-26T22:09:39.261071197+08:00" level=warning msg="WARNING: No swap limit support"
time="2024-09-26T22:09:39.261150972+08:00" level=info msg="Docker daemon" commit=41ca978 containerd-snapshotter=false storage-driver=overlay2 version=27.3.1
time="2024-09-26T22:09:39.261238482+08:00" level=info msg="Daemon has completed initialization"
time="2024-09-26T22:09:39.397145375+08:00" level=info msg="API listen on /var/run/docker.sock"
time="2024-09-26T22:10:13.924903837+08:00" level=info msg="loading plugin \"io.containerd.event.v1.publisher\"..." runtime=io.containerd.runc.v2 type=io.containerd.event.v1
time="2024-09-26T22:10:13.924972560+08:00" level=info msg="loading plugin \"io.containerd.internal.v1.shutdown\"..." runtime=io.containerd.runc.v2 type=io.containerd.internal.v1
time="2024-09-26T22:10:13.924982339+08:00" level=info msg="loading plugin \"io.containerd.ttrpc.v1.task\"..." runtime=io.containerd.runc.v2 type=io.containerd.ttrpc.v1
time="2024-09-26T22:10:13.925516687+08:00" level=info msg="loading plugin \"io.containerd.ttrpc.v1.pause\"..." runtime=io.containerd.runc.v2 type=io.containerd.ttrpc.v1
time="2024-09-26T22:10:14.208176453+08:00" level=info msg="shim disconnected" id=e145f3df1dddfc96034a1baa04e74de7ccdde60afd4338fa72e0876d22fcf584 namespace=moby
time="2024-09-26T22:10:14.208307628+08:00" level=warning msg="cleaning up after shim disconnected" id=e145f3df1dddfc96034a1baa04e74de7ccdde60afd4338fa72e0876d22fcf584 namespace=moby
time="2024-09-26T22:10:14.208325012+08:00" level=info msg="cleaning up dead shim" namespace=moby
time="2024-09-26T22:10:14.208306065+08:00" level=info msg="ignoring event" container=e145f3df1dddfc96034a1baa04e74de7ccdde60afd4338fa72e0876d22fcf584 module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
time="2024-09-26T22:11:13.512588582+08:00" level=info msg="Attempting next endpoint for pull after error: manifest unknown" spanID=eb934e7ce3cd1083 traceID=17ccb05069dbebd6bd5fb11dc63e19a3
time="2024-09-26T22:11:13.516805407+08:00" level=error msg="Handler for POST /v1.47/images/create returned error: manifest unknown" spanID=eb934e7ce3cd1083 traceID=17ccb05069dbebd6bd5fb11dc63e19a3
time="2024-09-26T22:12:36.723554394+08:00" level=info msg="Starting up"
failed to start daemon, ensure docker is not running or delete /var/run/docker.pid: process with PID 45288 is still running
time="2024-09-26T22:12:45.468726560+08:00" level=info msg="Attempting next endpoint for pull after error: manifest unknown" spanID=010270fb339b6bf1 traceID=01d5a0c9dae25828e5d77b55d882882d
time="2024-09-26T22:12:45.472831049+08:00" level=error msg="Handler for POST /v1.47/images/create returned error: manifest unknown" spanID=010270fb339b6bf1 traceID=01d5a0c9dae25828e5d77b55d882882d
time="2024-09-26T22:15:11.861644651+08:00" level=info msg="Attempting next endpoint for pull after error: manifest unknown" spanID=118c45205f702a06 traceID=b0b11dd284ebbabd278b615651c974b5
time="2024-09-26T22:15:11.865851123+08:00" level=error msg="Handler for POST /v1.47/images/create returned error: manifest unknown" spanID=118c45205f702a06 traceID=b0b11dd284ebbabd278b615651c974b5
time="2024-09-26T22:17:02.729973112+08:00" level=error msg=/moby.buildkit.v1.Control/Solve error="rpc error: code = Unknown desc = lstat /lib: no such file or directory" spanID=db91626bb053461d traceID=f545117fa69de86c0a735d077a4655cf
2024/09/26 22:18:24 http2: server: error reading preface from client @: read unix /var/run/docker.sock->@: read: connection reset by peer
time="2024-09-26T22:18:24.883408806+08:00" level=info msg="trying next host - response was http.StatusNotFound" host=git.mamahaha.work spanID=e8c18cc4d36ed288 traceID=e0d10168bfd3754ac405bd3730c906c2
time="2024-09-26T22:18:24.889765971+08:00" level=error msg=/moby.buildkit.v1.frontend.LLBBridge/Solve error="rpc error: code = Unknown desc = git.mamahaha.work/sangge/tpre:base: failed to resolve source metadata for git.mamahaha.work/sangge/tpre:base: git.mamahaha.work/sangge/tpre:base: not found" spanID=e8c18cc4d36ed288 traceID=e0d10168bfd3754ac405bd3730c906c2
time="2024-09-26T22:18:24.948107279+08:00" level=error msg=/moby.buildkit.v1.Control/Solve error="rpc error: code = Unknown desc = git.mamahaha.work/sangge/tpre:base: failed to resolve source metadata for git.mamahaha.work/sangge/tpre:base: git.mamahaha.work/sangge/tpre:base: not found" spanID=aed2df82e313df3d traceID=e0d10168bfd3754ac405bd3730c906c2
2024/09/26 22:34:37 http2: server: error reading preface from client @: read unix /var/run/docker.sock->@: read: connection reset by peer
time="2024-09-26T22:34:38.136241507+08:00" level=error msg=/moby.buildkit.v1.frontend.LLBBridge/Solve error="rpc error: code = Unknown desc = failed to read dockerfile: open basedockerfile: no such file or directory" spanID=d177794390f72646 traceID=0b2bda7d4db3a220d8610b454cfddd62
time="2024-09-26T22:34:38.200736040+08:00" level=error msg=/moby.buildkit.v1.Control/Solve error="rpc error: code = Unknown desc = failed to read dockerfile: open basedockerfile: no such file or directory" spanID=cfb0b0b47bbb82ac traceID=0b2bda7d4db3a220d8610b454cfddd62
time="2024-09-26T22:35:23.594742365+08:00" level=error msg=/moby.buildkit.v1.frontend.LLBBridge/Solve error="rpc error: code = Unknown desc = failed to read dockerfile: open basedockerfile: no such file or directory" spanID=411a8c674f1ecd0b traceID=0e3ebe9898abf6c9c73f79e433927e1f
time="2024-09-26T22:35:23.645847397+08:00" level=error msg=/moby.buildkit.v1.Control/Solve error="rpc error: code = Unknown desc = failed to read dockerfile: open basedockerfile: no such file or directory" spanID=da72a8db0b2e384f traceID=0e3ebe9898abf6c9c73f79e433927e1f
time="2024-09-26T22:36:08.441647831+08:00" level=error msg=/moby.buildkit.v1.Control/Solve error="rpc error: code = Unknown desc = lstat /lib: no such file or directory" spanID=91939050af2dbd1f traceID=c9e913c83fcae0c7f69b76d567b07de3
time="2024-09-26T23:07:47.840212311+08:00" level=info msg="Attempting next endpoint for pull after error: manifest unknown" spanID=aab848f5367186bd traceID=eebdeacdd619ad271f4aebbb50f677a8
time="2024-09-26T23:07:47.847177330+08:00" level=error msg="Handler for POST /v1.47/images/create returned error: manifest unknown" spanID=aab848f5367186bd traceID=eebdeacdd619ad271f4aebbb50f677a8
time="2024-09-26T23:08:34.972228920+08:00" level=info msg="Got signal to reload configuration, reloading from: /etc/docker/daemon.json"
time="2024-09-26T23:08:34.993038120+08:00" level=info msg="Reloaded configuration: {\"exec-opts\":[\"native.cgroupdriver=cgroupfs\"],\"pidfile\":\"/var/run/docker.pid\",\"data-root\":\"/var/lib/docker\",\"exec-root\":\"/var/run/docker\",\"group\":\"docker\",\"max-concurrent-downloads\":3,\"max-concurrent-uploads\":5,\"max-download-attempts\":5,\"shutdown-timeout\":15,\"hosts\":[\"unix:///var/run/docker.sock\"],\"log-level\":\"info\",\"log-format\":\"text\",\"swarm-default-advertise-addr\":\"\",\"swarm-raft-heartbeat-tick\":0,\"swarm-raft-election-tick\":0,\"metrics-addr\":\"\",\"host-gateway-ip\":\"172.17.0.1\",\"log-driver\":\"json-file\",\"mtu\":1500,\"ip\":\"0.0.0.0\",\"icc\":true,\"iptables\":true,\"ip6tables\":true,\"ip-forward\":true,\"ip-masq\":true,\"userland-proxy\":true,\"userland-proxy-path\":\"/usr/bin/docker-proxy\",\"default-address-pools\":{\"Values\":null},\"network-control-plane-mtu\":1500,\"registry-mirrors\":[\"https://docker.m.daocloud.io\",\"https://dockerproxy.com\",\"https://docker.mirrors.ustc.edu.cn\",\"https://docker.nju.edu.cn\",\"https://ma2gfhbf.mirror.aliyuncs.com\",\"https://hub-mirror.c.163.com\",\"https://reg-mirror.qiniu.com\"],\"experimental\":false,\"containerd\":\"/var/run/docker/containerd/containerd.sock\",\"builder\":{\"GC\":{},\"Entitlements\":{}},\"containerd-namespace\":\"moby\",\"containerd-plugin-namespace\":\"plugins.moby\",\"default-runtime\":\"runc\",\"cgroup-parent\":\"system.slice\",\"seccomp-profile\":\"builtin\",\"default-shm-size\":67108864,\"default-ipc-mode\":\"private\",\"default-cgroupns-mode\":\"private\",\"resolv-conf\":\"/etc/resolv.conf\",\"proxies\":{}}"
time="2024-09-26T23:09:10.633349061+08:00" level=info msg="loading plugin \"io.containerd.event.v1.publisher\"..." runtime=io.containerd.runc.v2 type=io.containerd.event.v1
time="2024-09-26T23:09:10.633410449+08:00" level=info msg="loading plugin \"io.containerd.internal.v1.shutdown\"..." runtime=io.containerd.runc.v2 type=io.containerd.internal.v1
time="2024-09-26T23:09:10.633420098+08:00" level=info msg="loading plugin \"io.containerd.ttrpc.v1.task\"..." runtime=io.containerd.runc.v2 type=io.containerd.ttrpc.v1
time="2024-09-26T23:09:10.633888806+08:00" level=info msg="loading plugin \"io.containerd.ttrpc.v1.pause\"..." runtime=io.containerd.runc.v2 type=io.containerd.ttrpc.v1
time="2024-09-26T23:09:18.906669563+08:00" level=info msg="ignoring event" container=913911af5cea5667fc01c1349966bc05f98b0a0f54b1d33bce8c243f140d822f module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
time="2024-09-26T23:09:18.907456952+08:00" level=info msg="shim disconnected" id=913911af5cea5667fc01c1349966bc05f98b0a0f54b1d33bce8c243f140d822f namespace=moby
time="2024-09-26T23:09:18.909304706+08:00" level=warning msg="cleaning up after shim disconnected" id=913911af5cea5667fc01c1349966bc05f98b0a0f54b1d33bce8c243f140d822f namespace=moby
time="2024-09-26T23:09:18.909702333+08:00" level=info msg="cleaning up dead shim" namespace=moby
time="2024-09-26T23:09:18.922724497+08:00" level=warning msg="failed to close stdin: NotFound: task 913911af5cea5667fc01c1349966bc05f98b0a0f54b1d33bce8c243f140d822f not found: not found"

View File

@ -0,0 +1,76 @@
# 测试 node.py 中的函数
import os
import unittest
from unittest.mock import patch, MagicMock, Mock
import node
class TestGetLocalIP(unittest.TestCase):
@patch.dict('os.environ', {'HOST_IP': '60.204.193.58'}) # 模拟设置 HOST_IP 环境变量
def test_get_ip_from_env(self):
# 调用被测函数
node.get_local_ip()
# 检查函数是否正确获取到 HOST_IP
self.assertEqual(node.ip, '60.204.193.58')
@patch('socket.socket') # Mock socket 连接行为
@patch.dict('os.environ', {}) # 模拟没有 HOST_IP 环境变量
def test_get_ip_from_socket(self, mock_socket):
# 模拟 socket 返回的 IP 地址
mock_socket_instance = MagicMock()
mock_socket.return_value = mock_socket_instance
mock_socket_instance.getsockname.return_value = ('110.41.155.96', 0)
# 调用被测函数
node.get_local_ip()
# 确认 socket 被调用过
mock_socket_instance.connect.assert_called_with(('8.8.8.8', 80))
mock_socket_instance.close.assert_called_once()
# 检查是否通过 socket 获取到正确的 IP 地址
self.assertEqual(node.ip, '110.41.155.96')
class TestSendIP(unittest.TestCase):
@patch.dict(os.environ, {'HOST_IP': '60.204.193.58'}) # 设置环境变量 HOST_IP
@patch('requests.get') # Mock requests.get 调用
def test_send_ip(self, mock_get):
# 设置模拟返回的 HTTP 响应
mock_response = Mock()
mock_response.text = "node123" # 模拟返回的节点ID
mock_response.status_code = 200
mock_get.return_value = mock_response # 设置 requests.get() 的返回值为 mock_response
# 保存原始的全局 id 值
original_id = node.id
# 调用待测函数
node.send_ip()
# 确保 requests.get 被正确调用
expected_url = f"{node.server_address}/get_node?ip={node.ip}"
mock_get.assert_called_once_with(expected_url, timeout=3)
# 检查 id 是否被正确更新
self.assertIs(node.id, mock_response) # 检查 id 是否被修改
self.assertEqual(node.id.text, "node123") # 检查更新后的 id 是否与 mock_response.text 匹配
class TestNode(unittest.TestCase):
@patch('node.send_ip')
@patch('node.get_local_ip')
@patch('node.asyncio.create_task')
def test_init(self, mock_create_task, mock_get_local_ip, mock_send_ip):
# 调用 init 函数
node.init()
# 验证 get_local_ip 和 send_ip 被调用
mock_get_local_ip.assert_called_once()
mock_send_ip.assert_called_once()
# 确保 create_task 被调用来启动心跳包
mock_create_task.assert_called_once()
if __name__ == '__main__':
unittest.main()

View File

@ -1,35 +0,0 @@
#测试 get_local_ip()函数
import unittest
from unittest.mock import patch, MagicMock
import node
class TestGetLocalIP(unittest.TestCase):
@patch.dict('os.environ', {'HOST_IP': '60.204.193.58'}) # 模拟设置 HOST_IP 环境变量
def test_get_ip_from_env(self):
# 调用被测函数
node.get_local_ip()
# 检查函数是否正确获取到 HOST_IP
self.assertEqual(node.ip, '60.204.193.58')
@patch('socket.socket') # Mock socket 连接行为
@patch.dict('os.environ', {}) # 模拟没有 HOST_IP 环境变量
def test_get_ip_from_socket(self, mock_socket):
# 模拟 socket 返回的 IP 地址
mock_socket_instance = MagicMock()
mock_socket.return_value = mock_socket_instance
mock_socket_instance.getsockname.return_value = ('110.41.155.96', 0)
# 调用被测函数
node.get_local_ip()
# 确认 socket 被调用过
mock_socket_instance.connect.assert_called_with(('8.8.8.8', 80))
mock_socket_instance.close.assert_called_once()
# 检查是否通过 socket 获取到正确的 IP 地址
self.assertEqual(node.ip, '110.41.155.96')
if __name__ == '__main__':
unittest.main()

View File

@ -1,34 +0,0 @@
#测试send_ip()函数
import os
import unittest
from unittest.mock import patch, Mock
import node # 导入要测试的模块
class TestSendIP(unittest.TestCase):
@patch.dict(os.environ, {'HOST_IP': '60.204.193.58'}) # 设置环境变量 HOST_IP
@patch('requests.get') # Mock requests.get 调用
def test_send_ip(self, mock_get):
# 设置模拟返回的 HTTP 响应
mock_response = Mock()
mock_response.text = "node123" # 模拟返回的节点ID
mock_response.status_code = 200
mock_get.return_value = mock_response # 设置 requests.get() 的返回值为 mock_response
# 保存原始的全局 id 值
original_id = node.id
# 调用待测函数
node.send_ip()
# 确保 requests.get 被正确调用
expected_url = f"{node.server_address}/get_node?ip={node.ip}"
mock_get.assert_called_once_with(expected_url, timeout=3)
# 检查 id 是否被正确更新
self.assertIs(node.id, mock_response) # 检查 id 是否被修改
self.assertEqual(node.id.text, "node123") # 检查更新后的 id 是否与 mock_response.text 匹配
if __name__ == "__main__":
unittest.main()
#node.py中
#print("中心服务器返回节点ID为: ", id.text)即可看到测试代码返回的节点

View File

@ -1,23 +0,0 @@
#测试init()函数
import unittest
from unittest.mock import patch, AsyncMock
import node
class TestNode(unittest.TestCase):
@patch('node.send_ip')
@patch('node.get_local_ip')
@patch('node.asyncio.create_task')
def test_init(self, mock_create_task, mock_get_local_ip, mock_send_ip):
# 调用 init 函数
node.init()
# 验证 get_local_ip 和 send_ip 被调用
mock_get_local_ip.assert_called_once()
mock_send_ip.assert_called_once()
# 确保 create_task 被调用来启动心跳包
mock_create_task.assert_called_once()
if __name__ == '__main__':
unittest.main()

View File

@ -1,22 +1,92 @@
#node_test剩下部分(有问题)
import os
import unittest
import pytest
from unittest.mock import patch, MagicMock, Mock, AsyncMock
import requests
import asyncio
import httpx
import respx
import asyncio
from unittest.mock import patch, AsyncMock
from fastapi.testclient import TestClient
from node import app, send_heartbeat_internal, Req
from node import app, send_heartbeat_internal, Req, send_ip, get_local_ip, init, clear, send_user_des_message
client = TestClient(app)
server_address = "http://60.204.236.38:8000/server"
ip = "127.0.0.1"
ip = None # 初始化全局变量 ip
id = None # 初始化全局变量 id
@pytest.fixture(scope="session")
def anyio_backend():
return "asyncio"
class TestGetLocalIP(unittest.TestCase):
@patch.dict('os.environ', {'HOST_IP': '60.204.193.58'}) # 模拟设置 HOST_IP 环境变量
def test_get_ip_from_env(self):
global ip
# 调用被测函数
get_local_ip()
# 检查函数是否正确获取到 HOST_IP
self.assertEqual(ip, '60.204.193.58')
@patch('socket.socket') # Mock socket 连接行为
@patch.dict('os.environ', {}) # 模拟没有 HOST_IP 环境变量
def test_get_ip_from_socket(self, mock_socket):
global ip
# 模拟 socket 返回的 IP 地址
mock_socket_instance = MagicMock()
mock_socket.return_value = mock_socket_instance
mock_socket_instance.getsockname.return_value = ('110.41.155.96', 0)
# 调用被测函数
get_local_ip()
# 确认 socket 被调用过
mock_socket_instance.connect.assert_called_with(('8.8.8.8', 80))
mock_socket_instance.close.assert_called_once()
# 检查是否通过 socket 获取到正确的 IP 地址
self.assertEqual(ip, '110.41.155.96')
class TestSendIP(unittest.TestCase):
@patch.dict(os.environ, {'HOST_IP': '60.204.193.58'}) # 设置环境变量 HOST_IP
@respx.mock
def test_send_ip(self):
global ip, id
ip = '60.204.193.58'
mock_url = f"{server_address}/get_node?ip={ip}"
respx.get(mock_url).mock(return_value=httpx.Response(200, text="node123"))
# 调用待测函数
send_ip()
# 确保 requests.get 被正确调用
self.assertEqual(id, "node123") # 检查更新后的 id 是否与 mock_response.text 匹配
class TestNode(unittest.TestCase):
@patch('node.send_ip')
@patch('node.get_local_ip')
@patch('node.asyncio.create_task')
def test_init(self, mock_create_task, mock_get_local_ip, mock_send_ip):
# 调用 init 函数
init()
# 验证 get_local_ip 和 send_ip 被调用
mock_get_local_ip.assert_called_once()
mock_send_ip.assert_called_once()
# 确保 create_task 被调用来启动心跳包
mock_create_task.assert_called_once()
def test_clear(self):
# 调用 clear 函数
clear()
# 检查输出
self.assertTrue(True) # 这里只是为了确保函数被调用,没有实际逻辑需要测试
@pytest.mark.asyncio
@respx.mock
async def test_send_heartbeat_internal_success():
global ip
ip = '60.204.193.58'
# 模拟心跳请求
heartbeat_route = respx.get(f"{server_address}/heartbeat?ip={ip}").mock(
return_value=httpx.Response(200)
@ -40,6 +110,8 @@ async def test_send_heartbeat_internal_success():
@pytest.mark.asyncio
@respx.mock
async def test_send_heartbeat_internal_failure():
global ip
ip = '60.204.193.58'
# 模拟心跳请求以引发异常
heartbeat_route = respx.get(f"{server_address}/heartbeat?ip={ip}").mock(
side_effect=httpx.RequestError("Central server error")
@ -66,8 +138,8 @@ def test_user_src():
# 模拟 send_user_des_message 函数
with patch("node.send_user_des_message", new_callable=AsyncMock) as mock_send_user_des_message:
message = {
"source_ip": "127.0.0.1",
"dest_ip": "127.0.0.2",
"source_ip": "60.204.193.58",
"dest_ip": "60.204.193.59",
"capsule": (("x1", "y1"), ("x2", "y2"), 123),
"ct": 456,
"rk": ["rk1", "rk2"]
@ -79,11 +151,14 @@ def test_user_src():
def test_send_user_des_message():
with respx.mock:
dest_ip = "127.0.0.2"
dest_ip = "60.204.193.59"
re_message = (("a", "b", "c", "d"), 123)
respx.post(f"http://{dest_ip}:8002/receive_messages").mock(
return_value=httpx.Response(200, json={"status": "success"})
)
response = client.post(f"http://{dest_ip}:8002/receive_messages", json={"Tuple": re_message, "ip": "127.0.0.1"})
response = requests.post(f"http://{dest_ip}:8002/receive_messages", json={"Tuple": re_message, "ip": "60.204.193.58"})
assert response.status_code == 200
assert response.json() == {"status": "success"}
if __name__ == '__main__':
unittest.main()