def test_hash(self): # Check the hash of an object that doesn't exist. object_id1 = random_object_id() self.plasma_client.hash(object_id1) length = 1000 # Create a random object, and check that the hash function always # returns the same value. metadata = generate_metadata(length) memory_buffer = self.plasma_client.create(object_id1, length, metadata) for i in range(length): memory_buffer[i] = chr(i % 256) self.plasma_client.seal(object_id1) self.assertEqual(self.plasma_client.hash(object_id1), self.plasma_client.hash(object_id1)) # Create a second object with the same value as the first, and check # that their hashes are equal. object_id2 = random_object_id() memory_buffer = self.plasma_client.create(object_id2, length, metadata) for i in range(length): memory_buffer[i] = chr(i % 256) self.plasma_client.seal(object_id2) self.assertEqual(self.plasma_client.hash(object_id1), self.plasma_client.hash(object_id2)) # Create a third object with a different value from the first two, and # check that its hash is different. object_id3 = random_object_id() metadata = generate_metadata(length) memory_buffer = self.plasma_client.create(object_id3, length, metadata) for i in range(length): memory_buffer[i] = chr((i + 1) % 256) self.plasma_client.seal(object_id3) self.assertNotEqual(self.plasma_client.hash(object_id1), self.plasma_client.hash(object_id3)) # Create a fourth object with the same value as the third, but # different metadata. Check that its hash is different from any of the # previous three. object_id4 = random_object_id() metadata4 = generate_metadata(length) memory_buffer = self.plasma_client.create(object_id4, length, metadata4) for i in range(length): memory_buffer[i] = chr((i + 1) % 256) self.plasma_client.seal(object_id4) self.assertNotEqual(self.plasma_client.hash(object_id1), self.plasma_client.hash(object_id4)) self.assertNotEqual(self.plasma_client.hash(object_id3), self.plasma_client.hash(object_id4))
def test_create_existing(self): # This test is partially used to test the code path in which we create # an object with an ID that already exists length = 100 for _ in range(1000): object_id = random_object_id() self.plasma_client.create(object_id, length, generate_metadata(length)) try: self.plasma_client.create(object_id, length, generate_metadata(length)) except plasma.plasma_object_exists_error as e: pass else: self.assertTrue(False)
def test_create_with_metadata(self): for length in range(1000): # Create an object id string. object_id = random_object_id() # Create a random metadata string. metadata = generate_metadata(length) # Create a new buffer and write to it. memory_buffer = self.plasma_client.create(object_id, length, metadata) for i in range(length): memory_buffer[i] = chr(i % 256) # Seal the object. self.plasma_client.seal(object_id) # Get the object. memory_buffer = self.plasma_client.get([object_id])[0] for i in range(length): self.assertEqual(memory_buffer[i], chr(i % 256)) # Get the metadata. metadata_buffer = self.plasma_client.get_metadata([object_id])[0] self.assertEqual(len(metadata), len(metadata_buffer)) for i in range(len(metadata)): self.assertEqual(chr(metadata[i]), metadata_buffer[i])