Skip to content
Closed
Show file tree
Hide file tree
Changes from all 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
12 changes: 12 additions & 0 deletions .github/actions/integration/vertica.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash
set -eo pipefail

# Debug log for test containers
export DEBUG=testcontainers

export TEST_VERTICA_VERSION=11.1.1-0

echo "::group::Vertica ${TEST_VERTICA_VERSION}"
docker pull vertica/vertica-ce:${TEST_VERTICA_VERSION}
yarn lerna run --concurrency 1 --stream --no-prefix integration:vertica
echo "::endgroup::"
3 changes: 2 additions & 1 deletion .github/workflows/push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ jobs:
node-version: [14.x]
db: [
'clickhouse', 'druid', 'elasticsearch', 'mssql', 'mysql', 'postgres', 'prestodb',
'mysql-aurora-serverless', 'cubestore', 'crate'
'mysql-aurora-serverless', 'cubestore', 'crate', 'vertica'
]
fail-fast: false

Expand Down Expand Up @@ -434,6 +434,7 @@ jobs:
yarn run smoke:questdb
yarn run smoke:multidb
yarn run smoke:lambda
yarn run smoke:vertica

docker-image-latest-set-tag:
# At least git should be completed pushed up until this moment
Expand Down
2 changes: 2 additions & 0 deletions packages/cubejs-docker/dev-alpine.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ COPY packages/cubejs-snowflake-driver/package.json packages/cubejs-snowflake-dri
COPY packages/cubejs-sqlite-driver/package.json packages/cubejs-sqlite-driver/package.json
COPY packages/cubejs-ksql-driver/package.json packages/cubejs-ksql-driver/package.json
COPY packages/cubejs-dbt-schema-extension/package.json packages/cubejs-dbt-schema-extension/package.json
COPY packages/cubejs-vertica-driver/package.json packages/cubejs-vertica-driver/package.json
# Skip
# COPY packages/cubejs-testing/package.json packages/cubejs-testing/package.json
# COPY packages/cubejs-docker/package.json packages/cubejs-docker/package.json
Expand Down Expand Up @@ -123,6 +124,7 @@ COPY packages/cubejs-snowflake-driver/ packages/cubejs-snowflake-driver/
COPY packages/cubejs-sqlite-driver/ packages/cubejs-sqlite-driver/
COPY packages/cubejs-ksql-driver/ packages/cubejs-ksql-driver/
COPY packages/cubejs-dbt-schema-extension/ packages/cubejs-dbt-schema-extension/
COPY packages/cubejs-vertica-driver/ packages/cubejs-vertica-driver/
# Skip
# COPY packages/cubejs-testing/ packages/cubejs-testing/
# COPY packages/cubejs-docker/ packages/cubejs-docker/
Expand Down
2 changes: 2 additions & 0 deletions packages/cubejs-docker/dev.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ COPY packages/cubejs-sqlite-driver/package.json packages/cubejs-sqlite-driver/pa
COPY packages/cubejs-ksql-driver/package.json packages/cubejs-ksql-driver/package.json
COPY packages/cubejs-dbt-schema-extension/package.json packages/cubejs-dbt-schema-extension/package.json
COPY packages/cubejs-jdbc-driver/package.json packages/cubejs-jdbc-driver/package.json
COPY packages/cubejs-vertica-driver/package.json packages/cubejs-vertica-driver/package.json
# Skip
# COPY packages/cubejs-testing/package.json packages/cubejs-testing/package.json
# COPY packages/cubejs-docker/package.json packages/cubejs-docker/package.json
Expand Down Expand Up @@ -141,6 +142,7 @@ COPY packages/cubejs-ksql-driver/ packages/cubejs-ksql-driver/
COPY packages/cubejs-dbt-schema-extension/ packages/cubejs-dbt-schema-extension/
COPY packages/cubejs-jdbc-driver/ packages/cubejs-jdbc-driver/
COPY packages/cubejs-databricks-jdbc-driver/ packages/cubejs-databricks-jdbc-driver/
COPY packages/cubejs-vertica-driver/ packages/cubejs-vertica-driver/
# Skip
# COPY packages/cubejs-testing/ packages/cubejs-testing/
# COPY packages/cubejs-docker/ packages/cubejs-docker/
Expand Down
1 change: 1 addition & 0 deletions packages/cubejs-docker/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
"@cubejs-backend/server": "^0.31.3",
"@cubejs-backend/snowflake-driver": "^0.31.3",
"@cubejs-backend/sqlite-driver": "^0.31.3",
"@cubejs-backend/vertica-driver": "^0.31.3",
"cubejs-cli": "^0.31.3",
"typescript": "~4.1.5"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ module.exports = {
ksql: '@cubejs-backend/ksql-driver',
questdb: '@cubejs-backend/questdb-driver',
materialize: '@cubejs-backend/materialize-driver',
vertica: '@cubejs-backend/vertica-driver',
// List for JDBC drivers
'databricks-jdbc': '@cubejs-backend/databricks-jdbc-driver',
};
1 change: 1 addition & 0 deletions packages/cubejs-testing-shared/src/db/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ export * from './cubestore';
export * from './questdb';
export * from './materialize';
export * from './crate';
export * from './vertica';
22 changes: 22 additions & 0 deletions packages/cubejs-testing-shared/src/db/vertica.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { GenericContainer } from 'testcontainers';
import { LogWaitStrategy } from 'testcontainers/dist/wait-strategy';

