Drop OnceCell in lightning-transaction-sync tests - #2132

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness
Mar 28, 2023
Merged

Drop OnceCell in lightning-transaction-sync tests#2132
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Unfortunately, OnceCell never calls drop upon termination, which makes the spawned bitcoind/electrsd instances linger around after our tests have finished. This had previously led to spurious failures such as:

---- test_esplora_syncs stdout ----
thread 'test_esplora_syncs' panicked at 'called `Result::unwrap()` on an `Err` value: JsonRpc(Rpc(RpcError { code: -4, message: "Wallet file verification failed. SQLiteDatabase: Unable to obtain an exclusive lock on the database, is it being used by another instance of Bitcoin Core?\n", data: None }))', tests/integration_tests.rs:35:65
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

To fix this, we simply move the instances out of OnceCell and let every test that needs them spawn their own instances. This might introduce a small overhead over the shared-state version, which however is likely not that bad as long as the number of tests is not growing immensely. It additional lets us drop the OnceCell dev dependency.

Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

@tnull

tnull commented Mar 28, 2023

Copy link
Copy Markdown
ContributorAuthor

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

Well, currently the the test cases are partitioned based on feature flags ( async/blocking) anyways as we can't import both features at the same time. We therefore only have two test cases per scenario of which only one requires pre-mining blocks, which is the time-consuming part. Just did some local benchmarks, and it barely makes a difference currently:

BASE sh test.sh 1.34s user 0.68s system 9% cpu 21.652 total
HEAD sh test.sh 2.34s user 1.34s system 15% cpu 23.717 total

There will be some more test cases introduced with the Electrum version, but it still probably would be an insignificant difference as it will also rely on feature flags, meaning that it will likely be tested via separate cargo test calls anyways.
So I'd just not bother introducing additional complexity currently and revisit if we were to add more test cases that would actually benefit from sharing state.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Patch coverage has no change and project coverage change: +0.24 🎉

Comparison is base (dbf3d57) 91.42% compared to head (8df5719) 91.66%.

📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more

Additional details and impacted files
@@ Coverage Diff @@## main #2132 +/- ##
==========================================
+ Coverage 91.42% 91.66% +0.24% 
==========================================
Files 101 101 Lines 49552 51789 +2237 Branches 49552 51789 +2237 ==========================================
+ Hits 45304 47474 +2170 - Misses 4248 4315 +67 

see 8 files with indirect coverage changes

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report in Codecov by Sentry.
📢 Do you have feedback about the report comment? Let us know in this issue.

@tnull

Copy link
Copy Markdown
ContributorAuthor

CI failures are unrelated, see #2133.

@jkczyzjkczyz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Feel free to squash the fixup.

tnull added 2 commits March 28, 2023 17:13
`OnceCell` doesn't call `drop`, which makes the spawned
`bitcoind`/`electrsd` instances linger around after our tests have
finished. To fix this, we move them out of `OnceCell` and let every test
that needs them spawn their own instances. This additional let us drop
the `OnceCell` dev dependency.
@tnull
tnullforce-pushed the 2023-03-tx-sync-even-more-robustness branch from 8df5719 to 7b85ebaCompareMarch 28, 2023 15:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Squashed without further changes.

@TheBlueMatt
TheBlueMatt merged commit 369eea4 into lightningdevkit:mainMar 28, 2023
@tnulltnull mentioned this pull request Jul 24, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@tnull@TheBlueMatt@codecov-commenter@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Drop OnceCell in lightning-transaction-sync tests - #2132

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness
Mar 28, 2023
Merged

Drop OnceCell in lightning-transaction-sync tests#2132
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Unfortunately, OnceCell never calls drop upon termination, which makes the spawned bitcoind/electrsd instances linger around after our tests have finished. This had previously led to spurious failures such as:

---- test_esplora_syncs stdout ----
thread 'test_esplora_syncs' panicked at 'called `Result::unwrap()` on an `Err` value: JsonRpc(Rpc(RpcError { code: -4, message: "Wallet file verification failed. SQLiteDatabase: Unable to obtain an exclusive lock on the database, is it being used by another instance of Bitcoin Core?\n", data: None }))', tests/integration_tests.rs:35:65
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

