def test_scan_hash(): # hash present lines = H.hashdb(["scan_hash", db1, "00"]) H.str_equals(lines[0], '["00",{"count":2}]') H.int_equals(len(lines), 2) # hash not present lines = H.hashdb(["scan_hash", db1, "33"]) H.str_equals(lines[0], '["33",{"count":0}]') H.int_equals(len(lines), 2)
def test_histogram(): lines = H.hashdb(["histogram", db1]) H.str_equals(lines[4], '{"total_hashes": 3, "total_distinct_hashes": 1}') H.str_equals(lines[5], '{"duplicates":1, "distinct_hashes":1, "total":1}') H.str_equals(lines[6], '{"duplicates":2, "distinct_hashes":1, "total":2}') H.str_equals(lines[7], '') H.int_equals(len(lines), 8)
def test_duplicates(): lines = H.hashdb(["duplicates", db1, "0"]) H.str_equals(lines[4], 'No hashes were found with this count.') H.int_equals(len(lines), 6) lines = H.hashdb(["duplicates", db1, "1"]) H.str_equals(lines[3], '["11",{"count":1}]') H.int_equals(len(lines), 6) lines = H.hashdb(["duplicates", db1, "2"]) H.str_equals(lines[3], '["00",{"count":2}]') H.int_equals(len(lines), 6) lines = H.hashdb(["duplicates", db1, "3"]) H.str_equals(lines[4], 'No hashes were found with this count.') H.int_equals(len(lines), 6)
def test_size(): lines = H.hashdb(["size", db1]) #print(*lines, sep='\n') H.str_equals(lines[0], 'hash store size: 3') H.str_equals(lines[1], 'source store size: 2') H.str_equals(lines[2], '') H.int_equals(len(lines), 3)
def test_scan_expanded_hash(): # all lines = H.hashdb(["scan_expanded_hash", db1, "11"]) H.str_equals(lines[3], '{"block_hashdigest":"11", "count":1, "source_list_id":654825492, "sources":[{"source_id":2,"file_offset":0,"label":"L","repository_name":"r2","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"}]}') H.int_equals(len(lines), 5) # -m0 lines = H.hashdb(["scan_expanded_hash", "-m0", db1, "11"]) H.str_equals(lines[3], '{"block_hashdigest":"11", "count":1, "source_list_id":654825492}') H.int_equals(len(lines), 5) # -m1 lines = H.hashdb(["scan_expanded_hash", "-m1", db1, "11"]) H.str_equals(lines[3], '{"block_hashdigest":"11", "count":1, "source_list_id":654825492, "sources":[{"source_id":2,"file_offset":0,"label":"L","repository_name":"r2","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"}]}') H.int_equals(len(lines), 5)
def test_scan(): lines = H.hashdb(["scan", db1, xml1]) #print(*lines, sep='\n') H.str_equals(lines[4], '["00",{"count":2}]') H.str_equals(lines[7], '["11",{"count":1}]') H.int_equals(len(lines), 10)
def test_expand_identified_blocks(): # test empty file write_empty_identified_blocks() lines = H.hashdb(["expand_identified_blocks", db1, "temp_identified_blocks"]) H.int_equals(len(lines), 4) # test all write_full_identified_blocks() lines = H.hashdb(["expand_identified_blocks", db1, "temp_identified_blocks"]) H.str_equals(lines[3], '4096 00 [{"count":2},{"source_list_id":2844319735, "sources":[{"source_id":1,"file_offset":4096,"repository_name":"r1","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"},{"source_id":1,"file_offset":8192,"label":"H"}]}]') H.str_equals(lines[4], '8192 00 [{"count":2},{"source_list_id":2844319735, "sources":[{"source_id":1,"file_offset":4096},{"source_id":1,"file_offset":8192,"label":"H"}]}]') H.str_equals(lines[5], '12288 11 [{"count":1},{"source_list_id":654825492, "sources":[{"source_id":2,"file_offset":12288,"label":"L","repository_name":"repositoryname","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"}]}]') H.int_equals(len(lines), 7) # test all with -m0 write_full_identified_blocks() lines = H.hashdb(["expand_identified_blocks", "-m0", db1, "temp_identified_blocks"]) H.str_equals(lines[3], '4096 00 [{"count":2},{"source_list_id":2844319735}]') H.str_equals(lines[4], '8192 00 [{"count":2},{"source_list_id":2844319735}]') H.str_equals(lines[5], '12288 11 [{"count":1},{"source_list_id":654825492}]') H.int_equals(len(lines), 7) # test all with -m1 write_full_identified_blocks() lines = H.hashdb(["expand_identified_blocks", "-m1", db1, "temp_identified_blocks"]) H.str_equals(lines[3], '4096 00 [{"count":2},{"source_list_id":2844319735, "sources":[{"source_id":1,"file_offset":4096,"repository_name":"r1","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"},{"source_id":1,"file_offset":8192,"label":"H"}]}]') H.str_equals(lines[4], '8192 00 [{"count":2},{"source_list_id":2844319735, "sources":[{"source_id":1,"file_offset":4096},{"source_id":1,"file_offset":8192,"label":"H"}]}]') H.str_equals(lines[5], '12288 11 [{"count":1},{"source_list_id":654825492, "sources":[{"source_id":2,"file_offset":12288,"label":"L","repository_name":"repositoryname","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"}]}]'); H.int_equals(len(lines), 7) # test all with -m2 write_full_identified_blocks() print(*lines, sep='\n') lines = H.hashdb(["expand_identified_blocks", "-m2", db1, "temp_identified_blocks"]) H.str_equals(lines[3], '4096 00 [{"count":2},{"source_list_id":2844319735, "sources":[{"source_id":1,"file_offset":4096,"repository_name":"r1","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"},{"source_id":1,"file_offset":8192,"label":"H"}]}]') H.str_equals(lines[4], '8192 00 [{"count":2},{"source_list_id":2844319735, "sources":[{"source_id":1,"file_offset":4096},{"source_id":1,"file_offset":8192,"label":"H"}]}]') H.str_equals(lines[5], '12288 11 [{"count":1},{"source_list_id":654825492, "sources":[{"source_id":2,"file_offset":12288,"label":"L","repository_name":"repositoryname","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"}]}]') H.int_equals(len(lines), 7) # test invalid hash value write_wrong_identified_blocks() lines = H.hashdb(["expand_identified_blocks", db1, "temp_identified_blocks"]) H.str_equals((lines[3])[:5], 'Error') H.int_equals(len(lines), 5)
def test_hash_table(): # source_id 0 lines = H.hashdb(["hash_table", db1, "0"]) H.str_equals(lines[0], 'The requested source ID is not in the database.') H.int_equals(len(lines), 2) # source_id 1 lines = H.hashdb(["hash_table", db1, "1"]) H.str_equals(lines[3], '# {"source_id":1,"repository_name":"r1","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"}') H.str_equals(lines[5], '4096 00 {"count":2}') H.str_equals(lines[6], '8192 00 {"count":2}') H.int_equals(len(lines), 8) # source_id 2 lines = H.hashdb(["hash_table", db1, "2"]) H.str_equals(lines[3], '# {"source_id":2,"repository_name":"repositoryname","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"}') H.str_equals(lines[5], '12288 11 {"count":1}') H.int_equals(len(lines), 7) # source_id 3 lines = H.hashdb(["hash_table", db1, "3"]) H.str_equals(lines[0], 'The requested source ID is not in the database.') H.int_equals(len(lines), 2)
def test_sources(): lines = H.hashdb(["sources", db1]) H.str_equals(lines[0], '{"source_id":1,"repository_name":"r1","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"}') H.str_equals(lines[1], '{"source_id":2,"repository_name":"repositoryname","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"}') H.str_equals(lines[2], '') H.int_equals(len(lines), 3)
def test_explain_identified_blocks(): # test empty file write_empty_identified_blocks() lines = H.hashdb(["explain_identified_blocks", db1, "temp_identified_blocks"]) H.str_equals(lines[3], '# hashes') H.str_equals(lines[4], '# There are no hashes to report.') H.str_equals(lines[5], '# sources') H.str_equals(lines[6], '# There are no sources to report.') H.int_equals(len(lines), 8) # test all write_full_identified_blocks() lines = H.hashdb(["explain_identified_blocks", db1, "temp_identified_blocks"]) H.str_equals(lines[3], '# hashes') H.str_equals(lines[4], '["00",{"count":2},[{"source_id":1,"file_offset":4096},{"source_id":1,"file_offset":8192,"label":"H"}]]') H.str_equals(lines[5], '["11",{"count":1},[{"source_id":2,"file_offset":12288,"label":"L"}]]') H.str_equals(lines[6], '# sources') H.str_equals(lines[7], '{"source_id":1,"repository_name":"r1","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"}') H.str_equals(lines[8], '{"source_id":2,"repository_name":"repositoryname","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"}') H.int_equals(len(lines), 10) # test all with -m0 write_full_identified_blocks() lines = H.hashdb(["explain_identified_blocks", "-m0", db1, "temp_identified_blocks"]) H.str_equals(lines[3], '# hashes') H.str_equals(lines[4], '# There are no hashes to report.') H.str_equals(lines[5], '# sources') H.str_equals(lines[6], '# There are no sources to report.') H.int_equals(len(lines), 8) # test all with -m1 write_full_identified_blocks() lines = H.hashdb(["explain_identified_blocks", "-m1", db1, "temp_identified_blocks"]) H.str_equals(lines[3], '# hashes') H.str_equals(lines[4], '["11",{"count":1},[{"source_id":2,"file_offset":12288,"label":"L"}]]') H.str_equals(lines[5], '# sources') H.str_equals(lines[6], '{"source_id":2,"repository_name":"repositoryname","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"}') H.int_equals(len(lines), 8) # test all with -m2 write_full_identified_blocks() lines = H.hashdb(["explain_identified_blocks", "-m2", db1, "temp_identified_blocks"]) H.str_equals(lines[3], '# hashes') H.str_equals(lines[4], '["00",{"count":2},[{"source_id":1,"file_offset":4096},{"source_id":1,"file_offset":8192,"label":"H"}]]') H.str_equals(lines[5], '["11",{"count":1},[{"source_id":2,"file_offset":12288,"label":"L"}]]') H.str_equals(lines[6], '# sources') H.str_equals(lines[7], '{"source_id":1,"repository_name":"r1","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"}') H.str_equals(lines[8], '{"source_id":2,"repository_name":"repositoryname","filename":"file1","file_hashdigest":"ff112233445566778899aabbccddeeff"}') H.int_equals(len(lines), 10) # test invalid hash value write_wrong_identified_blocks() lines = H.hashdb(["explain_identified_blocks", db1, "temp_identified_blocks"]) H.str_equals((lines[3])[:5], 'Error') H.str_equals(lines[4], '# hashes') H.str_equals(lines[5], '# There are no hashes to report.') H.str_equals(lines[6], '# sources') H.str_equals(lines[7], '# There are no sources to report.') H.int_equals(len(lines), 9)