From: Valentine Wallace Date: Tue, 16 Feb 2021 20:44:20 +0000 (-0500) Subject: prints and nocapture and faster CI X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=b1cdf45df53b30442551ff4e106ac245b0585825;p=rust-lightning prints and nocapture and faster CI --- diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e4fe497fa..814088448 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -39,60 +39,60 @@ jobs: toolchain: ${{ matrix.toolchain }} override: true profile: minimal - - name: Build on Rust ${{ matrix.toolchain }} with net-tokio - if: "matrix.build-net-tokio && !matrix.coverage" - run: cargo build --verbose --color always - - name: Build on Rust ${{ matrix.toolchain }} with net-tokio and full code-linking for coverage generation - if: matrix.coverage - run: RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always - - name: Build on Rust ${{ matrix.toolchain }} - if: "! matrix.build-net-tokio" - run: cargo build --verbose --color always -p lightning - - name: Build Block Sync Clients on Rust ${{ matrix.toolchain }} with features - if: "matrix.build-net-tokio && !matrix.coverage" - run: | - cd lightning-block-sync - cargo build --verbose --color always --features rest-client - cargo build --verbose --color always --features rpc-client - cargo build --verbose --color always --features rpc-client,rest-client - cargo build --verbose --color always --features rpc-client,rest-client,tokio - cd .. - - name: Build Block Sync Clients on Rust ${{ matrix.toolchain }} with features and full code-linking for coverage generation - if: matrix.coverage - run: | - cd lightning-block-sync - RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features rest-client - RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features rpc-client - RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features rpc-client,rest-client - RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features rpc-client,rest-client,tokio - cd .. + # - name: Build on Rust ${{ matrix.toolchain }} with net-tokio + # if: "matrix.build-net-tokio && !matrix.coverage" + # run: cargo build --verbose --color always + # - name: Build on Rust ${{ matrix.toolchain }} with net-tokio and full code-linking for coverage generation + # if: matrix.coverage + # run: RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always + # - name: Build on Rust ${{ matrix.toolchain }} + # if: "! matrix.build-net-tokio" + # run: cargo build --verbose --color always -p lightning + # - name: Build Block Sync Clients on Rust ${{ matrix.toolchain }} with features + # if: "matrix.build-net-tokio && !matrix.coverage" + # run: | + # cd lightning-block-sync + # cargo build --verbose --color always --features rest-client + # cargo build --verbose --color always --features rpc-client + # cargo build --verbose --color always --features rpc-client,rest-client + # cargo build --verbose --color always --features rpc-client,rest-client,tokio + # cd .. + # - name: Build Block Sync Clients on Rust ${{ matrix.toolchain }} with features and full code-linking for coverage generation + # if: matrix.coverage + # run: | + # cd lightning-block-sync + # RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features rest-client + # RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features rpc-client + # RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features rpc-client,rest-client + # RUSTFLAGS="-C link-dead-code" cargo build --verbose --color always --features rpc-client,rest-client,tokio + # cd .. - name: Test on Rust ${{ matrix.toolchain }} with net-tokio if: "matrix.build-net-tokio && !matrix.coverage" - run: cargo test --verbose --color always - - name: Test on Rust ${{ matrix.toolchain }} with net-tokio and full code-linking for coverage generation - if: matrix.coverage - run: RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always - - name: Test on Rust ${{ matrix.toolchain }} - if: "! matrix.build-net-tokio" - run: cargo test --verbose --color always -p lightning - - name: Test Block Sync Clients on Rust ${{ matrix.toolchain }} with features - if: "matrix.build-net-tokio && !matrix.coverage" - run: | - cd lightning-block-sync - cargo test --verbose --color always --features rest-client - cargo test --verbose --color always --features rpc-client - cargo test --verbose --color always --features rpc-client,rest-client - cargo test --verbose --color always --features rpc-client,rest-client,tokio - cd .. - - name: Test Block Sync Clients on Rust ${{ matrix.toolchain }} with features and full code-linking for coverage generation - if: matrix.coverage - run: | - cd lightning-block-sync - RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --features rest-client - RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --features rpc-client - RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --features rpc-client,rest-client - RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --features rpc-client,rest-client,tokio - cd .. + run: cargo test --verbose --color always -- --nocapture test_backgr + # - name: Test on Rust ${{ matrix.toolchain }} with net-tokio and full code-linking for coverage generation + # if: matrix.coverage + # run: RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always + # - name: Test on Rust ${{ matrix.toolchain }} + # if: "! matrix.build-net-tokio" + # run: cargo test --verbose --color always -p lightning + # - name: Test Block Sync Clients on Rust ${{ matrix.toolchain }} with features + # if: "matrix.build-net-tokio && !matrix.coverage" + # run: | + # cd lightning-block-sync + # cargo test --verbose --color always --features rest-client + # cargo test --verbose --color always --features rpc-client + # cargo test --verbose --color always --features rpc-client,rest-client + # cargo test --verbose --color always --features rpc-client,rest-client,tokio + # cd .. + # - name: Test Block Sync Clients on Rust ${{ matrix.toolchain }} with features and full code-linking for coverage generation + # if: matrix.coverage + # run: | + # cd lightning-block-sync + # RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --features rest-client + # RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --features rpc-client + # RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --features rpc-client,rest-client + # RUSTFLAGS="-C link-dead-code" cargo test --verbose --color always --features rpc-client,rest-client,tokio + # cd .. - name: Install deps for kcov if: matrix.coverage run: | @@ -116,15 +116,15 @@ jobs: mkdir -p "target/cov/$(basename $file)"; ./kcov-build/usr/local/bin/kcov --exclude-pattern=/.cargo,/usr/lib --verify "target/cov/$(basename $file)" "$file"; done - - name: Upload coverage - if: matrix.coverage - uses: codecov/codecov-action@v1 - with: - # Could you use this to fake the coverage report for your PR? Sure. - # Will anyone be impressed by your amazing coverage? No - # Maybe if codecov wasn't broken we wouldn't need to do this... - token: f421b687-4dc2-4387-ac3d-dc3b2528af57 - fail_ci_if_error: true + # - name: Upload coverage + # if: matrix.coverage + # uses: codecov/codecov-action@v1 + # with: + # # Could you use this to fake the coverage report for your PR? Sure. + # # Will anyone be impressed by your amazing coverage? No + # # Maybe if codecov wasn't broken we wouldn't need to do this... + # token: f421b687-4dc2-4387-ac3d-dc3b2528af57 + # fail_ci_if_error: true benchmark: runs-on: ubuntu-latest diff --git a/background-processor/src/lib.rs b/background-processor/src/lib.rs index bdf6eb136..998a884ed 100644 --- a/background-processor/src/lib.rs +++ b/background-processor/src/lib.rs @@ -203,12 +203,16 @@ mod tests { // Initiate the background processors to watch each node. let data_dir = nodes[0].persister.get_data_dir(); - let callback = move |node: &ChannelManager, Arc, Arc, Arc, Arc>| FilesystemPersister::persist_manager(data_dir.clone(), node); + let callback = move |node: &ChannelManager, Arc, Arc, Arc, Arc>| { + println!("VMW: callback being invoked"); + FilesystemPersister::persist_manager(data_dir.clone(), node) + }; let bg_processor = BackgroundProcessor::start(callback, nodes[0].node.clone(), nodes[0].logger.clone()); // Go through the channel creation process until each node should have something persisted. let tx = open_channel!(nodes[0], nodes[1], 100000); + let mut num_calls = 0; macro_rules! check_persisted_data { ($node: expr, $filepath: expr, $expected_bytes: expr) => { match $node.write(&mut $expected_bytes) { @@ -216,13 +220,21 @@ mod tests { loop { match std::fs::read($filepath) { Ok(bytes) => { + if num_calls < 100 { + println!("VMW: bytes of node: {}, bytes on disk: {}", $expected_bytes.len(), bytes.len()); + num_calls += 1; + } if bytes == $expected_bytes { break } else { + // println!("VMW: continuing 1"); continue } }, - Err(_) => continue + Err(_) => { + println!("VMW: continuing 2"); + continue + } } } }, @@ -234,8 +246,10 @@ mod tests { // Check that the initial channel manager data is persisted as expected. let filepath = get_full_filepath("test_background_processor_persister_0".to_string(), "manager".to_string()); let mut expected_bytes = Vec::new(); + println!("VMW: about to check for persisted 1..."); check_persisted_data!(nodes[0].node, filepath.clone(), expected_bytes); loop { + println!("VMW: checking condvar 1"); if !nodes[0].node.get_persistence_condvar_value() { break } } @@ -244,8 +258,10 @@ mod tests { // Check that the force-close updates are persisted. let mut expected_bytes = Vec::new(); + println!("VMW: about to check for persisted 2..."); check_persisted_data!(nodes[0].node, filepath.clone(), expected_bytes); loop { + println!("VMW: checking condvar 2"); if !nodes[0].node.get_persistence_condvar_value() { break } } diff --git a/lightning-persister/src/lib.rs b/lightning-persister/src/lib.rs index 0257eb50e..dd7a0d04d 100644 --- a/lightning-persister/src/lib.rs +++ b/lightning-persister/src/lib.rs @@ -89,7 +89,19 @@ impl FilesystemPersister { F: FeeEstimator, L: Logger { - util::write_to_file(data_dir, "manager".to_string(), manager) + let mut manager_bytes = Vec::new(); + manager.write(&mut manager_bytes).unwrap(); + println!("VMW manager bytes being persisted: {}", manager_bytes.len()); + match util::write_to_file(data_dir, "manager".to_string(), manager) { + Ok(()) => { + println!("VMW: writing manager was Ok"); + Ok(()) + }, + Err(e) => { + println!("VMW: errored persisting manager: {:?}", e); + return Err(e) + } + } } #[cfg(test)] diff --git a/lightning-persister/src/util.rs b/lightning-persister/src/util.rs index f1a36e459..004bc5d67 100644 --- a/lightning-persister/src/util.rs +++ b/lightning-persister/src/util.rs @@ -16,7 +16,9 @@ pub(crate) fn get_full_filepath(filepath: String, filename: String) -> String { #[allow(bare_trait_objects)] pub(crate) fn write_to_file(path: String, filename: String, data: &D) -> std::io::Result<()> { + println!("VMW: creating dir"); fs::create_dir_all(path.clone())?; + println!("VMW: created dir"); // Do a crazy dance with lots of fsync()s to be overly cautious here... // We never want to end up in a state where we've lost the old data, or end up using the // old data on power loss after we've returned. @@ -28,11 +30,17 @@ pub(crate) fn write_to_file(path: String, filename: String, da { // Note that going by rust-lang/rust@d602a6b, on MacOS it is only safe to use // rust stdlib 1.36 or higher. + println!("VMW: about to create file"); let mut f = fs::File::create(&tmp_filename)?; + println!("VMW: created file"); data.write_to_file(&mut f)?; + println!("VMW: about to sync all"); f.sync_all()?; + println!("VMW: sync'd all"); } + println!("VMW: about to rename"); fs::rename(&tmp_filename, &filename_with_path)?; + println!("VMW: renamed"); // Fsync the parent directory on Unix. #[cfg(not(target_os = "windows"))] {