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"