To fix this, we simply move the instances out of OnceCell and let every test that needs them spawn their own instances. This might introduce a small overhead over the shared-state version, which however is likely not that bad as long as the number of tests is not growing immensely. It additional lets us drop the OnceCell dev dependency.

Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

@tnull

tnull commented Mar 28, 2023

Copy link
Copy Markdown
ContributorAuthor

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

Well, currently the the test cases are partitioned based on feature flags ( async/blocking) anyways as we can't import both features at the same time. We therefore only have two test cases per scenario of which only one requires pre-mining blocks, which is the time-consuming part. Just did some local benchmarks, and it barely makes a difference currently:

BASE sh test.sh 1.34s user 0.68s system 9% cpu 21.652 total
HEAD sh test.sh 2.34s user 1.34s system 15% cpu 23.717 total

There will be some more test cases introduced with the Electrum version, but it still probably would be an insignificant difference as it will also rely on feature flags, meaning that it will likely be tested via separate cargo test calls anyways.
So I'd just not bother introducing additional complexity currently and revisit if we were to add more test cases that would actually benefit from sharing state.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Patch coverage has no change and project coverage change: +0.24 🎉

Comparison is base (dbf3d57) 91.42% compared to head (8df5719) 91.66%.

📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more

Additional details and impacted files
@@ Coverage Diff @@## main #2132 +/- ##
==========================================
+ Coverage 91.42% 91.66% +0.24% 
==========================================
Files 101 101 Lines 49552 51789 +2237 Branches 49552 51789 +2237 ==========================================
+ Hits 45304 47474 +2170 - Misses 4248 4315 +67 

see 8 files with indirect coverage changes

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report in Codecov by Sentry.
📢 Do you have feedback about the report comment? Let us know in this issue.

@tnull

Copy link
Copy Markdown
ContributorAuthor

CI failures are unrelated, see #2133.

@jkczyzjkczyz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Feel free to squash the fixup.

tnull added 2 commits March 28, 2023 17:13
`OnceCell` doesn't call `drop`, which makes the spawned
`bitcoind`/`electrsd` instances linger around after our tests have
finished. To fix this, we move them out of `OnceCell` and let every test
that needs them spawn their own instances. This additional let us drop
the `OnceCell` dev dependency.
@tnull
tnullforce-pushed the 2023-03-tx-sync-even-more-robustness branch from 8df5719 to 7b85ebaCompareMarch 28, 2023 15:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Squashed without further changes.

@TheBlueMatt
TheBlueMatt merged commit 369eea4 into lightningdevkit:mainMar 28, 2023
@tnulltnull mentioned this pull request Jul 24, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@tnull@TheBlueMatt@codecov-commenter@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Drop OnceCell in lightning-transaction-sync tests - #2132

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness
Mar 28, 2023
Merged

Drop OnceCell in lightning-transaction-sync tests#2132
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Unfortunately, OnceCell never calls drop upon termination, which makes the spawned bitcoind/electrsd instances linger around after our tests have finished. This had previously led to spurious failures such as:

---- test_esplora_syncs stdout ----
thread 'test_esplora_syncs' panicked at 'called `Result::unwrap()` on an `Err` value: JsonRpc(Rpc(RpcError { code: -4, message: "Wallet file verification failed. SQLiteDatabase: Unable to obtain an exclusive lock on the database, is it being used by another instance of Bitcoin Core?\n", data: None }))', tests/integration_tests.rs:35:65
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

To fix this, we simply move the instances out of OnceCell and let every test that needs them spawn their own instances. This might introduce a small overhead over the shared-state version, which however is likely not that bad as long as the number of tests is not growing immensely. It additional lets us drop the OnceCell dev dependency.

Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

@tnull

tnull commented Mar 28, 2023

Copy link
Copy Markdown
ContributorAuthor

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

