diff --git a/.circleci/config.yml b/.circleci/config.yml index 2d6d2ac53..ca6cf7fa6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -17,24 +17,12 @@ jobs: name: Setup build environment (TODO move this to custom docker container) command: | apt update - apt install -y sudo curl build-essential git pkg-config zlib1g-dev python libssl-dev autoconf libtool + apt install -y sudo curl build-essential git pkg-config zlib1g-dev python libssl-dev autoconf libtool libetpan-dev # this will pick default toolchain from `rust-toolchain` file curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --no-modify-path --default-toolchain none -y; source $HOME/.cargo/env no_output_timeout: 1800s - - run: - name: build etpan (TODO move this to custom docker container) - command: | - curl -L -o libetpan-1.9.1.tar.gz https://github.com/dinhviethoa/libetpan/archive/1.9.1.tar.gz - tar xzf libetpan-1.9.1.tar.gz - cd libetpan-1.9.1 - ./autogen.sh - ./configure --disable-silent-rules --enable-ipv6 --enable-iconv --disable-db --with-openssl --with-sasl --with-zlib --without-curl --without-expat - make -j $(nproc) - sudo make install - sudo ldconfig -v - - run: name: build sasl2 (TODO move this to custom docker container) command: | diff --git a/examples/repl/main.rs b/examples/repl/main.rs index dba594cb1..d225a6b55 100644 --- a/examples/repl/main.rs +++ b/examples/repl/main.rs @@ -71,15 +71,12 @@ use deltachat::x::*; use libc; mod cmdline; -mod stress; use self::cmdline::*; -use self::stress::*; /* ****************************************************************************** * Event Handler ******************************************************************************/ -static mut s_do_log_info: libc::c_int = 1i32; unsafe extern "C" fn receive_event( context: &dc_context_t, @@ -91,12 +88,10 @@ unsafe extern "C" fn receive_event( 2091 => {} 100 => { /* do not show the event as this would fill the screen */ - if 0 != s_do_log_info { - printf( - b"%s\n\x00" as *const u8 as *const libc::c_char, - data2 as *mut libc::c_char, - ); - } + printf( + b"%s\n\x00" as *const u8 as *const libc::c_char, + data2 as *mut libc::c_char, + ); } 101 => { printf( @@ -375,16 +370,11 @@ unsafe fn main_0(mut argc: libc::c_int, mut argv: *mut *mut libc::c_char) -> lib 0 as *mut libc::c_void, b"CLI\x00" as *const u8 as *const libc::c_char, ); - let mut stresstest_only: libc::c_int = 0i32; + dc_cmdline_skip_auth(); + if argc == 2i32 { - if strcmp( - *argv.offset(1isize), - b"--stress\x00" as *const u8 as *const libc::c_char, - ) == 0i32 - { - stresstest_only = 1i32 - } else if 0 == dc_open(&mut context, *argv.offset(1isize), 0 as *const libc::c_char) { + if 0 == dc_open(&mut context, *argv.offset(1isize), 0 as *const libc::c_char) { printf( b"ERROR: Cannot open %s.\n\x00" as *const u8 as *const libc::c_char, *argv.offset(1isize), @@ -393,13 +383,9 @@ unsafe fn main_0(mut argc: libc::c_int, mut argv: *mut *mut libc::c_char) -> lib } else if argc != 1i32 { printf(b"ERROR: Bad arguments\n\x00" as *const u8 as *const libc::c_char); } - s_do_log_info = 0i32; - stress_functions(&context); - s_do_log_info = 1i32; - if 0 != stresstest_only { - return 0i32; - } + printf(b"Delta Chat Core is awaiting your commands.\n\x00" as *const u8 as *const libc::c_char); + let mut handles = None; let ctx = Arc::new(RwLock::new(context)); diff --git a/examples/repl/stress.rs b/tests/stress.rs similarity index 99% rename from examples/repl/stress.rs rename to tests/stress.rs index 90aa37aeb..0c1cda2f8 100644 --- a/examples/repl/stress.rs +++ b/tests/stress.rs @@ -1,48 +1,30 @@ //! Stress some functions for testing; if used as a lib, this file is obsolete. -use std::ffi::CStr; +use std::ffi::{CStr, CString}; +use tempfile::tempdir; +use deltachat::constants::*; use deltachat::dc_aheader::*; -use deltachat::dc_apeerstate::*; use deltachat::dc_array::*; -use deltachat::dc_chat::*; -use deltachat::dc_chatlist::*; use deltachat::dc_configure::*; use deltachat::dc_contact::*; use deltachat::dc_context::*; -use deltachat::dc_dehtml::*; -use deltachat::dc_e2ee::*; use deltachat::dc_hash::*; -use deltachat::dc_imap::*; use deltachat::dc_imex::*; -use deltachat::dc_job::*; -use deltachat::dc_jobthread::*; -use deltachat::dc_jsmn::*; use deltachat::dc_key::*; -use deltachat::dc_keyhistory::*; use deltachat::dc_keyring::*; use deltachat::dc_location::*; -use deltachat::dc_log::*; -use deltachat::dc_loginparam::*; use deltachat::dc_lot::*; -use deltachat::dc_mimefactory::*; use deltachat::dc_mimeparser::*; -use deltachat::dc_move::*; use deltachat::dc_msg::*; -use deltachat::dc_oauth2::*; use deltachat::dc_param::*; use deltachat::dc_pgp::*; use deltachat::dc_qr::*; -use deltachat::dc_receive_imf::*; use deltachat::dc_saxparser::*; use deltachat::dc_securejoin::*; use deltachat::dc_simplify::*; -use deltachat::dc_smtp::*; -use deltachat::dc_sqlite3::*; -use deltachat::dc_stock::*; use deltachat::dc_strbuilder::*; use deltachat::dc_strencode::*; -use deltachat::dc_token::*; use deltachat::dc_tools::*; use deltachat::types::*; use deltachat::x::*; @@ -50,15 +32,15 @@ use libc; /* some data used for testing ******************************************************************************/ -/* s_em_setupfile is a AES-256 symm. encrypted setup message created by Enigmail -with an "encrypted session key", see RFC 4880. The code is in s_em_setupcode */ -static mut s_em_setupcode: *const libc::c_char = +/* S_EM_SETUPFILE is a AES-256 symm. encrypted setup message created by Enigmail +with an "encrypted session key", see RFC 4880. The code is in S_EM_SETUPCODE */ +static mut S_EM_SETUPCODE: *const libc::c_char = b"1742-0185-6197-1303-7016-8412-3581-4441-0597\x00" as *const u8 as *const libc::c_char; -static mut s_em_setupfile: *const libc::c_char = +static mut S_EM_SETUPFILE: *const libc::c_char = b"-----BEGIN PGP MESSAGE-----\nPassphrase-Format: numeric9x4\nPassphrase-Begin: 17\n\n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\nmngm1QCMMw2v/j8=\n=9sJE\n-----END PGP MESSAGE-----\n\x00" as *const u8 as *const libc::c_char; -#[no_mangle] -pub unsafe extern "C" fn stress_functions(context: &dc_context_t) { + +unsafe extern "C" fn stress_functions(context: &dc_context_t) { let mut saxparser: dc_saxparser_t = dc_saxparser_t { starttag_cb: None, endtag_cb: None, @@ -354,18 +336,18 @@ pub unsafe extern "C" fn stress_functions(context: &dc_context_t) { ); } else { }; - let mut absPath: *mut libc::c_char = dc_mprintf( + let mut abs_path: *mut libc::c_char = dc_mprintf( b"%s/%s\x00" as *const u8 as *const libc::c_char, (*context).blobdir, b"foobar\x00" as *const u8 as *const libc::c_char, ); - if 0 != (0 == dc_is_blobdir_path(context, absPath)) as libc::c_int as libc::c_long { + if 0 != (0 == dc_is_blobdir_path(context, abs_path)) as libc::c_int as libc::c_long { __assert_rtn( (*::std::mem::transmute::<&[u8; 17], &[libc::c_char; 17]>(b"stress_functions\x00")) .as_ptr(), b"../cmdline/stress.c\x00" as *const u8 as *const libc::c_char, 242i32, - b"dc_is_blobdir_path(context, absPath)\x00" as *const u8 as *const libc::c_char, + b"dc_is_blobdir_path(context, abs_path)\x00" as *const u8 as *const libc::c_char, ); } else { }; @@ -401,17 +383,17 @@ pub unsafe extern "C" fn stress_functions(context: &dc_context_t) { ); } else { }; - if 0 != (0 == dc_file_exist(context, absPath)) as libc::c_int as libc::c_long { + if 0 != (0 == dc_file_exist(context, abs_path)) as libc::c_int as libc::c_long { __assert_rtn( (*::std::mem::transmute::<&[u8; 17], &[libc::c_char; 17]>(b"stress_functions\x00")) .as_ptr(), b"../cmdline/stress.c\x00" as *const u8 as *const libc::c_char, 245i32, - b"dc_file_exist(context, absPath)\x00" as *const u8 as *const libc::c_char, + b"dc_file_exist(context, abs_path)\x00" as *const u8 as *const libc::c_char, ); } else { }; - free(absPath as *mut libc::c_void); + free(abs_path as *mut libc::c_void); if 0 != (0 == dc_copy_file( context, @@ -3830,7 +3812,7 @@ pub unsafe extern "C" fn stress_functions(context: &dc_context_t) { let mut headerline_0: *const libc::c_char = 0 as *const libc::c_char; let mut setupcodebegin_0: *const libc::c_char = 0 as *const libc::c_char; let mut preferencrypt_0: *const libc::c_char = 0 as *const libc::c_char; - buf_1 = strdup(s_em_setupfile); + buf_1 = strdup(S_EM_SETUPFILE); if 0 != (0 == dc_split_armored_data( buf_1, @@ -3867,8 +3849,8 @@ pub unsafe extern "C" fn stress_functions(context: &dc_context_t) { } else { }; if 0 != !(!setupcodebegin_0.is_null() - && strlen(setupcodebegin_0) < strlen(s_em_setupcode) - && strncmp(setupcodebegin_0, s_em_setupcode, strlen(setupcodebegin_0)) == 0i32) + && strlen(setupcodebegin_0) < strlen(S_EM_SETUPCODE) + && strncmp(setupcodebegin_0, S_EM_SETUPCODE, strlen(setupcodebegin_0)) == 0i32) as libc::c_int as libc::c_long { __assert_rtn((*::std::mem::transmute::<&[u8; 17], @@ -3890,7 +3872,7 @@ pub unsafe extern "C" fn stress_functions(context: &dc_context_t) { } else { }; free(buf_1 as *mut libc::c_void); - buf_1 = dc_decrypt_setup_file(context, s_em_setupcode, s_em_setupfile); + buf_1 = dc_decrypt_setup_file(context, S_EM_SETUPCODE, S_EM_SETUPFILE); if 0 != buf_1.is_null() as libc::c_int as libc::c_long { __assert_rtn( (*::std::mem::transmute::<&[u8; 17], &[libc::c_char; 17]>(b"stress_functions\x00")) @@ -4671,7 +4653,7 @@ pub unsafe extern "C" fn stress_functions(context: &dc_context_t) { }; free(fingerprint as *mut libc::c_void); if 0 != dc_is_configured(context) { - let mut qr: *mut libc::c_char = dc_get_securejoin_qr(context, 0i32 as uint32_t); + let qr: *mut libc::c_char = dc_get_securejoin_qr(context, 0i32 as uint32_t); if 0 != !(strlen(qr) > 55 && strncmp( qr, @@ -4753,3 +4735,31 @@ pub unsafe extern "C" fn stress_functions(context: &dc_context_t) { dc_lot_unref(res); }; } + +unsafe extern "C" fn cb( + _context: &dc_context_t, + _event: Event, + _data1: uintptr_t, + _data2: uintptr_t, +) -> uintptr_t { + 0 +} + +#[test] +fn run_stress_tests() { + unsafe { + let mut ctx = dc_context_new(cb, std::ptr::null_mut(), std::ptr::null_mut()); + let dir = tempdir().unwrap(); + let dbfile = CString::new(dir.path().join("db.sqlite").to_str().unwrap()).unwrap(); + assert_eq!( + dc_open(&mut ctx, dbfile.as_ptr(), std::ptr::null()), + 1, + "Failed to open {}", + CStr::from_ptr(dbfile.as_ptr() as *const libc::c_char) + .to_str() + .unwrap() + ); + + stress_functions(&ctx) + } +}