Skip to content

Commit e7a7fd1

Browse files
authored
golang pg test (#8132)
1 parent a7d2186 commit e7a7fd1

26 files changed

+1341
-0
lines changed

.github/config/muted_ya.txt

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,81 @@ ydb/tests/functional/tenants test_dynamic_tenants.py.*
101101
ydb/tests/functional/tenants test_storage_config.py.TestStorageConfig.*
102102
ydb/tests/functional/tenants test_tenants.py.*
103103
ydb/tests/functional/ydb_cli test_ydb_impex.py.TestImpex.test_big_dataset*
104+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestArrayValueBackend]
105+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestBinaryByteSliceToInt]
106+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestBinaryByteSlicetoUUID]
107+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestBindError]
108+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestCommit]
109+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestConnListen]
110+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestConnPing]
111+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestConnUnlistenAll]
112+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestConnUnlisten]
113+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestConnectorWithNoticeHandler_Simple]
114+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestConnectorWithNotificationHandler_Simple]
115+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestContextCancelBegin]
116+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestContextCancelQuery]
117+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestContextCancelExec]
118+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestQueryCancelRace]
119+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestCopyFromError]
120+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestCopyInBinaryError]
121+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestCopyInMultipleValues]
122+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestCopyInRaiseStmtTrigger]
123+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestCopyInStmtAffectedRows]
124+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestCopyInTypes]
125+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestCopyInWrongType]
126+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestCopyRespLoopConnectionError]
127+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestCopySyntaxError]
128+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestEmptyQuery]
129+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestEncodeAndParseTs]
130+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestEncodeDecode]
131+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestErrorClass]
132+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestErrorDuringStartup]
133+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestErrorOnExec]
134+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestErrorOnQueryRowSimpleQuery]
135+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestErrorOnQuery]
136+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestExec]
137+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestFormatTsBackend]
138+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestHasCorrectRootGroupPermissions]
139+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestInfinityTimestamp]
140+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestIssue1046]
141+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestIssue1062]
142+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestIssue186]
143+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestListenerFailedQuery]
144+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestListenerListen]
145+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestListenerPing]
146+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestListenerReconnect]
147+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestListenerUnlistenAll]
148+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestListenerUnlisten]
149+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestNewConnector_Connect]
150+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestNewConnector_Driver]
151+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestNewConnector_WorksWithOpenDB]
152+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestNotifyExtra]
153+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestNullAfterNonNull]
154+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestParseErrorInExtendedQuery]
155+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestPing]
156+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestQueryCancelledReused]
157+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestQueryRowBugWorkaround]
158+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestReconnect]
159+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestReturning]
160+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestRowsResultTag]
161+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestRuntimeParameters]
162+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestStmtExecContext/context.Background]
163+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestStmtExecContext/context.WithTimeout]
164+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestStmtExecContext/context.WithTimeout_exceeded]
165+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestStmtExecContext]
166+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestStmtQueryContext/context.Background]
167+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestStmtQueryContext/context.WithTimeout]
168+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestStmtQueryContext/context.WithTimeout_exceeded]
169+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestStmtQueryContext]
170+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestStringWithNul]
171+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestTimeWithTimezone/24:00-04:00_=>_0000-01-02T00:00:00-04:00]
172+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestTimeWithTimezone/24:00:00+00_=>_0000-01-02T00:00:00Z]
173+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestTimeWithTimezone/24:00:00.0+00_=>_0000-01-02T00:00:00Z]
174+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestTimeWithTimezone/24:00:00.000000+00_=>_0000-01-02T00:00:00Z]
175+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestTimeWithTimezone/24:00Z_=>_0000-01-02T00:00:00Z]
176+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestTimeWithTimezone]
177+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestTimestampWithTimeZone]
178+
ydb/tests/postgres_integrations/go-libpq docker_wrapper_test.py.test_pg_generated[TestTxOptions]
104179
ydb/tests/tools/pq_read/test test_timeout.py.TestTimeout.test_timeout
105180
ydb/core/kqp/ut/query KqpStats.SysViewClientLost
106181
ydb/core/kqp/ut/olap KqpOlap.ManyColumnShards

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
!*/
88
# Unignore all files inside canondata dir
99
!**/canondata/**
10+
# Allow docker files
11+
!Dockerfile
1012

1113
/canonization_show_res.log
1214

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import ydb.tests.postgres_integrations.library
2+
import pytest
3+
4+
5+
def pytest_collection_finish(session: pytest.Session):
6+
ydb.tests.postgres_integrations.library.pytest_collection_finish(session)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/exchange/
2+
/sources/
3+
/test-result/
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# For docker context at root git directory
2+
3+
FROM golang:1.20
4+
5+
WORKDIR /project/sources/
6+
7+
COPY patch.diff /patch.diff
8+
COPY docker-init.bash /docker-init.bash
9+
RUN /docker-init.bash
10+
11+
COPY common-go-scripts/go-run-separate-tests.bash /go-run-separate-tests.bash
12+
13+
COPY docker-start.bash /docker-start.bash
14+
15+
CMD [ "/docker-start.bash" ]
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/bin/bash
2+
3+
set -eu
4+
5+
ONE_TEST_TIMEOUT=5s
6+
TEST_BINARY=./test.binary
7+
8+
echo "Get test list"
9+
TESTS=$($TEST_BINARY --test.list "^Test" | sort)
10+
11+
12+
echo "Shell $SHELL"
13+
14+
rm -f /test-result/raw/result.txt
15+
for TEST_NAME in $TESTS; do
16+
echo -n "Test: $TEST_NAME "
17+
if echo "$TEST_NAME" | grep -Eq "$YDB_PG_TESTFILTER"; then
18+
echo start
19+
else
20+
echo skip
21+
continue
22+
fi
23+
CMD="$TEST_BINARY --test.run '^$TEST_NAME\$' --test.v --test.timeout='$ONE_TEST_TIMEOUT'"
24+
echo "$CMD"
25+
bash -c "$CMD" >> /test-result/raw/result.txt 2>&1 || true
26+
done
27+
28+
go-junit-report < /test-result/raw/result.txt > /test-result/raw/result.xml
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
version: "3"
2+
services:
3+
project:
4+
network_mode: host
5+
6+
image: ydb-test/go-pqlib
7+
build:
8+
context: ../../..
9+
dockerfile: languages/go/libpq/Dockerfile
10+
network: host
11+
environment:
12+
- PGUSER=${YDB_PG_USER:-root}
13+
- PGPASSWORD=${YDB_PG_PASSWORD:-1234}
14+
- PGHOST=${YDB_PG_HOST:-ydb}
15+
- PGPORT=${YDB_PG_PORT:-5432}
16+
- PGDATABASE=${YDB_PG_DATABASE:-local}
17+
- PQGOSSLTESTS=0
18+
- PQSSLCERTTEST_PATH=certs
19+
- YDB_PG_TESTNAME=${YDB_PG_TESTNAME:-}
20+
volumes:
21+
- ./exchange:/exchange
22+
- ./test-result/:/test-result
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
version: "3"
2+
services:
3+
ydb:
4+
image: ghcr.io/ydb-platform/local-ydb:nightly
5+
environment:
6+
- "YDB_DEFAULT_LOG_LEVEL=DEBUG"
7+
- "GRPC_TLS_PORT=2135"
8+
- "GRPC_PORT=2136"
9+
- "MON_PORT=8765"
10+
- "YDB_USE_IN_MEMORY_PDISKS=true"
11+
- "POSTGRES_USER=${YDB_PG_USER:-root}"
12+
- "POSTGRES_PASSWORD=${YDB_PG_PASSWORD:-1234}"
13+
- "YDB_FEATURE_FLAGS=enable_temp_tables"
14+
- "YDB_TABLE_ENABLE_PREPARED_DDL=true"
15+
healthcheck:
16+
test: "/bin/sh /health_check"
17+
interval: 1s
18+
start_period: 1m
19+
project:
20+
depends_on:
21+
ydb:
22+
condition: service_healthy
23+
24+
image: ydb-test/go-pqlib
25+
build:
26+
context: ../../..
27+
dockerfile: languages/go/libpq/Dockerfile
28+
network: host
29+
environment:
30+
- PGUSER=${YDB_PG_USER:-root}
31+
- PGPASSWORD=${YDB_PG_PASSWORD:-1234}
32+
- PGHOST=${YDB_PG_HOST:-ydb}
33+
- PGPORT=${YDB_PG_PORT:-5432}
34+
- PGDATABASE=${YDB_PG_DATABASE:-/local}
35+
- PQGOSSLTESTS=0
36+
- PQSSLCERTTEST_PATH=certs
37+
- YDB_PG_TESTNAME=${YDB_PG_TESTNAME:-}
38+
volumes:
39+
- ./exchange:/exchange
40+
- ./test-result/:/test-result
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/bin/bash
2+
3+
set -eu
4+
5+
apt-get update && apt-get install -y patch
6+
7+
go install github.com/jstemmer/go-junit-report/v2@v2.0.0
8+
9+
mkdir -p /original-sources
10+
cd /original-sources
11+
12+
wget https://github.com/lib/pq/archive/refs/tags/v1.10.9.tar.gz -O libpq.tar.gz
13+
tar --strip-components=1 -zxvf libpq.tar.gz
14+
rm -f libpq.tar.gz
15+
16+
mkdir -p /project/sources/
17+
cp -R /original-sources/. /project/sources/
18+
19+
cd /project/sources/
20+
[ -e /patch.diff ] && patch -s -p0 < /patch.diff
21+
22+
# cache binary
23+
echo "Build test binary"
24+
go test -c -o ./test.binary
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#!/bin/bash
2+
3+
set -eu
4+
5+
echo "Start script"
6+
7+
rm -rf /test-result 2> /dev/null || true
8+
9+
mkdir -p /exchange
10+
mkdir -p /test-result/raw
11+
12+
if [ -e /exchange/sources ]; then
13+
echo "Skip prepare sources, because it is exist"
14+
else
15+
echo "Copy sources"
16+
mkdir -p /exchange/sources
17+
cp -R /project/sources/. /exchange/sources
18+
chmod -R a+rw /exchange/sources
19+
fi
20+
21+
cd /project/sources/
22+
23+
export YDB_PG_TESTFILTER="${YDB_PG_TESTFILTER:-}" # set YDB_PG_TESTNAME to empty string if it not set
24+
25+
echo "Run tests: '$YDB_PG_TESTFILTER'"
26+
27+
echo "Start test"
28+
29+
mkdir -p /test-result/raw
30+
PQTEST_BINARY_PARAMETERS=no /go-run-separate-tests.bash
31+
32+
if [ -n "${YDB_PG_TESTFILTER:-}" ]; then
33+
cat /test-result/raw/result.txt
34+
fi
35+
36+
chmod -R a+rw /test-result

0 commit comments

Comments
 (0)