Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
2ce927c
Intial commit for phase 4: Dashboards
cgivre Feb 6, 2026
e778aaa
More Phase 4 work
cgivre Feb 6, 2026
33f496b
Dashboard Improvements
cgivre Feb 6, 2026
bdc3e9b
Fix RAT
cgivre Feb 6, 2026
5e4e8cf
Add Image Upload to Dashboard
cgivre Feb 6, 2026
1f7837c
Image upload working
cgivre Feb 6, 2026
8bd7b72
Added Frontend Unit tests
cgivre Feb 6, 2026
d270cb0
Unit test fix
cgivre Feb 6, 2026
12c0a54
Fix CodeQL issues
cgivre Feb 8, 2026
d84f83c
Fix CodeQL issues
cgivre Feb 8, 2026
2e40915
Try again...
cgivre Feb 8, 2026
8649d85
More CodeQL Fixes
cgivre Feb 8, 2026
8d67a40
More code fixes
cgivre Feb 8, 2026
1daf076
Fix build error
cgivre Feb 8, 2026
0f1ab3d
Various fixes
cgivre Feb 9, 2026
db484ef
XML Nav Tree Improvements
cgivre Feb 9, 2026
4f6045a
Nav Tree working
cgivre Feb 9, 2026
398a5cf
Add big number
cgivre Feb 9, 2026
f7bf99d
Finished File System Config
cgivre Feb 11, 2026
12a24cd
Fix Linting
cgivre Feb 11, 2026
4599917
Fix useEffect dependency order in ProspectorSettingsModal
cgivre Feb 11, 2026
8f27e55
Improve workspace tab UI with instructions, validation, and security
cgivre Feb 11, 2026
7b07969
Fix Add Workspace button and handle classpath plugin special case
cgivre Feb 11, 2026
0c42676
Hide workspace tab for classpath plugin
cgivre Feb 11, 2026
b8cbef2
Fix Add Workspace button with proper useCallback dependencies
cgivre Feb 11, 2026
1897b1a
Stabilize workspace handlers and table columns with useCallback and u…
cgivre Feb 11, 2026
ce7a911
Fix Add Workspace button state persistence issue
cgivre Feb 11, 2026
de847c9
Add validation for duplicate workspace names
cgivre Feb 11, 2026
c090125
Fix workspace initialization on first mount
cgivre Feb 11, 2026
ee968be
More improvements
cgivre Feb 12, 2026
ff67896
Implement column menus for ResultsGrid with comprehensive feature set
cgivre Feb 12, 2026
aa6dfcc
Various improvements
cgivre Feb 12, 2026
a903c41
Dark mode:
cgivre Feb 12, 2026
d54ae8e
Minor bug fix
cgivre Feb 12, 2026
ced3384
Fix state
cgivre Feb 13, 2026
90a668c
Fix Vault Unit Tests
cgivre Feb 13, 2026
e6d9fe9
Fix Docker based unit tests
cgivre Feb 13, 2026
7cc69dc
Visualization improvements
cgivre Feb 13, 2026
41db628
Link fix
cgivre Feb 13, 2026
af2059f
Various fixes
cgivre Feb 18, 2026
cc9d325
Fixing time grain issues
cgivre Feb 18, 2026
6787d9d
WIP Time Grain
cgivre Feb 18, 2026
7f9b847
Time grain working
cgivre Feb 18, 2026
d73340a
Filter improvements and hardening.
cgivre Feb 19, 2026
908c81e
Refactor SQL generator to use Java port of SQL Glot
cgivre Feb 23, 2026
81872cb
Fix checkstyles
cgivre Feb 23, 2026
26531ec
Add trendlines
cgivre Feb 25, 2026
578999d
Profile page improvements
cgivre Feb 26, 2026
9311330
Implement Profile Detail Page — Dashboard-style redesign with AI advisor
cgivre Feb 26, 2026
239f685
Improve Profile Detail Page layout: add query display and evenly-spac…
cgivre Feb 26, 2026
01752d7
Fix AI advisor context serialization error
cgivre Feb 26, 2026
a4c33b8
Add credential redaction to prevent sensitive data exposure to AI
cgivre Feb 26, 2026
ddd02d9
Improve CSRF token handling for hosted deployments
cgivre Feb 26, 2026
d254ca9
Revert "Improve CSRF token handling for hosted deployments"
cgivre Feb 26, 2026
b8d454c
Added new visualizations
cgivre Mar 2, 2026
1dad6b6
Fix streaming UI bug
cgivre Mar 2, 2026
79459ec
WIP
cgivre Mar 6, 2026
ab4a2e6
Size improvements
cgivre Mar 6, 2026
a241240
UI Improvements
cgivre Mar 8, 2026
291a8c7
More data sources
cgivre Mar 9, 2026
ade1863
More data sources
cgivre Mar 9, 2026
fc0a18e
Schema tree fixes
cgivre Mar 9, 2026
628dffe
Fix Metrics and Profiles Pages
cgivre Mar 10, 2026
bcc6927
Schema tree fixes
cgivre Mar 11, 2026
0969bd1
Updated gitignore
cgivre Mar 11, 2026
44c1dab
Fix CodeQL issues
cgivre Mar 11, 2026
4a99131
Add backend result cache service with security hardening
cgivre Mar 12, 2026
1f5b692
Add frontend memory optimization with LRU cache and backend integration
cgivre Mar 12, 2026
f6d44a9
Add server-side pagination for large result sets
cgivre Mar 12, 2026
c1881ca
Remove unused act import from useServerPagination test
cgivre Mar 12, 2026
d6cf4d8
Fix CodeQL
cgivre Mar 12, 2026
4b7816f
Fix build errors
cgivre Mar 12, 2026
966c0f5
PDF Fix
cgivre Mar 12, 2026
1bbb1f2
Various updates
cgivre Mar 12, 2026
773f507
Added sys project
cgivre Mar 12, 2026
90e0348
Fix unit tests
cgivre Mar 13, 2026
d5dd4ee
Fix CodeQL issues
cgivre Mar 13, 2026
8f5ec6b
Various AI improvements
cgivre Mar 16, 2026
2e7ea4a
Various fixes
cgivre Mar 17, 2026
b9911dc
Project refinements
cgivre Mar 18, 2026
1f98532
Fix Checkstyle
cgivre Mar 18, 2026
bf363db
Fix schema search
cgivre Mar 18, 2026
a88a686
Fix query tab
cgivre Mar 18, 2026
0bf7b7e
Scheduler in progress
cgivre Mar 19, 2026
f9ada6b
Scheduler improvements
cgivre Mar 20, 2026
354931b
Various fixes
cgivre Mar 22, 2026
b778adc
Improve SqlLab layout and AI suggestions
cgivre Mar 23, 2026
67c2834
Fix: Add backtick escaping to INFORMATION_SCHEMA.COLUMNS query
cgivre Mar 24, 2026
4e35ce0
Fix: Add missing backticks to INFORMATION_SCHEMA.COLUMNS and simplify…
cgivre Mar 24, 2026
75f3d25
Fix: Extract fetchColumnsForTable private helper to fix getSchemaTree
cgivre Mar 24, 2026
4a9ac59
Fix: Use fresh WebUserConnection for each metadata query
cgivre Mar 24, 2026
3a1e061
Fix: Correct WebUserConnection constructor call
cgivre Mar 24, 2026
90fb00f
Refactor: Add boolean parameter to executeQuery for connection reuse …
cgivre Mar 24, 2026
2d66635
Improve AI Query Suggestions: format, name tabs, remove panel expansion
cgivre Mar 24, 2026
d027cae
Fix: Remove unused Space import from QuerySuggestions
cgivre Mar 24, 2026
fa16b18
Fix: Change allValidTables from let to const
cgivre Mar 24, 2026
e5bd57b
Fix: Pass suggestion title to parent component in AiAssistantModal
cgivre Mar 24, 2026
23e1374
Implement hierarchical geographic map support with lazy-loading
cgivre Mar 24, 2026
f6264b8
Update TODO: mark Choropleth Maps as complete
cgivre Mar 24, 2026
3d949b1
Fix project data loading: load saved queries and improve cache handling
cgivre Mar 24, 2026
36b41cd
Add US ZIP Code geographic map support
cgivre Mar 24, 2026
a1bebeb
Clean up: remove Python download scripts, fix linting
cgivre Mar 24, 2026
9370d3a
Fix: replace dynamic import with static import in SqlLabPage
cgivre Mar 24, 2026
4a70f9a
Remove broken us-zipcodes placeholder
cgivre Mar 24, 2026
542990f
Add US ZIP Code support with DC data + full US instructions
cgivre Mar 24, 2026
9adef08
Add .gitignore for large GeoJSON files + setup script
cgivre Mar 24, 2026
64614d7
Add debugging logs for choropleth map rendering and GeoJSON loading
cgivre Mar 24, 2026
cf629ce
Add state-level ZIP code support to GeoMapRegistry and create Python …
cgivre Mar 24, 2026
5a62dfe
Add multi-select UI for state-level ZIP code scopes
cgivre Mar 24, 2026
db1ff64
Fix: Include 'US ZIP Codes (by State)' group in GEO_SCOPE_OPTIONS
cgivre Mar 24, 2026
d298751
Add merged US ZIP codes GeoJSON (4,388 ZIP codes from 14 states)
cgivre Mar 25, 2026
93ba458
Improve ZIP code download: minification + 5-minute timeout
cgivre Mar 25, 2026
6e54962
Add polygon simplification to reduce file sizes by 67%
cgivre Mar 25, 2026
08c43a3
Optimize ZIP code performance: use state-specific files instead of me…
cgivre Mar 25, 2026
0b1ffc3
Replace NaN with 0 in choropleth visualization data
cgivre Mar 25, 2026
650d208
Convert us-zipcodes from GeoJSON to TopoJSON for 76% size reduction
cgivre Mar 25, 2026
34bfc23
Add @types/topojson-client for TypeScript support
cgivre Mar 25, 2026
afe33a9
Fix ESLint errors: remove self-assignments and any type annotation
cgivre Mar 25, 2026
10c9295
Add Apache License headers to scripts and data files
cgivre Mar 25, 2026
7204e6d
Implement choropleth zoom and center configuration
cgivre Mar 25, 2026
9ad5fc1
Allow capturing choropleth map view from interactive preview
cgivre Mar 25, 2026
fc3f4f6
Add 'Manage Data Sources' to admin menu
cgivre Mar 25, 2026
24e65be
Fix ref type annotations in map capture feature
cgivre Mar 25, 2026
6098c58
Fix route parameter collision between project and dashboard IDs
cgivre Mar 25, 2026
cf1ef86
Fix: prevent first saved query from loading into new tabs
cgivre Mar 25, 2026
afa8abd
Fix: preserve lock state and visualization IDs when duplicating tabs
cgivre Mar 25, 2026
6141f73
Initialize lock and viz fields for new tabs
cgivre Mar 25, 2026
beeb1e7
Add sort direction controls to metric and categorical visualizations
cgivre Mar 25, 2026
5a7fe81
Add number formatting, labels, and sparkline data limiting to metric …
cgivre Mar 25, 2026
9769b1b
Add currency formatting and consolidate metric visualization options …
cgivre Mar 25, 2026
3ae37ee
Move Sort Direction control to appear right after Order By for bigNumber
cgivre Mar 25, 2026
98b2f61
Fix AI Q&A panel data access across dashboard tabs
cgivre Mar 25, 2026
2f807a2
Include SQL queries in AI Q&A dashboard context
cgivre Mar 25, 2026
7e08859
Instruct AI to keep dashboard Q&A responses brief
cgivre Mar 25, 2026
b38d245
Make AI Q&A instruction explicit: use only dashboard data, no databas…
cgivre Mar 25, 2026
c7045be
Fix AI Q&A to use only dashboard data, add clear button
cgivre Mar 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
64 changes: 64 additions & 0 deletions .github/workflows/sqllab-frontend.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: SQL Lab Frontend CI

