Ejemplo n.º 1
0
async def test_resolver_with_nested_promise(server):
    server.send_message = AsyncMock()
    result = mock.Mock()
    inner = promise.Promise(lambda resolve, reject: resolve(2))
    outer = promise.Promise(lambda resolve, reject: resolve({'in': inner}))
    result.data = {"test": [1, outer]}
    result.errors = None
    await server.send_execution_result(connection_context=None,
                                       op_id=1,
                                       execution_result=result)
    assert server.send_message.called
    assert result.data == {'test': [1, {'in': 2}]}
Ejemplo n.º 2
0
async def test_resolver_with_nested_promise(server: TstServer):
    server.send_message = AsyncMock()
    context = AsyncMock(spec=base_async.BaseAsyncConnectionContext)
    result = mock.Mock()
    inner = promise.Promise(lambda resolve, reject: resolve(2))
    outer = promise.Promise(lambda resolve, reject: resolve({"in": inner}))
    result.data = {"test": [1, outer]}
    result.errors = None
    await server.send_execution_result(context,
                                       op_id=1,
                                       execution_result=result)
    assert server.send_message.called
    assert result.data == {"test": [1, {"in": 2}]}
Ejemplo n.º 3
0
    def process(self, item):
        if item[:4] == "MSG\x00":
            print item[4:] + "\n"

        elif item[:6] == "GFILE!":
            name, content = item[6:].split('\0', 1)
            with open("download{}{}".format(os.sep, name), "w") as f:
                f.write(content)

        elif item[:6] == "SFILE!":
            name, user = item[6:].split('!', 1)
            if os.path.isfile("download{}{}".format(os.sep, name)):
                with open("download{}{}".format(os.sep, name), 'r') as f:
                    msg = "GFILE!{}\0{}".format(name, f.read())
                self.outbox.append((user, msg))
            else:
                print "No file: download{}{}".format(os.sep, name)
                #Zwraca wyslanemu brak pliku. Outbox powinien informowac o braku pliku.
        #promises: local
        #deferred: remote
        elif item[:6] == "CPROM!":  #createPromise
            lang, executor, receiver, code = item[6:].split('\0', 3)
            digest = str(hash(item))
            self.environment["P" + digest] = promise.Promise(
                executor, lang, code)
            self.outbox.append(
                (executor, "RDEFR!{}\0{}\0{}\0".format(lang, receiver, digest,
                                                       code)))
        elif item[:6] == "RDEFR!":  #receiveDeferred
            lang, requester, digest, code = item[6:].split('\0', 3)
            dfr = deferred.Deferred(self.outbox, digest, requester, lang, code)
            self.environment["D" + digest] = dfr
        elif item[:6] == "RPROM!":  #receivePromise
            id, content = item[6:].split('\0', 1)
            self.environment["P" + id].fulfill(content)
Ejemplo n.º 4
0
def _get_promise_on_event(result=None, error=None):
  """Returns (event, Promise). Promise is fulfilled when `event.set()`."""
  event = threading.Event()
  def callback(resolve, reject):
    def inside():
      event.wait()
      if error is not None:
        reject(error)
      resolve(result)
    t = threading.Thread(target=inside)
    t.daemon = True
    t.start()
  return event, promise.Promise(callback)
Ejemplo n.º 5
0
def capture_grasp_marker(color=None):
    grasp_promise = promise.Promise()

    # Create subscriber to /move_group/display_grasp_markers
    def listen_for_grasp_markers(markers):
        # type: (visualization_msgs.msg.MarkerArray) -> ()
        for marker in markers.markers:
            if color is not None:
                marker.color = color
            else:
                marker.color = constants.GRASP_MARKER_COLOR

        grasp_marker_subscriber.unregister()
        grasp_promise.resolve(markers)

    grasp_marker_subscriber = rospy.Subscriber(
        '/move_group/display_grasp_markers',
        visualization_msgs.msg.MarkerArray, listen_for_grasp_markers)

    return grasp_promise
 def callback(*args, **kwargs):
     import promise
     attribute(*args, **kwargs)
     future = promise.Promise()
     self._futures.append(future)
     return future