import { DbRunnerAbstract, DBRunnerContainerOptions } from './db-runner.abstract';

type Vertica = DBRunnerContainerOptions & {
version?: string,
};

export class VerticaDBRunner extends DbRunnerAbstract {
public static startContainer() {
const version = process.env.TEST_VERTICA_VERSION || '11.1.1-0';

const container = new GenericContainer(`vertica/vertica-ce:${version}`)
.withEnv('VERTICA_DB_NAME', 'test')
.withExposedPorts(5433)
.withStartupTimeout(60 * 1000)
.withWaitStrategy(new LogWaitStrategy("Node Status: v_test_node0001: (UP)"));

return container.start();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ export const DB_CAST = {
SELECT_PREFIX: 'with tmp_tbl as (\n',
SELECT_SUFFIX: ')\nselect * from tmp_tbl',
},
vertica: {
SELECT_PREFIX: '',
SELECT_SUFFIX: '',
},
};
export const DATE_CAST = {
athena: {
Expand All @@ -49,4 +53,8 @@ export const DATE_CAST = {
DATE_PREFIX: 'to_date(',
DATE_SUFFIX: ', \'YYYY-MM-DD\')',
},
vertica: {
DATE_PREFIX: 'to_date(',
DATE_SUFFIX: ', \'YYYY-MM-DD\')',
},
};
44 changes: 44 additions & 0 deletions packages/cubejs-testing/birdbox-fixtures/vertica.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
version: "2.2"

services:
cube:
container_name: birdbox-cube
image: ${BIRDBOX_CUBEJS_REGISTRY_PATH}cubejs/cube:${BIRDBOX_CUBEJS_VERSION:-latest}
environment:
CUBEJS_DB_TYPE: vertica

CUBEJS_DB_HOST: db
CUBEJS_DB_PORT: 5433
CUBEJS_DB_NAME: vmart
CUBEJS_DB_USER: dbadmin
CUBEJS_DB_PASS:

CUBEJS_DEV_MODE: "true"
CUBEJS_WEB_SOCKETS: "true"
CUBEJS_API_SECRET: mysupersecret
volumes:
- ./vertica/schema:/cube/conf/schema
ports:
- "4000"
depends_on:
db:
condition: service_healthy
links:
- db
restart: always

# Database instances, for troubleshooting.
# NOT required.
# Tests provide db instances via testcontainers, in both LOCAL and DOCKER modes.

db:
container_name: birdbox-db
image: vertica/vertica-ce:11.1.1-0
ports:
- "5433"
restart: always
healthcheck:
test: ["CMD-SHELL", "/opt/vertica/bin/vsql -c 'select 1;' || exit 1"]
interval: 10s
timeout: 5s
retries: 5
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
cube(`Orders`, {
sql: `
with orders as (
select 1 as id, 100 as amount, 'new' status
UNION ALL
select 2 as id, 200 as amount, 'new' status
UNION ALL
select 3 as id, 300 as amount, 'processed' status
UNION ALL
select 4 as id, 500 as amount, 'processed' status
UNION ALL
select 5 as id, 600 as amount, 'shipped' status
)
select * from orders
`,
measures: {
count: {
type: `count`,
},
totalAmount: {
sql: `amount`,
type: `sum`,
},
toRemove: {
type: `count`,
},
},
dimensions: {
status: {
sql: `status`,
type: `string`,
},
},
});
4 changes: 4 additions & 0 deletions packages/cubejs-testing/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@
"driver:questdb:snap": "jest --verbose --updateSnapshot -i dist/test/driver-questdb.test.js",
"driver:databricks": "jest --verbose -i dist/test/driver-databricks.test.js",
"driver:databricks:snap": "jest --verbose --updateSnapshot -i dist/test/driver-databricks.test.js",
"driver:vertica": "jest --verbose -i dist/test/driver-vertica.test.js",
"driver:vertica:snap": "jest --verbose --updateSnapshot -i dist/test/driver-vertica.test.js",
"smoke:athena": "jest --verbose -i dist/test/smoke-athena.test.js",
"smoke:athena:snapshot": "jest --verbose --updateSnapshot -i dist/test/smoke-athena.test.js",
"smoke:bigquery": "jest --verbose -i dist/test/smoke-bigquery.test.js",
Expand All @@ -65,6 +67,8 @@
"smoke:postgres": "jest --verbose -i dist/test/smoke-postgres.test.js",
"smoke:redshift": "jest --verbose -i dist/test/smoke-redshift.test.js",
"smoke:redshift:snapshot": "jest --verbose --updateSnapshot -i dist/test/smoke-redshift.test.js",
"smoke:vertica": "jest --verbose -i dist/test/smoke-vertica.test.js",
"smoke:vertica:snapshot": "jest --verbose --updateSnapshot -i dist/test/smoke-vertica.test.js",
"smoke:cubesql": "jest --verbose --forceExit -i dist/test/smoke-cubesql.test.js",
"smoke:cubesql:snapshot": "jest --verbose --forceExit --updateSnapshot -i dist/test/smoke-cubesql.test.js"
},
Expand Down
1 change: 1 addition & 0 deletions packages/cubejs-testing/src/REQUIRED_ENV_VARS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,5 @@ export const REQUIRED_ENV_VARS: {[key: string]: string[]} = {
'CUBEJS_DB_EXPORT_BUCKET_AWS_SECRET',
'CUBEJS_DB_EXPORT_BUCKET_AWS_REGION',
],
vertica: [],
};
5 changes: 3 additions & 2 deletions packages/cubejs-testing/src/birdbox.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ interface Args {
log: Log,
}

export type DriverType = 'postgresql' | 'postgres' | 'multidb' | 'materialize' | 'crate' | 'bigquery' | 'athena' | 'postgresql-cubestore' | 'firebolt' | 'questdb' | 'redshift' | 'databricks-jdbc';
export type DriverType = 'postgresql' | 'postgres' | 'multidb' | 'materialize' | 'crate' | 'bigquery' | 'athena' | 'postgresql-cubestore' | 'firebolt' | 'questdb' | 'redshift' | 'databricks-jdbc' | 'vertica';

export type Schemas = string[];

Expand Down Expand Up @@ -102,7 +102,8 @@ const driverNameToFolderNameMapper: Record<DriverType, string> = {
firebolt: 'postgresql',
questdb: 'postgresql',
redshift: 'postgresql',
'databricks-jdbc': 'databricks-jdbc'
'databricks-jdbc': 'databricks-jdbc',
vertica: 'vertica'
};

/**
Expand Down
Loading