on:
push:
paths:
- 'exec/java-exec/src/main/resources/webapp/**'
pull_request:
paths:
- 'exec/java-exec/src/main/resources/webapp/**'

defaults:
run:
working-directory: exec/java-exec/src/main/resources/webapp

jobs:
build-and-test:
name: Build & Test
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20]
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache-dependency-path: exec/java-exec/src/main/resources/webapp/package-lock.json

- name: Install dependencies
run: npm ci

- name: TypeScript type check
run: npx tsc --noEmit

- name: Lint
run: npm run lint

- name: Run tests
run: npx vitest run --passWithNoTests

- name: Build
run: npm run build
29 changes: 28 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,31 @@ target/
tools/venv/
venv/
.vscode/*
exec/java-exec/src/main/resources/webapp/
/exec/java-exec/src/main/resources/python/.venv/
__pycache__/
*.pyc
.pytest_cache/
.coverage

# Frontend (webapp)
node_modules/
.vite/
.env
.env.local
.env.*.local
*.swo
Thumbs.db
coverage/
/exec/java-exec/src/main/resources/webapp/dist/
/exec/java-exec/src/main/resources/webapp/node/
result-cache/

# Large GeoJSON files (for local development only, not committed to git)
# Exception: us-zipcodes.topojson (merged all-states, 91 MB) is committed to git
# Individual state files (us-al-zipcodes.json, us-ca-zipcodes.json, etc.) are git-ignored
# These can be regenerated locally using scripts/process-zipcodes.py
/exec/java-exec/src/main/resources/webapp/public/geojson/us-*-zipcodes.json
/exec/java-exec/src/main/resources/webapp/public/geojson/us-zipcodes.json
!/exec/java-exec/src/main/resources/webapp/public/geojson/us-zipcodes.topojson
/exec/java-exec/src/main/resources/webapp/public/geojson/*.zip
/exec/java-exec/src/main/resources/webapp/public/geojson/cb_*
1 change: 1 addition & 0 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
4. Force Directed Graph Visualization
53 changes: 53 additions & 0 deletions build-frontend.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# Build the SQL Lab frontend and update the distribution.
# Usage: ./build-frontend.sh

set -e

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
WEBAPP_DIR="$SCRIPT_DIR/exec/java-exec/src/main/resources/webapp"
DIST_BASE="$SCRIPT_DIR/distribution/target"

echo "=== Building SQL Lab frontend ==="
cd "$WEBAPP_DIR"
npm run build

echo ""
echo "=== Building java-exec module ==="
cd "$SCRIPT_DIR"
mvn package -pl exec/java-exec -DskipTests -Dcheckstyle.skip=true -q

# Find the distribution directory and copy the jar
DIST_DIR=$(find "$DIST_BASE" -name "jars" -type d 2>/dev/null | head -1)
if [ -n "$DIST_DIR" ]; then
echo ""
echo "=== Copying jar to distribution ==="
cp "$SCRIPT_DIR/exec/java-exec/target/drill-java-exec-"*"-SNAPSHOT.jar" "$DIST_DIR/"
echo "Updated: $DIST_DIR/"
else
echo ""
echo "WARNING: Distribution directory not found under $DIST_BASE"
echo "Run a full 'mvn package' first to create the distribution, or copy the jar manually:"
echo " cp exec/java-exec/target/drill-java-exec-*-SNAPSHOT.jar <drill-distribution>/jars/"
fi

echo ""
echo "=== Done! Restart Drill and hard-refresh your browser (Cmd+Shift+R) ==="
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,13 @@ public List<String> extensions() {
return this.extensions;
}

/**
* Standard getter for extensions, consistent with other FormatPluginConfig implementations.
*/
public List<String> getExtensions() {
return this.extensions;
}

