Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,8 @@ __pycache__
SimpleBenchmarkApp/src/main/java/com/google/cloud/App.java
.flattened-pom.xml
# Local Test files
*ITLocalTest.java
*ITLocalTest.java

# JDBC-specific files
google-cloud-bigquery-jdbc/drivers/
google-cloud-bigquery-jdbc/jacoco*
21 changes: 21 additions & 0 deletions google-cloud-bigquery-jdbc/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM gcr.io/cloud-devrel-public-resources/java11

ENV JDBC_DOCKER_ENV=true
RUN apt-get update && apt-get install -y zip && rm -rf /var/lib/apt/lists/*

RUN mkdir /tst
COPY ./pom.xml /src/pom.xml
COPY ./java.header /src/java.header
COPY ./license-checks.xml /src/license-checks.xml
COPY ./google-cloud-bigquery-jdbc/pom.xml /src/google-cloud-bigquery-jdbc/pom.xml

COPY ./google-cloud-bigquery /src/google-cloud-bigquery
COPY ./google-cloud-bigquery-bom /src/google-cloud-bigquery-bom


WORKDIR /src
RUN mvn install -DskipTests

WORKDIR /src/google-cloud-bigquery-jdbc

ENTRYPOINT []
140 changes: 140 additions & 0 deletions google-cloud-bigquery-jdbc/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
CONTAINER_NAME=jdbc
PACKAGE_DESTINATION=$(PWD)/drivers
SRC="$(PWD)/.."
skipSurefire ?= true

# no indendation for ifndef\endif due to their evaluation before execution
.check-env: |
ifndef GOOGLE_APPLICATION_CREDENTIALS
$(error GOOGLE_APPLICATION_CREDENTIALS is required to run tests)
endif

install:
mvn clean install

clean:
mvn clean

lint:
mvn com.spotify.fmt:fmt-maven-plugin:format

unittest: |
mvn -B -ntp \
-DtrimStackTrace=false \
-Dclirr.skip=true \
-Denforcer.skip=true \
-Dtest=$(test) \
test

# Important: By default, this command will skip unittests.
# To include unit tests, run: make integration-test skipSurefire=false
integration-test: .check-env
mvn -B -ntp \
-Penable-integration-tests \
-DtrimStackTrace=false \
-DskipSurefire=$(skipSurefire) \
-Dclirr.skip=true \
-Denforcer.skip=true \
-Dit.failIfNoSpecifiedTests=false \
-Dit.test=$(test) \
integration-test

unit-test-coverage:
$(MAKE) unittest
mvn -B -ntp jacoco:report
BUILD_DIR=$$(mvn -B -ntp help:evaluate -Dexpression=project.build.directory -q -DforceStdout); \
cd $$BUILD_DIR/site && zip -r $$OLDPWD/jacoco-unittests.zip jacoco && cd $$OLDPWD

full-coverage: .check-env
$(MAKE) integration-test skipSurefire=false test=ITBigQueryJDBCTest,ITNightlyBigQueryTest
mvn -B -ntp jacoco:report
BUILD_DIR=$$(mvn -B -ntp help:evaluate -Dexpression=project.build.directory -q -DforceStdout); \
cd $$BUILD_DIR/site && zip -r $$OLDPWD/jacoco-full.zip jacoco && cd $$OLDPWD

package:
mvn clean package \
-DincludeScope=runtime \
-Dmaven.test.skip=true
mvn dependency:copy-dependencies \
-DincludeScope=runtime
${MAKE} generate-dependency-list

package-all-dependencies:
mvn package \
-DincludeScope=runtime \
-Dmaven.test.skip=true \
-P=release-all-dependencies

package-all-dependencies-shaded:
mvn package \
-DincludeScope=runtime \
-Dmaven.test.skip=true \
-P=release-all-dependencies,release-all-dependencies-shaded

generate-dependency-list:
mvn -B dependency:list \
-f pom.xml \
-DincludeScope=runtime | grep :jar: | sed -E "s/^.* ([^: ]+):([^:]+):([^:]+):([^:]+).*/<dependency><groupId>\1<\/groupId><artifactId>\2<\/artifactId><version>\4<\/version><\/dependency>/g" > dependencies.txt

# Commands for dockerized environments
.docker-run: |
docker run -it \
-v $(GOOGLE_APPLICATION_CREDENTIALS):/auth/application_creds.json \
-v "$(GOOGLE_APPLICATION_CREDENTIALS).p12":/auth/application_creds.p12 \
-e "GOOGLE_APPLICATION_CREDENTIALS=/auth/application_creds.json" \
-v $(SRC):/src \
-e "SA_EMAIL=test_email" \
-e "SA_SECRET=/auth/application_creds.json" \
-e "SA_SECRET_P12=/auth/application_creds.p12" \
$(CONTAINER_NAME) $(args)

