def setUp(self): bucket_name = "daytwo-test-bucket" client = storage.Client() self.new_bucket = client.create_bucket(bucket_name) self.path = './test/sample_files' self.bucket = StorageHandler(bucket_name) self.bucket_objects = []
def test_find_inconsistent_replicas_handle_none(self): storage_handler = StorageHandler(0, self.delay_times) replica_values = [(1, 42, 0), (2, 'None', 1), (1, 1, 2)] replica_ids, version_num, value = storage_handler.find_inconsistent_replicas(replica_values) self.assertEqual(replica_ids, [0, 2]) self.assertEqual(version_num, 2) self.assertEqual(value, 'None')
def test_find_inconsistent_replicas_break_ties(self): storage_handler = StorageHandler(0, self.delay_times) replica_values = [(1, 42, 0), (1, 42, 1), (1, 1, 2)] replica_ids, version_num, value = storage_handler.find_inconsistent_replicas(replica_values) self.assertEqual(replica_ids, [2]) self.assertEqual(version_num, 1) self.assertEqual(value, 42)
def test_find_inconsistent_replicas_highest_version(self): storage_handler = StorageHandler(0, self.delay_times) replica_values = [(2, 42, 0), (3, 99, 1), (0, 1, 2)] replica_ids, version_num, value = storage_handler.find_inconsistent_replicas(replica_values) self.assertEqual(replica_ids, [0, 2]) self.assertEqual(version_num, 3) self.assertEqual(value, 99)
def setUp(self): self.num_processes = 4 self.config = { 'hosts': [['localhost', 0, 0] for i in range(self.num_processes)], 'input': [], 'output': [], } self.inputs = [] self.outputs = [] self.input_handlers = [] self.storage_handlers = [] for i in range(self.num_processes): # set up pipes r, w = os.pipe() self.config['input'].append(os.fdopen(r, 'r')) self.inputs.append(os.fdopen(w, 'w')) r, w = os.pipe() self.config['output'].append(os.fdopen(w, 'w')) self.outputs.append(os.fdopen(r, 'r')) storage_handler = StorageHandler(i, [0.1, 0.1, 0.1], self.config) input_handler = InputHandler(i, storage_handler, self.config) self.input_handlers.append(input_handler) self.storage_handlers.append(storage_handler) self.handlers = self.input_handlers + self.storage_handlers for handler in self.handlers: handler.run() self.all_outputs += self.outputs self.all_inputs += self.inputs self.force_quit = False
class TestStorageHandler(unittest.TestCase): def setUp(self): bucket_name = "daytwo-test-bucket" client = storage.Client() self.new_bucket = client.create_bucket(bucket_name) self.path = './test/sample_files' self.bucket = StorageHandler(bucket_name) self.bucket_objects = [] def tearDown(self): for object in self.bucket_objects: self.new_bucket.blob(object).delete() self.new_bucket.delete() def test_all(self): object_names = os.listdir(self.path) objects_in_dir = os.listdir('./') new_objects_names = [] for object in object_names: self.bucket.upload_object(self.path + '/' + object, None) self.bucket.upload_object(self.path + '/' + object, 'new_' + object) new_objects_names += ['new_' + object] object_names = sorted(object_names + new_objects_names) bucket_list = self.bucket.objects_list() self.bucket_objects = [str(o.name) for o in bucket_list] objects_number = len(object_names) for i in range(objects_number): self.assertEquals(object_names[i], self.bucket_objects[i]) new_objects_names = [] for object in object_names: self.bucket.download_object(object, None) self.bucket.download_object(object, 'down_' + object) new_objects_names += ['down_' + object] sample_files_objects = object_names + new_objects_names object_names = sorted(sample_files_objects + objects_in_dir) objects_in_dir = sorted(os.listdir('./')) objects_number = len(object_names) for i in range(objects_number): self.assertEqual(object_names[i], objects_in_dir[i]) for object in sample_files_objects: os.remove(object) if __name__ == '__main__': unittest.main()
def main(): if len(sys.argv) != 5: print('Usage: {} [process ID] [delay time 1] [delay time 2]' '[delay time 3]'.format(sys.argv[0])) exit(1) process_id = int(sys.argv[1]) delay_times = [float(time_str) for time_str in sys.argv[2:5]] storage_handler = StorageHandler(process_id, delay_times) input_handler = InputHandler(process_id, storage_handler) storage_handler.run() input_handler.run() storage_handler.join() input_handler.join()
def test_get_replica_ids(self): storage_handler = StorageHandler(0, self.delay_times) self.assertEqual(storage_handler.get_replica_ids(0), [1, 2, 3]) self.assertEqual(storage_handler.get_replica_ids(1), [2, 3, 0]) self.assertEqual(storage_handler.get_replica_ids(2), [3, 0, 1]) self.assertEqual(storage_handler.get_replica_ids(3), [0, 1, 2])