Skip to content

Commit 413a917

Browse files
committed
fix postblock_proposal test in CI
1 parent b8746c0 commit 413a917

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

stackslib/src/burnchains/bitcoin/blocks.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,9 @@ impl BitcoinBlockParser {
285285
test_debug!("Data output does not use a standard OP_RETURN");
286286
return None;
287287
}
288+
if data.len() <= MAGIC_BYTES_LENGTH {
289+
return None;
290+
}
288291
if !data.starts_with(self.magic_bytes.as_bytes()) {
289292
test_debug!("Data output does not start with magic bytes");
290293
return None;

stackslib/src/net/api/tests/mod.rs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
use std::net::SocketAddr;
1818
use std::sync::{Arc, Mutex};
19+
use std::thread;
20+
use std::time::{Duration, Instant};
1921

2022
use clarity::vm::costs::ExecutionCost;
2123
use clarity::vm::types::{QualifiedContractIdentifier, StacksAddressExtensions};
@@ -1060,16 +1062,20 @@ impl<'a> TestRPC<'a> {
10601062
}
10611063

10621064
pub fn run(self, requests: Vec<StacksHttpRequest>) -> Vec<StacksHttpResponse> {
1063-
self.run_with_observer(requests, None)
1065+
self.run_with_observer(requests, None, |_, _| true)
10641066
}
10651067

10661068
/// Run zero or more HTTP requests on this setup RPC test harness.
10671069
/// Return the list of responses.
1068-
pub fn run_with_observer(
1070+
pub fn run_with_observer<F>(
10691071
self,
10701072
requests: Vec<StacksHttpRequest>,
10711073
event_observer: Option<&dyn MemPoolEventDispatcher>,
1072-
) -> Vec<StacksHttpResponse> {
1074+
wait_for: F,
1075+
) -> Vec<StacksHttpResponse>
1076+
where
1077+
F: Fn(&mut TestPeer, &mut TestPeer) -> bool,
1078+
{
10731079
let mut peer_1 = self.peer_1;
10741080
let mut peer_2 = self.peer_2;
10751081
let peer_1_indexer = self.peer_1_indexer;
@@ -1079,7 +1085,14 @@ impl<'a> TestRPC<'a> {
10791085
let unconfirmed_state = self.unconfirmed_state;
10801086

10811087
let mut responses = vec![];
1082-
for request in requests.into_iter() {
1088+
for (ix, request) in requests.into_iter().enumerate() {
1089+
let start = Instant::now();
1090+
while !wait_for(&mut peer_1, &mut peer_2) {
1091+
if start.elapsed() > Duration::from_secs(120) {
1092+
panic!("Timed out waiting for wait_for check to pass");
1093+
}
1094+
thread::sleep(Duration::from_secs(1));
1095+
}
10831096
peer_1.refresh_burnchain_view();
10841097
peer_2.refresh_burnchain_view();
10851098

stackslib/src/net/api/tests/postblock_proposal.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ use crate::net::api::*;
4646
use crate::net::connection::ConnectionOptions;
4747
use crate::net::httpcore::{RPCRequestHandler, StacksHttp, StacksHttpRequest};
4848
use crate::net::relay::Relayer;
49-
use crate::net::test::TestEventObserver;
49+
use crate::net::test::{TestEventObserver, TestPeer};
5050
use crate::net::ProtocolFamily;
5151

5252
#[warn(unused)]
@@ -395,7 +395,11 @@ fn test_try_make_response() {
395395
let proposal_observer = Arc::clone(&observer.proposal_observer);
396396

397397
info!("Run requests with observer");
398-
let responses = rpc_test.run_with_observer(requests, Some(&observer));
398+
let wait_for = |peer_1: &mut TestPeer, peer_2: &mut TestPeer| {
399+
!peer_1.network.is_proposal_thread_running() && !peer_2.network.is_proposal_thread_running()
400+
};
401+
402+
let responses = rpc_test.run_with_observer(requests, Some(&observer), wait_for);
399403

400404
for response in responses.iter().take(3) {
401405
assert_eq!(response.preamble().status_code, 202);
@@ -567,8 +571,12 @@ fn replay_validation_test(
567571
let observer = ProposalTestObserver::new();
568572
let proposal_observer = Arc::clone(&observer.proposal_observer);
569573

574+
let wait_for = |peer_1: &mut TestPeer, peer_2: &mut TestPeer| {
575+
!peer_1.network.is_proposal_thread_running() && !peer_2.network.is_proposal_thread_running()
576+
};
577+
570578
info!("Run request with observer for replay mismatch test");
571-
let responses = rpc_test.run_with_observer(requests, Some(&observer));
579+
let responses = rpc_test.run_with_observer(requests, Some(&observer), wait_for);
572580

573581
// Expect 202 Accepted initially
574582
assert_eq!(responses[0].preamble().status_code, 202);

0 commit comments

Comments
 (0)