Well, currently the the test cases are partitioned based on feature flags ( async/blocking) anyways as we can't import both features at the same time. We therefore only have two test cases per scenario of which only one requires pre-mining blocks, which is the time-consuming part. Just did some local benchmarks, and it barely makes a difference currently:

BASE sh test.sh 1.34s user 0.68s system 9% cpu 21.652 total
HEAD sh test.sh 2.34s user 1.34s system 15% cpu 23.717 total

There will be some more test cases introduced with the Electrum version, but it still probably would be an insignificant difference as it will also rely on feature flags, meaning that it will likely be tested via separate cargo test calls anyways.
So I'd just not bother introducing additional complexity currently and revisit if we were to add more test cases that would actually benefit from sharing state.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Patch coverage has no change and project coverage change: +0.24 🎉

Comparison is base (dbf3d57) 91.42% compared to head (8df5719) 91.66%.

📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more

Additional details and impacted files
@@ Coverage Diff @@## main #2132 +/- ##
==========================================
+ Coverage 91.42% 91.66% +0.24% 
==========================================
Files 101 101 Lines 49552 51789 +2237 Branches 49552 51789 +2237 ==========================================
+ Hits 45304 47474 +2170 - Misses 4248 4315 +67 

see 8 files with indirect coverage changes

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report in Codecov by Sentry.
📢 Do you have feedback about the report comment? Let us know in this issue.

@tnull

Copy link
Copy Markdown
ContributorAuthor

CI failures are unrelated, see #2133.

@jkczyzjkczyz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Feel free to squash the fixup.

tnull added 2 commits March 28, 2023 17:13
`OnceCell` doesn't call `drop`, which makes the spawned
`bitcoind`/`electrsd` instances linger around after our tests have
finished. To fix this, we move them out of `OnceCell` and let every test
that needs them spawn their own instances. This additional let us drop
the `OnceCell` dev dependency.
@tnull
tnullforce-pushed the 2023-03-tx-sync-even-more-robustness branch from 8df5719 to 7b85ebaCompareMarch 28, 2023 15:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Squashed without further changes.

@TheBlueMatt
TheBlueMatt merged commit 369eea4 into lightningdevkit:mainMar 28, 2023
@tnulltnull mentioned this pull request Jul 24, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@tnull@TheBlueMatt@codecov-commenter@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Drop OnceCell in lightning-transaction-sync tests - #2132

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness
Mar 28, 2023
Merged

Drop OnceCell in lightning-transaction-sync tests#2132
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Unfortunately, OnceCell never calls drop upon termination, which makes the spawned bitcoind/electrsd instances linger around after our tests have finished. This had previously led to spurious failures such as:

---- test_esplora_syncs stdout ----
thread 'test_esplora_syncs' panicked at 'called `Result::unwrap()` on an `Err` value: JsonRpc(Rpc(RpcError { code: -4, message: "Wallet file verification failed. SQLiteDatabase: Unable to obtain an exclusive lock on the database, is it being used by another instance of Bitcoin Core?\n", data: None }))', tests/integration_tests.rs:35:65
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

To fix this, we simply move the instances out of OnceCell and let every test that needs them spawn their own instances. This might introduce a small overhead over the shared-state version, which however is likely not that bad as long as the number of tests is not growing immensely. It additional lets us drop the OnceCell dev dependency.

Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

@tnull

tnull commented Mar 28, 2023

Copy link
Copy Markdown
ContributorAuthor

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

Well, currently the the test cases are partitioned based on feature flags ( async/blocking) anyways as we can't import both features at the same time. We therefore only have two test cases per scenario of which only one requires pre-mining blocks, which is the time-consuming part. Just did some local benchmarks, and it barely makes a difference currently:

BASE sh test.sh 1.34s user 0.68s system 9% cpu 21.652 total
HEAD sh test.sh 2.34s user 1.34s system 15% cpu 23.717 total

