def serialize_to_binary(self, the_job, tag, binaryfilename): """Serializes the tko job object into a binary by using a protocol buffer. The method takes a tko job object and constructs a protocol buffer job object. Then invokes the native serializing function on the object to get a binary string. The string is then written to outfile. Precondition: Assumes that all the information about the job is already in the job object. Any fields that is None will be provided a default value. :param the_job: the tko job object that will be serialized. tag: contains the job name and the afe_job_id binaryfilename: the name of the file that will be written to :return: the filename of the file that contains the binary of the serialized object. """ pb_job = tko_pb2.Job() self.set_pb_job(the_job, pb_job, tag) out = open(binaryfilename, 'wb') try: out.write(pb_job.SerializeToString()) finally: out.close()
def setUp(self): tko_patches = [] tko_patches.append(models.patch('New spec!', 'Reference?', 123456)) tko_kernel = models.kernel('My Computer', tko_patches, '1234567') tko_time = datetime.now() tko_job = models.job('/tmp/', 'autotest', 'test', 'My Computer', tko_time, tko_time, tko_time, 'root', 'www', 'No one', tko_time, {'1+1': 2}) tko_iteration = models.iteration(0, {'2+2': 4, '3+3': 6}, {'4+4': 8, '5+5': 10, '6+6': 12}) tko_labels = ['unittest', 'dummy test', 'autotest'] tko_test = models.test('/tmp/', 'mocktest', 'Completed', 'N/A', tko_kernel, 'My Computer', tko_time, tko_time, [tko_iteration, tko_iteration, tko_iteration], {'abc': 'def'}, tko_labels) self.tko_job = tko_job self.tko_job.tests = [tko_test, tko_test, tko_test] self.pb_job = tko_pb2.Job() self.tag = '1-abc./.' self.expected_afe_job_id = '1' js = job_serializer.JobSerializer() js.set_pb_job(self.tko_job, self.pb_job, self.tag)
def setUp(self): super(ReadBackTest, self).setUp() out_binary = NamedTemporaryFile(mode='wb') try: out_binary.write(self.pb_job.SerializeToString()) out_binary.flush() binary = open(out_binary.name, 'rb') try: self.pb_job = tko_pb2.Job() self.pb_job.ParseFromString(binary.read()) finally: binary.close() finally: out_binary.close()
def deserialize_from_binary(self, infile): """Takes in a binary file name and returns a tko job object. The method first deserialize the binary into a protocol buffer job object and then converts the job object into a tko job object. :param infile: the name of the binary file that will be deserialized. :return: a tko job that is represented by the binary file will be returned. """ job_pb = tko_pb2.Job() binary = open(infile, 'r') try: job_pb.ParseFromString(binary.read()) finally: binary.close() return self.get_tko_job(job_pb)