more test work
This commit is contained in:
@@ -1,35 +1,25 @@
|
||||
use super::native::*;
|
||||
use super::*;
|
||||
|
||||
//use jni::errors::Result as JniResult;
|
||||
use jni::{objects::GlobalRef, objects::JObject, JNIEnv, JavaVM};
|
||||
use lazy_static::*;
|
||||
use std::backtrace::Backtrace;
|
||||
use std::panic;
|
||||
|
||||
pub struct AndroidGlobals {
|
||||
pub vm: JavaVM,
|
||||
pub ctx: GlobalRef,
|
||||
use jni::{objects::JClass, objects::JObject, JNIEnv};
|
||||
|
||||
#[no_mangle]
|
||||
#[allow(non_snake_case)]
|
||||
pub extern "system" fn Java_com_veilid_veilid_1tools_1android_1tests_MainActivity_run_1tests(
|
||||
_env: JNIEnv,
|
||||
_class: JClass,
|
||||
_ctx: JObject,
|
||||
) {
|
||||
crate::tests::android::veilid_tools_setup_android_tests();
|
||||
run_all_tests();
|
||||
}
|
||||
|
||||
impl Drop for AndroidGlobals {
|
||||
fn drop(&mut self) {
|
||||
// Ensure we're attached before dropping GlobalRef
|
||||
self.vm.attach_current_thread_as_daemon().unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
lazy_static! {
|
||||
pub static ref ANDROID_GLOBALS: Arc<Mutex<Option<AndroidGlobals>>> = Arc::new(Mutex::new(None));
|
||||
}
|
||||
|
||||
pub fn veilid_tools_setup_android_no_log<'a>(env: JNIEnv<'a>, ctx: JObject<'a>) {
|
||||
*ANDROID_GLOBALS.lock() = Some(AndroidGlobals {
|
||||
vm: env.get_java_vm().unwrap(),
|
||||
ctx: env.new_global_ref(ctx).unwrap(),
|
||||
});
|
||||
}
|
||||
|
||||
pub fn veilid_tools_setup<'a>(env: JNIEnv<'a>, ctx: JObject<'a>, log_tag: &'a str) {
|
||||
pub fn veilid_tools_setup_android_tests() {
|
||||
cfg_if! {
|
||||
if #[cfg(feature = "tracing")] {
|
||||
use tracing::*;
|
||||
@@ -44,7 +34,7 @@ pub fn veilid_tools_setup<'a>(env: JNIEnv<'a>, ctx: JObject<'a>, log_tag: &'a st
|
||||
// Set up subscriber and layers
|
||||
let subscriber = Registry::default();
|
||||
let mut layers = Vec::new();
|
||||
let layer = tracing_android::layer(log_tag)
|
||||
let layer = tracing_android::layer("veilid-tools")
|
||||
.expect("failed to set up android logging")
|
||||
.with_filter(filter::LevelFilter::TRACE)
|
||||
.with_filter(filters);
|
||||
@@ -89,25 +79,4 @@ pub fn veilid_tools_setup<'a>(env: JNIEnv<'a>, ctx: JObject<'a>, log_tag: &'a st
|
||||
}
|
||||
error!("Backtrace:\n{:?}", bt);
|
||||
}));
|
||||
|
||||
veilid_tools_setup_android_no_log(env, ctx);
|
||||
}
|
||||
|
||||
// pub fn get_android_globals() -> (JavaVM, GlobalRef) {
|
||||
// let globals_locked = ANDROID_GLOBALS.lock();
|
||||
// let globals = globals_locked.as_ref().unwrap();
|
||||
// let env = globals.vm.attach_current_thread_as_daemon().unwrap();
|
||||
// let vm = env.get_java_vm().unwrap();
|
||||
// let ctx = globals.ctx.clone();
|
||||
// (vm, ctx)
|
||||
// }
|
||||
|
||||
// pub fn with_null_local_frame<'b, T, F>(env: JNIEnv<'b>, s: i32, f: F) -> JniResult<T>
|
||||
// where
|
||||
// F: FnOnce() -> JniResult<T>,
|
||||
// {
|
||||
// env.push_local_frame(s)?;
|
||||
// let out = f();
|
||||
// env.pop_local_frame(JObject::null())?;
|
||||
// out
|
||||
// }
|
||||
|
@@ -1,9 +1,16 @@
|
||||
use super::native::*;
|
||||
use super::*;
|
||||
|
||||
use std::backtrace::Backtrace;
|
||||
use std::panic;
|
||||
|
||||
pub fn veilid_tools_setup<'a>() -> Result<(), String> {
|
||||
#[no_mangle]
|
||||
pub extern "C" fn run_veilid_tools_tests() {
|
||||
crate::tests::ios::veilid_tools_setup_ios_tests();
|
||||
run_all_tests();
|
||||
}
|
||||
|
||||
pub fn veilid_tools_setup_ios_tests() {
|
||||
cfg_if! {
|
||||
if #[cfg(feature = "tracing")] {
|
||||
use tracing_subscriber::{filter, fmt, prelude::*};
|
||||
@@ -30,7 +37,7 @@ pub fn veilid_tools_setup<'a>() -> Result<(), String> {
|
||||
TerminalMode::Mixed,
|
||||
ColorChoice::Auto,
|
||||
));
|
||||
CombinedLogger::init(logs).map_err(|e| format!("logger init error: {}", e))?;
|
||||
CombinedLogger::init(logs).expect("logger init error");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +63,4 @@ pub fn veilid_tools_setup<'a>() -> Result<(), String> {
|
||||
}
|
||||
error!("Backtrace:\n{:?}", bt);
|
||||
}));
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
#[cfg(target_os = "android")]
|
||||
#[cfg(all(target_os = "android", feature = "veilid_tools_android_tests"))]
|
||||
mod android;
|
||||
pub mod common;
|
||||
#[cfg(target_os = "ios")]
|
||||
#[cfg(all(target_os = "ios", feature = "veilid_tools_ios_tests"))]
|
||||
mod ios;
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
mod native;
|
||||
|
@@ -5,30 +5,8 @@ mod test_async_peek_stream;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[cfg(all(target_os = "android", feature = "veilid_tools_android_tests"))]
|
||||
use jni::{objects::JClass, objects::JObject, JNIEnv};
|
||||
|
||||
#[cfg(all(target_os = "android", feature = "veilid_tools_android_tests"))]
|
||||
#[no_mangle]
|
||||
#[allow(non_snake_case)]
|
||||
pub extern "system" fn Java_com_veilid_veilid_1tools_1android_1tests_MainActivity_run_1tests(
|
||||
env: JNIEnv,
|
||||
_class: JClass,
|
||||
ctx: JObject,
|
||||
) {
|
||||
crate::tests::android::veilid_tools_setup(env, ctx, "veilid-tools");
|
||||
run_all_tests();
|
||||
}
|
||||
|
||||
#[cfg(all(target_os = "ios", feature = "veilid_tools_ios_tests"))]
|
||||
#[no_mangle]
|
||||
#[allow(dead_code)]
|
||||
pub extern "C" fn run_veilid_tools_tests() {
|
||||
crate::tests::ios::veilid_tools_setup().expect("setup failed");
|
||||
run_all_tests();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
// Allow access to tests from non cfg(test), as required for android and ios tests
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn run_all_tests() {
|
||||
@@ -68,6 +46,7 @@ fn exec_test_async_tag_lock() {
|
||||
test_async_tag_lock::test_all().await;
|
||||
})
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
cfg_if! {
|
||||
if #[cfg(test)] {
|
||||
@@ -83,15 +62,14 @@ cfg_if! {
|
||||
cfg_if! {
|
||||
if #[cfg(feature = "tracing")] {
|
||||
use tracing_subscriber::{filter, fmt, prelude::*};
|
||||
let mut filters = filter::Targets::new();
|
||||
let mut filters = filter::Targets::new().with_default(filter::LevelFilter::TRACE);
|
||||
for ig in DEFAULT_LOG_IGNORE_LIST {
|
||||
filters = filters.with_target(ig, filter::LevelFilter::OFF);
|
||||
}
|
||||
let fmt_layer = fmt::layer();
|
||||
tracing_subscriber::registry()
|
||||
.with(filters)
|
||||
.with(filter::LevelFilter::TRACE)
|
||||
.with(fmt_layer)
|
||||
.with(filters)
|
||||
.init();
|
||||
} else {
|
||||
use simplelog::*;
|
||||
|
Reference in New Issue
Block a user