There will be some more test cases introduced with the Electrum version, but it still probably would be an insignificant difference as it will also rely on feature flags, meaning that it will likely be tested via separate cargo test calls anyways.
So I'd just not bother introducing additional complexity currently and revisit if we were to add more test cases that would actually benefit from sharing state.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Patch coverage has no change and project coverage change: +0.24 🎉

Comparison is base (dbf3d57) 91.42% compared to head (8df5719) 91.66%.

📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more

Additional details and impacted files
@@ Coverage Diff @@## main #2132 +/- ##
==========================================
+ Coverage 91.42% 91.66% +0.24% 
==========================================
Files 101 101 Lines 49552 51789 +2237 Branches 49552 51789 +2237 ==========================================
+ Hits 45304 47474 +2170 - Misses 4248 4315 +67 

see 8 files with indirect coverage changes

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report in Codecov by Sentry.
📢 Do you have feedback about the report comment? Let us know in this issue.

@tnull

Copy link
Copy Markdown
ContributorAuthor

CI failures are unrelated, see #2133.

@jkczyzjkczyz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Feel free to squash the fixup.

tnull added 2 commits March 28, 2023 17:13
`OnceCell` doesn't call `drop`, which makes the spawned
`bitcoind`/`electrsd` instances linger around after our tests have
finished. To fix this, we move them out of `OnceCell` and let every test
that needs them spawn their own instances. This additional let us drop
the `OnceCell` dev dependency.
@tnull
tnullforce-pushed the 2023-03-tx-sync-even-more-robustness branch from 8df5719 to 7b85ebaCompareMarch 28, 2023 15:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Squashed without further changes.

@TheBlueMatt
TheBlueMatt merged commit 369eea4 into lightningdevkit:mainMar 28, 2023
@tnulltnull mentioned this pull request Jul 24, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@tnull@TheBlueMatt@codecov-commenter@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Drop OnceCell in lightning-transaction-sync tests - #2132

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness
Mar 28, 2023
Merged

Drop OnceCell in lightning-transaction-sync tests#2132
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Unfortunately, OnceCell never calls drop upon termination, which makes the spawned bitcoind/electrsd instances linger around after our tests have finished. This had previously led to spurious failures such as:

---- test_esplora_syncs stdout ----
thread 'test_esplora_syncs' panicked at 'called `Result::unwrap()` on an `Err` value: JsonRpc(Rpc(RpcError { code: -4, message: "Wallet file verification failed. SQLiteDatabase: Unable to obtain an exclusive lock on the database, is it being used by another instance of Bitcoin Core?\n", data: None }))', tests/integration_tests.rs:35:65
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

To fix this, we simply move the instances out of OnceCell and let every test that needs them spawn their own instances. This might introduce a small overhead over the shared-state version, which however is likely not that bad as long as the number of tests is not growing immensely. It additional lets us drop the OnceCell dev dependency.

Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

@tnull

tnull commented Mar 28, 2023

Copy link
Copy Markdown
ContributorAuthor

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

Well, currently the the test cases are partitioned based on feature flags ( async/blocking) anyways as we can't import both features at the same time. We therefore only have two test cases per scenario of which only one requires pre-mining blocks, which is the time-consuming part. Just did some local benchmarks, and it barely makes a difference currently:

BASE sh test.sh 1.34s user 0.68s system 9% cpu 21.652 total
HEAD sh test.sh 2.34s user 1.34s system 15% cpu 23.717 total

There will be some more test cases introduced with the Electrum version, but it still probably would be an insignificant difference as it will also rely on feature flags, meaning that it will likely be tested via separate cargo test calls anyways.
So I'd just not bother introducing additional complexity currently and revisit if we were to add more test cases that would actually benefit from sharing state.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Patch coverage has no change and project coverage change: +0.24 🎉

Comparison is base (dbf3d57) 91.42% compared to head (8df5719) 91.66%.

📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more

Additional details and impacted files
@@ Coverage Diff @@## main #2132 +/- ##
==========================================
+ Coverage 91.42% 91.66% +0.24% 
==========================================
Files 101 101 Lines 49552 51789 +2237 Branches 49552 51789 +2237 ==========================================
+ Hits 45304 47474 +2170 - Misses 4248 4315 +67 

