def test_builder_audit(self): # generate shards for testing bucket = Builder(addresses["epsilon"], my_shard_size, my_max_size) bucket.build(self.store_path) # audit audit_results = bucket.audit(b"storj", self.store_path, height) result0 = fixtures["test_builder_audit"]["result0"] result1 = fixtures["test_builder_audit"]["result1"] self.assertEqual(audit_results[0], _to_bytes(result0)) self.assertEqual(audit_results[1], _to_bytes(result1)) # audit full expected = fixtures["test_builder_audit"]["expected"] audit_results = bucket.full_audit(b"storj", self.store_path, height) self.assertEqual(audit_results, expected)
def test_builder_audit(self): # generate shards for testing bucket = Builder(addresses["epsilon"], my_shard_size, my_max_size, debug=True) bucket.build(self.store_path) # audit audit_results = bucket.audit(b"storj", self.store_path, height) result0 = fixtures["test_builder_audit"]["result0"] result1 = fixtures["test_builder_audit"]["result1"] self.assertEqual(audit_results[0], _to_bytes(result0)) self.assertEqual(audit_results[1], _to_bytes(result1)) # audit full expected = fixtures["test_builder_audit"]["expected"] audit_results = bucket.full_audit(b"storj", self.store_path, height) self.assertEqual(audit_results, expected)
def test_builder_audit(self): bucket = Builder(addresses["epsilon"], my_shard_size, 0, my_min_free_size) # check last confirmed bitcoin hash btc_block = bucket.btc_last_confirmed_block() self.assertTrue( btc_block['confirmations'] >= common.DEFAULT_MIN_CONFIRMATIONS) self.assertTrue(btc_block['is_orphan'] == False) index = btc_block['block_no'] block_pos = index % common.DEFAULT_FULL_AUDIT block_size = common.DEFAULT_BLOCK_SIZE # create empty files to skip to btc_index seeds = bucket.build_seeds(block_pos * block_size) for seed in seeds: path = os.path.join(self.store_path, seed) open(path, 'w').close() # generate shards for audit shard_size = my_shard_size * (block_pos + 1) * block_size bucket = Builder(addresses["epsilon"], my_shard_size, shard_size, my_min_free_size) bucket.build(self.store_path) # audit possible good_hash = bucket.audit(self.store_path, btc_block['block_no'], btc_block['blockhash']) self.assertTrue(good_hash) seeds = bucket.build_seeds((block_pos + 1) * block_size) # copy a bad file for a bad audit path1 = os.path.join(self.store_path, seeds[-2]) path2 = os.path.join(self.store_path, seeds[-1]) shutil.copyfile(path1, path2) bad_hash = bucket.audit(self.store_path, btc_block['block_no'], btc_block['blockhash']) self.assertFalse(good_hash == bad_hash) # write some bad data with open(path2, "a") as f: f.write("bad data is bad\n") # audit failed because last shard has bad data self.assertFalse( bucket.audit(self.store_path, btc_block['block_no'], btc_block['blockhash'])) # remove last shard os.remove(path2) # audit failed because last shard missing self.assertFalse( bucket.audit(self.store_path, btc_block['block_no'], btc_block['blockhash'])) # build last shard again bucket = Builder(addresses["epsilon"], my_shard_size, shard_size, my_min_free_size) bucket.build(self.store_path) # audit possible good_hash = bucket.audit(self.store_path, btc_block['block_no'], btc_block['blockhash']) self.assertTrue(good_hash) # remove first shard of that block path1 = os.path.join(self.store_path, seeds[-80]) os.remove(path1) # audit failed because first shard missing self.assertFalse( bucket.audit(self.store_path, btc_block['block_no'], btc_block['blockhash']))
def test_builder_audit(self): bucket = Builder(addresses["epsilon"], my_shard_size, 0, my_min_free_size) # check last confirmed bitcoin hash btc_block = bucket.btc_last_confirmed_block() self.assertTrue(btc_block['confirmations']>= common.DEFAULT_MIN_CONFIRMATIONS) self.assertTrue(btc_block['is_orphan']==False) index = btc_block['block_no'] block_pos = index % common.DEFAULT_FULL_AUDIT block_size = common.DEFAULT_BLOCK_SIZE # create empty files to skip to btc_index seeds = bucket.build_seeds(block_pos * block_size) for seed in seeds: path = os.path.join(self.store_path, seed) open(path,'w').close() # generate shards for audit shard_size = my_shard_size * (block_pos + 1) * block_size bucket = Builder(addresses["epsilon"], my_shard_size, shard_size, my_min_free_size) bucket.build(self.store_path) # audit possible good_hash = bucket.audit(self.store_path, btc_block['block_no'], btc_block['blockhash']) self.assertTrue(good_hash) seeds = bucket.build_seeds((block_pos + 1) * block_size) # copy a bad file for a bad audit path1 = os.path.join(self.store_path, seeds[-2]) path2 = os.path.join(self.store_path, seeds[-1]) shutil.copyfile(path1, path2) bad_hash = bucket.audit(self.store_path, btc_block['block_no'], btc_block['blockhash']) self.assertFalse(good_hash==bad_hash) # write some bad data with open(path2, "a") as f: f.write("bad data is bad\n") # audit failed because last shard has bad data self.assertFalse(bucket.audit(self.store_path, btc_block['block_no'], btc_block['blockhash'])) # remove last shard os.remove(path2) # audit failed because last shard missing self.assertFalse(bucket.audit(self.store_path, btc_block['block_no'], btc_block['blockhash'])) # build last shard again bucket = Builder(addresses["epsilon"], my_shard_size, shard_size, my_min_free_size) bucket.build(self.store_path) # audit possible good_hash = bucket.audit(self.store_path, btc_block['block_no'], btc_block['blockhash']) self.assertTrue(good_hash) # remove first shard of that block path1 = os.path.join(self.store_path, seeds[-80]) os.remove(path1) # audit failed because first shard missing self.assertFalse(bucket.audit(self.store_path, btc_block['block_no'], btc_block['blockhash']))