Skip to content

Commit

Permalink
✅ Large File CI test (#170)
Browse files Browse the repository at this point in the history
- Adds a round trip test of 8 GiB file in playwright.
- Runs on a schedule in CI, and must be explicitly enabled with an environment variable to test locally. See instructions in the web-app/tests/README.md
  • Loading branch information
dmihalcik-virtru authored Mar 28, 2023
1 parent ef11761 commit 64a90e3
Show file tree
Hide file tree
Showing 17 changed files with 466 additions and 188 deletions.
1 change: 1 addition & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ jobs:
TEST_SCRIPT: ../../wait-and-test.sh
OPENTDF_INGRESS_HOST_PORT: "5432"
OPENTDF_LOAD_FRONTEND: "false"
PLAYWRIGHT_TESTS_TO_RUN: roundtrip
run: |-
tilt ci --file opentdf/quickstart/Tiltfile
Expand Down
152 changes: 152 additions & 0 deletions .github/workflows/large-tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
name: Build, Test, and Deliver Client

on:
schedule:
- cron: "0 4 * * 2,4"
jobs:
lib:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./lib
timeout-minutes: 5
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
cache-dependency-path: './lib/package-lock.json'
- run: npm ci
- run: npm test
- uses: actions/upload-artifact@v3
with:
name: coverage
path: lib/coverage/
- run: npm audit
- run: npm run license-check
- run: npm run lint
- run: npm pack
- uses: actions/upload-artifact@v3
with:
name: opentdf-client-lib
path: ./lib/opentdf-client-*.tgz

cli:
needs:
- lib
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./cli
timeout-minutes: 5
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
cache-dependency-path: './cli/package-lock.json'
- uses: actions/download-artifact@v3
with:
name: opentdf-client-lib
path: lib/
- run: npm uninstall @opentdf/client && npm ci && npm i ../lib/opentdf-client-*.tgz
- run: npm test
- run: npm audit
- run: npm run license-check
- run: npm run lint
- run: npm pack
- name: Setup BATS
uses: mig4/setup-bats@v1
with:
bats-version: 1.2.1
- run: bats bin/opentdf.bats
- uses: actions/upload-artifact@v3
with:
name: opentdf-cli
path: ./cli/opentdf-cli-*.tgz

web-app:
needs:
- lib
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./web-app
timeout-minutes: 5
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
cache-dependency-path: './web-app/package-lock.json'
- uses: actions/download-artifact@v3
with:
name: opentdf-client-lib
path: lib/
- run: npm uninstall @opentdf/client && npm ci && npm i ../lib/opentdf-client-*.tgz
- run: npm install
- run: npm test
- run: npm audit
- run: npm run license-check
- run: npm run lint
- run: npm pack

backend-roundtrip:
needs:
- cli
runs-on: ubuntu-latest
defaults:
run:
working-directory: .github/workflows/roundtrip
timeout-minutes: 90
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
cache-dependency-path: '.github/workflows/roundtrip/package-lock.json'
- uses: actions/download-artifact@v3
with:
name: opentdf-client-lib
path: lib/
- uses: actions/download-artifact@v3
with:
name: opentdf-cli
path: cli
- name: Git clone backend
run: |
git clone https://github.com/opentdf/opentdf.git
- uses: yokawasa/action-setup-kube-tools@v0.9.2
with:
setup-tools: |
kubectl
helm
tilt
# This should be in sync with the minikube-deployed kube version below
kubectl: '1.23.1'
helm: '3.8.0'
tilt: '0.26.2'
- run: |
kubectl version --client
kustomize version
tilt version
- name: start minikube
id: minikube
uses: medyagh/setup-minikube@master
with:
minikube-version: 1.25.1
# This should be in sync with the setup-tools version above
kubernetes-version: 1.23.1
- name: Run tilt ci
env:
#path relative to the quickstart Tiltfile
TEST_SCRIPT: ../../wait-and-test.sh
OPENTDF_INGRESS_HOST_PORT: "5432"
OPENTDF_LOAD_FRONTEND: "false"
PLAYWRIGHT_TESTS_TO_RUN: huge roundtrip
run: |-
tilt ci --file opentdf/quickstart/Tiltfile
84 changes: 22 additions & 62 deletions cli/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 7 additions & 5 deletions lib/tdf3/src/client/builders.ts
Original file line number Diff line number Diff line change
Expand Up @@ -602,7 +602,6 @@ class EncryptParamsBuilder {
}

export type DecryptSource =
| null
| { type: 'buffer'; location: Uint8Array }
| { type: 'remote'; location: string }
| { type: 'stream'; location: ReadableStream<Uint8Array> }
Expand Down Expand Up @@ -634,9 +633,9 @@ export type DecryptParams = {
</pre>
*/
class DecryptParamsBuilder {
private _params: DecryptParams;
private _params: Partial<DecryptParams>;

constructor(to_copy: DecryptParams = { source: null }) {
constructor(to_copy: Partial<DecryptParams> = {}) {
this._params = {
...to_copy,
};
Expand All @@ -651,7 +650,7 @@ class DecryptParamsBuilder {
return this;
}

getStreamSource(): DecryptSource {
getStreamSource(): DecryptSource | undefined {
return this._params.source;
}

Expand Down Expand Up @@ -849,7 +848,10 @@ class DecryptParamsBuilder {
* Creates a deep copy to prevent tricky call-by-reference and async execution bugs.
*/
build(): Readonly<DecryptParams> {
return this._deepCopy(this._params);
if (!this._params.source) {
throw new IllegalArgumentError('No source specified');
}
return this._deepCopy(this._params as DecryptParams);
}
}

Expand Down
Loading

0 comments on commit 64a90e3

Please sign in to comment.