diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 5681a5f..2b315b5 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -26,6 +26,18 @@ jobs: redis: image: "eqalpha/keydb" ports: [ "6379:6379" ] + postgres: + image: "postgres:latest" + env: + POSTGRES_DB: test + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + ports: [ "5432:5432" ] + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 steps: - uses: "actions/checkout@v3" - uses: "actions/setup-go@v3" diff --git a/storage/pg/storage_test.go b/storage/pg/storage_test.go index b298b8f..0faae39 100644 --- a/storage/pg/storage_test.go +++ b/storage/pg/storage_test.go @@ -16,7 +16,7 @@ CREATE TABLE mo_peers ( info_hash bytea NOT NULL, peer_id bytea NOT NULL, address inet NOT NULL, - port int2 NOT NULL, + port int4 NOT NULL, is_seeder bool NOT NULL, is_v6 bool NOT NULL, created timestamp NOT NULL DEFAULT current_timestamp, @@ -38,7 +38,7 @@ CREATE TABLE mo_kv ( ) var cfg = Config{ - ConnectionString: "host=127.0.0.1 database=test user=postgres", + ConnectionString: "host=127.0.0.1 database=test user=postgres pool_max_conns=50", PingQuery: "SELECT 1", Peer: peerQueryConf{ AddQuery: "INSERT INTO mo_peers VALUES($1, $2, $3, $4, $5, $6, $7) ON CONFLICT (info_hash, peer_id, address, port) DO UPDATE SET created = EXCLUDED.created, is_seeder = EXCLUDED.is_seeder", diff --git a/storage/test/storage_bench.go b/storage/test/storage_bench.go index 53b57c8..d822cc7 100644 --- a/storage/test/storage_bench.go +++ b/storage/test/storage_bench.go @@ -36,7 +36,7 @@ func generateInfoHashes() (a [ihCount]bittorrent.InfoHash) { func generatePeers() (a [peersCount]bittorrent.Peer) { for i := range a { var ip []byte - if i < peersCount/2 { + if i%2 == 0 { ip = make([]byte, net.IPv4len) } else { ip = make([]byte, net.IPv6len) diff --git a/storage/test/storage_test_base.go b/storage/test/storage_test_base.go index 832b21a..8c82890 100644 --- a/storage/test/storage_test_base.go +++ b/storage/test/storage_test_base.go @@ -13,7 +13,7 @@ import ( "github.com/sot-tech/mochi/storage" ) -const kv_store_ctx = "test" +const kvStoreCtx = "test" func init() { _ = log.ConfigureLogger("", "warn", false, false) @@ -200,11 +200,11 @@ func (th *testHolder) LeecherPutGraduateAnnounceDeleteAnnounce(t *testing.T) { func (th *testHolder) CustomPutContainsLoadDelete(t *testing.T) { for _, c := range testData { - err := th.st.Put(kv_store_ctx, storage.Entry{Key: c.peer.String(), Value: c.ih.RawString()}) + err := th.st.Put(kvStoreCtx, storage.Entry{Key: c.peer.String(), Value: c.ih.RawString()}) require.Nil(t, err) // check if exist in ctx we put - contains, err := th.st.Contains(kv_store_ctx, c.peer.String()) + contains, err := th.st.Contains(kvStoreCtx, c.peer.String()) require.Nil(t, err) require.True(t, contains) @@ -214,7 +214,7 @@ func (th *testHolder) CustomPutContainsLoadDelete(t *testing.T) { require.False(t, contains) // check value and type in ctx we put - out, err := th.st.Load(kv_store_ctx, c.peer.String()) + out, err := th.st.Load(kvStoreCtx, c.peer.String()) require.Nil(t, err) ih, err := bittorrent.NewInfoHash(out) require.Nil(t, err) @@ -225,7 +225,7 @@ func (th *testHolder) CustomPutContainsLoadDelete(t *testing.T) { require.Nil(t, err) require.Nil(t, dummy) - err = th.st.Delete(kv_store_ctx, c.peer.String()) + err = th.st.Delete(kvStoreCtx, c.peer.String()) require.Nil(t, err) contains, err = th.st.Contains("", c.peer.String()) @@ -245,29 +245,29 @@ func (th *testHolder) CustomBulkPutContainsLoadDelete(t *testing.T) { Value: c.ih.RawString(), }) } - err := th.st.Put(kv_store_ctx, pairs...) + err := th.st.Put(kvStoreCtx, pairs...) require.Nil(t, err) // check if exist in ctx we put for _, k := range keys { - contains, err := th.st.Contains(kv_store_ctx, k) + contains, err := th.st.Contains(kvStoreCtx, k) require.Nil(t, err) require.True(t, contains) } // check value and type in ctx we put for _, p := range pairs { - out, _ := th.st.Load(kv_store_ctx, p.Key) + out, _ := th.st.Load(kvStoreCtx, p.Key) ih, err := bittorrent.NewInfoHash(out) require.Nil(t, err) require.Equal(t, p.Value, ih.RawString()) } - err = th.st.Delete(kv_store_ctx, keys...) + err = th.st.Delete(kvStoreCtx, keys...) require.Nil(t, err) for _, k := range keys { - contains, err := th.st.Contains(kv_store_ctx, k) + contains, err := th.st.Contains(kvStoreCtx, k) require.Nil(t, err) require.False(t, contains) }