Skip to content

Commit a89ec9c

Browse files
committed
Change to 'UnsupportedFeatures'.
This should make it less error-prone to add new ServerFeatures in the future (and enforce coverage by default) as it will make features opt-out. Fixes a bug where SessionTrack wasn't being tested on Windows.
1 parent 42f8747 commit a89ec9c

11 files changed

+29
-27
lines changed

.ci/config/config.compression+ssl.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"ConnectionString": "server=127.0.0.1;user id=ssltest;password=test;port=3306;database=mysqltest;ssl mode=required;use compression=true;DefaultCommandTimeout=3600",
44
"PasswordlessUser": "no_password",
55
"SecondaryDatabase": "testdb2",
6-
"SupportedFeatures": "Json,StoredProcedures,Sha256Password,LargePackets",
6+
"UnsupportedFeatures": "OpenSsl,CachingSha2Password",
77
"MySqlBulkLoaderLocalCsvFile": "../../../../TestData/LoadData_UTF8_BOM_Unix.CSV",
88
"MySqlBulkLoaderLocalTsvFile": "../../../../TestData/LoadData_UTF8_BOM_Unix.TSV",
99
"CertificatesPath": "../../../../../.ci/server/certs"

.ci/config/config.compression.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"ConnectionString": "server=127.0.0.1;user id=mysqltest;password='test;key=\"val';port=3306;database=mysqltest;ssl mode=none;UseCompression=true;DefaultCommandTimeout=3600",
44
"PasswordlessUser": "no_password",
55
"SecondaryDatabase": "testdb2",
6-
"SupportedFeatures": "Json,StoredProcedures,Sha256Password,LargePackets,SessionTrack",
6+
"UnsupportedFeatures": "OpenSsl,CachingSha2Password",
77
"MySqlBulkLoaderLocalCsvFile": "../../../../TestData/LoadData_UTF8_BOM_Unix.CSV",
88
"MySqlBulkLoaderLocalTsvFile": "../../../../TestData/LoadData_UTF8_BOM_Unix.TSV"
99
}

.ci/config/config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"ConnectionString": "server=127.0.0.1;user id=mysqltest;password='test;key=\"val';port=3306;database=mysqltest;ssl mode=none;Use Affected Rows=true;DefaultCommandTimeout=3600",
44
"PasswordlessUser": "no_password",
55
"SecondaryDatabase": "testdb2",
6-
"SupportedFeatures": "Json,StoredProcedures,Sha256Password,LargePackets,SessionTrack",
6+
"UnsupportedFeatures": "OpenSsl,CachingSha2Password",
77
"MySqlBulkLoaderLocalCsvFile": "../../../../TestData/LoadData_UTF8_BOM_Unix.CSV",
88
"MySqlBulkLoaderLocalTsvFile": "../../../../TestData/LoadData_UTF8_BOM_Unix.TSV"
99
}

.ci/config/config.ssl.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"ConnectionString": "server=127.0.0.1;user id=ssltest;password=test;port=3306;database=mysqltest;ssl mode=required;certificate file=../../../../../.ci/server/certs/ssl-client.pfx;DefaultCommandTimeout=3600",
44
"PasswordlessUser": "no_password",
55
"SecondaryDatabase": "testdb2",
6-
"SupportedFeatures": "Json,StoredProcedures,Sha256Password,LargePackets",
6+
"UnsupportedFeatures": "OpenSsl,CachingSha2Password",
77
"MySqlBulkLoaderLocalCsvFile": "../../../../TestData/LoadData_UTF8_BOM_Unix.CSV",
88
"MySqlBulkLoaderLocalTsvFile": "../../../../TestData/LoadData_UTF8_BOM_Unix.TSV",
99
"CertificatesPath": "../../../../../.ci/server/certs"

.ci/config/config.uds+ssl.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"ConnectionString": "server=./../../../../../.ci/mysqld/mysqld.sock;user id=ssltest;password=test;database=mysqltest;ssl mode=required;DefaultCommandTimeout=3600",
44
"PasswordlessUser": "no_password",
55
"SecondaryDatabase": "testdb2",
6-
"SupportedFeatures": "Json,StoredProcedures,Sha256Password,LargePackets",
6+
"UnsupportedFeatures": "None",
77
"MySqlBulkLoaderLocalCsvFile": "../../../../TestData/LoadData_UTF8_BOM_Unix.CSV",
88
"MySqlBulkLoaderLocalTsvFile": "../../../../TestData/LoadData_UTF8_BOM_Unix.TSV",
99
"CertificatesPath": "../../../../../.ci/server/certs"

