mirror of
https://github.com/gofiber/storage.git
synced 2025-12-18 16:28:22 +08:00
feat: use testcontainers-go's nats module
This commit is contained in:
8
.github/workflows/benchmark.yml
vendored
8
.github/workflows/benchmark.yml
vendored
@@ -122,13 +122,6 @@ jobs:
|
||||
run: |
|
||||
redis-server --port 6379 &
|
||||
|
||||
- name: Run NATS
|
||||
if: ${{ matrix.package == 'nats' }}
|
||||
run: |
|
||||
./.github/scripts/gen-test-certs.sh
|
||||
docker run -d --name nats-jetstream -p 4443:4443 -v ./nats/testdata:/testdata -v ./tls:/tls nats:latest --jetstream -c /testdata/nats-tls.conf
|
||||
sleep 2
|
||||
|
||||
- name: Run Benchmarks
|
||||
working-directory: ${{ matrix.package }}
|
||||
run: |
|
||||
@@ -146,6 +139,7 @@ jobs:
|
||||
TEST_MINIO_IMAGE: "docker.io/minio/minio:RELEASE.2024-08-17T01-24-54Z"
|
||||
TEST_MONGODB_IMAGE: "docker.io/mongo:7"
|
||||
TEST_MYSQL_IMAGE: "docker.io/mysql:9"
|
||||
TEST_NATS_IMAGE: "nats:2-alpine"
|
||||
TEST_POSTGRES_IMAGE: "docker.io/postgres:16-alpine"
|
||||
|
||||
- name: Get Previous Benchmark Results
|
||||
|
||||
12
.github/workflows/test-nats.yml
vendored
12
.github/workflows/test-nats.yml
vendored
@@ -14,9 +14,9 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
go-version:
|
||||
- 1.20.x
|
||||
- 1.21.x
|
||||
- 1.22.x
|
||||
- 1.23.x
|
||||
- 1.24.x
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Fetch Repository
|
||||
@@ -25,11 +25,7 @@ jobs:
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '${{ matrix.go-version }}'
|
||||
- name: Generate config
|
||||
run: ./.github/scripts/gen-test-certs.sh
|
||||
- name: Run NATS
|
||||
run: |
|
||||
docker run -d --name nats-jetstream -p 4443:4443 -v ./nats/testdata:/testdata -v ./tls:/tls nats:latest --jetstream -c /testdata/nats-tls.conf
|
||||
sleep 5
|
||||
- name: Test Nats
|
||||
env:
|
||||
TEST_NATS_IMAGE: "nats:2-alpine"
|
||||
run: cd ./nats && go test ./... -v -race
|
||||
|
||||
52
nats/go.mod
52
nats/go.mod
@@ -1,20 +1,62 @@
|
||||
module github.com/gofiber/storage/nats
|
||||
|
||||
go 1.20
|
||||
go 1.22
|
||||
|
||||
require (
|
||||
github.com/nats-io/nats.go v1.37.0
|
||||
github.com/stretchr/testify v1.9.0
|
||||
github.com/testcontainers/testcontainers-go v0.35.0
|
||||
github.com/testcontainers/testcontainers-go/modules/nats v0.35.0
|
||||
)
|
||||
|
||||
require (
|
||||
dario.cat/mergo v1.0.0 // indirect
|
||||
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect
|
||||
github.com/Microsoft/go-winio v0.6.2 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
|
||||
github.com/containerd/containerd v1.7.18 // indirect
|
||||
github.com/containerd/log v0.1.0 // indirect
|
||||
github.com/containerd/platforms v0.2.1 // indirect
|
||||
github.com/cpuguy83/dockercfg v0.3.2 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/klauspost/compress v1.17.2 // indirect
|
||||
github.com/distribution/reference v0.6.0 // indirect
|
||||
github.com/docker/docker v27.1.1+incompatible // indirect
|
||||
github.com/docker/go-connections v0.5.0 // indirect
|
||||
github.com/docker/go-units v0.5.0 // indirect
|
||||
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||
github.com/go-logr/logr v1.4.1 // indirect
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
github.com/go-ole/go-ole v1.2.6 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/google/uuid v1.6.0 // indirect
|
||||
github.com/klauspost/compress v1.17.4 // indirect
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
|
||||
github.com/magiconair/properties v1.8.7 // indirect
|
||||
github.com/moby/docker-image-spec v1.3.1 // indirect
|
||||
github.com/moby/patternmatcher v0.6.0 // indirect
|
||||
github.com/moby/sys/sequential v0.5.0 // indirect
|
||||
github.com/moby/sys/user v0.1.0 // indirect
|
||||
github.com/moby/term v0.5.0 // indirect
|
||||
github.com/morikuni/aec v1.0.0 // indirect
|
||||
github.com/nats-io/nkeys v0.4.7 // indirect
|
||||
github.com/nats-io/nuid v1.0.1 // indirect
|
||||
github.com/opencontainers/go-digest v1.0.0 // indirect
|
||||
github.com/opencontainers/image-spec v1.1.0 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
golang.org/x/crypto v0.18.0 // indirect
|
||||
golang.org/x/sys v0.16.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
|
||||
github.com/shirou/gopsutil/v3 v3.23.12 // indirect
|
||||
github.com/shoenig/go-m1cpu v0.1.6 // indirect
|
||||
github.com/sirupsen/logrus v1.9.3 // indirect
|
||||
github.com/tklauser/go-sysconf v0.3.12 // indirect
|
||||
github.com/tklauser/numcpus v0.6.1 // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.3 // indirect
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
|
||||
go.opentelemetry.io/otel v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.24.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.24.0 // indirect
|
||||
golang.org/x/crypto v0.31.0 // indirect
|
||||
golang.org/x/sys v0.28.0 // indirect
|
||||
golang.org/x/text v0.21.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
)
|
||||
|
||||
194
nats/go.sum
194
nats/go.sum
@@ -1,24 +1,200 @@
|
||||
dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
|
||||
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
|
||||
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU=
|
||||
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
|
||||
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0=
|
||||
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
|
||||
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
|
||||
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
|
||||
github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
|
||||
github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
|
||||
github.com/containerd/containerd v1.7.18 h1:jqjZTQNfXGoEaZdW1WwPU0RqSn1Bm2Ay/KJPUuO8nao=
|
||||
github.com/containerd/containerd v1.7.18/go.mod h1:IYEk9/IO6wAPUz2bCMVUbsfXjzw5UNP5fLz4PsUygQ4=
|
||||
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
|
||||
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
|
||||
github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A=
|
||||
github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw=
|
||||
github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA=
|
||||
github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc=
|
||||
github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
|
||||
github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4=
|
||||
github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
|
||||
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
|
||||
github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY=
|
||||
github.com/docker/docker v27.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
|
||||
github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
|
||||
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
|
||||
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
|
||||
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
|
||||
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
|
||||
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
|
||||
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms=
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg=
|
||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4=
|
||||
github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
|
||||
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
|
||||
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
|
||||
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
|
||||
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
|
||||
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
|
||||
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
|
||||
github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk=
|
||||
github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc=
|
||||
github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc=
|
||||
github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo=
|
||||
github.com/moby/sys/user v0.1.0 h1:WmZ93f5Ux6het5iituh9x2zAG7NFY9Aqi49jjE1PaQg=
|
||||
github.com/moby/sys/user v0.1.0/go.mod h1:fKJhFOnsCN6xZ5gSfbM6zaHGgDJMrqt9/reuj4T7MmU=
|
||||
github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
|
||||
github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
|
||||
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
|
||||
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
|
||||
github.com/nats-io/nats.go v1.37.0 h1:07rauXbVnnJvv1gfIyghFEo6lUcYRY0WXc3x7x0vUxE=
|
||||
github.com/nats-io/nats.go v1.37.0/go.mod h1:Ubdu4Nh9exXdSz0RVWRFBbRfrbSxOYd26oF0wkWclB8=
|
||||
github.com/nats-io/nkeys v0.4.7 h1:RwNJbbIdYCoClSDNY7QVKZlyb/wfT6ugvFCiKy6vDvI=
|
||||
github.com/nats-io/nkeys v0.4.7/go.mod h1:kqXRgRDPlGy7nGaEDMuYzmiJCIAAWDK0IMBtDmGD0nc=
|
||||
github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
|
||||
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
|
||||
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
||||
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
||||
github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
|
||||
github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
|
||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
|
||||
github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg=
|
||||
github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o=
|
||||
github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4=
|
||||
github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM=
|
||||
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
|
||||
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
|
||||
github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU=
|
||||
github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
|
||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
|
||||
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
|
||||
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
|
||||
golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
|
||||
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||
github.com/testcontainers/testcontainers-go v0.35.0 h1:uADsZpTKFAtp8SLK+hMwSaa+X+JiERHtd4sQAFmXeMo=
|
||||
github.com/testcontainers/testcontainers-go v0.35.0/go.mod h1:oEVBj5zrfJTrgjwONs1SsRbnBtH9OKl+IGl3UMcr2B4=
|
||||
github.com/testcontainers/testcontainers-go/modules/nats v0.35.0 h1:tP62cjqzED7z7TjwMID1Xy0b2EDlE5YkUT3Aptpr+4o=
|
||||
github.com/testcontainers/testcontainers-go/modules/nats v0.35.0/go.mod h1:uGmuW8+W7fr+4esMkzOhgqc0yQlYw5AWati19g7q4oQ=
|
||||
github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
|
||||
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
|
||||
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
|
||||
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw=
|
||||
github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
|
||||
go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo=
|
||||
go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU=
|
||||
go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI=
|
||||
go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco=
|
||||
go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o=
|
||||
go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A=
|
||||
go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI=
|
||||
go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU=
|
||||
go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
|
||||
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
|
||||
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
|
||||
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
|
||||
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
|
||||
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
|
||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
||||
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44=
|
||||
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/genproto v0.0.0-20230920204549-e6e6cdab5c13 h1:vlzZttNJGVqTsRFU9AmdnrcO1Znh8Ew9kCD//yjigk0=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
|
||||
google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA=
|
||||
google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0=
|
||||
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
|
||||
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=
|
||||
gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU=
|
||||
|
||||
@@ -1,37 +1,127 @@
|
||||
package nats
|
||||
|
||||
import (
|
||||
"context"
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/nats-io/nats.go"
|
||||
"github.com/nats-io/nats.go/jetstream"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/testcontainers/testcontainers-go"
|
||||
tcnats "github.com/testcontainers/testcontainers-go/modules/nats"
|
||||
"github.com/testcontainers/testcontainers-go/wait"
|
||||
)
|
||||
|
||||
var config = Config{
|
||||
URLs: "nats://localhost:4443",
|
||||
NatsOptions: []nats.Option{
|
||||
nats.MaxReconnects(2),
|
||||
// Enable TLS with client certificate authentication
|
||||
nats.ClientCert("../tls/client.crt", "../tls/client.key"),
|
||||
nats.RootCAs("../tls/ca.crt"),
|
||||
},
|
||||
KeyValueConfig: jetstream.KeyValueConfig{
|
||||
Bucket: "test",
|
||||
Storage: jetstream.MemoryStorage,
|
||||
},
|
||||
const (
|
||||
// mysqlImage is the default image used for running MySQL in tests.
|
||||
natsImage = "docker.io/nats:2-alpine"
|
||||
natsImageEnvVar = "TEST_NATS_IMAGE"
|
||||
natsTLSPort = "4443/tcp"
|
||||
)
|
||||
|
||||
var (
|
||||
//go:embed testdata/nats-tls.conf
|
||||
natsTLSConfig string
|
||||
|
||||
//go:embed testdata/tls/ca.crt
|
||||
caCrt string
|
||||
|
||||
//go:embed testdata/tls/redis.crt
|
||||
redisCrt string
|
||||
|
||||
//go:embed testdata/tls/redis.key
|
||||
redisKey string
|
||||
)
|
||||
|
||||
func newTestStore(t testing.TB) (*Storage, error) {
|
||||
t.Helper()
|
||||
|
||||
img := natsImage
|
||||
if imgFromEnv := os.Getenv(natsImageEnvVar); imgFromEnv != "" {
|
||||
img = imgFromEnv
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
|
||||
c, err := tcnats.Run(
|
||||
ctx, img,
|
||||
tcnats.WithConfigFile(strings.NewReader(natsTLSConfig)),
|
||||
// Override the default wait strategy to use the port 4443 for TLS
|
||||
testcontainers.WithWaitStrategy(wait.ForLog("Listening for client connections on 0.0.0.0:4443")),
|
||||
// add the cert files to the container
|
||||
testcontainers.CustomizeRequest(testcontainers.GenericContainerRequest{
|
||||
ContainerRequest: testcontainers.ContainerRequest{
|
||||
ExposedPorts: []string{natsTLSPort},
|
||||
Files: []testcontainers.ContainerFile{
|
||||
{
|
||||
Reader: strings.NewReader(caCrt),
|
||||
ContainerFilePath: "/tls/ca.crt",
|
||||
FileMode: 0o0644,
|
||||
},
|
||||
{
|
||||
Reader: strings.NewReader(redisCrt),
|
||||
ContainerFilePath: "/tls/redis.crt",
|
||||
FileMode: 0o0644,
|
||||
},
|
||||
{
|
||||
Reader: strings.NewReader(redisKey),
|
||||
ContainerFilePath: "/tls/redis.key",
|
||||
FileMode: 0o0644,
|
||||
},
|
||||
},
|
||||
},
|
||||
}),
|
||||
)
|
||||
testcontainers.CleanupContainer(t, c)
|
||||
require.NoError(t, err)
|
||||
|
||||
// build the connection string for the 4443 TLS port
|
||||
mappedPort, err := c.MappedPort(ctx, natsTLSPort)
|
||||
require.NoError(t, err)
|
||||
|
||||
hostIP, err := c.Host(ctx)
|
||||
require.NoError(t, err)
|
||||
|
||||
uri := fmt.Sprintf("nats://%s:%s", hostIP, mappedPort.Port())
|
||||
require.NoError(t, err)
|
||||
|
||||
return New(Config{
|
||||
URLs: uri,
|
||||
NatsOptions: []nats.Option{
|
||||
nats.MaxReconnects(2),
|
||||
// Enable TLS with client certificate authentication
|
||||
nats.ClientCert(
|
||||
filepath.Join("testdata", "tls", "client.crt"),
|
||||
filepath.Join("testdata", "tls", "client.key"),
|
||||
),
|
||||
nats.RootCAs(
|
||||
filepath.Join("testdata", "tls", "ca.crt"),
|
||||
),
|
||||
},
|
||||
KeyValueConfig: jetstream.KeyValueConfig{
|
||||
Bucket: "test",
|
||||
Storage: jetstream.MemoryStorage,
|
||||
},
|
||||
}), nil
|
||||
}
|
||||
|
||||
func Test_Storage_Nats_Set(t *testing.T) {
|
||||
var (
|
||||
testStore = New(config)
|
||||
key = "john"
|
||||
val = []byte("doe")
|
||||
key = "john"
|
||||
val = []byte("doe")
|
||||
)
|
||||
|
||||
testStore, err := newTestStore(t)
|
||||
require.NoError(t, err)
|
||||
defer testStore.Close()
|
||||
|
||||
err := testStore.Set(key, val, 0)
|
||||
err = testStore.Set(key, val, 0)
|
||||
require.NoError(t, err)
|
||||
|
||||
keys, err := testStore.Keys()
|
||||
@@ -41,14 +131,16 @@ func Test_Storage_Nats_Set(t *testing.T) {
|
||||
|
||||
func Test_Storage_Nats_Set_Overwrite(t *testing.T) {
|
||||
var (
|
||||
testStore = New(config)
|
||||
key = "john"
|
||||
val1 = []byte("doe")
|
||||
val2 = []byte("overwritten")
|
||||
key = "john"
|
||||
val1 = []byte("doe")
|
||||
val2 = []byte("overwritten")
|
||||
)
|
||||
|
||||
testStore, err := newTestStore(t)
|
||||
require.NoError(t, err)
|
||||
defer testStore.Close()
|
||||
|
||||
err := testStore.Set(key, val1, 0)
|
||||
err = testStore.Set(key, val1, 0)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = testStore.Set(key, val2, 30*time.Second)
|
||||
@@ -64,13 +156,15 @@ func Test_Storage_Nats_Set_Overwrite(t *testing.T) {
|
||||
|
||||
func Test_Storage_Nats_Get(t *testing.T) {
|
||||
var (
|
||||
testStore = New(config)
|
||||
key = "john"
|
||||
val = []byte("doe")
|
||||
key = "john"
|
||||
val = []byte("doe")
|
||||
)
|
||||
|
||||
testStore, err := newTestStore(t)
|
||||
require.NoError(t, err)
|
||||
defer testStore.Close()
|
||||
|
||||
err := testStore.Set(key, val, 30*time.Second)
|
||||
err = testStore.Set(key, val, 30*time.Second)
|
||||
require.NoError(t, err)
|
||||
|
||||
result, err := testStore.Get(key)
|
||||
@@ -84,14 +178,16 @@ func Test_Storage_Nats_Get(t *testing.T) {
|
||||
|
||||
func Test_Storage_Nats_Set_Expiration(t *testing.T) {
|
||||
var (
|
||||
testStore = New(config)
|
||||
key = "john"
|
||||
val = []byte("doe")
|
||||
exp = 1 * time.Second
|
||||
key = "john"
|
||||
val = []byte("doe")
|
||||
exp = 1 * time.Second
|
||||
)
|
||||
|
||||
testStore, err := newTestStore(t)
|
||||
require.NoError(t, err)
|
||||
defer testStore.Close()
|
||||
|
||||
err := testStore.Set(key, val, exp)
|
||||
err = testStore.Set(key, val, exp)
|
||||
require.NoError(t, err)
|
||||
|
||||
time.Sleep(1100 * time.Millisecond)
|
||||
@@ -107,11 +203,13 @@ func Test_Storage_Nats_Set_Expiration(t *testing.T) {
|
||||
|
||||
func Test_Storage_Nats_Set_Long_Expiration_with_Keys(t *testing.T) {
|
||||
var (
|
||||
testStore = New(config)
|
||||
key = "john"
|
||||
val = []byte("doe")
|
||||
exp = 5 * time.Second
|
||||
key = "john"
|
||||
val = []byte("doe")
|
||||
exp = 5 * time.Second
|
||||
)
|
||||
|
||||
testStore, err := newTestStore(t)
|
||||
require.NoError(t, err)
|
||||
defer testStore.Close()
|
||||
|
||||
keys, err := testStore.Keys()
|
||||
@@ -138,7 +236,8 @@ func Test_Storage_Nats_Set_Long_Expiration_with_Keys(t *testing.T) {
|
||||
}
|
||||
|
||||
func Test_Storage_Nats_Get_NotExist(t *testing.T) {
|
||||
testStore := New(config)
|
||||
testStore, err := newTestStore(t)
|
||||
require.NoError(t, err)
|
||||
defer testStore.Close()
|
||||
|
||||
result, err := testStore.Get("notexist")
|
||||
@@ -152,13 +251,15 @@ func Test_Storage_Nats_Get_NotExist(t *testing.T) {
|
||||
|
||||
func Test_Storage_Nats_Delete(t *testing.T) {
|
||||
var (
|
||||
testStore = New(config)
|
||||
key = "john"
|
||||
val = []byte("doe")
|
||||
key = "john"
|
||||
val = []byte("doe")
|
||||
)
|
||||
|
||||
testStore, err := newTestStore(t)
|
||||
require.NoError(t, err)
|
||||
defer testStore.Close()
|
||||
|
||||
err := testStore.Set(key, val, 0)
|
||||
err = testStore.Set(key, val, 0)
|
||||
require.NoError(t, err)
|
||||
|
||||
keys, err := testStore.Keys()
|
||||
@@ -178,11 +279,13 @@ func Test_Storage_Nats_Delete(t *testing.T) {
|
||||
}
|
||||
|
||||
func Test_Storage_Nats_Reset(t *testing.T) {
|
||||
testStore := New(config)
|
||||
testStore, err := newTestStore(t)
|
||||
require.NoError(t, err)
|
||||
defer testStore.Close()
|
||||
|
||||
val := []byte("doe")
|
||||
|
||||
err := testStore.Set("john1", val, 0)
|
||||
err = testStore.Set("john1", val, 0)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = testStore.Set("john2", val, 0)
|
||||
@@ -209,38 +312,41 @@ func Test_Storage_Nats_Reset(t *testing.T) {
|
||||
}
|
||||
|
||||
func Test_Storage_Nats_Close(t *testing.T) {
|
||||
testStore := New(config)
|
||||
testStore, err := newTestStore(t)
|
||||
require.NoError(t, err)
|
||||
require.Nil(t, testStore.Close())
|
||||
}
|
||||
|
||||
func Test_Storage_Nats_Conn(t *testing.T) {
|
||||
testStore := New(config)
|
||||
testStore, err := newTestStore(t)
|
||||
require.NoError(t, err)
|
||||
defer testStore.Close()
|
||||
|
||||
n, k := testStore.Conn()
|
||||
require.NotNil(t, n)
|
||||
require.NotNil(t, k)
|
||||
}
|
||||
|
||||
func Benchmark_Nats_Set(b *testing.B) {
|
||||
testStore := New(config)
|
||||
testStore, err := newTestStore(b)
|
||||
require.NoError(b, err)
|
||||
defer testStore.Close()
|
||||
|
||||
b.ReportAllocs()
|
||||
b.ResetTimer()
|
||||
|
||||
var err error
|
||||
for i := 0; i < b.N; i++ {
|
||||
err = testStore.Set("john", []byte("doe"), 0)
|
||||
require.NoError(b, err)
|
||||
}
|
||||
|
||||
require.NoError(b, err)
|
||||
}
|
||||
|
||||
func Benchmark_Nats_Get(b *testing.B) {
|
||||
testStore := New(config)
|
||||
testStore, err := newTestStore(b)
|
||||
require.NoError(b, err)
|
||||
defer testStore.Close()
|
||||
|
||||
err := testStore.Set("john", []byte("doe"), 0)
|
||||
err = testStore.Set("john", []byte("doe"), 0)
|
||||
require.NoError(b, err)
|
||||
|
||||
b.ReportAllocs()
|
||||
@@ -248,23 +354,23 @@ func Benchmark_Nats_Get(b *testing.B) {
|
||||
|
||||
for i := 0; i < b.N; i++ {
|
||||
_, err = testStore.Get("john")
|
||||
require.NoError(b, err)
|
||||
}
|
||||
|
||||
require.NoError(b, err)
|
||||
}
|
||||
|
||||
func Benchmark_Nats_SetAndDelete(b *testing.B) {
|
||||
testStore := New(config)
|
||||
testStore, err := newTestStore(b)
|
||||
require.NoError(b, err)
|
||||
defer testStore.Close()
|
||||
|
||||
b.ReportAllocs()
|
||||
b.ResetTimer()
|
||||
|
||||
var err error
|
||||
for i := 0; i < b.N; i++ {
|
||||
_ = testStore.Set("john", []byte("doe"), 0)
|
||||
err = testStore.Delete("john")
|
||||
}
|
||||
err = testStore.Set("john", []byte("doe"), 0)
|
||||
require.NoError(b, err)
|
||||
|
||||
require.NoError(b, err)
|
||||
err = testStore.Delete("john")
|
||||
require.NoError(b, err)
|
||||
}
|
||||
}
|
||||
|
||||
31
nats/testdata/tls/ca.crt
vendored
Normal file
31
nats/testdata/tls/ca.crt
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
/gZhf9P3WSkf6OpzOkpc
|
||||
-----END CERTIFICATE-----
|
||||
26
nats/testdata/tls/client.crt
vendored
Normal file
26
nats/testdata/tls/client.crt
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEUDCCAjigAwIBAgIUegEAdDIUZsPJiiT5lRJ8Cx+PEPwwDQYJKoZIhvcNAQEL
|
||||
BQAwNTETMBEGA1UECgwKUmVkaXMgVGVzdDEeMBwGA1UEAwwVQ2VydGlmaWNhdGUg
|
||||
QXV0aG9yaXR5MB4XDTI1MDMxOTEwMjQ0OFoXDTI2MDMxOTEwMjQ0OFowKzETMBEG
|
||||
A1UECgwKUmVkaXMgVGVzdDEUMBIGA1UEAwwLQ2xpZW50LW9ubHkwggEiMA0GCSqG
|
||||
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDl9fKTGnY/djZFQ9GTyaYL5/Gm2SILW1vt
|
||||
JCtiaLSz+NFYZiDIay8f9xGhN4eG6eCCAI1rEjt6/kVPZsS6qqSKCbRzmvvQKHKx
|
||||
e0s+F2F1VxV7ANyp3NFvLf7TJ/a961YPheALpIqC/XOrq/ZYob++RmS7UZZJTnnk
|
||||
Hg+e0Ah0J/LNEepSirqGVhzoNkXBw8gAUZ1HePUd7ybvKe8S6MGOuNuQeGNd18Nc
|
||||
KlzEl/LEVt1EIBsx5r3ZkRTbhCiYdFzreJGAhk4e/q+X/AfgCN17zYNxe/Pzlz/9
|
||||
/ZD3YlDW8ZzwhTyDCihfe6cfCzun93JYyCpU3EYfooMvEvHQk9VLAgMBAAGjYjBg
|
||||
MAsGA1UdDwQEAwIFoDARBglghkgBhvhCAQEEBAMCB4AwHQYDVR0OBBYEFOWONhi4
|
||||
F+159BVyxoQGdz4nWz1oMB8GA1UdIwQYMBaAFIUuIA/xEEPAzymUpXQPRVJ6fMiQ
|
||||
MA0GCSqGSIb3DQEBCwUAA4ICAQCXUIpag0Aekp5cXmVyvryjx5MkXKBKgLh2Hazv
|
||||
X8joetjyVHbMUI6QMUScFt57R15FVB+CKl897ah4DgbtDEyAUtVqKtwHGBOpIj5l
|
||||
ptNUtxZ770kCWpX1NdpS7iAOOhyQZeQG+vx18W2jNIpRR/2TAh5H9GOtv776eEE+
|
||||
lwpEaDUI4Fc5VGfEk0epiBxdDLMJX2abW90X4tO04rhW1YSXJAkDkdzf4DrcGINd
|
||||
GMSxDkgXTiuetdhM1A/je+zhndnkWeNeF+ysLhpoJcWIjdy3z5bnVD+OTCU6AFMp
|
||||
X3UjUWWN6u6gqOGi190p8rpQ47/zvndkO9gsmJggbXhifue0gltKDPxyonCRjAef
|
||||
cdS8o1pC14XO9swg2vd5FTLexTkf2bXKR/rYGz9+692obt093h85Mu8UPxpVOkLe
|
||||
a8v3Ws/gW+RW8CcMW56cQy1Vf4OiMdjpxo2fHyRf8AiU2JAgrukEuU94CyX6/atG
|
||||
MQwCOdK4VkwcxidBZvo25sFDkqB1XYncJw46pstgPAIhJffzl5oLu+KpaGvE7YXj
|
||||
shvJ5fOUx7UIIjm0RU7DGGCSMto0bOuw23uLGDJWdxU7UyoITWHNC9AlN4MkR9n+
|
||||
4UzX2o5gE8/D42/4fBSj/WqYVVBUMefks07MNw6OIVWMU3n08+ZPnf9qKXVHATlY
|
||||
UVDiTw==
|
||||
-----END CERTIFICATE-----
|
||||
28
nats/testdata/tls/client.key
vendored
Normal file
28
nats/testdata/tls/client.key
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDl9fKTGnY/djZF
|
||||
Q9GTyaYL5/Gm2SILW1vtJCtiaLSz+NFYZiDIay8f9xGhN4eG6eCCAI1rEjt6/kVP
|
||||
ZsS6qqSKCbRzmvvQKHKxe0s+F2F1VxV7ANyp3NFvLf7TJ/a961YPheALpIqC/XOr
|
||||
q/ZYob++RmS7UZZJTnnkHg+e0Ah0J/LNEepSirqGVhzoNkXBw8gAUZ1HePUd7ybv
|
||||
Ke8S6MGOuNuQeGNd18NcKlzEl/LEVt1EIBsx5r3ZkRTbhCiYdFzreJGAhk4e/q+X
|
||||
/AfgCN17zYNxe/Pzlz/9/ZD3YlDW8ZzwhTyDCihfe6cfCzun93JYyCpU3EYfooMv
|
||||
EvHQk9VLAgMBAAECggEAAtqdWbsF1/USRBHxnbS3nDLug3s8Ptuxw0zkHc5VAYHw
|
||||
h8JB3OZUyS2zlqsgQhwr9VfwRMz8oGvuJ9oLlyQNvEmxQrScD9+mWeTTMJdMsY6d
|
||||
6NhAQEO30ENaOsVdalz9113oDLYVkJAvaYjymvO1PSMVg/VX5qSUC/oUY7EdaJnm
|
||||
3gcEvDrOogftCv281YHksCz1FNmC3vwFb4gLTvCAWUB/cJCyjL+rQYStkT/acaiC
|
||||
BloDx69Pj1EFNwr47LDR7MSBsNdlw0p7uzLYoQMKFMoNIvuGhuhQwLbPd6P14JmN
|
||||
PehKZ9hfj2dvxwUrFZmb0AGnMfyQPf6OAXzjdAVrSQKBgQD7QyQMppIe6XZtF6br
|
||||
xGpSEUWPhFEQx4pHderT/dVewdxw4lHmF7r2RG/1kguDJ3WZnXl1X+Z17thGEm6R
|
||||
x98AR2OLX0rRvuBO+wwojv54Hud+kauCDrR4Di6KyWoXJ9PcPH3NMhJkJMuSXRFA
|
||||
txOZjc08tSZoAVkvTG1FtgchUwKBgQDqS/ucCWod2w/0Uf064z53SJGVAYk8bCU1
|
||||
C5BzSJLsn60OA1XphKIG1ZuH+etiEz05fQwWy768q27VMgPn/XhS8jpVlVKtPIre
|
||||
Ek/9wbBTvwMiP0+NyubMvRHlMRhHW0JQIJsWJ9+Pmh+8ZTvXZxscslQYS5eUhGrq
|
||||
V6zz05elKQKBgHmsMbDOmMPPWkHJylMxcir7oiu1b2wotJWWTHkL2l9gkVc4wWAi
|
||||
7a6DxZOtfVWtrg0NbNuh7P//AUwtcM23dA22hEXhh2G6hPS6LVEWrbONg5yO/fal
|
||||
GE9qzq72iiFccAOeZ20OakmEZ/AgkVI9VYhuWoyjTE3hGUcGQ4QWea1xAoGBAIbX
|
||||
0ClPqckhCJ+eiFVZ79uK4m6VgbxKqWdMDoiq3hRdGaYU+V76PJ4eVfL+PSAm3ne1
|
||||
pj2AaXgAWjtNG75qvNNQIY6b8AdP7sQ8Wdk7nhW0u0L8mPaMLiTrM99qUATRWuru
|
||||
uRMZQ6tMErPEt5oS9yGe6JNK/iQ1yaqxZxK1VnNxAoGAaRobzEGoITacIIG1KH0N
|
||||
exVFufz9jeNLQcOk4iWp6i/7mPMcqnS67+17MvCysOlR3rBSaMG6EN8NWtiuu4a+
|
||||
oPpm2ihJyyfarKJdJeqIYlZ/Tiv5NkYkP32HIzR6gjkajix3ZDxPCgwI1RJ3kb6z
|
||||
LnZ4ySq5r3Llw6QiOeLbk8w=
|
||||
-----END PRIVATE KEY-----
|
||||
26
nats/testdata/tls/redis.crt
vendored
Normal file
26
nats/testdata/tls/redis.crt
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEZDCCAkygAwIBAgIUegEAdDIUZsPJiiT5lRJ8Cx+PEP0wDQYJKoZIhvcNAQEL
|
||||
BQAwNTETMBEGA1UECgwKUmVkaXMgVGVzdDEeMBwGA1UEAwwVQ2VydGlmaWNhdGUg
|
||||
QXV0aG9yaXR5MB4XDTI1MDMxOTEwMjQ0OFoXDTI2MDMxOTEwMjQ0OFowKTETMBEG
|
||||
A1UECgwKUmVkaXMgVGVzdDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG
|
||||
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkqQh7ChlWSYNaeXqwtGLovggr7bLKhI8eF6K
|
||||
m/1sC7o/7bvDk6u35k/yUJ/9OT8Mo0oG8yPi76GL4vtxkoPWxuoVPLNQOOUap80t
|
||||
Fxi2kZYWGjRAJqBGkvkcwCTdpVeR+hs5HA3P0Rsqy/vzxBLRTg+blj4+CAfucJ5b
|
||||
2S5ptwML0+kOEAxLak3gHizOg20YYvozUmjGY17V+kgiOlfNnI6anC8C/jizLzdM
|
||||
q6wqBMmll2bz2/13wo0nmAPUVCTT1fsfs3m1RzX10mDN/dtTCJsfF7pGx+RJfmPt
|
||||
e5s1Rx+v0O+xK8R7tQFyEQDgpyf2eGxNAbudg1u0Xsve0happwIDAQABo3gwdjAL
|
||||
BgNVHQ8EBAMCBaAwEQYJYIZIAYb4QgEBBAQDAgZAMBQGA1UdEQQNMAuCCWxvY2Fs
|
||||
aG9zdDAdBgNVHQ4EFgQUdXzMnEB9vRMWmcX3mytj1sbLogswHwYDVR0jBBgwFoAU
|
||||
hS4gD/EQQ8DPKZSldA9FUnp8yJAwDQYJKoZIhvcNAQELBQADggIBACvuBVMArk/J
|
||||
p2WEUMsybKcHBLRSHw0BtCxit9H//o79dVnVTecZppN/ju+JX/jY2CJwE868JV7C
|
||||
KdBE6FqvlmrGR6mKUjBb5FQ1XnRlVvaKYQcFNFjA1e4NrX1Zz88JfKCF9S7A3Lq3
|
||||
tdJftezTNpt35cpIhd7IO4ZiIwDbMhe1k1I/nHNwOKEFgUo6oBU9LiskYrQxzXzB
|
||||
J4PkKdEM3Ur/mhhM5LueRknb+iC/YEQ3wOYHuMiH+me22w1PDDkAm6lwgbZNnAsm
|
||||
+oR0D3ZbfBxG17osb6HdUgf40vy8MLPJvAFAZuzXFsxD5NsffEEJxIvCb4lNSHvx
|
||||
Qm2WLc9h13bVnGlJYJpXZhxMCFN4PTQ5nL6BmalOEeinac9nJlAwrkzJPZWuiQ/h
|
||||
NsDmURTKbLAvbIhaULhYwb6oOXCWpGGgICNyQqBdp7n+l7dtRWZCDO8Ztd50q0rh
|
||||
UnWRqYt4XP+J8InWBLbXPswEc/YsYv1Mum4gRljkprumWE0VVX7HHOd3NoDa//0O
|
||||
t9oM2bgqiP6TPf9Bsxj2fSfiaBT0KOPPjp8tEZ06UNAFLx5ABnKMw7jjvRCBWsT3
|
||||
1SALCeqM91ttqeL+S3rM/tTZeKspKfozGXUmOT92YqikkmtTOIX8JTp7+Oe92WWF
|
||||
SDH6WM8DOTqpzkJho0w39hs8bdTrqU6S
|
||||
-----END CERTIFICATE-----
|
||||
28
nats/testdata/tls/redis.key
vendored
Normal file
28
nats/testdata/tls/redis.key
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCSpCHsKGVZJg1p
|
||||
5erC0Yui+CCvtssqEjx4Xoqb/WwLuj/tu8OTq7fmT/JQn/05PwyjSgbzI+LvoYvi
|
||||
+3GSg9bG6hU8s1A45RqnzS0XGLaRlhYaNEAmoEaS+RzAJN2lV5H6GzkcDc/RGyrL
|
||||
+/PEEtFOD5uWPj4IB+5wnlvZLmm3AwvT6Q4QDEtqTeAeLM6DbRhi+jNSaMZjXtX6
|
||||
SCI6V82cjpqcLwL+OLMvN0yrrCoEyaWXZvPb/XfCjSeYA9RUJNPV+x+zebVHNfXS
|
||||
YM3921MImx8XukbH5El+Y+17mzVHH6/Q77ErxHu1AXIRAOCnJ/Z4bE0Bu52DW7Re
|
||||
y97SFqmnAgMBAAECggEAMSICZbShRI3955IMJyt7rGaT2RwXlWiXz0LqEVsHhSRq
|
||||
ABct8AAUtXvq9j2s5C3uZ5XJn1TSWDUaADr8cjlvUKWk6PoxsmZ9GGUkKv1ySnRt
|
||||
wmjoZ6jDDMKf8fdINnqRZCoT6ATusSL3o3IvWm5tp8iN+nivYxR5PU2p+6pT7Gf8
|
||||
i2WFC/KPCllP82zZIWljK8UZ8i4zyazpcTnvhkOJ1oVqJ8EtmJPDcYGknNDvFpbO
|
||||
PcM4ApNEbDzx/rH7JDHnuZaz0RC2k0KsYSM7r3vNG3INDv6Xcvu9aHEZ95dsx0if
|
||||
j5l7U+ayhZe8I4nRCSUB70XmNaByP9zUeI4yyONnKQKBgQDCceqWgFxaxL18klTU
|
||||
MQrOde5LhJx/JGrerX/fLyPtrjQPw20mCKBjvoKvBOy9SpEn06X22l9YsM+3A17x
|
||||
ezWppliSjoPdn/AWfOErdiB141XMcgNfQjVUbJkxLqBywhLIPqg4um5XoVK7y4hB
|
||||
xtSHe74CSKKOFmOiehR1jgdVXwKBgQDBECDXpN0KXzmcukx5KWSYnjch1H/yEkad
|
||||
1oJ6VkagQh2zgNT3kokaDDQjrSFSL9lQfpXWaep40jKagKCBJfjcEb/nAPz1S4rH
|
||||
CMqGPpdl6Cljrf16mOlj50Mb8BHMW2D2j7s4p8fc/hUWT0m8VOE7stsxuissRsf5
|
||||
rK24GUEIuQKBgQCAngWEI8fzKmwEeG6wJPh29L75KPCzkQ032h/ZKz9iunYpbyVF
|
||||
oTMmhx++UU2fMDGv3GnNTUkAS4Q6FHq61Lr8StIPr0E+WcrftR7kNrDmCcf5AfmF
|
||||
CzBndaYnSCZNgl4WIov3aioOwOEO42RvzetK6ukWbaFIxzqEgKgD0jy7lQKBgQCB
|
||||
PmvOEQcMp3zpB+qj/erjJJ+h3SEeC9AMYAsPHOzA4iICBhAMAKQZtOu+qmsxGukv
|
||||
Mt7aICOgaI8J0WwhqSr1IEjIu2ecSssHvUHfJs2xof77RQH47Z7oi2voqwkvNkku
|
||||
JkBeiCuLLOku+ztQgb4aefy1SH0YcfXzlf7hzL41uQKBgQCnvaVYcjMgNDZiMRYp
|
||||
BLu4zq5MK3Wif6LwGtCG7tPWGw5dQLbVTz/pRDCpm3qpu7SQMw1N/cAFJ3HwE2hj
|
||||
fAh0j1kxW12imOboXkuUr4vHid4a1VcLGQOXN2A127NS6qQk+iSP0Unh1sX541l4
|
||||
tg1c7/8g2sWQBiZ6MxvLvlE7sQ==
|
||||
-----END PRIVATE KEY-----
|
||||
Reference in New Issue
Block a user