vitess.io/vitess@v0.16.2/test/client_jdbc.sh (about) 1 #!/bin/bash 2 3 # Copyright 2019 The Vitess Authors. 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 # This is a wrapper script that installs and runs the example 18 # client for the JDBC interface. 19 20 set -e 21 22 # When this script is run with the argument "--enable-tls", then it will connect to VTGate using TLS with 23 # client authentication. This option depends upon the "vtgate-up.sh" script having also been run with 24 # a corresponding "--enable-tls" argument. 25 optional_tls_args='' 26 if [ "$1" = "--enable-tls" ]; 27 then 28 echo "Enabling TLS with client authentication" 29 cert_dir=$VTDATAROOT/tls 30 rm -f $cert_dir/ca-trustStore.jks 31 rm -f $cert_dir/client-keyStore.jks 32 33 # Create CA trustStore 34 openssl x509 -outform der -in $cert_dir/ca-cert.pem -out $cert_dir/ca-cert.der 35 keytool -import -alias cacert -keystore $cert_dir/ca-trustStore.jks -file $cert_dir/ca-cert.der -storepass passwd -trustcacerts -noprompt 36 37 # Create client-side signed cert keyStore 38 openssl pkcs12 -export -in $cert_dir/client-cert.pem -inkey $cert_dir/client-key.pem -out $cert_dir/client-key.p12 -name cert -CAfile $cert_dir/ca-cert.pem -caname root -passout pass:passwd 39 keytool -importkeystore -deststorepass passwd -destkeystore $cert_dir/client-keyStore.jks -srckeystore $cert_dir/client-key.p12 -srcstoretype PKCS12 -alias cert -srcstorepass passwd 40 41 optional_tls_args="?useSSL=true&keyStore=$cert_dir/client-keyStore.jks&keyStorePassword=passwd&keyAlias=cert&trustStore=$cert_dir/ca-trustStore.jks&trustStorePassword=passwd&trustAlias=cacert" 42 echo $optional_tls_args 43 fi 44 45 # We have to install the "example" module first because Maven cannot resolve 46 # them when we run "exec:java". See also: http://stackoverflow.com/questions/11091311/maven-execjava-goal-on-a-multi-module-project 47 # Install only "example". See also: http://stackoverflow.com/questions/1114026/maven-modules-building-a-single-specific-module 48 mvn -f $VTROOT/java/pom.xml -pl example -am install -DskipTests 49 # running tests using vitess-jdbc through grpc 50 mvn -f $VTROOT/java/example/pom.xml exec:java \ 51 -Dexec.cleanupDaemonThreads=false \ 52 -Dexec.mainClass="io.vitess.example.VitessJDBCExample" \ 53 -Dexec.args="localhost:15991$optional_tls_args" 54 55 # running tests using mysql protocol 56 mvn -f $VTROOT/java/example/pom.xml exec:java \ 57 -Dexec.cleanupDaemonThreads=false \ 58 -Dexec.mainClass="io.vitess.example.MysqlJDBCExample" \ 59 -Dexec.args="localhost:15306$optional_tls_args"