see 8 files with indirect coverage changes

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report in Codecov by Sentry.
📢 Do you have feedback about the report comment? Let us know in this issue.

@tnull

Copy link
Copy Markdown
ContributorAuthor

CI failures are unrelated, see #2133.

@jkczyzjkczyz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Feel free to squash the fixup.

tnull added 2 commits March 28, 2023 17:13
`OnceCell` doesn't call `drop`, which makes the spawned
`bitcoind`/`electrsd` instances linger around after our tests have
finished. To fix this, we move them out of `OnceCell` and let every test
that needs them spawn their own instances. This additional let us drop
the `OnceCell` dev dependency.
@tnull
tnullforce-pushed the 2023-03-tx-sync-even-more-robustness branch from 8df5719 to 7b85ebaCompareMarch 28, 2023 15:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Squashed without further changes.

@TheBlueMatt
TheBlueMatt merged commit 369eea4 into lightningdevkit:mainMar 28, 2023
@tnulltnull mentioned this pull request Jul 24, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@tnull@TheBlueMatt@codecov-commenter@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Drop OnceCell in lightning-transaction-sync tests - #2132

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness
Mar 28, 2023
Merged

Drop OnceCell in lightning-transaction-sync tests#2132
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Unfortunately, OnceCell never calls drop upon termination, which makes the spawned bitcoind/electrsd instances linger around after our tests have finished. This had previously led to spurious failures such as:

---- test_esplora_syncs stdout ----
thread 'test_esplora_syncs' panicked at 'called `Result::unwrap()` on an `Err` value: JsonRpc(Rpc(RpcError { code: -4, message: "Wallet file verification failed. SQLiteDatabase: Unable to obtain an exclusive lock on the database, is it being used by another instance of Bitcoin Core?\n", data: None }))', tests/integration_tests.rs:35:65
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

To fix this, we simply move the instances out of OnceCell and let every test that needs them spawn their own instances. This might introduce a small overhead over the shared-state version, which however is likely not that bad as long as the number of tests is not growing immensely. It additional lets us drop the OnceCell dev dependency.

Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

@tnull

tnull commented Mar 28, 2023

Copy link
Copy Markdown
ContributorAuthor

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

Well, currently the the test cases are partitioned based on feature flags ( async/blocking) anyways as we can't import both features at the same time. We therefore only have two test cases per scenario of which only one requires pre-mining blocks, which is the time-consuming part. Just did some local benchmarks, and it barely makes a difference currently:

BASE sh test.sh 1.34s user 0.68s system 9% cpu 21.652 total
HEAD sh test.sh 2.34s user 1.34s system 15% cpu 23.717 total

There will be some more test cases introduced with the Electrum version, but it still probably would be an insignificant difference as it will also rely on feature flags, meaning that it will likely be tested via separate cargo test calls anyways.
So I'd just not bother introducing additional complexity currently and revisit if we were to add more test cases that would actually benefit from sharing state.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Patch coverage has no change and project coverage change: +0.24 🎉

Comparison is base (dbf3d57) 91.42% compared to head (8df5719) 91.66%.

📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more

Additional details and impacted files
@@ Coverage Diff @@## main #2132 +/- ##
==========================================
+ Coverage 91.42% 91.66% +0.24% 
==========================================
Files 101 101 Lines 49552 51789 +2237 Branches 49552 51789 +2237 ==========================================
+ Hits 45304 47474 +2170 - Misses 4248 4315 +67 

see 8 files with indirect coverage changes

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report in Codecov by Sentry.
📢 Do you have feedback about the report comment? Let us know in this issue.

@tnull

Copy link
Copy Markdown
ContributorAuthor

CI failures are unrelated, see #2133.

@jkczyzjkczyz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Feel free to squash the fixup.

