From 21c1e95aef15a1b146af59451909c2c140fc5931 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Mon, 3 Apr 2023 13:36:33 +0200 Subject: [PATCH 1/6] Run bench tests as part of CI --- .github/workflows/build_test_deploy.yml | 40 +++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/.github/workflows/build_test_deploy.yml b/.github/workflows/build_test_deploy.yml index 2d2ff00c7bdc..ddcf7eabb990 100644 --- a/.github/workflows/build_test_deploy.yml +++ b/.github/workflows/build_test_deploy.yml @@ -1244,6 +1244,46 @@ jobs: run: cd packages/next-swc && cargo nextest run -p next-dev-tests --release --no-fail-fast if: ${{needs.build.outputs.docsChange == 'nope'}} + test-bench-native-integration: + name: Bench Integration Test Native Code + runs-on: ubuntu-latest-16-core-oss + needs: build + + env: + CARGO_PROFILE_RELEASE_LTO: false + TURBOPACK_BENCH_COUNTS: 10 + TURBOPACK_BENCH_CACHED: 1 + + steps: + - uses: actions/cache@v3 + timeout-minutes: 5 + id: restore-build + with: + path: ./* + key: ${{ github.sha }}-${{ github.run_number }} + + - run: echo "${{needs.build.outputs.docsChange == 'nope'}}" + + - name: Install + if: ${{needs.build.outputs.docsChange == 'nope'}} + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ env.RUST_TOOLCHAIN }} + profile: minimal + + - name: Install nextest + uses: taiki-e/install-action@nextest + + - name: Build tests + timeout-minutes: 60 + run: cd packages/next-swc && cargo test --benches -p next-dev --release --no-run + if: ${{needs.build.outputs.docsChange == 'nope'}} + + - name: Run tests + timeout-minutes: 60 + run: cd packages/next-swc && cargo test --benches -p next-dev --release --no-fail-fast + if: ${{needs.build.outputs.docsChange == 'nope'}} + test-wasm: name: Test the wasm build runs-on: ubuntu-latest From 40b0ca5013ae8528a92581c52481bf051361043f Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 4 Apr 2023 10:29:23 +0200 Subject: [PATCH 2/6] make sure Node.js process closes when server disappears --- packages/next-swc/crates/next-core/js/src/ipc/index.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/next-swc/crates/next-core/js/src/ipc/index.ts b/packages/next-swc/crates/next-core/js/src/ipc/index.ts index e50096854cdb..384a7a2c4bf5 100644 --- a/packages/next-swc/crates/next-core/js/src/ipc/index.ts +++ b/packages/next-swc/crates/next-core/js/src/ipc/index.ts @@ -83,6 +83,9 @@ function createIpc( } }) }) + socket.once('close', () => { + process.exit(0) + }) function send(message: any): Promise { const packet = Buffer.from(JSON.stringify(message), 'utf8') From a991b59c5fa0c1117b88f2fe5d41f62cec678546 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 4 Apr 2023 10:32:17 +0200 Subject: [PATCH 3/6] use latest canary for benchmark tests --- .../benches/bundlers/turbopack/mod.rs | 20 ++++++++++--------- .../crates/next-dev/benches/util/npm.rs | 14 ++++++------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/packages/next-swc/crates/next-dev/benches/bundlers/turbopack/mod.rs b/packages/next-swc/crates/next-dev/benches/bundlers/turbopack/mod.rs index 9b25f494d51d..0547f0366a73 100644 --- a/packages/next-swc/crates/next-dev/benches/bundlers/turbopack/mod.rs +++ b/packages/next-swc/crates/next-dev/benches/bundlers/turbopack/mod.rs @@ -46,15 +46,17 @@ impl Bundler for Turbopack { } fn prepare(&self, install_dir: &Path) -> Result<()> { - npm::install( - install_dir, - &[ - NpmPackage::new("next", "13.2.4-canary.7"), - // Dependency on this is inserted by swc's preset_env - NpmPackage::new("@swc/helpers", "^0.4.11"), - ], - ) - .context("failed to install from npm")?; + let package_json = include_str!("../../../../../../next/package.json"); + let data: serde_json::Value = serde_json::from_str(package_json)?; + let version = data + .as_object() + .unwrap() + .get("version") + .unwrap() + .as_str() + .unwrap(); + npm::install(install_dir, &[NpmPackage::new("next", version)]) + .context("failed to install from npm")?; fs::write( install_dir.join("next.config.js"), diff --git a/packages/next-swc/crates/next-dev/benches/util/npm.rs b/packages/next-swc/crates/next-dev/benches/util/npm.rs index 6ea2533051c3..1ba159a96279 100644 --- a/packages/next-swc/crates/next-dev/benches/util/npm.rs +++ b/packages/next-swc/crates/next-dev/benches/util/npm.rs @@ -9,24 +9,24 @@ use serde_json::json; use crate::util::command; -pub struct NpmPackage { - pub name: &'static str, - pub version: &'static str, +pub struct NpmPackage<'a> { + pub name: &'a str, + pub version: &'a str, } -impl NpmPackage { - pub fn new(name: &'static str, version: &'static str) -> Self { +impl<'a> NpmPackage<'a> { + pub fn new(name: &'a str, version: &'a str) -> Self { NpmPackage { name, version } } } -impl std::fmt::Display for NpmPackage { +impl<'a> std::fmt::Display for NpmPackage<'a> { fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { fmt.write_fmt(format_args!("{}@{}", self.name, self.version)) } } -pub fn install(install_dir: &Path, packages: &[NpmPackage]) -> Result<()> { +pub fn install(install_dir: &Path, packages: &[NpmPackage<'_>]) -> Result<()> { if !fs::metadata(install_dir.join("package.json")) .map(|metadata| metadata.is_file()) .unwrap_or(false) From dd3487b405c18981781ff53902797ea946e037d2 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 4 Apr 2023 20:16:20 +0000 Subject: [PATCH 4/6] add comment --- packages/next-swc/crates/next-core/js/src/ipc/index.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/next-swc/crates/next-core/js/src/ipc/index.ts b/packages/next-swc/crates/next-core/js/src/ipc/index.ts index 384a7a2c4bf5..f664d92644c9 100644 --- a/packages/next-swc/crates/next-core/js/src/ipc/index.ts +++ b/packages/next-swc/crates/next-core/js/src/ipc/index.ts @@ -83,6 +83,9 @@ function createIpc( } }) }) + // When the socket is closed, this process is no longer needed. + // This might happen e. g. when parent process is killed or + // node.js pool is garbage collected. socket.once('close', () => { process.exit(0) }) From 5ec7f243d0d88443fec06b839f4bd9a034925bc9 Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Tue, 4 Apr 2023 20:19:43 +0000 Subject: [PATCH 5/6] add more verbose output --- .github/workflows/build_test_deploy.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_test_deploy.yml b/.github/workflows/build_test_deploy.yml index ddcf7eabb990..633f6740c2d5 100644 --- a/.github/workflows/build_test_deploy.yml +++ b/.github/workflows/build_test_deploy.yml @@ -1253,6 +1253,7 @@ jobs: CARGO_PROFILE_RELEASE_LTO: false TURBOPACK_BENCH_COUNTS: 10 TURBOPACK_BENCH_CACHED: 1 + TURBOPACK_BENCH_PROGRESS: 1 steps: - uses: actions/cache@v3 From ce560eb06b90eeda00777ce9fdacdafd75d1f01b Mon Sep 17 00:00:00 2001 From: Tobias Koppers Date: Wed, 5 Apr 2023 15:30:42 +0200 Subject: [PATCH 6/6] Update .github/workflows/build_test_deploy.yml Co-authored-by: Alex Kirszenberg --- .github/workflows/build_test_deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_test_deploy.yml b/.github/workflows/build_test_deploy.yml index 633f6740c2d5..b714443482f1 100644 --- a/.github/workflows/build_test_deploy.yml +++ b/.github/workflows/build_test_deploy.yml @@ -1265,7 +1265,7 @@ jobs: - run: echo "${{needs.build.outputs.docsChange == 'nope'}}" - - name: Install + - name: Install Rust toolchain if: ${{needs.build.outputs.docsChange == 'nope'}} uses: actions-rs/toolchain@v1 with: