Sparse Virtual File System  0.4.1
A Sparse Virtual File System.
Classes | Typedefs | Functions | Variables
SVFS::Test Namespace Reference

The namespace for all the Test code in svfsc code. More...

Classes

class  ExceptionTest
 Exception used in place of asserts so that checks are done in release version. More...
 
class  ExceptionTestConfiguration
 Exception used where a test case is miss-configured. More...
 
class  TestResult
 Result of a test. More...
 
class  TestCount
 Count of tests taht pass and fail. More...
 
class  TestCaseABC
 Abstract base class for tests cases. More...
 
class  TestCaseWrite
 Specialisation of a test case for writing to a SVF. More...
 
class  TestCaseWriteThrows
 Specialisation of a test case where a write to a SVF throws an exception. More...
 
class  TestCaseRead
 Specialisation of a test case for writing to a SVF. More...
 
class  TestCaseReadThrows
 Specialisation of a test case where a write to a SVF throws an exception. More...
 
class  TestCaseHas
 Specialisation of a test case for a SVF has() . More...
 
class  TestCaseNeed
 Specialisation of a test case for a SVF need() . More...
 
class  TestCaseNeedGreedy
 Specialisation of a test case for a SVF need() with a greedy length. More...
 
class  TestCaseErase
 Specialisation of a test case for erase() on a SVF. More...
 
class  TestCaseEraseThrows
 Specialisation of a test case where erase() on a SVF throws an exception. More...
 

Typedefs

typedef std::vector< TestResultt_test_results
 

Functions

void write_test_results (const t_test_results &results, std::ostream &os)
 
TestCount test_cpp_version (t_test_results &results)
 
TestCount test_cpp_version_major (t_test_results &results)
 
TestCount test_cpp_version_minor (t_test_results &results)
 
TestCount test_cpp_version_patch (t_test_results &results)
 
TestCount test_cpp_version_suffix (t_test_results &results)
 
TestCount test_cpp_svfs_all (t_test_results &results)
 
TestCount test_write_all (t_test_results &results)
 
TestCount test_write_all_throws (t_test_results &results)
 
TestCount _test_perf_write_with_diff_check (bool compare_for_diff, t_test_results &results)
 
TestCount test_perf_write_with_diff_check (t_test_results &results)
 
TestCount test_perf_write_without_diff_check (t_test_results &results)
 
TestCount test_perf_write_sim_index_svf (t_test_results &results)
 
TestCount test_perf_write_1M_coalesced (t_test_results &results)
 
TestCount test_perf_write_1M_uncoalesced (t_test_results &results)
 
TestCount test_perf_write_1M_uncoalesced_size_of (t_test_results &results)
 
TestCount test_read_all (t_test_results &results)
 
TestCount test_read_throws_all (t_test_results &results)
 
TestCount test_perf_read_1M_coalesced (t_test_results &results)
 
TestCount test_perf_read_1M_un_coalesced (t_test_results &results)
 
TestCount test_has_all (t_test_results &results)
 
TestCount test_need_all (t_test_results &results)
 
TestCount _test_perf_need_sim_index (size_t need_size, t_test_results &results)
 
TestCount test_perf_need_sim_index (t_test_results &results)
 
TestCount test_need_greedy_all (t_test_results &results)
 
TestCount test_erase_all (t_test_results &results)
 
TestCount test_erase_throws_all (t_test_results &results)
 
TestCount _test_perf_erase_overwrite (bool overwrite, t_test_results &results)
 
TestCount test_perf_erase_overwrite_false (t_test_results &results)
 
TestCount test_perf_erase_overwrite_true (t_test_results &results)
 
void _write_multithreaded_coalesced ()
 
void _write_multithreaded_un_coalesced ()
 
TestCount test_write_multithreaded (int num_threads, bool is_coalesced, t_test_results &results)
 
TestCount test_write_multithreaded_coalesced (t_test_results &results)
 
TestCount test_write_multithreaded_un_coalesced (t_test_results &results)
 
TestResult test_debug_need_read_special_A ()
 
TestResult test_debug_need_read_special_B ()
 
TestResult test_debug_need_read_special_C ()
 This is special test created to check the problem reading TUPAC-TR-004.svs. More...
 
TestCount test_block_size (t_test_results &results)
 
TestCount test_block_size_throws (t_test_results &results)
 
TestCount test_block_touch_single_block (t_test_results &results)
 
TestCount test_block_touch_single_block_read_updates (t_test_results &results)
 
TestCount test_block_touch_two_blocks (t_test_results &results)
 
TestCount test_block_touch_coalesced (t_test_results &results)
 
TestCount test_lru_block_punting_a (t_test_results &results)
 
TestCount test_lru_block_punting_b (t_test_results &results)
 
TestCount test_lru_block_punting_c (t_test_results &results)
 
TestCount test_needs_many_empty (t_test_results &results)
 
TestCount test_needs_many_empty_overlap (t_test_results &results)
 
TestCount test_needs_many_empty_greedy_length (t_test_results &results)
 
TestCount test_needs_many_one_block (t_test_results &results)
 
TestCount test_needs_many_one_block_greedy (t_test_results &results)
 
TestCount test_erase_updates_counters (t_test_results &results)
 
TestCount test_erase_updates_counters_not_punt (t_test_results &results)
 
TestCount test_punt_updates_counters (t_test_results &results)
 
TestCount test_svf_all (t_test_results &results)
 
TestCount _test_perf_write_sim_index_svfs (size_t count_vr, size_t count_lr, t_test_results &results)
 
TestCount test_perf_write_sim_index_svfs (t_test_results &results)
 
TestCount test_svfs_all (t_test_results &results)
 

Variables

const char test_data_bytes_512 []
 
const std::vector< TestCaseWritewrite_test_cases
 The actual write tests cases. More...
 
const std::vector< TestCaseWritewrite_test_cases_special
 
const std::vector< TestCaseWriteThrowswrite_test_cases_throws
 
const std::vector< TestCaseReadread_test_cases
 
const std::vector< TestCaseReadread_test_cases_special
 
const std::vector< TestCaseReadThrowsread_test_cases_throw
 
const std::vector< TestCaseHashas_test_cases
 
const std::vector< TestCaseNeedneed_test_cases
 
const std::vector< TestCaseNeedneed_test_cases_special
 
const std::vector< TestCaseNeedGreedyneed_greedy_test_cases
 
const std::vector< TestCaseEraseerase_test_cases
 
const std::vector< TestCaseEraseThrowserase_test_cases_throw
 
SparseVirtualFile g_svf_multithreaded ("", 0.0)
 

Detailed Description

The namespace for all the Test code in svfsc code.

Typedef Documentation

◆ t_test_results

typedef std::vector<TestResult> SVFS::Test::t_test_results

Definition at line 128 of file test.h.

Function Documentation

◆ _test_perf_erase_overwrite()

TestCount SVFS::Test::_test_perf_erase_overwrite ( bool  overwrite,
t_test_results results 
)

Definition at line 1195 of file test_svf.cpp.

◆ _test_perf_need_sim_index()

TestCount SVFS::Test::_test_perf_need_sim_index ( size_t  need_size,
t_test_results results 
)

Definition at line 926 of file test_svf.cpp.

◆ _test_perf_write_sim_index_svfs()

TestCount SVFS::Test::_test_perf_write_sim_index_svfs ( size_t  count_vr,
size_t  count_lr,
t_test_results results 
)

Definition at line 47 of file test_svfs.cpp.

◆ _test_perf_write_with_diff_check()

TestCount SVFS::Test::_test_perf_write_with_diff_check ( bool  compare_for_diff,
t_test_results results 
)

Definition at line 386 of file test_svf.cpp.

◆ _write_multithreaded_coalesced()

void SVFS::Test::_write_multithreaded_coalesced ( )

Definition at line 1235 of file test_svf.cpp.

◆ _write_multithreaded_un_coalesced()

void SVFS::Test::_write_multithreaded_un_coalesced ( )

Definition at line 1246 of file test_svf.cpp.

◆ test_block_size()

TestCount SVFS::Test::test_block_size ( t_test_results results)

Definition at line 1403 of file test_svf.cpp.

◆ test_block_size_throws()

TestCount SVFS::Test::test_block_size_throws ( t_test_results results)

Definition at line 1419 of file test_svf.cpp.

◆ test_block_touch_coalesced()

TestCount SVFS::Test::test_block_touch_coalesced ( t_test_results results)

Definition at line 1529 of file test_svf.cpp.

◆ test_block_touch_single_block()

TestCount SVFS::Test::test_block_touch_single_block ( t_test_results results)

Definition at line 1447 of file test_svf.cpp.

◆ test_block_touch_single_block_read_updates()

TestCount SVFS::Test::test_block_touch_single_block_read_updates ( t_test_results results)

Definition at line 1469 of file test_svf.cpp.

◆ test_block_touch_two_blocks()

TestCount SVFS::Test::test_block_touch_two_blocks ( t_test_results results)

Definition at line 1503 of file test_svf.cpp.

◆ test_cpp_svfs_all()

TestCount SVFS::Test::test_cpp_svfs_all ( t_test_results results)

Definition at line 109 of file test_cpp_svfs.cpp.

◆ test_cpp_version()

TestCount SVFS::Test::test_cpp_version ( t_test_results results)

Definition at line 38 of file test_cpp_svfs.cpp.

◆ test_cpp_version_major()

TestCount SVFS::Test::test_cpp_version_major ( t_test_results results)

Definition at line 53 of file test_cpp_svfs.cpp.

◆ test_cpp_version_minor()

TestCount SVFS::Test::test_cpp_version_minor ( t_test_results results)

Definition at line 67 of file test_cpp_svfs.cpp.

◆ test_cpp_version_patch()

TestCount SVFS::Test::test_cpp_version_patch ( t_test_results results)

Definition at line 81 of file test_cpp_svfs.cpp.

◆ test_cpp_version_suffix()

TestCount SVFS::Test::test_cpp_version_suffix ( t_test_results results)

Definition at line 95 of file test_cpp_svfs.cpp.

◆ test_debug_need_read_special_A()

TestResult SVFS::Test::test_debug_need_read_special_A ( )

This bug from the simulator:

2023-04-25 12:05:24,776 - simulator.py#71 - INFO - CLIENT: blocks was: ['(0 : 1,024 : 1,024)', '(291,809,396 : 1,024 : 291,810,420)']
2023-04-25 12:05:24,776 - simulator.py#72 - INFO - CLIENT: demands fpos 291,810,392 length 2,429 ( 291,812,821)
2023-04-25 12:05:24,776 - simulator.py#81 - INFO - CLIENT: needs fpos 291,810,420 length 2,401 ( 291,812,821)
2023-04-25 12:05:24,799 - simulator.py#90 - INFO - CLIENT: wrote fpos 291,810,420 length 2,401 ( 291,812,821)
2023-04-25 12:05:24,799 - simulator.py#92 - ERROR - CLIENT: demands fpos 291,810,392 length 2,429 ( 291,812,821)
2023-04-25 12:05:24,799 - simulator.py#96 - ERROR - CLIENT: blocks now: ['(0 : 1,024 : 1,024)', '(291,809,396 : 3,397 : 291,812,793)']

Definition at line 1319 of file test_svf.cpp.

◆ test_debug_need_read_special_B()

TestResult SVFS::Test::test_debug_need_read_special_B ( )

Definition at line 1345 of file test_svf.cpp.

◆ test_debug_need_read_special_C()

TestResult SVFS::Test::test_debug_need_read_special_C ( )

This is special test created to check the problem reading TUPAC-TR-004.svs.

Definition at line 1369 of file test_svf.cpp.

◆ test_erase_all()

TestCount SVFS::Test::test_erase_all ( t_test_results results)

Definition at line 1124 of file test_svf.cpp.

◆ test_erase_throws_all()

TestCount SVFS::Test::test_erase_throws_all ( t_test_results results)

Definition at line 1184 of file test_svf.cpp.

◆ test_erase_updates_counters()

TestCount SVFS::Test::test_erase_updates_counters ( t_test_results results)

Definition at line 1849 of file test_svf.cpp.

◆ test_erase_updates_counters_not_punt()

TestCount SVFS::Test::test_erase_updates_counters_not_punt ( t_test_results results)

Definition at line 1880 of file test_svf.cpp.

◆ test_has_all()

TestCount SVFS::Test::test_has_all ( t_test_results results)

Definition at line 798 of file test_svf.cpp.

◆ test_lru_block_punting_a()

TestCount SVFS::Test::test_lru_block_punting_a ( t_test_results results)

Definition at line 1556 of file test_svf.cpp.

◆ test_lru_block_punting_b()

TestCount SVFS::Test::test_lru_block_punting_b ( t_test_results results)

Definition at line 1607 of file test_svf.cpp.

◆ test_lru_block_punting_c()

TestCount SVFS::Test::test_lru_block_punting_c ( t_test_results results)

Definition at line 1661 of file test_svf.cpp.

◆ test_need_all()

TestCount SVFS::Test::test_need_all ( t_test_results results)

Definition at line 908 of file test_svf.cpp.

◆ test_need_greedy_all()

TestCount SVFS::Test::test_need_greedy_all ( t_test_results results)

Definition at line 1074 of file test_svf.cpp.

◆ test_needs_many_empty()

TestCount SVFS::Test::test_needs_many_empty ( t_test_results results)

Definition at line 1694 of file test_svf.cpp.

◆ test_needs_many_empty_greedy_length()

TestCount SVFS::Test::test_needs_many_empty_greedy_length ( t_test_results results)

Definition at line 1755 of file test_svf.cpp.

◆ test_needs_many_empty_overlap()

TestCount SVFS::Test::test_needs_many_empty_overlap ( t_test_results results)

Definition at line 1728 of file test_svf.cpp.

◆ test_needs_many_one_block()

TestCount SVFS::Test::test_needs_many_one_block ( t_test_results results)

Definition at line 1783 of file test_svf.cpp.

◆ test_needs_many_one_block_greedy()

TestCount SVFS::Test::test_needs_many_one_block_greedy ( t_test_results results)

Definition at line 1818 of file test_svf.cpp.

◆ test_perf_erase_overwrite_false()

TestCount SVFS::Test::test_perf_erase_overwrite_false ( t_test_results results)

Definition at line 1223 of file test_svf.cpp.

◆ test_perf_erase_overwrite_true()

TestCount SVFS::Test::test_perf_erase_overwrite_true ( t_test_results results)

Definition at line 1227 of file test_svf.cpp.

◆ test_perf_need_sim_index()

TestCount SVFS::Test::test_perf_need_sim_index ( t_test_results results)

Definition at line 957 of file test_svf.cpp.

◆ test_perf_read_1M_coalesced()

TestCount SVFS::Test::test_perf_read_1M_coalesced ( t_test_results results)

Definition at line 684 of file test_svf.cpp.

◆ test_perf_read_1M_un_coalesced()

TestCount SVFS::Test::test_perf_read_1M_un_coalesced ( t_test_results results)

Definition at line 707 of file test_svf.cpp.

◆ test_perf_write_1M_coalesced()

TestCount SVFS::Test::test_perf_write_1M_coalesced ( t_test_results results)

Definition at line 445 of file test_svf.cpp.

◆ test_perf_write_1M_uncoalesced()

TestCount SVFS::Test::test_perf_write_1M_uncoalesced ( t_test_results results)

Definition at line 469 of file test_svf.cpp.

◆ test_perf_write_1M_uncoalesced_size_of()

TestCount SVFS::Test::test_perf_write_1M_uncoalesced_size_of ( t_test_results results)

Definition at line 496 of file test_svf.cpp.

◆ test_perf_write_sim_index_svf()

TestCount SVFS::Test::test_perf_write_sim_index_svf ( t_test_results results)

Definition at line 420 of file test_svf.cpp.

◆ test_perf_write_sim_index_svfs()

TestCount SVFS::Test::test_perf_write_sim_index_svfs ( t_test_results results)

Definition at line 77 of file test_svfs.cpp.

◆ test_perf_write_with_diff_check()

TestCount SVFS::Test::test_perf_write_with_diff_check ( t_test_results results)

Definition at line 408 of file test_svf.cpp.

◆ test_perf_write_without_diff_check()

TestCount SVFS::Test::test_perf_write_without_diff_check ( t_test_results results)

Definition at line 413 of file test_svf.cpp.

◆ test_punt_updates_counters()

TestCount SVFS::Test::test_punt_updates_counters ( t_test_results results)

Definition at line 1911 of file test_svf.cpp.

◆ test_read_all()

TestCount SVFS::Test::test_read_all ( t_test_results results)

Definition at line 598 of file test_svf.cpp.

◆ test_read_throws_all()

TestCount SVFS::Test::test_read_throws_all ( t_test_results results)

Definition at line 670 of file test_svf.cpp.

◆ test_svf_all()

TestCount SVFS::Test::test_svf_all ( t_test_results results)

Definition at line 1949 of file test_svf.cpp.

◆ test_svfs_all()

TestCount SVFS::Test::test_svfs_all ( t_test_results results)

Definition at line 111 of file test_svfs.cpp.

◆ test_write_all()

TestCount SVFS::Test::test_write_all ( t_test_results results)

Definition at line 324 of file test_svf.cpp.

◆ test_write_all_throws()

TestCount SVFS::Test::test_write_all_throws ( t_test_results results)

Definition at line 375 of file test_svf.cpp.

◆ test_write_multithreaded()

TestCount SVFS::Test::test_write_multithreaded ( int  num_threads,
bool  is_coalesced,
t_test_results results 
)

Definition at line 1258 of file test_svf.cpp.

◆ test_write_multithreaded_coalesced()

TestCount SVFS::Test::test_write_multithreaded_coalesced ( t_test_results results)

Definition at line 1289 of file test_svf.cpp.

◆ test_write_multithreaded_un_coalesced()

TestCount SVFS::Test::test_write_multithreaded_un_coalesced ( t_test_results results)

Definition at line 1297 of file test_svf.cpp.

◆ write_test_results()

void SVFS::Test::write_test_results ( const t_test_results results,
std::ostream &  os 
)

Write out all the tests results.

Parameters
resultsThe tests results.
osThe stream to write to.

Definition at line 106 of file test.cpp.

Variable Documentation

◆ erase_test_cases

const std::vector<TestCaseErase> SVFS::Test::erase_test_cases
Initial value:
= {
{"Erase a block", {{8, 4}}, 8},
}

Definition at line 1118 of file test_svf.cpp.

◆ erase_test_cases_throw

const std::vector<TestCaseEraseThrows> SVFS::Test::erase_test_cases_throw
Initial value:
= {
{"Erase empty SVF throws", {}, 8, "SparseVirtualFile::erase(): Non-existent file position 8 at start of block."},
{"Erase before block throws", {{8, 4}}, 2,
"SparseVirtualFile::erase(): Non-existent file position 2 at start of block."},
{"Erase within a block throws", {{8, 4}}, 9,
"SparseVirtualFile::erase(): Non-existent file position 9 at start of block."},
{"Erase beyond end throws", {{8, 4}}, 12,
"SparseVirtualFile::erase(): Non-existent file position 12 at start of block."},
}

Definition at line 1167 of file test_svf.cpp.

◆ g_svf_multithreaded

SparseVirtualFile SVFS::Test::g_svf_multithreaded("", 0.0) ( ""  ,
0.  0 
)

◆ has_test_cases

const std::vector<TestCaseHas> SVFS::Test::has_test_cases
Initial value:
= {
{"Has empty - false", {}, 8, 4, false},
{"Has an exact block", {{8, 4}}, 8, 4, true},
{"Has leading block", {{8, 4}}, 8, 3, true},
{"Has trailing block", {{8, 4}}, 9, 3, true},
{"Has mid block", {{8, 4}}, 9, 2, true},
{"Not has an exact block -1", {{8, 4}}, 7, 4, false},
{"Not has an exact block +1", {{8, 4}}, 9, 4, false},
}

