示例#1
0
 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)
示例#5
0
    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
示例#6
0
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()
示例#7
0
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])