mirror of
https://github.com/Sunscreen-tech/Sunscreen.git
synced 2026-04-19 03:00:06 -04:00
addressed race conditions in run tests, now pass those tests with and without debugger feature
This commit is contained in:
39
Cargo.lock
generated
39
Cargo.lock
generated
@@ -1082,6 +1082,19 @@ dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dashmap"
|
||||
version = "5.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"hashbrown 0.12.3",
|
||||
"lock_api",
|
||||
"once_cell",
|
||||
"parking_lot_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "debugger"
|
||||
version = "0.1.0"
|
||||
@@ -2874,6 +2887,31 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serial_test"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d"
|
||||
dependencies = [
|
||||
"dashmap",
|
||||
"futures 0.3.28",
|
||||
"lazy_static",
|
||||
"log",
|
||||
"parking_lot",
|
||||
"serial_test_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serial_test_derive"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.26",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha1"
|
||||
version = "0.10.5"
|
||||
@@ -3179,6 +3217,7 @@ dependencies = [
|
||||
"semver",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serial_test",
|
||||
"static_assertions",
|
||||
"sunscreen_compiler_common",
|
||||
"sunscreen_fhe_program",
|
||||
|
||||
@@ -42,6 +42,7 @@ tokio = { version = "1.29.1", features = ["rt"] }
|
||||
|
||||
[dev-dependencies]
|
||||
serde_json = "1.0.74"
|
||||
serial_test = "2.0.0"
|
||||
|
||||
[features]
|
||||
debugger = ["sunscreen_compiler_common/debugger", "sunscreen_zkp_backend/debugger", "sunscreen_fhe_program/debugger"]
|
||||
@@ -8,7 +8,8 @@ use crate::debugger::sessions::{get_sessions, BfvSession};
|
||||
|
||||
use crossbeam::atomic::AtomicCell;
|
||||
use petgraph::{stable_graph::NodeIndex, Direction};
|
||||
|
||||
#[cfg(test)]
|
||||
use serial_test::serial;
|
||||
|
||||
use std::borrow::Cow;
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
@@ -185,16 +186,11 @@ pub unsafe fn run_program_unchecked<E: Evaluator + Sync + Send>(
|
||||
match debug_info {
|
||||
Some(ref v) => {
|
||||
let mut guard = get_sessions().lock().unwrap();
|
||||
|
||||
assert!(!guard.contains_key(&v.session_name));
|
||||
|
||||
let session = BfvSession::new(&ir.graph, v.secret_key, source_code);
|
||||
|
||||
guard.insert(v.session_name.clone(), session.into());
|
||||
println!(
|
||||
"run_program_unchecked matched Some, session keys {:?}",
|
||||
guard.keys()
|
||||
);
|
||||
}
|
||||
None => {}
|
||||
}
|
||||
@@ -687,6 +683,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(feature = "debugger", serial)]
|
||||
fn simple_add() {
|
||||
let mut ir = FheProgram::new(SchemeType::Bfv);
|
||||
|
||||
@@ -719,7 +716,6 @@ mod tests {
|
||||
&evaluator,
|
||||
&None,
|
||||
&None,
|
||||
// TODO: i'm pretty sure it should be fine to pass in a None here? but doublecheck
|
||||
None,
|
||||
)
|
||||
.unwrap()
|
||||
@@ -735,15 +731,10 @@ mod tests {
|
||||
&None,
|
||||
Some(DebugInfo {
|
||||
secret_key: &private_key,
|
||||
|
||||
// TODO: figure out where the program name is actually stored by the compiler
|
||||
// when you have a compiled program `CompiledFheProgramFn` or something, use `.name()`
|
||||
// CompiledFheProgram -> Metadata -> name is a change that Rick made
|
||||
// but where do we find where we can get that name in the first place?
|
||||
// see what structs implement the `FheProgramFn` trait, because they have a .name() method that returns the name
|
||||
session_name: "simple_add".to_owned(),
|
||||
}),
|
||||
)
|
||||
"empty",
|
||||
)
|
||||
.unwrap()
|
||||
};
|
||||
|
||||
@@ -758,6 +749,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(feature = "debugger", serial)]
|
||||
fn simple_mul() {
|
||||
let mut ir = FheProgram::new(SchemeType::Bfv);
|
||||
|
||||
@@ -808,6 +800,7 @@ mod tests {
|
||||
secret_key: &private_key,
|
||||
session_name: "simple_mul".to_owned(),
|
||||
}),
|
||||
"empty"
|
||||
)
|
||||
.unwrap()
|
||||
};
|
||||
@@ -823,6 +816,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(feature = "debugger", serial)]
|
||||
fn can_mul_and_relinearize() {
|
||||
let mut ir = FheProgram::new(SchemeType::Bfv);
|
||||
|
||||
@@ -874,6 +868,7 @@ mod tests {
|
||||
secret_key: &private_key,
|
||||
session_name: "can_mul_and_relinearize".to_owned(),
|
||||
}),
|
||||
"empty"
|
||||
)
|
||||
.unwrap()
|
||||
};
|
||||
@@ -889,6 +884,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(feature = "debugger", serial)]
|
||||
fn add_reduction() {
|
||||
let mut ir = FheProgram::new(SchemeType::Bfv);
|
||||
|
||||
@@ -955,6 +951,7 @@ mod tests {
|
||||
secret_key: &private_key,
|
||||
session_name: "add_reduction".to_owned(),
|
||||
}),
|
||||
"empty"
|
||||
)
|
||||
.unwrap()
|
||||
};
|
||||
@@ -970,6 +967,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(feature = "debugger", serial)]
|
||||
fn rotate_left() {
|
||||
let mut ir = FheProgram::new(SchemeType::Bfv);
|
||||
|
||||
@@ -1018,6 +1016,7 @@ mod tests {
|
||||
secret_key: &private_key,
|
||||
session_name: "rotate_left".to_owned(),
|
||||
}),
|
||||
"empty"
|
||||
)
|
||||
.unwrap()
|
||||
};
|
||||
@@ -1038,6 +1037,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(feature = "debugger", serial)]
|
||||
fn rotate_right() {
|
||||
let mut ir = FheProgram::new(SchemeType::Bfv);
|
||||
|
||||
@@ -1086,6 +1086,7 @@ mod tests {
|
||||
secret_key: &private_key,
|
||||
session_name: "rotate_right".to_owned(),
|
||||
}),
|
||||
"empty"
|
||||
)
|
||||
.unwrap()
|
||||
};
|
||||
@@ -1107,6 +1108,7 @@ mod tests {
|
||||
|
||||
#[cfg(feature = "debugger")]
|
||||
#[test]
|
||||
#[cfg_attr(feature = "debugger", serial)]
|
||||
fn create_session() {
|
||||
let mut ir = FheProgram::new(SchemeType::Bfv);
|
||||
|
||||
@@ -1140,13 +1142,16 @@ mod tests {
|
||||
&Some(&galois_keys),
|
||||
Some(DebugInfo {
|
||||
secret_key: &private_key,
|
||||
session_name: "rotate_left".to_owned(),
|
||||
session_name: "new_session".to_owned(),
|
||||
}),
|
||||
"empty"
|
||||
)
|
||||
.unwrap()
|
||||
};
|
||||
|
||||
let session = get_sessions().lock().unwrap();
|
||||
assert_eq!("rotate_left_0", session.keys().next().unwrap());
|
||||
|
||||
// Session names are only processed with an ID when you call `debug_fhe_program`
|
||||
assert!(session.contains_key("new_session"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user