diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 00000000..6dabd69c --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,233 @@ +resources: + containers: + + - container: ubuntu-1804 + image: ubuntu:18.04 + options: "--name ubuntu-1804 --add-host=mariadb.example.com:127.0.0.1 -v /usr/bin/docker:/tmp/docker:ro" + +jobs: + + - job: SSLFiles + displayName: 'Creating SSL Files' + pool: + vmImage: 'ubuntu-16.04' + container: $[ variables['containerImage'] ] + steps: + - script: | + java --version + mkdir tmp + chmod 777 .travis/gen-ssl.sh + .travis/gen-ssl.sh mariadb.example.com tmp + cp -R tmp $BUILD_ARTIFACTSTAGINGDIRECTORY + displayName: 'create SSL certificates' + + - task: PublishPipelineArtifact@0 + inputs: + targetPath: '$(Build.ArtifactStagingDirectory)' + artifactName: ssl_certs + + - job: windowsTest + displayName: 'test windows' + pool: + vmImage: 'windows-2019' + dependsOn: + - SSLFiles + steps: + - task: DownloadPipelineArtifact@2 + displayName: 'Download SSL files' + inputs: + artifactName: ssl_certs + targetPath: $(System.DefaultWorkingDirectory) + + - task: DownloadPipelineArtifact@2 + displayName: 'Download 10.4 server' + inputs: + source: 'specific' + project: '550599d3-6165-4abd-8c86-e3f7e53a1847' + artifact: 'Windows' + pipeline: 3 + runVersion: 'latestFromBranch' + runBranch: 'refs/heads/10.4-enterprise' + downloadPath: $(System.DefaultWorkingDirectory) + + - script: | + for /f %%a in ('dir /B $(System.DefaultWorkingDirectory)\win_build\mariadb-enterprise-10.*-winx64.msi') do set servername=$(System.DefaultWorkingDirectory)\win_build\%%a + echo %servername% + msiexec /i %servername% INSTALLDIR=c:\projects\server SERVICENAME=mariadb ALLOWREMOTEROOTACCESS=true /qn + c:\projects\server\bin\mysql.exe -e "create database testc" --user=root + c:\projects\server\bin\mysql.exe -e "GRANT ALL on *.* to 'someUser'@'%' identified by 'Passw@rd2' with grant option;" --user=root + displayName: 'install server' + + - script: | + echo 127.0.0.1 mariadb.example.com >> %WINDIR%\System32\Drivers\Etc\Hosts + displayName: 'set hostname' + + - script: | + cmake -G "Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=RelWithDebInfo + cmake --build . --config RelWithDebInfo + displayName: 'build connector' + + - script: | + cd $(System.DefaultWorkingDirectory)\unittest\libmariadb + set MARIADB_PLUGIN_DIR=$(System.DefaultWorkingDirectory)\plugins\lib\RelWithDebInfo + ctest -V + if %ERRORLEVEL% EQU 0 ( + echo Success + ) else ( + echo exit code is %errorlevel% + exit /b %errorlevel% + ) + displayName: 'run tests' + env: + MYSQL_TEST_HOST: "mariadb.example.com" + MYSQL_TEST_USER: 'someUser' + MYSQL_TEST_PASSWD: 'Passw@rd2' + MYSQL_TEST_DB: 'testc' + MYSQL_TEST_PORT: 3306 + TEST_SSL_CA_FILE: "$(System.DefaultWorkingDirectory)/tmp/server.crt" + TEST_SSL_CLIENT_KEY_FILE: "$(System.DefaultWorkingDirectory)/tmp/client.key" + TEST_SSL_CLIENT_CERT_FILE: "$(System.DefaultWorkingDirectory)/tmp/client.crt" + TEST_SSL_CLIENT_KEYSTORE_FILE: "$(System.DefaultWorkingDirectory)/tmp/client-keystore.p12" + + - job: RunInContainer + pool: + vmImage: 'ubuntu-16.04' + displayName: 'test ubuntu bionic' + dependsOn: + - SSLFiles + strategy: + matrix: + ubuntu-1804: + containerImage: ubuntu-1804 + containerName: bionic + + container: $[variables['containerImage']] + + steps: + + - task: DownloadPipelineArtifact@2 + inputs: + artifactName: ssl_certs + targetPath: $(System.DefaultWorkingDirectory) + + - script: /tmp/docker exec -t -u 0 $(containerImage) sh -c "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confold" -y install sudo" + displayName: Set up sudo + + - task: DownloadPipelineArtifact@2 + displayName: 'Download 10.4 enterprise server artifact files' + inputs: + source: 'specific' + project: '550599d3-6165-4abd-8c86-e3f7e53a1847' + artifact: '$(containerImage)' + pipeline: 3 + runVersion: 'latestFromBranch' + runBranch: 'refs/heads/10.4-enterprise' + downloadPath: $(System.DefaultWorkingDirectory) + + - task: DownloadPipelineArtifact@2 + displayName: 'Download galera server artifact files' + inputs: + source: 'specific' + project: '550599d3-6165-4abd-8c86-e3f7e53a1847' + artifact: $(containerImage) + runVersion: 'latestFromBranch' + pipeline: 2 + runBranch: 'refs/heads/es-mariadb-4.x' + downloadPath: $(System.DefaultWorkingDirectory) + + + - script: | + tar xf mariadb-enterprise* + + sudo ln -fs /usr/share/zoneinfo/UTC /etc/localtime + + sudo apt-get update && sudo apt-get install -y --no-install-recommends apt-transport-https ca-certificates tzdata pwgen + export DEBIAN_FRONTEND="noninteractive" + sudo debconf-set-selections <<< "mariadb-server-10.4 mysql-server/root_password password P4ssw@rd" + sudo debconf-set-selections <<< "mariadb-server-10.4 mysql-server/root_password_again password P4ssw@rd" + sudo apt-get update -y + sudo apt-get install --allow-unauthenticated -f -y libssl-dev libaio1 libaio-dev libxml2 libcurl4 curl libc-dev linux-libc-dev libc-dev-bin libdbi-perl rsync socat libnuma1 zlib1g-dev libreadline5 libjemalloc1 libsnappy1v5 libcrack2 gawk lsof psmisc perl libreadline5 + + cd mariadb-enterprise*/ + sudo groupadd mysql + sudo useradd -g mysql mysql + + export PROJ_PATH=`pwd` + echo $PROJ_PATH + + cat <> my.cnf + [mysqld] + port=3306 + max_allowed_packet=16M + datadir=$PROJ_PATH/data + socket=/tmp/mysql.sock + user=mysql + ssl-ca=$(System.DefaultWorkingDirectory)/tmp/ca.crt + ssl-cert=$(System.DefaultWorkingDirectory)/tmp/server.crt + ssl-key=$(System.DefaultWorkingDirectory)/tmp/server.key + EOT + + sudo chown mysql $PROJ_PATH/my.cnf + sudo tail -n 5000 $PROJ_PATH/my.cnf + + sudo chmod 777 $PROJ_PATH + sudo ln -s $PROJ_PATH /usr/local/mysql + + sudo ./scripts/mysql_install_db --defaults-file=$PROJ_PATH/my.cnf --user=mysql + sudo chown -R root . + sudo chown -R mysql data + + export PATH=$PATH:$PROJ_PATH/bin/ + + env: + WORKING_DIR: $(System.DefaultWorkingDirectory) + displayName: 'install server' + + - script: | + sudo apt-get install -f -y make cmake + cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_SSL=OPENSSL -DCERT_PATH=$(System.DefaultWorkingDirectory)/tmp + make + displayName: 'Build' + + - script: | + cd mariadb-enterprise*/ + sudo ./bin/mysqld --defaults-file=./my.cnf & + + for i in {30..0}; do + if sudo ./bin/mysql -e "SELECT 1" &> /dev/null; then + echo 'MySQL connected...' + break + fi + echo 'MySQL init process in progress...' + sleep 1 + done + if [ "$i" = 0 ]; then + echo >&2 'MySQL init process failed.' + sudo ./bin/mysql -e "SELECT 1" + exit 1 + fi + + sudo ./bin/mysql -e "CREATE USER 'someUser'@'%' identified by 'Passw@rd2';" + sudo ./bin/mysql -e "GRANT ALL on *.* to 'someUser'@'%' identified by 'Passw@rd2' with grant option;" + sudo ./bin/mysql -e "CREATE DATABASE testc;" + + echo "Running tests" + cd ../unittest/libmariadb + ctest -V + if [ $? -ne 0 ]; then + exit 1 + fi + cd $(System.DefaultWorkingDirectory)/mariadb-enterprise*/ + sudo ./bin/mysqladmin shutdown + env: + MYSQL_TEST_HOST: mariadb.example.com + MYSQL_TEST_DB: testc + MYSQL_TEST_USER: 'someUser' + MYSQL_TEST_PORT: 3306 + MYSQL_TEST_TRAVIS: 1 + MYSQL_TEST_PASSWD: 'Passw@rd2' + TEST_SSL_CA_FILE: "$(System.DefaultWorkingDirectory)/tmp/server.crt" + TEST_SSL_CLIENT_KEY_FILE: "$(System.DefaultWorkingDirectory)/tmp/client.key" + TEST_SSL_CLIENT_CERT_FILE: "$(System.DefaultWorkingDirectory)/tmp/client.crt" + TEST_SSL_CLIENT_KEYSTORE_FILE: "$(System.DefaultWorkingDirectory)/tmp/client-keystore.p12" + displayName: 'run tests' \ No newline at end of file diff --git a/unittest/libmariadb/connection.c b/unittest/libmariadb/connection.c index d7716db3..e85d8faa 100644 --- a/unittest/libmariadb/connection.c +++ b/unittest/libmariadb/connection.c @@ -43,7 +43,7 @@ static int test_conc66(MYSQL *my) fprintf(fp, "user=conc66\n"); fprintf(fp, "port=3306\n"); fprintf(fp, "enable-local-infile\n"); - fprintf(fp, "password='test\\\";#test'\n"); + fprintf(fp, "password='test@A1\\\";#test'\n"); fclose(fp); @@ -52,7 +52,7 @@ static int test_conc66(MYSQL *my) rc= mysql_options(mysql, MYSQL_READ_DEFAULT_FILE, "./my-conc66-test.cnf"); check_mysql_rc(rc, mysql); - sprintf(query, "GRANT ALL ON %s.* TO 'conc66'@'%s' IDENTIFIED BY 'test\";#test'", schema, this_host ? this_host : "localhost"); + sprintf(query, "GRANT ALL ON %s.* TO 'conc66'@'%s' IDENTIFIED BY 'test@A1\";#test'", schema, this_host ? this_host : "localhost"); rc= mysql_query(my, query); check_mysql_rc(rc, my); rc= mysql_query(my, "FLUSH PRIVILEGES"); @@ -800,7 +800,7 @@ static int test_bind_address(MYSQL *my) sprintf(query, "DROP USER '%s'@'%s'", username, bind_addr); rc= mysql_query(my, query); - sprintf(query, "CREATE USER '%s'@'%s'", username, bind_addr); + sprintf(query, "CREATE USER '%s'@'%s' IDENTIFIED BY '%s'", username, bind_addr, password); rc= mysql_query(my, query); check_mysql_rc(rc, my);