Definition at line 773 of file test_svf.cpp.

◆ need_greedy_test_cases

const std::vector<TestCaseNeedGreedy> SVFS::Test::need_greedy_test_cases

Definition at line 1014 of file test_svf.cpp.

◆ need_test_cases

const std::vector<TestCaseNeed> SVFS::Test::need_test_cases

Definition at line 851 of file test_svf.cpp.

◆ need_test_cases_special

const std::vector<TestCaseNeed> SVFS::Test::need_test_cases_special
Initial value:
= {
{"Two blocks and in between (a)", {{8, 4}, {14, 4}}, 8, 10, {{12, 2}},},
}

Definition at line 902 of file test_svf.cpp.

◆ read_test_cases

const std::vector<TestCaseRead> SVFS::Test::read_test_cases
Initial value:
= {
{"Read exactly a block", {{8, 4}}, 8, 4},
{"Read leading part of block", {{8, 4}}, 8, 3},
{"Read trailing part of block", {{8, 4}}, 9, 3},
{"Read mid part of block", {{8, 4}}, 9, 2},
}

Definition at line 572 of file test_svf.cpp.

◆ read_test_cases_special

const std::vector<TestCaseRead> SVFS::Test::read_test_cases_special
Initial value:
= {
{"Read trailing part of block", {{8, 4}}, 9, 3},
{"Read mid part of block", {{8, 4}}, 9, 2},
}

Definition at line 588 of file test_svf.cpp.

◆ read_test_cases_throw

const std::vector<TestCaseReadThrows> SVFS::Test::read_test_cases_throw
Initial value:
= {
{"Read empty SVF throws", {}, 8, 4, "SparseVirtualFile::read(): Sparse virtual file is empty."},
{"Read before block throws", {{8, 4}}, 2, 4,
"SparseVirtualFile::read(): Requested file position 2 precedes first block at 8"},
{"Read prior to block throws", {{8, 4}}, 7, 4,
"SparseVirtualFile::read(): Requested file position 7 precedes first block at 8"},
{"Read beyond block throws", {{8, 4}}, 9, 4,
"SparseVirtualFile::read(): Requested position 9 length 4 (end 13) overruns block that starts at 8 has size 4 (end 12). Offset into block is 1 overrun is 1 bytes"},
{"Read beyond end throws", {{8, 4}}, 12, 4,
"SparseVirtualFile::read(): Requested position 12 length 4 (end 16) overruns block that starts at 8 has size 4 (end 12). Offset into block is 4 overrun is 4 bytes"},
}

Definition at line 645 of file test_svf.cpp.

◆ test_data_bytes_512

const char SVFS::Test::test_data_bytes_512

Test data.

Produced by, more or less:

print('{\n ' + ',\n '.join([', '.join([f'0x{v + (16 * i):02x}' for v in range(16)]) for i in range(16)]) + '\n}')

Imaginary file test_data_bytes_512, unique 512 bytes, unsigned char.

Definition at line 51 of file test.cpp.

◆ write_test_cases

const std::vector<TestCaseWrite> SVFS::Test::write_test_cases

The actual write tests cases.

This will raise an uncaught ExceptionTestConfiguration if miss configured.

Definition at line 171 of file test_svf.cpp.

◆ write_test_cases_special

const std::vector<TestCaseWrite> SVFS::Test::write_test_cases_special
Initial value:
= {
{"New appends part of old[0]", {{8, 4}, {7, 3}}, {{7, 5}},},
}

Definition at line 318 of file test_svf.cpp.

◆ write_test_cases_throws

const std::vector<TestCaseWriteThrows> SVFS::Test::write_test_cases_throws
Initial value:
= {
{
"Throws: Overwrite single block", {{65, 4}}, 65, 4, test_data_bytes_512 + 66,
"SparseVirtualFile::write(): Difference at position 65 'B' != 'A' Ordinal 66 != 65"
},
}
const char test_data_bytes_512[]
Definition: test.cpp:51

Definition at line 368 of file test_svf.cpp.