.ci/config/config.uds.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"ConnectionString": "server=./../../../../../.ci/run/mysql/mysqld.sock;user id=mysqltest;password='test;key=\"val';database=mysqltest;ssl mode=none;DefaultCommandTimeout=3600",
44
"PasswordlessUser": "no_password",
55
"SecondaryDatabase": "testdb2",
6-
"SupportedFeatures": "Json,StoredProcedures,Sha256Password,LargePackets",
6+
"UnsupportedFeatures": "None",
77
"MySqlBulkLoaderLocalCsvFile": "../../../../TestData/LoadData_UTF8_BOM_Unix.CSV",
88
"MySqlBulkLoaderLocalTsvFile": "../../../../TestData/LoadData_UTF8_BOM_Unix.TSV"
99
}

.ci/docker-run.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
cd $(dirname $0)
33

44
display_usage() {
5-
echo -e "\nUsage:\n$0 [image] [name] [port] [features]\n"
5+
echo -e "\nUsage:\n$0 [image] [name] [port] [omit_features]\n"
66
}
77

88
# check whether user had supplied -h or --help . If yes display usage
@@ -22,7 +22,7 @@ fi
2222
IMAGE=$1
2323
NAME=$2
2424
PORT=$3
25-
FEATURES=$4
25+
OMIT_FEATURES=$4
2626

2727
sudo mkdir -p run/$NAME
2828
sudo chmod 777 run/$NAME
@@ -44,12 +44,12 @@ for i in `seq 1 30`; do
4444
# try running the init script
4545
docker exec -it $NAME bash -c 'mysql -uroot -ptest < /etc/mysql/conf.d/init.sql' >/dev/null 2>&1
4646
if [ $? -ne 0 ]; then continue; fi
47-
if [[ $FEATURES == *"Sha256Password"* ]]; then
47+
if [[ $OMIT_FEATURES != *"Sha256Password"* ]]; then
4848
docker exec -it $NAME bash -c 'mysql -uroot -ptest < /etc/mysql/conf.d/init_sha256.sql' >/dev/null 2>&1
4949
if [ $? -ne 0 ]; then continue; fi
5050
fi
5151

52-
if [[ $FEATURES == *"CachingSha2Password"* ]]; then
52+
if [[ $OMIT_FEATURES != *"CachingSha2Password"* ]]; then
5353
docker exec -it $NAME bash -c 'mysql -uroot -ptest < /etc/mysql/conf.d/init_caching_sha2.sql' >/dev/null 2>&1
5454
if [ $? -ne 0 ]; then continue; fi
5555
fi

.ci/use-config.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,5 @@ fi
4545

