prints and nocapture and faster CI
authorValentine Wallace <vwallace@protonmail.com>
Tue, 16 Feb 2021 20:44:20 +0000 (15:44 -0500)
committerValentine Wallace <vwallace@protonmail.com>
Wed, 17 Feb 2021 00:53:39 +0000 (19:53 -0500)
.github/workflows/build.yml
background-processor/src/lib.rs
lightning-persister/src/lib.rs
lightning-persister/src/util.rs

index e4fe497fa3b6d3d8307d6392f6c2847751bdd6d2..81408844874855a11828a4c84bad8b757aa5d937 100644 (file)
@@ -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
index bdf6eb136517f71354e51fb2e921773528f2fdc1..998a884edd6240d86894ce7e405204bdc63dfec1 100644 (file)
@@ -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<InMemoryChannelKeys, Arc<ChainMonitor>, Arc<test_utils::TestBroadcaster>, Arc<KeysManager>, Arc<test_utils::TestFeeEstimator>, Arc<test_utils::TestLogger>>| FilesystemPersister::persist_manager(data_dir.clone(), node);
+               let callback = move |node: &ChannelManager<InMemoryChannelKeys, Arc<ChainMonitor>, Arc<test_utils::TestBroadcaster>, Arc<KeysManager>, Arc<test_utils::TestFeeEstimator>, Arc<test_utils::TestLogger>>| {
+                       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 }
                }
 
index 0257eb50ef9d1172f9be86e8d5428a16b6fe26ee..dd7a0d04d5b5e63c0df4c143d95cf66310bcfd8d 100644 (file)
@@ -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)]
index f1a36e4597d000a00c77871f2b705e0616e6bdb7..004bc5d67def63864f5365b08b42b99b4e76e421 100644 (file)
@@ -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<D: DiskWriteable>(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<D: DiskWriteable>(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"))]
        {