Skip to content

Commit c4e684e

Browse files
committed
enhance server test case and shell command bridge and subscriber
1 parent c0afd5a commit c4e684e

File tree

15 files changed

+771
-297
lines changed

15 files changed

+771
-297
lines changed

go.mod

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/machbase/neo-server/v8
22

3-
go 1.25.0
3+
go 1.25.5
44

55
require (
66
github.com/Masterminds/semver/v3 v3.4.0
@@ -13,7 +13,6 @@ require (
1313
github.com/dop251/goja_nodejs v0.0.0-20260212111938-1f56ff5bcf14
1414
github.com/eclipse/paho.golang v0.23.0
1515
github.com/eclipse/paho.mqtt.golang v1.5.1
16-
github.com/fergusstrange/embedded-postgres v1.33.0
1716
github.com/gin-contrib/cors v1.7.6
1817
github.com/gin-gonic/gin v1.12.0
1918
github.com/gliderlabs/ssh v0.3.8
@@ -43,6 +42,7 @@ require (
4342
github.com/nyaosorg/go-ttyadapter v0.3.0
4443
github.com/ollama/ollama v0.17.7
4544
github.com/orcaman/concurrent-map/v2 v2.0.1
45+
github.com/ory/dockertest/v4 v4.0.0-beta.2
4646
github.com/paulmach/orb v0.12.0
4747
github.com/pkg/sftp v1.13.10
4848
github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9
@@ -84,19 +84,26 @@ require (
8484
github.com/bytedance/gopkg v0.1.3 // indirect
8585
github.com/bytedance/sonic v1.15.0 // indirect
8686
github.com/bytedance/sonic/loader v0.5.0 // indirect
87+
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
8788
github.com/cespare/xxhash/v2 v2.3.0 // indirect
8889
github.com/clipperhouse/stringish v0.1.1 // indirect
8990
github.com/clipperhouse/uax29/v2 v2.3.0 // indirect
9091
github.com/cloudflare/circl v1.6.3 // indirect
9192
github.com/cloudwego/base64x v0.1.6 // indirect
93+
github.com/containerd/errdefs v1.0.0 // indirect
94+
github.com/containerd/errdefs/pkg v0.3.0 // indirect
9295
github.com/cyphar/filepath-securejoin v0.4.1 // indirect
9396
github.com/davecgh/go-spew v1.1.1 // indirect
9497
github.com/dgraph-io/ristretto/v2 v2.2.0 // indirect
98+
github.com/distribution/reference v0.6.0 // indirect
9599
github.com/dlclark/regexp2 v1.11.5 // indirect
100+
github.com/docker/go-connections v0.6.0 // indirect
101+
github.com/docker/go-units v0.5.0 // indirect
96102
github.com/dop251/base64dec v0.0.0-20231022112746-c6c9f9a96217 // indirect
97103
github.com/dustin/go-humanize v1.0.1 // indirect
98104
github.com/ebitengine/purego v0.10.0 // indirect
99105
github.com/emirpasic/gods v1.18.1 // indirect
106+
github.com/felixge/httpsnoop v1.0.4 // indirect
100107
github.com/gabriel-vasile/mimetype v1.4.12 // indirect
101108
github.com/gebv/pikchr v1.0.2 // indirect
102109
github.com/gin-contrib/sse v1.1.0 // indirect
@@ -136,11 +143,16 @@ require (
136143
github.com/mattn/go-tty v0.0.7 // indirect
137144
github.com/mazznoer/csscolorparser v0.1.5 // indirect
138145
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
146+
github.com/moby/docker-image-spec v1.3.1 // indirect
147+
github.com/moby/moby/api v1.52.0 // indirect
148+
github.com/moby/moby/client v0.2.1 // indirect
139149
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
140150
github.com/modern-go/reflect2 v1.0.2 // indirect
141151
github.com/nats-io/nkeys v0.4.12 // indirect
142152
github.com/nats-io/nuid v1.0.1 // indirect
143153
github.com/nyaosorg/go-box/v3 v3.0.0 // indirect
154+
github.com/opencontainers/go-digest v1.0.0 // indirect
155+
github.com/opencontainers/image-spec v1.1.1 // indirect
144156
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
145157
github.com/pjbgf/sha1cd v0.3.2 // indirect
146158
github.com/pmezard/go-difflib v1.0.0 // indirect
@@ -162,12 +174,12 @@ require (
162174
github.com/ugorji/go/codec v1.3.1 // indirect
163175
github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
164176
github.com/xanzy/ssh-agent v0.3.3 // indirect
165-
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
166177
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
167178
github.com/yusufpapurcu/wmi v1.2.4 // indirect
168179
go.mongodb.org/mongo-driver v1.11.4 // indirect
169180
go.mongodb.org/mongo-driver/v2 v2.5.0 // indirect
170181
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
182+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect
171183
go.opentelemetry.io/otel v1.39.0 // indirect
172184
go.opentelemetry.io/otel/metric v1.39.0 // indirect
173185
go.opentelemetry.io/otel/trace v1.39.0 // indirect

go.sum

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ github.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiD
5757
github.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo=
5858
github.com/campoy/embedmd v1.0.0 h1:V4kI2qTJJLf4J29RzI/MAt2c3Bl4dQSYPuflzwFH2hY=
5959
github.com/campoy/embedmd v1.0.0/go.mod h1:oxyr9RCiSXg0M3VJ3ks0UGfp98BpSSGr0kpiX3MzVl8=
60+
github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM=
61+
github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
6062
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
6163
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
6264
github.com/chromedp/cdproto v0.0.0-20250803210736-d308e07a266d h1:ZtA1sedVbEW7EW80Iz2GR3Ye6PwbJAJXjv7D74xG6HU=
@@ -73,6 +75,10 @@ github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg
7375
github.com/cloudflare/circl v1.6.3/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4=
7476
github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M=
7577
github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU=
78+
github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
79+
github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=
80+
github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE=
81+
github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk=
7682
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
7783
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
7884
github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s=
@@ -88,12 +94,18 @@ github.com/dgraph-io/ristretto/v2 v2.2.0 h1:bkY3XzJcXoMuELV8F+vS8kzNgicwQFAaGINA
8894
github.com/dgraph-io/ristretto/v2 v2.2.0/go.mod h1:RZrm63UmcBAaYWC1DotLYBmTvgkrs0+XhBd7Npn7/zI=
8995
github.com/dgryski/go-farm v0.0.0-20240924180020-3414d57e47da h1:aIftn67I1fkbMa512G+w+Pxci9hJPB8oMnkcP3iZF38=
9096
github.com/dgryski/go-farm v0.0.0-20240924180020-3414d57e47da/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
97+
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
98+
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
9199
github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
92100
github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
93101
github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ=
94102
github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
95103
github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko=
96104
github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
105+
github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94=
106+
github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE=
107+
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
108+
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
97109
github.com/dop251/base64dec v0.0.0-20231022112746-c6c9f9a96217 h1:16iT9CBDOniJwFGPI41MbUDfEk74hFaKTqudrX8kenY=
98110
github.com/dop251/base64dec v0.0.0-20231022112746-c6c9f9a96217/go.mod h1:eIb+f24U+eWQCIsj9D/ah+MD9UP+wdxuqzsdLD+mhGM=
99111
github.com/dop251/goja v0.0.0-20260305124333-6a7976c22267 h1:Kfmq11A6DLHD8XoOeljWjzWg/rrujeaLHWSb8u7+2qQ=
@@ -112,8 +124,8 @@ github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o
112124
github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE=
113125
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
114126
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
115-
github.com/fergusstrange/embedded-postgres v1.33.0 h1:ka8vmRpm4IDsES7NPXQ/NThAp1fc/f+crcXYjCW7wK0=
116-
github.com/fergusstrange/embedded-postgres v1.33.0/go.mod h1:w0YvnCgf19o6tskInrOOACtnqfVlOvluz3hlNLY7tRk=
127+
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
128+
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
117129
github.com/frankban/quicktest v1.11.0/go.mod h1:K+q6oSqb0W0Ininfk863uOk1lMy69l/P6txr3mVT54s=
118130
github.com/frankban/quicktest v1.11.2/go.mod h1:K+q6oSqb0W0Ininfk863uOk1lMy69l/P6txr3mVT54s=
119131
github.com/frankban/quicktest v1.13.0/go.mod h1:qLE0fzW0VuyUAJgPU19zByoIr0HtCHN/r/VLSOOIySU=
@@ -304,6 +316,12 @@ github.com/microsoft/go-mssqldb v1.5.0 h1:CgENxkwtOBNj3Jg6T1X209y2blCfTTcwuOlznd
304316
github.com/microsoft/go-mssqldb v1.5.0/go.mod h1:lmWsjHD8XX/Txr0f8ZqgbEZSC+BZjmEQy/Ms+rLrvho=
305317
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
306318
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
319+
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
320+
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
321+
github.com/moby/moby/api v1.52.0 h1:00BtlJY4MXkkt84WhUZPRqt5TvPbgig2FZvTbe3igYg=
322+
github.com/moby/moby/api v1.52.0/go.mod h1:8mb+ReTlisw4pS6BRzCMts5M49W5M7bKt1cJy/YbAqc=
323+
github.com/moby/moby/client v0.2.1 h1:1Grh1552mvv6i+sYOdY+xKKVTvzJegcVMhuXocyDz/k=
324+
github.com/moby/moby/client v0.2.1/go.mod h1:O+/tw5d4a1Ha/ZA/tPxIZJapJRUS6LNZ1wiVRxYHyUE=
307325
github.com/mochi-mqtt/server/v2 v2.7.9 h1:y0g4vrSLAag7T07l2oCzOa/+nKVLoazKEWAArwqBNYI=
308326
github.com/mochi-mqtt/server/v2 v2.7.9/go.mod h1:lZD3j35AVNqJL5cezlnSkuG05c0FCHSsfAKSPBOSbqc=
309327
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -331,8 +349,14 @@ github.com/ollama/ollama v0.17.7 h1:Jr9x+ZNAgH3Jqv36wAFNFUiy9/YnGDzBTfJEIKnV/AY=
331349
github.com/ollama/ollama v0.17.7/go.mod h1:tCX4IMV8DHjl3zY0THxuEkpWDZSOchJpzTuLACpMwFw=
332350
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
333351
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
352+
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
353+
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
354+
github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
355+
github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
334356
github.com/orcaman/concurrent-map/v2 v2.0.1 h1:jOJ5Pg2w1oeB6PeDurIYf6k9PQ+aTITr/6lP/L/zp6c=
335357
github.com/orcaman/concurrent-map/v2 v2.0.1/go.mod h1:9Eq3TG2oBe5FirmYWQfYO5iH1q0Jv47PLaNK++uCdOM=
358+
github.com/ory/dockertest/v4 v4.0.0-beta.2 h1:mDfUblAtxr+l/1kQjfInbCDJyUUjnM+rXl7hCr/JKpE=
359+
github.com/ory/dockertest/v4 v4.0.0-beta.2/go.mod h1:u2ZdGsiuNxxjW/zBAHJC+4KH/bLA0Y0Acrt9jVSMnTk=
336360
github.com/paulmach/orb v0.12.0 h1:z+zOwjmG3MyEEqzv92UN49Lg1JFYx0L9GpGKNVDKk1s=
337361
github.com/paulmach/orb v0.12.0/go.mod h1:5mULz1xQfs3bmQm63QEJA6lNGujuRafwA5S/EnuLaLU=
338362
github.com/paulmach/protoscan v0.2.1/go.mod h1:SpcSwydNLrxUGSDvXvO0P7g7AuhJ7lcKfDlhJCDw2gY=
@@ -426,8 +450,6 @@ github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI
426450
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
427451
github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
428452
github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
429-
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=
430-
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos=
431453
github.com/yosida95/uritemplate/v3 v3.0.2 h1:Ed3Oyj9yrmi9087+NczuL5BwkIc4wvTb5zIM+UJPGz4=
432454
github.com/yosida95/uritemplate/v3 v3.0.2/go.mod h1:ILOh0sOhIJR3+L/8afwt/kE++YT040gmv5BQTMR2HP4=
433455
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
@@ -453,6 +475,8 @@ go.mongodb.org/mongo-driver/v2 v2.5.0 h1:yXUhImUjjAInNcpTcAlPHiT7bIXhshCTL3jVBkF
453475
go.mongodb.org/mongo-driver/v2 v2.5.0/go.mod h1:yOI9kBsufol30iFsl1slpdq1I0eHPzybRWdyYUs8K/0=
454476
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
455477
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
478+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU=
479+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ=
456480
go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48=
457481
go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8=
458482
go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0=
@@ -598,9 +622,13 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C
598622
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
599623
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
600624
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
625+
gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q=
626+
gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA=
601627
oss.terrastruct.com/d2 v0.7.0 h1:nFTap/RgAQtm1aAmUOOJxO8vgSCj3SLILcOkStnyHeI=
602628
oss.terrastruct.com/d2 v0.7.0/go.mod h1:QseS95MrwfSRDJcFmVpBBIKuPIr8/RUoR3526QQ3rVk=
603629
oss.terrastruct.com/util-go v0.0.0-20250213174338-243d8661088a h1:UXF/Z9i9tOx/wqGUOn/T12wZeez1Gg0sAVKKl7YUDwM=
604630
oss.terrastruct.com/util-go v0.0.0-20250213174338-243d8661088a/go.mod h1:eMWv0sOtD9T2RUl90DLWfuShZCYp4NrsqNpI8eqO6U4=
631+
pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk=
632+
pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
605633
rsc.io/pdf v0.1.1 h1:k1MczvYDUvJBe93bYd7wrZLLUEcLZAuF824/I4e5Xr4=
606634
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=

jsh/lib/db/.gitignore

Lines changed: 0 additions & 1 deletion
This file was deleted.

jsh/lib/db/dbms_test.go

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,20 @@
11
package db_test
22

33
import (
4+
"database/sql"
45
"fmt"
6+
"net"
57
"testing"
68
"time"
79

8-
embedded_postgres "github.com/fergusstrange/embedded-postgres"
10+
_ "github.com/lib/pq"
911
"github.com/machbase/neo-server/v8/api"
1012
"github.com/machbase/neo-server/v8/api/testsuite"
1113
"github.com/machbase/neo-server/v8/jsh/test_engine"
14+
dockertest "github.com/ory/dockertest/v4"
1215
)
1316

1417
func TestMain(m *testing.M) {
15-
pgConf := embedded_postgres.DefaultConfig().
16-
Username("dbuser").
17-
Password("dbpass").
18-
Database("db").
19-
CachePath("./test/postgres").
20-
Version(embedded_postgres.V16).
21-
Port(15455)
22-
pgdb := embedded_postgres.NewDatabase(pgConf)
23-
if err := pgdb.Start(); err != nil {
24-
panic(err)
25-
}
26-
defer func() {
27-
if err := pgdb.Stop(); err != nil {
28-
panic(err)
29-
}
30-
}()
31-
3218
testServer := testsuite.NewServer("./test/tmp")
3319
testServer.StartServer()
3420
testServer.CreateTestTables()
@@ -162,6 +148,30 @@ func TestDBMS(t *testing.T) {
162148
}
163149

164150
func TestPostgreSql(t *testing.T) {
151+
pool := dockertest.NewPoolT(t, "")
152+
postgres := pool.RunT(t, "postgres",
153+
dockertest.WithTag("16"),
154+
dockertest.WithEnv([]string{
155+
"POSTGRES_USER=dbuser",
156+
"POSTGRES_PASSWORD=dbpass",
157+
"POSTGRES_DB=db",
158+
}),
159+
)
160+
hostPort := postgres.GetHostPort("5432/tcp")
161+
host, port, _ := net.SplitHostPort(hostPort)
162+
dsn := fmt.Sprintf("host=%s port=%s dbname=db user=dbuser password=dbpass sslmode=disable", host, port)
163+
// wait for postgres to be ready
164+
err := pool.Retry(t.Context(), 30*time.Second, func() error {
165+
db, err := sql.Open("postgres", dsn)
166+
if err != nil {
167+
return err
168+
}
169+
return db.Ping()
170+
})
171+
if err != nil {
172+
t.Fatalf("could not connect to postgres: %v", err)
173+
}
174+
165175
tests := []test_engine.TestCase{
166176
{
167177
Name: "dbms-postgresql",
@@ -171,7 +181,7 @@ func TestPostgreSql(t *testing.T) {
171181
172182
client = new db.Client({
173183
driver: "postgres",
174-
dataSource: "host=127.0.0.1 port=15455 dbname=db user=dbuser password=dbpass sslmode=disable",
184+
dataSource: "` + dsn + `",
175185
lowerCaseColumns:true,
176186
});
177187
var conn = null;

mods/bridge/internal/postgres/postgres_test.go

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,47 +2,57 @@ package postgres_test
22

33
import (
44
"context"
5-
"os"
5+
"database/sql"
6+
"fmt"
7+
"net"
68
"testing"
9+
"time"
710

8-
embedded_postgres "github.com/fergusstrange/embedded-postgres"
911
"github.com/machbase/neo-server/v8/api"
1012
"github.com/machbase/neo-server/v8/mods/bridge/internal"
11-
"github.com/machbase/neo-server/v8/mods/bridge/internal/postgres"
13+
bridgePostgres "github.com/machbase/neo-server/v8/mods/bridge/internal/postgres"
14+
"github.com/ory/dockertest/v4"
1215
"github.com/stretchr/testify/require"
1316
)
1417

15-
var newConn func(context.Context) api.Conn
16-
17-
func TestMain(m *testing.M) {
18-
conf := embedded_postgres.DefaultConfig().
19-
Username("dbuser").
20-
Password("dbpass").
21-
Database("db").
22-
Port(15454)
23-
pgdb := embedded_postgres.NewDatabase(conf)
24-
if err := pgdb.Start(); err != nil {
25-
panic(err)
18+
func TestPostgres(t *testing.T) {
19+
pool := dockertest.NewPoolT(t, "")
20+
postgres := pool.RunT(t, "postgres",
21+
dockertest.WithTag("16"),
22+
dockertest.WithEnv([]string{
23+
"POSTGRES_USER=dbuser",
24+
"POSTGRES_PASSWORD=dbpass",
25+
"POSTGRES_DB=db",
26+
}),
27+
)
28+
hostPort := postgres.GetHostPort("5432/tcp")
29+
host, port, _ := net.SplitHostPort(hostPort)
30+
dsn := fmt.Sprintf("host=%s port=%s dbname=db user=dbuser password=dbpass sslmode=disable", host, port)
31+
// wait for postgres to be ready
32+
err := pool.Retry(t.Context(), 30*time.Second, func() error {
33+
db, err := sql.Open("postgres", dsn)
34+
if err != nil {
35+
return err
36+
}
37+
return db.Ping()
38+
})
39+
if err != nil {
40+
t.Fatalf("could not connect to postgres: %v", err)
2641
}
27-
bridge := postgres.New("pg", "host=127.0.0.1 port=15454 dbname=db user=dbuser password=dbpass sslmode=disable")
42+
43+
bridge := bridgePostgres.New("pg", dsn)
2844
bridge.BeforeRegister()
2945
defer bridge.AfterUnregister()
30-
newConn = func(ctx context.Context) api.Conn {
46+
47+
newConn := func(ctx context.Context) api.Conn {
3148
conn, err := bridge.Connect(ctx)
3249
if err != nil {
3350
panic(err)
3451
}
3552
return internal.NewConn(conn)
3653
}
37-
code := m.Run()
38-
if err := pgdb.Stop(); err != nil {
39-
panic(err)
40-
}
41-
os.Exit(code)
42-
}
4354

44-
func TestPostgres(t *testing.T) {
45-
ctx := context.TODO()
55+
ctx := t.Context()
4656
conn := newConn(ctx)
4757
defer conn.Close()
4858

0 commit comments

Comments
 (0)