(partially tested) fix pg tests, add postgres service in workflows

This commit is contained in:
Lawrence, Rendall
2022-06-20 17:18:47 +03:00
parent 0564dfce4b
commit 8c12cd9b35
4 changed files with 25 additions and 13 deletions
+12
View File
@@ -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"
+2 -2
View File
@@ -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",
+1 -1
View File
@@ -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)
+10 -10
View File
@@ -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)
}