[Notes] [Git][BuildGrid/buildgrid][finn/execute-response] Added ExecuteResponse message. Fixes #38.



Title: GitLab

finnball pushed to branch finn/execute-response at BuildGrid / buildgrid

Commits:

4 changed files:

Changes:

  • app/commands/cmd_execute.py
    ... ... @@ -116,12 +116,10 @@ def list_operations(context):
    116 116
             _log_operation(context, op)
    
    117 117
     
    
    118 118
     def _log_operation(context, operation):
    
    119
    -    op_any = any_pb2.Any()
    
    120 119
         op_meta = ExecuteOperationMetadata()
    
    121
    -    op_any.CopyFrom(operation.metadata)
    
    122
    -    op_any.Unpack(op_meta)
    
    120
    +    operation.metadata.Unpack(op_meta)
    
    123 121
     
    
    124 122
         context.logger.info("Name  : {}".format(operation.name))
    
    125 123
         context.logger.info("Done  : {}".format(operation.done))
    
    126
    -    context.logger.info("Stage : {}\n".format(ExecuteOperationMetadata.Stage.Name(op_meta.stage)))
    
    127
    -    context.logger.info("Key   : {}\n".format(operation.response))
    124
    +    context.logger.info("Stage : {}".format(ExecuteOperationMetadata.Stage.Name(op_meta.stage)))
    
    125
    +    context.logger.info("Key   : {}".format(operation.response))

  • buildgrid/server/job.py
    ... ... @@ -66,9 +66,11 @@ class Job():
    66 66
         def get_operation(self):
    
    67 67
             self._operation.metadata.CopyFrom(self._pack_any(self.get_operation_meta()))
    
    68 68
     
    
    69
    -        if self.execute_stage == ExecuteStage.COMPLETED:
    
    69
    +        if self.result is not None:
    
    70 70
                 self._operation.done = True
    
    71
    -            self._operation.response.CopyFrom(self._pack_any(self.result))
    
    71
    +            response = ExecuteResponse()
    
    72
    +            self.result.Unpack(response.result)
    
    73
    +            self._operation.response.CopyFrom(self._pack_any(response))
    
    72 74
     
    
    73 75
             return self._operation
    
    74 76
     
    

  • tests/integration/execution_service.py
    ... ... @@ -64,13 +64,7 @@ def test_execute(skip_cache_lookup, instance, context):
    64 64
             context.set_code.assert_called_once_with(grpc.StatusCode.UNIMPLEMENTED)
    
    65 65
         else:
    
    66 66
             metadata = remote_execution_pb2.ExecuteOperationMetadata()
    
    67
    -        _unpack_any(result.metadata, metadata)
    
    67
    +        result.metadata.Unpack(metadata)
    
    68 68
             assert metadata.stage == job.ExecuteStage.QUEUED.value
    
    69 69
             assert uuid.UUID(result.name, version=4)
    
    70 70
             assert result.done is False
    71
    -
    
    72
    -def _unpack_any(unpack_from, to):
    
    73
    -    any = any_pb2.Any()
    
    74
    -    any.CopyFrom(unpack_from)
    
    75
    -    any.Unpack(to)
    
    76
    -    return to

  • tests/integration/operations_service.py
    ... ... @@ -24,9 +24,10 @@ from grpc._server import _Context
    24 24
     from google.devtools.remoteexecution.v1test import remote_execution_pb2
    
    25 25
     from google.longrunning import operations_pb2
    
    26 26
     
    
    27
    -from buildgrid.server import scheduler
    
    27
    +from buildgrid.server import scheduler, job
    
    28 28
     from buildgrid.server.execution._exceptions import InvalidArgumentError
    
    29 29
     from buildgrid.server.execution import execution_instance, operations_service
    
    30
    +from google.protobuf import any_pb2
    
    30 31
     
    
    31 32
     # Can mock this
    
    32 33
     @pytest.fixture
    
    ... ... @@ -73,6 +74,34 @@ def test_get_operation_fail(instance, context):
    73 74
     
    
    74 75
         context.set_code.assert_called_once_with(grpc.StatusCode.INVALID_ARGUMENT)
    
    75 76
     
    
    77
    +def test_list_operations_result(instance, execute_request, context):
    
    78
    +    response_execute = instance._instance.execute(execute_request.action,
    
    79
    +                                                  execute_request.skip_cache_lookup)
    
    80
    +
    
    81
    +    action_result = remote_execution_pb2.ActionResult()
    
    82
    +    instance._instance._scheduler.jobs[response_execute.name].result = _pack_any(action_result)
    
    83
    +
    
    84
    +    request = operations_pb2.ListOperationsRequest()
    
    85
    +    response = instance.ListOperations(request, context)
    
    86
    +
    
    87
    +    assert response.operations[0].name == response_execute.name
    
    88
    +
    
    89
    +def test_list_operations(instance, execute_request, context):
    
    90
    +    response_execute = instance._instance.execute(execute_request.action,
    
    91
    +                                                  execute_request.skip_cache_lookup)
    
    92
    +
    
    93
    +    request = operations_pb2.ListOperationsRequest()
    
    94
    +    response = instance.ListOperations(request, context)
    
    95
    +
    
    96
    +    assert response.operations[0].name == response_execute.name
    
    97
    +
    
    98
    +def test_list_operations_empty(instance, context):
    
    99
    +    request = operations_pb2.ListOperationsRequest()
    
    100
    +
    
    101
    +    response = instance.ListOperations(request, context)
    
    102
    +
    
    103
    +    assert len(response.operations) is 0
    
    104
    +
    
    76 105
     # Send execution off, delete, try to find operation should fail
    
    77 106
     def test_delete_operation(instance, execute_request, context):
    
    78 107
         response_execute = instance._instance.execute(execute_request.action,
    
    ... ... @@ -97,3 +126,8 @@ def test_cancel_operation(instance, context):
    97 126
         instance.CancelOperation(request, context)
    
    98 127
     
    
    99 128
         context.set_code.assert_called_once_with(grpc.StatusCode.UNIMPLEMENTED)
    
    129
    +
    
    130
    +def _pack_any(pack):
    
    131
    +    any = any_pb2.Any()
    
    132
    +    any.Pack(pack)
    
    133
    +    return any



  • [Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]