def test_coroutine(): wot_01 = yield servient_01.start() wot_02 = yield servient_02.start() wot_01.produce(ThingFragment(TD_DICT_01)).expose() wot_01.produce(ThingFragment(TD_DICT_02)).expose() thing_filter = ThingFilterDict(method=DiscoveryMethod.MULTICAST) observable = wot_02.discover(thing_filter, dnssd_find_kwargs={ "min_results": 1, "timeout": 5 }) subscription = observable.subscribe( on_next=lambda td_str: found.append(ThingDescription(td_str) ) or resolve()) yield future_done assert_equal_td_sequences(found, [TD_DICT_01, TD_DICT_02]) subscription.dispose() yield servient_01.shutdown() yield servient_02.shutdown()
def test_coroutine(): wot = yield servient.start() with warnings.catch_warnings(record=True) as warns: wot.discover(ThingFilterDict(method=DiscoveryMethod.MULTICAST)) assert len(warns) yield servient.shutdown()
def test_discovery_fragment(): """The Thing filter fragment attribute enables discovering Things by matching TD fields.""" servient = Servient(dnssd_enabled=False) wot = WoT(servient=servient) wot.produce(ThingFragment(TD_DICT_01)) wot.produce(ThingFragment(TD_DICT_02)) def first(thing_filter): """Returns the first TD discovery for the given Thing filter.""" future_done, found = tornado.concurrent.Future(), [] def resolve(): not future_done.done() and future_done.set_result(True) @tornado.gen.coroutine def discover_first(): observable = wot.discover(thing_filter) subscription = observable.subscribe( on_next=lambda td_str: found.append(ThingDescription(td_str) ) or resolve()) yield future_done subscription.dispose() assert len(found) raise tornado.gen.Return(found[0]) return tornado.ioloop.IOLoop.current().run_sync( discover_first, timeout=TIMEOUT_DISCOVER) fragment_td_pairs = [({ "name": TD_DICT_01.get("name") }, TD_DICT_01), ({ "version": { "instance": "2.0.0" } }, TD_DICT_02), ({ "id": TD_DICT_02.get("id") }, TD_DICT_02), ({ "security": [{ "scheme": "psk" }] }, TD_DICT_01)] for fragment, td_expected in fragment_td_pairs: td_found = first( ThingFilterDict(method=DiscoveryMethod.LOCAL, fragment=fragment)) assert_equal_tds(td_found, td_expected)
def test_coroutine(): thing_filter = ThingFilterDict(method=DiscoveryMethod.LOCAL) observable = wot.discover(thing_filter) subscription = observable.subscribe( on_next=lambda td_str: found.append(ThingDescription(td_str) ) or resolve()) yield future_done assert_equal_td_sequences(found, [TD_DICT_01, TD_DICT_02]) subscription.dispose()