4646
if [ $# -ge 5 ]
4747
then
48-
sed -i "s/\"SupportedFeatures\": \".*\"/\"SupportedFeatures\": \"$5\"/g" ../../tests/SideBySide/config.json
48+
sed -i "s/\"UnsupportedFeatures\": \".*\"/\"UnsupportedFeatures\": \"$5\"/g" ../../tests/SideBySide/config.json
4949
fi

.travis.yml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,22 @@ services: docker
55
env:
66
- IMAGE=mysql:5.6
77
NAME=mysql
8-
FEATURES=StoredProcedures
8+
OMIT_FEATURES=Json,Sha256Password,OpenSsl,LargePackets,CachingSha2Password,SessionTrack
99
- IMAGE=mysql:5.7
1010
NAME=mysql
11-
FEATURES=Json,StoredProcedures,Sha256Password,LargePackets,SessionTrack
11+
OMIT_FEATURES=OpenSsl,CachingSha2Password
1212
- IMAGE=mysql:8.0
1313
NAME=mysql
14-
FEATURES=Json,StoredProcedures,Sha256Password,LargePackets,CachingSha2Password,SessionTrack
14+
OMIT_FEATURES=OpenSsl
1515
- IMAGE=percona:5.7
1616
NAME=percona
17-
FEATURES=Json,StoredProcedures,Sha256Password,OpenSsl,LargePackets,SessionTrack
17+
OMIT_FEATURES=CachingSha2Password
1818
- IMAGE=mariadb:10.2
1919
NAME=mariadb
20-
FEATURES=StoredProcedures,OpenSsl,LargePackets,SessionTrack
20+
OMIT_FEATURES=Json,Sha256Password,CachingSha2Password
2121

2222
before_install:
23-
- .ci/docker-run.sh $IMAGE $NAME 3307 $FEATURES
23+
- .ci/docker-run.sh $IMAGE $NAME 3307 $OMIT_FEATURES
2424
- curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
2525
- sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
2626
- sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
@@ -33,14 +33,14 @@ script:
3333
- pushd tests/Conformance.Tests && CONNECTION_STRING="Server=localhost;Port=3307;User Id=mysqltest;Password='test;key=\"val';SSL Mode=None" dotnet xunit -c Release && popd
3434
- pushd tests/SideBySide
3535
- dotnet build SideBySide.csproj -c Release -f netcoreapp2.0
36-
- echo 'Executing netcoreapp1.1.2 tests with No Compression, No SSL' && ../../.ci/use-config.sh config.json 172.17.0.1 3307 $NAME $FEATURES && time dotnet xunit -c Release -f netcoreapp1.1.2
37-
- echo 'Executing netcoreapp2.0 tests with No Compression, No SSL' && ../../.ci/use-config.sh config.json 172.17.0.1 3307 $NAME $FEATURES && time dotnet xunit -c Release -f netcoreapp2.0
36+
- echo 'Executing netcoreapp1.1.2 tests with No Compression, No SSL' && ../../.ci/use-config.sh config.json 172.17.0.1 3307 $NAME $OMIT_FEATURES && time dotnet xunit -c Release -f netcoreapp1.1.2
37+
- echo 'Executing netcoreapp2.0 tests with No Compression, No SSL' && ../../.ci/use-config.sh config.json 172.17.0.1 3307 $NAME $OMIT_FEATURES && time dotnet xunit -c Release -f netcoreapp2.0
3838
- echo 'Executing netcoreapp2.0 Debug Only tests' && time dotnet xunit -c Debug -f netcoreapp2.0 -class SideBySide.DebugOnlyTests
39-
- echo 'Executing netcoreapp2.0 tests with Compression, No SSL' && ../../.ci/use-config.sh config.compression.json 172.17.0.1 3307 $NAME $FEATURES && time dotnet xunit -c Release -f netcoreapp2.0
40-
- echo 'Executing netcoreapp1.1.2 tests with No Compression, SSL' && ../../.ci/use-config.sh config.ssl.json 172.17.0.1 3307 $NAME $FEATURES && time dotnet xunit -c Release -f netcoreapp1.1.2
41-
- echo 'Executing netcoreapp2.0 tests with No Compression, SSL' && ../../.ci/use-config.sh config.ssl.json 172.17.0.1 3307 $NAME $FEATURES && time dotnet xunit -c Release -f netcoreapp2.0
42-
- echo 'Executing netcoreapp2.0 tests with Compression, SSL' && ../../.ci/use-config.sh config.compression+ssl.json 172.17.0.1 3307 $NAME $FEATURES && time dotnet xunit -c Release -f netcoreapp2.0
43-
- echo 'Executing netcoreapp2.0 tests with Unix Domain Socket, No Compression, No SSL' && ../../.ci/use-config.sh config.uds.json 172.17.0.1 3307 $NAME $FEATURES && time dotnet xunit -c Release -f netcoreapp2.0
39+
- echo 'Executing netcoreapp2.0 tests with Compression, No SSL' && ../../.ci/use-config.sh config.compression.json 172.17.0.1 3307 $NAME $OMIT_FEATURES && time dotnet xunit -c Release -f netcoreapp2.0
40+
- echo 'Executing netcoreapp1.1.2 tests with No Compression, SSL' && ../../.ci/use-config.sh config.ssl.json 172.17.0.1 3307 $NAME $OMIT_FEATURES && time dotnet xunit -c Release -f netcoreapp1.1.2
41+
- echo 'Executing netcoreapp2.0 tests with No Compression, SSL' && ../../.ci/use-config.sh config.ssl.json 172.17.0.1 3307 $NAME $OMIT_FEATURES && time dotnet xunit -c Release -f netcoreapp2.0
42+
- echo 'Executing netcoreapp2.0 tests with Compression, SSL' && ../../.ci/use-config.sh config.compression+ssl.json 172.17.0.1 3307 $NAME $OMIT_FEATURES && time dotnet xunit -c Release -f netcoreapp2.0
43+
- echo 'Executing netcoreapp2.0 tests with Unix Domain Socket, No Compression, No SSL' && ../../.ci/use-config.sh config.uds.json 172.17.0.1 3307 $NAME $OMIT_FEATURES && time dotnet xunit -c Release -f netcoreapp2.0
4444
- popd
4545

4646
after_script:

tests/SideBySide/AppConfig.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ public static class AppConfig
3838

3939
public static string SecondaryDatabase => Config.GetValue<string>("Data:SecondaryDatabase");
4040

41-
public static ServerFeatures SupportedFeatures => (ServerFeatures) Enum.Parse(typeof(ServerFeatures), Config.GetValue<string>("Data:SupportedFeatures"));
41+
private static ServerFeatures UnsupportedFeatures => (ServerFeatures) Enum.Parse(typeof(ServerFeatures), Config.GetValue<string>("Data:UnsupportedFeatures"));
42+
43+
public static ServerFeatures SupportedFeatures => ~ServerFeatures.None & ~UnsupportedFeatures;
4244

4345
public static bool SupportsJson => SupportedFeatures.HasFlag(ServerFeatures.Json);
4446

0 commit comments

Comments
 (0)