aboutsummaryrefslogtreecommitdiffstats
path: root/log_db/tests
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2024-11-04 22:47:14 +0200
committerJan Tuomi <jan@jantuomi.fi>2024-11-04 22:47:14 +0200
commit1086c414ebb6b8f30c3840ec73e3d48b0fd44339 (patch)
tree90cbe40900e55412db8112b57ef75045baf24bde /log_db/tests
parent68ef74fbfb53d758876901d25e064842fe59cec4 (diff)
Rewrite everything to use metadata and data files, TODO memtables
Diffstat (limited to 'log_db/tests')
-rw-r--r--log_db/tests/integration.rs182
-rw-r--r--log_db/tests/resources/test_data_1bin255 -> 265 bytes
-rw-r--r--log_db/tests/resources/test_db1bin31 -> 0 bytes
-rw-r--r--log_db/tests/resources/test_db2bin46243 -> 0 bytes
-rw-r--r--log_db/tests/resources/test_db3bin46243 -> 0 bytes
-rw-r--r--log_db/tests/resources/test_metadata_1bin40 -> 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
index d4c6a21..16dd175 100644
--- a/log_db/tests/resources/test_data_1
+++ b/log_db/tests/resources/test_data_1
Binary files differ
diff --git a/log_db/tests/resources/test_db1 b/log_db/tests/resources/test_db1
deleted file mode 100644
index 1f19a86..0000000
--- a/log_db/tests/resources/test_db1
+++ /dev/null
Binary files differ
diff --git a/log_db/tests/resources/test_db2 b/log_db/tests/resources/test_db2
deleted file mode 100644
index 156659f..0000000
--- a/log_db/tests/resources/test_db2
+++ /dev/null
Binary files differ
diff --git a/log_db/tests/resources/test_db3 b/log_db/tests/resources/test_db3
deleted file mode 100644
index 156659f..0000000
--- a/log_db/tests/resources/test_db3
+++ /dev/null
Binary files differ
diff --git a/log_db/tests/resources/test_metadata_1 b/log_db/tests/resources/test_metadata_1
index 9694599..d8dcc88 100644
--- a/log_db/tests/resources/test_metadata_1
+++ b/log_db/tests/resources/test_metadata_1
Binary files differ