tnull added 2 commits March 28, 2023 17:13
`OnceCell` doesn't call `drop`, which makes the spawned
`bitcoind`/`electrsd` instances linger around after our tests have
finished. To fix this, we move them out of `OnceCell` and let every test
that needs them spawn their own instances. This additional let us drop
the `OnceCell` dev dependency.
@tnull
tnullforce-pushed the 2023-03-tx-sync-even-more-robustness branch from 8df5719 to 7b85ebaCompareMarch 28, 2023 15:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Squashed without further changes.

@TheBlueMatt
TheBlueMatt merged commit 369eea4 into lightningdevkit:mainMar 28, 2023
@tnulltnull mentioned this pull request Jul 24, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@tnull@TheBlueMatt@codecov-commenter@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Drop OnceCell in lightning-transaction-sync tests - #2132

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness
Mar 28, 2023
Merged

Drop OnceCell in lightning-transaction-sync tests#2132
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Unfortunately, OnceCell never calls drop upon termination, which makes the spawned bitcoind/electrsd instances linger around after our tests have finished. This had previously led to spurious failures such as:

---- test_esplora_syncs stdout ----
thread 'test_esplora_syncs' panicked at 'called `Result::unwrap()` on an `Err` value: JsonRpc(Rpc(RpcError { code: -4, message: "Wallet file verification failed. SQLiteDatabase: Unable to obtain an exclusive lock on the database, is it being used by another instance of Bitcoin Core?\n", data: None }))', tests/integration_tests.rs:35:65
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

To fix this, we simply move the instances out of OnceCell and let every test that needs them spawn their own instances. This might introduce a small overhead over the shared-state version, which however is likely not that bad as long as the number of tests is not growing immensely. It additional lets us drop the OnceCell dev dependency.

Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

@tnull

tnull commented Mar 28, 2023

Copy link
Copy Markdown
ContributorAuthor

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

Well, currently the the test cases are partitioned based on feature flags ( async/blocking) anyways as we can't import both features at the same time. We therefore only have two test cases per scenario of which only one requires pre-mining blocks, which is the time-consuming part. Just did some local benchmarks, and it barely makes a difference currently:

BASE sh test.sh 1.34s user 0.68s system 9% cpu 21.652 total
HEAD sh test.sh 2.34s user 1.34s system 15% cpu 23.717 total

There will be some more test cases introduced with the Electrum version, but it still probably would be an insignificant difference as it will also rely on feature flags, meaning that it will likely be tested via separate cargo test calls anyways.
So I'd just not bother introducing additional complexity currently and revisit if we were to add more test cases that would actually benefit from sharing state.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Patch coverage has no change and project coverage change: +0.24 🎉

Comparison is base (dbf3d57) 91.42% compared to head (8df5719) 91.66%.

📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more

Additional details and impacted files
@@ Coverage Diff @@## main #2132 +/- ##
==========================================
+ Coverage 91.42% 91.66% +0.24% 
==========================================
Files 101 101 Lines 49552 51789 +2237 Branches 49552 51789 +2237 ==========================================
+ Hits 45304 47474 +2170 - Misses 4248 4315 +67 

see 8 files with indirect coverage changes

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report in Codecov by Sentry.
📢 Do you have feedback about the report comment? Let us know in this issue.

@tnull

Copy link
Copy Markdown
ContributorAuthor

CI failures are unrelated, see #2133.

@jkczyzjkczyz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Feel free to squash the fixup.

tnull added 2 commits March 28, 2023 17:13
`OnceCell` doesn't call `drop`, which makes the spawned
`bitcoind`/`electrsd` instances linger around after our tests have
finished. To fix this, we move them out of `OnceCell` and let every test
that needs them spawn their own instances. This additional let us drop
the `OnceCell` dev dependency.
@tnull
tnullforce-pushed the 2023-03-tx-sync-even-more-robustness branch from 8df5719 to 7b85ebaCompareMarch 28, 2023 15:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Squashed without further changes.

@TheBlueMatt
TheBlueMatt merged commit 369eea4 into lightningdevkit:mainMar 28, 2023
@tnulltnull mentioned this pull request Jul 24, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@tnull@TheBlueMatt@codecov-commenter@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Drop OnceCell in lightning-transaction-sync tests - #2132

