Example #1
0
    def test_creation_and_hydration(self):
        (ri1, run_id, experiment_id, user_id, status, start_time, end_time,
         lifecycle_stage, artifact_uri) = self._create()
        self._check(ri1, run_id, experiment_id, user_id, status, start_time,
                    end_time, lifecycle_stage, artifact_uri)
        as_dict = {
            "run_uuid": run_id,
            "run_id": run_id,
            "experiment_id": experiment_id,
            "user_id": user_id,
            "status": status,
            "start_time": start_time,
            "end_time": end_time,
            "lifecycle_stage": lifecycle_stage,
            "artifact_uri": artifact_uri
        }
        self.assertEqual(dict(ri1), as_dict)

        proto = ri1.to_proto()
        ri2 = RunInfo.from_proto(proto)
        self._check(ri2, run_id, experiment_id, user_id, status, start_time,
                    end_time, lifecycle_stage, artifact_uri)
        ri3 = RunInfo.from_dictionary(as_dict)
        self._check(ri3, run_id, experiment_id, user_id, status, start_time,
                    end_time, lifecycle_stage, artifact_uri)
        # Test that we can add a field to RunInfo and still deserialize it from a dictionary
        dict_copy_0 = as_dict.copy()
        dict_copy_0["my_new_field"] = "new field value"
        ri4 = RunInfo.from_dictionary(dict_copy_0)
        self._check(ri4, run_id, experiment_id, user_id, status, start_time,
                    end_time, lifecycle_stage, artifact_uri)
Example #2
0
 def update_run_info(self, run_id, run_status, end_time):
     """ Updates the metadata of the specified run. """
     req_body = message_to_json(
         UpdateRun(run_uuid=run_id,
                   run_id=run_id,
                   status=run_status,
                   end_time=end_time))
     response_proto = self._call_endpoint(UpdateRun, req_body)
     return RunInfo.from_proto(response_proto.run_info)