Fix getCrossReference case-insensitive parent matching (#1411) #1324
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test JDBC Logging | |
| on: | |
| push: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| inputs: | |
| branch: | |
| description: 'Branch to checkout' | |
| required: false | |
| default: 'main' | |
| permissions: | |
| id-token: write | |
| contents: read | |
| jobs: | |
| test-logging: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| github-runner: [linux-ubuntu-latest, windows-server-latest] | |
| thrift-client: [0, 1] | |
| runs-on: | |
| group: databricks-protected-runner-group | |
| labels: ${{ matrix.github-runner }} | |
| steps: | |
| - name: Enable long paths | |
| if: runner.os == 'Windows' | |
| run: git config --system core.longpaths true | |
| - name: Checkout code | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| with: | |
| ref: ${{ inputs.branch || github.ref }} | |
| - name: Set up Java | |
| uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9 # v4 | |
| with: | |
| distribution: 'adopt' | |
| java-version: '21' | |
| - name: Get JFrog OIDC token | |
| run: | | |
| set -euo pipefail | |
| # Get GitHub OIDC ID token | |
| ID_TOKEN=$(curl -sLS \ | |
| -H "User-Agent: actions/oidc-client" \ | |
| -H "Authorization: Bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \ | |
| "${ACTIONS_ID_TOKEN_REQUEST_URL}&audience=jfrog-github" | jq .value | tr -d '"') | |
| echo "::add-mask::${ID_TOKEN}" | |
| # Exchange for JFrog access token | |
| ACCESS_TOKEN=$(curl -sLS -XPOST -H "Content-Type: application/json" \ | |
| "https://databricks.jfrog.io/access/api/v1/oidc/token" \ | |
| -d "{\"grant_type\": \"urn:ietf:params:oauth:grant-type:token-exchange\", \"subject_token_type\":\"urn:ietf:params:oauth:token-type:id_token\", \"subject_token\": \"${ID_TOKEN}\", \"provider_name\": \"github-actions\"}" | jq .access_token | tr -d '"') | |
| echo "::add-mask::${ACCESS_TOKEN}" | |
| if [ -z "$ACCESS_TOKEN" ] || [ "$ACCESS_TOKEN" = "null" ]; then | |
| echo "FAIL: Could not extract JFrog access token" | |
| exit 1 | |
| fi | |
| echo "JFROG_ACCESS_TOKEN=${ACCESS_TOKEN}" >> "$GITHUB_ENV" | |
| echo "JFrog OIDC token obtained successfully" | |
| - name: Configure maven | |
| run: | | |
| set -euo pipefail | |
| mkdir -p ~/.m2 | |
| cat > ~/.m2/settings.xml << EOF | |
| <settings> | |
| <mirrors> | |
| <mirror> | |
| <id>jfrog-central</id> | |
| <mirrorOf>*</mirrorOf> | |
| <url>https://databricks.jfrog.io/artifactory/db-maven/</url> | |
| </mirror> | |
| </mirrors> | |
| <servers> | |
| <server> | |
| <id>jfrog-central</id> | |
| <username>gha-service-account</username> | |
| <password>${JFROG_ACCESS_TOKEN}</password> | |
| </server> | |
| </servers> | |
| </settings> | |
| EOF | |
| echo "Maven configured to use JFrog registry" | |
| - name: Build JDBC driver | |
| run: mvn clean package -DskipTests | |
| - name: Find JAR file | |
| shell: bash | |
| run: | | |
| # Find the main JAR file dynamically (uber JAR from assembly-uber module) | |
| MAIN_JAR=$(find assembly-uber/target -maxdepth 1 -name "databricks-jdbc-*.jar" \ | |
| -not -name "*-thin.jar" \ | |
| -not -name "*-tests.jar" | head -1) | |
| if [ -z "$MAIN_JAR" ]; then | |
| echo "ERROR: Could not find main JAR file in assembly-uber/target directory" | |
| ls -la assembly-uber/target/ | |
| exit 1 | |
| fi | |
| echo "Using JAR file: $MAIN_JAR" | |
| echo "MAIN_JAR=$MAIN_JAR" >> $GITHUB_ENV | |
| - name: Set Environment Variables | |
| if: runner.os != 'Windows' | |
| shell: bash | |
| env: | |
| DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN }} | |
| DATABRICKS_HOST: ${{ secrets.DATABRICKS_HOST }} | |
| DATABRICKS_HTTP_PATH: ${{ secrets.DATABRICKS_HTTP_PATH }} | |
| USE_THRIFT_CLIENT: ${{ matrix.thrift-client }} | |
| run: | | |
| echo "DATABRICKS_TOKEN=${DATABRICKS_TOKEN}" >> $GITHUB_ENV | |
| echo "DATABRICKS_HOST=${DATABRICKS_HOST}" >> $GITHUB_ENV | |
| echo "DATABRICKS_HTTP_PATH=${DATABRICKS_HTTP_PATH}" >> $GITHUB_ENV | |
| echo "USE_THRIFT_CLIENT=${USE_THRIFT_CLIENT}" >> $GITHUB_ENV | |
| - name: Set Environment Variables (Windows) | |
| if: runner.os == 'Windows' | |
| shell: powershell | |
| env: | |
| DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN }} | |
| DATABRICKS_HOST: ${{ secrets.DATABRICKS_HOST }} | |
| DATABRICKS_HTTP_PATH: ${{ secrets.DATABRICKS_HTTP_PATH }} | |
| USE_THRIFT_CLIENT: ${{ matrix.thrift-client }} | |
| run: | | |
| "DATABRICKS_TOKEN=$env:DATABRICKS_TOKEN" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
| "DATABRICKS_HOST=$env:DATABRICKS_HOST" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
| "DATABRICKS_HTTP_PATH=$env:DATABRICKS_HTTP_PATH" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
| "USE_THRIFT_CLIENT=$env:USE_THRIFT_CLIENT" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
| - name: Clean & Compile LoggingTest | |
| shell: bash | |
| run: | | |
| rm -rf jdbc-core/target/test-classes | |
| mkdir -p jdbc-core/target/test-classes | |
| echo "Using JAR file: $MAIN_JAR" | |
| javac \ | |
| -cp "$MAIN_JAR" \ | |
| -d jdbc-core/target/test-classes \ | |
| jdbc-core/src/test/java/com/databricks/client/jdbc/LoggingTest.java | |
| echo "==== Checking compiled classes ====" | |
| find jdbc-core/target/test-classes -type f | |
| - name: Run LoggingTest | |
| shell: bash | |
| run: | | |
| echo "==== Running LoggingTest with usethriftclient=${{ matrix.thrift-client }} ====" | |
| OS_TYPE=$(uname | tr '[:upper:]' '[:lower:]') | |
| if [[ "$OS_TYPE" == "linux" ]]; then SEP=":"; else SEP=";"; fi | |
| echo "Using classpath separator: '$SEP'" | |
| echo "Using JAR file: $MAIN_JAR" | |
| CP="jdbc-core/target/test-classes${SEP}$MAIN_JAR" | |
| java \ | |
| --add-opens=java.base/java.nio=ALL-UNNAMED \ | |
| -cp "$CP" \ | |
| com.databricks.client.jdbc.LoggingTest | |
| - name: Verify log file contents | |
| shell: bash | |
| run: | | |
| LOG_DIR="${HOME}/logstest" | |
| LOG_FILE="${LOG_DIR}/databricks_jdbc.log.0" | |
| echo "Verifying log file contents in ${LOG_FILE}..." | |
| if [ -f "$LOG_FILE" ]; then | |
| echo "Log file found. Checking contents..." | |
| REQUIRED_STRINGS=("sql = SELECT 1", | |
| "Result retrieved successfully" | |
| "Closing global async HTTP client" | |
| "Global async HTTP client has been shut down") | |
| for STRING in "${REQUIRED_STRINGS[@]}"; do | |
| if ! grep -qF "$STRING" "$LOG_FILE"; then | |
| echo "ERROR: Required log string not found: $STRING" | |
| echo "Showing last 100 lines of log file:" | |
| tail -n 100 "$LOG_FILE" | |
| exit 1 | |
| fi | |
| done | |
| echo "All required log strings were found." | |
| else | |
| echo "Log file directory contents:" | |
| ls -la "${LOG_DIR}" || echo "Directory does not exist" | |
| echo "Log file ${LOG_FILE} does not exist. Failing the build." | |
| exit 1 | |
| fi |