docker-build:
docker build -t $(CONTAINER_NAME) -f Dockerfile ..

docker-session:
$(MAKE) .docker-run args="bash"

docker-package-all-dependencies: docker-build
mkdir -p $(PACKAGE_DESTINATION)
docker run \
-v $(SRC):/src \
-v $(PACKAGE_DESTINATION):/pkg \
$(CONTAINER_NAME) \
sh -c "make package-all-dependencies && \
cp --no-preserve=ownership /mvn/test-target/google-cloud-bigquery-jdbc-*.jar /pkg && \
rm -f /pkg/*tests.jar"

docker-package-all-dependencies-shaded: docker-build
mkdir -p $(PACKAGE_DESTINATION)
docker run \
-v $(SRC):/src \
-v $(PACKAGE_DESTINATION):/pkg \
$(CONTAINER_NAME) \
sh -c "make package-all-dependencies-shaded && \
cp --no-preserve=ownership /mvn/test-target/google-cloud-bigquery-jdbc-*.jar /pkg && \
rm -f /pkg/*tests.jar"

docker-package: docker-build
mkdir -p $(PACKAGE_DESTINATION)
docker run \
-v $(SRC):/src \
-v $(PACKAGE_DESTINATION):/pkg \
$(CONTAINER_NAME) \
sh -c "make package && \
mkdir -p /tmp/package && \
cp --no-preserve=ownership /mvn/test-target/google-cloud-bigquery-jdbc-*.jar /tmp/package && \
rm -f /pkg/*tests.jar && \
cp --no-preserve=ownership dependencies.txt /tmp/package && \
rm dependencies.txt && \
cp --no-preserve=ownership /mvn/test-target/dependency/*.jar /tmp/package && \
zip -j -r /pkg/google-cloud-bigquery-jdbc-$$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout).zip /tmp/package"

docker-unittest: |
$(MAKE) .docker-run args="make unittest test=$(test)"

docker-integration-test: .check-env
$(MAKE) .docker-run args="make integration-test test=$(test) skipSurefire=$(skipSurefire)"

docker-coverage:
$(MAKE) .docker-run args="make unit-test-coverage"
$(MAKE) .docker-run args="make full-coverage"
95 changes: 6 additions & 89 deletions google-cloud-bigquery-jdbc/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bigquery-jdbc</artifactId>
<version>0.1.0</version>
<version>0.1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>BigQuery JDBC</name>
<url>https://github.com/googleapis/java-bigquery-jdbc</url>
Expand Down Expand Up @@ -60,87 +60,24 @@

<parent>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bigquery-jdbc-parent</artifactId>
<version>0.1.0</version>
<artifactId>google-cloud-bigquery-parent</artifactId>
<version>2.57.2-SNAPSHOT</version><!-- {x-version-update:google-cloud-bigquery:current} -->
</parent>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bigquery</artifactId>
<version>2.57.2-SNAPSHOT</version><!-- {x-version-update:google-cloud-bigquery:current} -->
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bigquerystorage</artifactId>
</dependency>
<dependency>
<groupId>com.google.api</groupId>
<artifactId>api-common</artifactId>
</dependency>
<dependency>
<groupId>org.apache.arrow</groupId>
<artifactId>arrow-vector</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-core</artifactId>
</dependency>
<dependency>
<groupId>com.google.api</groupId>
<artifactId>gax</artifactId>
</dependency>
<dependency>
<groupId>com.google.auth</groupId>
<artifactId>google-auth-library-oauth2-http</artifactId>
</dependency>
<dependency>
<groupId>com.google.auth</groupId>
<artifactId>google-auth-library-credentials</artifactId>
</dependency>

<!-- Dependencies for Arrow RS -->
<dependency>
<groupId>org.apache.arrow</groupId>
<artifactId>arrow-memory-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.arrow</groupId>
<artifactId>arrow-memory-netty</artifactId>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
</dependency>
<dependency>
<groupId>com.google.api.grpc</groupId>
<artifactId>proto-google-cloud-bigquerystorage-v1</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.core5</groupId>
<artifactId>httpcore5</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client</artifactId>
<version>3.18.0</version>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client-apache-v5</artifactId>
<version>2.0.3</version>
<exclusions> <!-- Exclusions are here for removing EOL vulnerability -->
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
Expand All @@ -152,26 +89,6 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-core-http</artifactId>
</dependency>
<dependency>
<groupId>com.google.api</groupId>
<artifactId>gax-grpc</artifactId>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-api</artifactId>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-core</artifactId>
</dependency>
<!-- Test Dependencies -->
<dependency>
<groupId>com.google.truth</groupId>
Expand Down
Loading