Skip to content

Commit bcbcb68

Browse files
committed
Add unixodbc docker to test on linux
1 parent 1b0af60 commit bcbcb68

File tree

3 files changed

+125
-2
lines changed

3 files changed

+125
-2
lines changed

Makefile

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,19 @@ help:
99

1010
MSSQL_CONTAINER_NAME=mssql_test
1111
MSSQL_SA_PASSWORD=$(PASSWORD)
12+
MSSQL_NETWORK=mssqlnetwork
13+
MSSQL_DRIVER_NAME=ODBC Driver 17 for SQL Server
1214

1315
start-mssql:
16+
docker network create ${MSSQL_NETWORK}
1417
docker run \
1518
--name $(MSSQL_CONTAINER_NAME) \
1619
--hostname $(MSSQL_CONTAINER_NAME) \
1720
-e 'ACCEPT_EULA=Y' \
1821
-e 'MSSQL_SA_PASSWORD=$(MSSQL_SA_PASSWORD)' \
1922
-d \
2023
-p 1433:1433 \
24+
--network=${MSSQL_NETWORK} \
2125
mcr.microsoft.com/mssql/server:2022-latest
2226
echo -n "starting $(MSSQL_CONTAINER_NAME) "; \
2327
while ! \
@@ -34,15 +38,54 @@ start-mssql:
3438
-Q 'create database $(DB_NAME)' >/dev/null 2>&1 ; \
3539
do echo -n .; sleep 2; done; echo " done"
3640

41+
build-unixodbc:
42+
docker build \
43+
-t unixodbc \
44+
-f unixodbc.Dockerfile \
45+
.
46+
3747
test-mssql:
38-
go test -v -mssrv=localhost -msdb=$(DB_NAME) -msuser=sa -mspass=$(MSSQL_SA_PASSWORD) -run=TestMSSQL
48+
docker run \
49+
-it \
50+
--network=${MSSQL_NETWORK} \
51+
-v .:/src \
52+
unixodbc \
53+
sh /src/mssqltest.sh \
54+
"$(MSSQL_DRIVER_NAME)" \
55+
"$(MSSQL_CONTAINER_NAME)" \
56+
"$(DB_NAME)" \
57+
"$(MSSQL_SA_PASSWORD)"
58+
59+
test-mssql-freetds:
60+
docker run \
61+
-it \
62+
--network=${MSSQL_NETWORK} \
63+
-v .:/src \
64+
unixodbc \
65+
sh /src/mssqltest.sh \
66+
"freetds" \
67+
"$(MSSQL_CONTAINER_NAME)" \
68+
"$(DB_NAME)" \
69+
"$(MSSQL_SA_PASSWORD)"
70+
3971

4072
test-mssql-race:
41-
go test -v -mssrv=localhost -msdb=$(DB_NAME) -msuser=sa -mspass=$(MSSQL_SA_PASSWORD) -run=TestMSSQL --race
73+
docker run \
74+
-it \
75+
--network=${MSSQL_NETWORK} \
76+
-v .:/src \
77+
unixodbc \
78+
sh /src/mssqltest.sh \
79+
"$(MSSQL_DRIVER_NAME)" \
80+
"$(MSSQL_CONTAINER_NAME)" \
81+
"$(DB_NAME)" \
82+
"$(MSSQL_SA_PASSWORD)" \
83+
"--race"
4284

4385
stop-mssql:
4486
docker stop $(MSSQL_CONTAINER_NAME)
4587
docker rm $(MSSQL_CONTAINER_NAME)
88+
docker network rm ${MSSQL_NETWORK}
4689

4790
# MySQL
4891

mssqltest.sh

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/bin/sh
2+
#set -e
3+
4+
MSSQL_DRIVER_NAME="$1"
5+
MSSQL_CONTAINER_NAME="$2"
6+
DB_NAME="$3"
7+
MSSQL_SA_PASSWORD="$4"
8+
RACE="$5"
9+
10+
pwd
11+
12+
echo $PATH
13+
14+
go version
15+
16+
#sqlcmd -S localhost
17+
#sqlcmd -?
18+
19+
# install freetds driver
20+
cat << EOF > tds.driver.template
21+
[FreeTDS]
22+
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
23+
EOF
24+
odbcinst -i -d -f tds.driver.template
25+
cat tds.driver.template
26+
rm tds.driver.template
27+
28+
# install microsoft driver
29+
odbcinst -q -d -n "${MSSQL_DRIVER_NAME}" > tds.driver.template
30+
odbcinst -i -d -f tds.driver.template
31+
cat tds.driver.template
32+
rm tds.driver.template
33+
34+
echo "MSSQL_DRIVER_NAME=${MSSQL_DRIVER_NAME}"
35+
echo "MSSQL_CONTAINER_NAME=${MSSQL_CONTAINER_NAME}"
36+
echo "DB_NAME=${DB_NAME}"
37+
echo "MSSQL_SA_PASSWORD=${MSSQL_SA_PASSWORD}"
38+
echo "RACE=${RACE}"
39+
40+
# add 1433 to mssrv parameter so we do not skip TestMSSQLReconnect
41+
42+
go test -v \
43+
-msdriver="${MSSQL_DRIVER_NAME}" \
44+
-mssrv=${MSSQL_CONTAINER_NAME},1433 \
45+
-msdb=${DB_NAME} \
46+
-msuser=sa \
47+
-mspass=${MSSQL_SA_PASSWORD} \
48+
${RACE} \
49+
-run=TestMSSQL

unixodbc.Dockerfile

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
FROM ubuntu:18.04
2+
3+
RUN apt update -y && apt upgrade -y && apt-get update
4+
RUN apt install -y curl python3.7 git python3-pip openjdk-8-jdk unixodbc-dev
5+
6+
# Add SQL Server ODBC Driver 17 for Ubuntu 18.04
7+
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
8+
RUN curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
9+
RUN apt-get update
10+
RUN ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated msodbcsql17
11+
RUN ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated mssql-tools
12+
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
13+
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
14+
ENV PATH ${PATH}:/opt/mssql-tools/bin
15+
16+
# download freetds driver
17+
RUN apt-get install -y unixodbc freetds-dev freetds-bin tdsodbc
18+
19+
# download go tar
20+
RUN curl --location https://go.dev/dl/go1.20.linux-amd64.tar.gz | tar -C /usr/local -xzf -
21+
RUN echo 'export PATH="/usr/local/go/bin:$PATH"' >> ~/.bash_profile
22+
RUN echo 'export PATH="/usr/local/go/bin:$PATH"' >> ~/.bashrc
23+
ENV PATH /usr/local/go/bin:${PATH}
24+
25+
WORKDIR /src
26+
27+
#COPY mssqltest.sh /
28+
#RUN chmod +x /mssqltest.sh
29+
#ENTRYPOINT ["sh","/mssqltest.sh"]
30+
#ENTRYPOINT ["sh"]
31+
CMD ["sh"]

0 commit comments

Comments
 (0)