Merged
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness
Mar 28, 2023
Merged

Drop OnceCell in lightning-transaction-sync tests#2132
TheBlueMatt merged 2 commits into
lightningdevkit:mainfrom
tnull:2023-03-tx-sync-even-more-robustness

Conversation

@tnull

Copy link
Copy Markdown
Contributor

Unfortunately, OnceCell never calls drop upon termination, which makes the spawned bitcoind/electrsd instances linger around after our tests have finished. This had previously led to spurious failures such as:

---- test_esplora_syncs stdout ----
thread 'test_esplora_syncs' panicked at 'called `Result::unwrap()` on an `Err` value: JsonRpc(Rpc(RpcError { code: -4, message: "Wallet file verification failed. SQLiteDatabase: Unable to obtain an exclusive lock on the database, is it being used by another instance of Bitcoin Core?\n", data: None }))', tests/integration_tests.rs:35:65
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

To fix this, we simply move the instances out of OnceCell and let every test that needs them spawn their own instances. This might introduce a small overhead over the shared-state version, which however is likely not that bad as long as the number of tests is not growing immensely. It additional lets us drop the OnceCell dev dependency.

Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
Comment threadlightning-transaction-sync/tests/integration_tests.rs Outdated
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

@tnull

tnull commented Mar 28, 2023

Copy link
Copy Markdown
ContributorAuthor

This looks good too, but I thought previously you'd decided the runtime of the tests was too high this way? We could still pretty trivially make this globals by just having each test set some flag on completion (or panic) + clean everything off when a defined number of tests complete?

Well, currently the the test cases are partitioned based on feature flags ( async/blocking) anyways as we can't import both features at the same time. We therefore only have two test cases per scenario of which only one requires pre-mining blocks, which is the time-consuming part. Just did some local benchmarks, and it barely makes a difference currently:

BASE sh test.sh 1.34s user 0.68s system 9% cpu 21.652 total
HEAD sh test.sh 2.34s user 1.34s system 15% cpu 23.717 total

There will be some more test cases introduced with the Electrum version, but it still probably would be an insignificant difference as it will also rely on feature flags, meaning that it will likely be tested via separate cargo test calls anyways.
So I'd just not bother introducing additional complexity currently and revisit if we were to add more test cases that would actually benefit from sharing state.

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Patch coverage has no change and project coverage change: +0.24 🎉

Comparison is base (dbf3d57) 91.42% compared to head (8df5719) 91.66%.

📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more

Additional details and impacted files
@@ Coverage Diff @@## main #2132 +/- ##
==========================================
+ Coverage 91.42% 91.66% +0.24% 
==========================================
Files 101 101 Lines 49552 51789 +2237 Branches 49552 51789 +2237 ==========================================
+ Hits 45304 47474 +2170 - Misses 4248 4315 +67 

see 8 files with indirect coverage changes

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report in Codecov by Sentry.
📢 Do you have feedback about the report comment? Let us know in this issue.

@tnull

Copy link
Copy Markdown
ContributorAuthor

CI failures are unrelated, see #2133.

@jkczyzjkczyz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Feel free to squash the fixup.

tnull added 2 commits March 28, 2023 17:13
`OnceCell` doesn't call `drop`, which makes the spawned
`bitcoind`/`electrsd` instances linger around after our tests have
finished. To fix this, we move them out of `OnceCell` and let every test
that needs them spawn their own instances. This additional let us drop
the `OnceCell` dev dependency.
@tnull
tnullforce-pushed the 2023-03-tx-sync-even-more-robustness branch from 8df5719 to 7b85ebaCompareMarch 28, 2023 15:14
@tnull

Copy link
Copy Markdown
ContributorAuthor

Squashed without further changes.

@TheBlueMatt
TheBlueMatt merged commit 369eea4 into lightningdevkit:mainMar 28, 2023
@tnulltnull mentioned this pull request Jul 24, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@tnull@TheBlueMatt@codecov-commenter@jkczyz