diff options
| author | Jan Tuomi <jan@jantuomi.fi> | 2024-11-04 22:47:14 +0200 |
|---|---|---|
| committer | Jan Tuomi <jan@jantuomi.fi> | 2024-11-04 22:47:14 +0200 |
| commit | 1086c414ebb6b8f30c3840ec73e3d48b0fd44339 (patch) | |
| tree | 90cbe40900e55412db8112b57ef75045baf24bde /log_db/tests | |
| parent | 68ef74fbfb53d758876901d25e064842fe59cec4 (diff) | |
Rewrite everything to use metadata and data files, TODO memtables
Diffstat (limited to 'log_db/tests')
| -rw-r--r-- | log_db/tests/integration.rs | 182 | ||||
| -rw-r--r-- | log_db/tests/resources/test_data_1 | bin | 255 -> 265 bytes | |||
| -rw-r--r-- | log_db/tests/resources/test_db1 | bin | 31 -> 0 bytes | |||
| -rw-r--r-- | log_db/tests/resources/test_db2 | bin | 46243 -> 0 bytes | |||
| -rw-r--r-- | log_db/tests/resources/test_db3 | bin | 46243 -> 0 bytes | |||
| -rw-r--r-- | log_db/tests/resources/test_metadata_1 | bin | 40 -> 40 bytes |
6 files changed, 37 insertions, 145 deletions
diff --git a/log_db/tests/integration.rs b/log_db/tests/integration.rs index 49a7e7b..b43f673 100644 --- a/log_db/tests/integration.rs +++ b/log_db/tests/integration.rs @@ -1,10 +1,12 @@ +#[macro_use] +extern crate log; extern crate ctor; extern crate tempfile; use ctor::ctor; use env_logger; use log_db::*; -use std::fs::{self, OpenOptions}; +use std::fs::{self}; use std::path::Path; use std::thread; use std::time::Duration; @@ -280,77 +282,9 @@ fn test_upsert_and_get_from_secondary_memtable() { } #[test] -fn test_initialize_and_read_from_primary_memtable_fixture_db2() { - let data_dir = tmp_dir(); - // Copy the fixture DB to the test data directory - fs::create_dir_all(&data_dir).expect("Failed to create the test data directory"); - fs::copy( - &Path::new(TEST_RESOURCES_DIR).join("test_db2"), - &Path::new(&data_dir).join(ACTIVE_SYMLINK_FILENAME), - ) - .expect("Failed to copy the fixture DB"); - - let mut db = DB::configure() - .data_dir(&data_dir) - .fields(vec![ - (Field::Id, RecordField::int()), - (Field::Name, RecordField::string()), - (Field::Data, RecordField::bytes()), - ]) - .primary_key(Field::Id) - .initialize() - .expect("Failed to initialize DB instance"); - - // Delete the DB so that any results must come from a memtable - fs::remove_file(Path::new(&data_dir).join(ACTIVE_SYMLINK_FILENAME)) - .expect("Failed to delete the DB log file"); - - let result = db.get(&RecordValue::Int(1)).unwrap().unwrap(); - - // Check that the IDs match - let expected = RecordValue::Int(1); - assert!(match (&result.values[0], &expected) { - (RecordValue::Int(a), RecordValue::Int(b)) => a == b, - _ => false, - }); -} - -#[test] -fn test_initialize_without_memtables_fixture_db3() { - let data_dir = tmp_dir(); - // Copy the fixture DB to the test data directory - fs::create_dir_all(&data_dir).expect("Failed to create the test data directory"); - fs::copy( - &Path::new(TEST_RESOURCES_DIR).join("test_db3"), - &Path::new(&data_dir).join(ACTIVE_SYMLINK_FILENAME), - ) - .expect("Failed to copy the fixture DB"); - - let mut db = DB::configure() - .data_dir(&data_dir) - .fields(vec![ - (Field::Id, RecordField::int()), - (Field::Name, RecordField::string()), - (Field::Data, RecordField::bytes()), - ]) - .memtable_capacity(0) - .primary_key(Field::Id) - .initialize() - .expect("Failed to initialize DB instance"); - - let result = db.get(&RecordValue::Int(1)).unwrap().unwrap(); - - // Check that the IDs match - let expected = RecordValue::Int(1); - assert!(match (&result.values[0], &expected) { - (RecordValue::Int(a), RecordValue::Int(b)) => a == b, - _ => false, - }); -} - -#[test] fn test_multiple_writing_threads() { let data_dir = tmp_dir(); + debug!("Data dir: {:?}", data_dir); let mut threads = vec![]; let threads_n = 100; @@ -458,50 +392,14 @@ fn test_one_writer_and_multiple_reading_threads() { } #[test] -fn test_literal_escape_is_escaped() { - let data_dir = tmp_dir(); - - let mut db = DB::configure() - .data_dir(&data_dir) - .memtable_capacity(0) // disable memtables - .fields(vec![ - (Field::Id, RecordField::int()), - (Field::Data, RecordField::bytes()), - ]) - .primary_key(Field::Id) - .initialize() - .expect("Failed to initialize DB instance"); - - let record = Record { - values: vec![ - RecordValue::Int(1), - RecordValue::Bytes(vec![0x1A, 0x1B, 0x1C, 0x1D]), - ], - }; - - db.upsert(&record).expect("Failed to upsert record"); - - let found = db - .get(&RecordValue::Int(1)) - .expect("Failed to get record") - .expect("Record not found"); - - let received = match &found.values[1] { - RecordValue::Bytes(bytes) => bytes, - _ => panic!("Unexpected record value type"), - }; - - assert_eq!(received, &vec![0x1A, 0x1B, 0x1C, 0x1D]); -} - -#[test] fn test_log_is_rotated_when_capacity_reached() { let data_dir = tmp_dir(); + let data_dir_path = Path::new(&data_dir); let record = Record { values: vec![RecordValue::Int(1), RecordValue::Bytes(vec![1, 2, 3, 4])], }; - let record_len = &record.serialize().len() + SEQ_RECORD_SEP.len(); + let record_len = &record.serialize().len(); let mut db = DB::configure() .data_dir(&data_dir) @@ -524,46 +422,40 @@ fn test_log_is_rotated_when_capacity_reached() { } // Check that the rotated segments exist - assert!(Path::new(&data_dir) - .join(ACTIVE_SYMLINK_FILENAME) - .with_extension("1") - .exists()); - - assert!(Path::new(&data_dir) - .join(ACTIVE_SYMLINK_FILENAME) - .with_extension("2") - .exists()); + assert!(data_dir_path.join("metadata").with_extension("1").exists()); + assert!(data_dir_path.join("metadata").with_extension("2").exists()); // 3rd segment should not exist (note negation) - assert!(!Path::new(&data_dir) - .join(ACTIVE_SYMLINK_FILENAME) - .with_extension("3") - .exists()); + assert!(!data_dir_path.join("metadata").with_extension("3").exists()); - // Check that the active file only contains five rows - let mut file = OpenOptions::new() - .read(true) - .open(Path::new(&data_dir).join(ACTIVE_SYMLINK_FILENAME)) - .expect("File could not be opened"); - let records_in_active_log = ForwardLogReader::new(&mut file).count(); - assert_eq!(records_in_active_log, 5); + // TODO re-implement rest of the test + // when refactor is done - // Check that each rotated file contains only 1 record - // because of compaction - for i in &[1, 2] { - let mut file = OpenOptions::new() - .read(true) - .open( - Path::new(&data_dir) - .join(ACTIVE_SYMLINK_FILENAME) - .with_extension(i.to_string()), - ) - .expect("File could not be opened"); - let records_in_rotated_log = ForwardLogReader::new(&mut file).count(); - assert_eq!(records_in_rotated_log, 1); - } + // // Check that the active file only contains five rows + // let mut file = OpenOptions::new() + // .read(true) + // .open(data_dir_path.join(ACTIVE_SYMLINK_FILENAME)) + // .expect("File could not be opened"); + + // let records_in_active_log = ForwardLogReader::new(&mut file).count(); + // assert_eq!(records_in_active_log, 5); + + // // Check that each rotated file contains only 1 record + // // because of compaction + // for i in &[1, 2] { + // let mut file = OpenOptions::new() + // .read(true) + // .open( + // Path::new(&data_dir) + // .join(ACTIVE_SYMLINK_FILENAME) + // .with_extension(i.to_string()), + // ) + // .expect("File could not be opened"); + // let records_in_rotated_log = ForwardLogReader::new(&mut file).count(); + // assert_eq!(records_in_rotated_log, 1); + // } - // Look for nonexistant record to scan all segment files - let found = db.get(&RecordValue::Int(2)).expect("Failed to get record"); - assert!(found.is_none()); + // // Look for nonexistant record to scan all segment files + // let found = db.get(&RecordValue::Int(2)).expect("Failed to get record"); + // assert!(found.is_none()); } diff --git a/log_db/tests/resources/test_data_1 b/log_db/tests/resources/test_data_1 Binary files differindex d4c6a21..16dd175 100644 --- a/log_db/tests/resources/test_data_1 +++ b/log_db/tests/resources/test_data_1 diff --git a/log_db/tests/resources/test_db1 b/log_db/tests/resources/test_db1 Binary files differdeleted file mode 100644 index 1f19a86..0000000 --- a/log_db/tests/resources/test_db1 +++ /dev/null diff --git a/log_db/tests/resources/test_db2 b/log_db/tests/resources/test_db2 Binary files differdeleted file mode 100644 index 156659f..0000000 --- a/log_db/tests/resources/test_db2 +++ /dev/null diff --git a/log_db/tests/resources/test_db3 b/log_db/tests/resources/test_db3 Binary files differdeleted file mode 100644 index 156659f..0000000 --- a/log_db/tests/resources/test_db3 +++ /dev/null diff --git a/log_db/tests/resources/test_metadata_1 b/log_db/tests/resources/test_metadata_1 Binary files differindex 9694599..d8dcc88 100644 --- a/log_db/tests/resources/test_metadata_1 +++ b/log_db/tests/resources/test_metadata_1 |
