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}]}
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}]}
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)
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)
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