public boolean combinePages() {
return this.combinePages;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,8 @@ public void close() {

/**
* This function processes the XML elements. This function stops reading when the
* limit (if any) which came from the query has been reached or the Iterator runs out of
* elements.
* limit (if any) which came from the query has been reached, a complete row has been
* read, or the Iterator runs out of elements.
* @return True if there are more elements to parse, false if not
*/
private boolean processElements() {
Expand Down Expand Up @@ -197,6 +197,13 @@ private boolean processElements() {

// Process the event
processEvent(currentEvent, lastEvent, reader.peek());

// After completing a row, return to let next() check batch capacity.
// This prevents batch overflow errors that occur when rows accumulate
// beyond what the batch can hold without the isFull() check running.
if (currentState == xmlState.ROW_ENDED) {
return true;
}
} catch (XMLStreamException e) {
throw UserException
.dataReadError(e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.testcontainers.DockerClientFactory;
import org.testcontainers.containers.CassandraContainer;

@Category(SlowTest.class)
Expand All @@ -42,6 +43,10 @@ public class TestCassandraSuite extends BaseTest {

@BeforeClass
public static void initCassandra() {
org.junit.Assume.assumeTrue(
"Docker is not available, skipping container tests",
DockerClientFactory.instance().isDockerAvailable()
);
synchronized (TestCassandraSuite.class) {
if (initCount.get() == 0) {
startCassandra();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.testcontainers.DockerClientFactory;
import org.testcontainers.elasticsearch.ElasticsearchContainer;

import com.google.api.client.util.SslUtils;
Expand All @@ -54,6 +55,8 @@
import java.time.Duration;
import java.util.concurrent.atomic.AtomicInteger;

import static org.junit.Assume.assumeTrue;


@Category(SlowTest.class)
@RunWith(Suite.class)
Expand All @@ -76,6 +79,10 @@ public class TestElasticsearchSuite extends BaseTest {

@BeforeClass
public static void initElasticsearch() throws IOException, GeneralSecurityException {
assumeTrue(
"Docker is not available, skipping container tests",
DockerClientFactory.instance().isDockerAvailable()
);
synchronized (TestElasticsearchSuite.class) {
if (initCount.get() == 0) {
startElasticsearch();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import java.util.Collections;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.apache.calcite.schema.SchemaPlus;
import org.apache.calcite.schema.Table;
Expand Down Expand Up @@ -112,6 +113,16 @@ public Table getTable(String name) {
}
}

@Override
public Set<String> getTableNames() {
return tables.keySet();
}

@Override
public Set<String> getSubSchemaNames() {
return subSchemas.keySet();
}

@Override
public String getTypeName() {
return HttpStoragePluginConfig.NAME;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.junit.experimental.categories.Category;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.DockerClientFactory;
import org.testcontainers.containers.JdbcDatabaseContainer;
import org.testcontainers.containers.MySQLContainer;
import org.testcontainers.ext.ScriptUtils;
Expand All @@ -41,6 +42,7 @@
import java.util.concurrent.TimeUnit;

import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue;

@Category(JdbcStorageTest.class)
public class TestJdbcInsertWithMySQL extends ClusterTest {
Expand All @@ -51,6 +53,10 @@ public class TestJdbcInsertWithMySQL extends ClusterTest {

@BeforeClass
public static void initMysql() throws Exception {
assumeTrue(
"Docker is not available, skipping container tests",
DockerClientFactory.instance().isDockerAvailable()
);
startCluster(ClusterFixture.builder(dirTestWatcher));
dirTestWatcher.copyResourceToRoot(Paths.get(""));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.testcontainers.DockerClientFactory;
import org.testcontainers.containers.JdbcDatabaseContainer;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.utility.DockerImageName;
Expand All @@ -37,6 +38,7 @@
import java.util.concurrent.TimeUnit;

import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue;

@Category(JdbcStorageTest.class)
public class TestJdbcInsertWithPostgres extends ClusterTest {
Expand All @@ -46,6 +48,10 @@ public class TestJdbcInsertWithPostgres extends ClusterTest {

@BeforeClass
public static void initPostgres() throws Exception {
assumeTrue(
"Docker is not available, skipping container tests",
DockerClientFactory.instance().isDockerAvailable()
);
startCluster(ClusterFixture.builder(dirTestWatcher));
dirTestWatcher.copyResourceToRoot(Paths.get(""));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.testcontainers.DockerClientFactory;
import org.testcontainers.containers.ClickHouseContainer;
import org.testcontainers.containers.JdbcDatabaseContainer;
import org.testcontainers.utility.DockerImageName;
Expand All @@ -42,6 +43,7 @@
import java.util.Map;

import static org.junit.Assert.assertEquals;
import static org.junit.Assume.assumeTrue;

/**
* JDBC storage plugin tests against Clickhouse.
Expand All @@ -56,6 +58,10 @@ public class TestJdbcPluginWithClickhouse extends ClusterTest {

@BeforeClass
public static void initClickhouse() throws Exception {
assumeTrue(
"Docker is not available, skipping container tests",
DockerClientFactory.instance().isDockerAvailable()
);
startCluster(ClusterFixture.builder(dirTestWatcher));
String osName = System.getProperty("os.name").toLowerCase();
DockerImageName imageName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import org.junit.Ignore;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.testcontainers.DockerClientFactory;
import org.testcontainers.containers.MSSQLServerContainer;
import org.testcontainers.utility.DockerImageName;

Expand All @@ -55,6 +56,10 @@ public class TestJdbcPluginWithMSSQL extends ClusterTest {

@BeforeClass
public static void initMSSQL() throws Exception {
Assume.assumeTrue(
"Docker is not available, skipping container tests",
DockerClientFactory.instance().isDockerAvailable()
);
Assume.assumeTrue(System.getProperty("os.arch").matches("(amd64|x86_64)"));

startCluster(ClusterFixture.builder(dirTestWatcher));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.testcontainers.DockerClientFactory;
import org.testcontainers.containers.JdbcDatabaseContainer;
import org.testcontainers.containers.MySQLContainer;
import org.testcontainers.ext.ScriptUtils;
Expand All @@ -58,6 +59,10 @@ public class TestJdbcPluginWithMySQLIT extends ClusterTest {

@BeforeClass
public static void initMysql() throws Exception {
Assume.assumeTrue(
"Docker is not available, skipping container tests",
DockerClientFactory.instance().isDockerAvailable()
);
startCluster(ClusterFixture.builder(dirTestWatcher));
String osName = System.getProperty("os.name").toLowerCase();
String mysqlDBName = "drill_mysql_test";
Expand Down
Loading
Loading