X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=tests%2Ftest_sdl.py;fp=tests%2Ftest_sdl.py;h=06c17c2cfdfcefd1c1e33f05bf8b0c73b5c92989;hb=da91199662c2d6d871f21d6d597df39545d26be1;hp=c40960ae6b568703804259133540b84f304a6b2a;hpb=fbac125691a8c415e6ffaac648f96ce235986b0b;p=ric-plt%2Fxapp-frame-py.git diff --git a/tests/test_sdl.py b/tests/test_sdl.py index c40960a..06c17c2 100644 --- a/tests/test_sdl.py +++ b/tests/test_sdl.py @@ -17,7 +17,7 @@ """ tests data functions """ - +import time from ricxappframe.xapp_sdl import SDLWrapper @@ -51,3 +51,187 @@ def test_sdl(): assert sdl.find_and_get(NS, "as.df") == {} assert sdl.find_and_get(NS, "") == {} + + +def test_sdl_set_get(): + """ + test set, get realted sdl methods + """ + sdl = SDLWrapper(use_fake_sdl=True) + + # set_if + sdl.set(NS, "gs.df1", "old") + assert sdl.get(NS, "gs.df1") == "old" + + sdl.set_if(NS, "gs.df1", "young", "new") + assert sdl.get(NS, "gs.df1") == "old" + + sdl.set_if(NS, "gs.df1", "old", "new") + assert sdl.get(NS, "gs.df1") == "new" + + # set_if_not_exists + sdl.set(NS, "gs.df2", "old") + assert sdl.get(NS, "gs.df2") == "old" + + sdl.set_if_not_exists(NS, "gs.df2", "new") + assert sdl.get(NS, "gs.df2") == "old" + + sdl.set_if_not_exists(NS, "gs.df3", "new") + assert sdl.get(NS, "gs.df3") == "new" + + # find_keys + assert sdl.find_keys(NS, "gs") == ["gs.df1", "gs.df2", "gs.df3"] + assert sdl.find_keys(NS, "gs.df1") == ["gs.df1"] + assert sdl.find_keys(NS, "gs.df2") == ["gs.df2"] + assert sdl.find_keys(NS, "gs.df3") == ["gs.df3"] + + # delete_if + sdl.set(NS, "gs.df4", "delete_this") + + assert sdl.delete_if(NS, "gs.df4", "delete") is False + assert sdl.delete_if(NS, "gs.df4", "delete_this") is True + assert sdl.get(NS, "gs.df4") is None + + +def test_sdl_member(): + """ + test member related sdl methods + """ + # add_member, remove_member, get_members + sdl = SDLWrapper(use_fake_sdl=True) + + sdl.add_member(NS, "group1", "member1") + assert sdl.is_member(NS, "group1", "member1") is True + + sdl.remove_member(NS, "group1", "not_member") + assert sdl.is_member(NS, "group1", "member1") is True + + sdl.remove_member(NS, "group1", "member1") + assert sdl.is_member(NS, "group1", "member1") is False + + # remove_group, group_size + sdl.add_member(NS, "group2", "member1") + sdl.add_member(NS, "group2", "member2") + assert sdl.group_size(NS, "group2") == 2 + sdl.remove_group(NS, "group2") + assert sdl.group_size(NS, "group2") == 0 + + # get_members + sdl.add_member(NS, "group3", "member1") + sdl.add_member(NS, "group3", "member2") + members = sdl.get_members(NS, "group3") + assert "member1" in members + assert "member2" in members + + +def test_sdl_set_and_publish_with_handle_events(): + """ + test set_and_publish* related sdl methods + """ + CH = "channel" + EVENT = "event" + CALLED = None + + def cb(channel, event): + nonlocal CH + nonlocal EVENT + nonlocal CALLED + # test is cb called + CALLED = True + assert channel == CH + assert event == EVENT + + sdl = SDLWrapper(use_fake_sdl=True) + sdl.subscribe_channel(NS, cb, "channel") + + # set_and_publish + CALLED = False + sdl.set_and_publish(NS, "channel", "event", "nt.df1", "old") + sdl.handle_events() + assert sdl.get(NS, "nt.df1") == "old" + assert CALLED is True + + # set_if_and_publish fail + CALLED = False + sdl.set_if_and_publish(NS, "channel", "event", "nt.df1", "young", "new") + sdl.handle_events() + assert sdl.get(NS, "nt.df1") == "old" + assert CALLED is False + # set_if_and_publish success + sdl.set_if_and_publish(NS, "channel", "event", "nt.df1", "old", "new") + sdl.handle_events() + assert sdl.get(NS, "nt.df1") == "new" + assert CALLED is True + + # set_if_not_exists_and_publish fail + CALLED = False + sdl.set_if_not_exists_and_publish(NS, "channel", "event", "nt.df1", "latest") + sdl.handle_events() + assert sdl.get(NS, "nt.df1") == "new" + assert CALLED is False + # set_if_not_exists_and_publish success + sdl.set_if_not_exists_and_publish( + NS, "channel", "event", "nt.df2", "latest") + sdl.handle_events() + assert sdl.get(NS, "nt.df2") == "latest" + assert CALLED is True + + sdl.unsubscribe_channel(NS, "channel") + + +def test_sdl_remove_and_publish_with_start_event_listener(): + """ + test remove_and_publish* related sdl methods + """ + CH = "channel" + EVENT = "event" + CALLED = None + + def cb(channel, event): + nonlocal CH + nonlocal EVENT + nonlocal CALLED + CALLED = True + assert channel == CH + assert event == EVENT + + sdl = SDLWrapper(use_fake_sdl=True) + sdl.subscribe_channel(NS, cb, "channel") + sdl.start_event_listener() + + # remove_and_publish success + CALLED = False + sdl.set(NS, "nt.df1", "old") + sdl.remove_and_publish(NS, "channel", "event", "nt.df1") + time.sleep(0.3) + assert sdl.get(NS, "nt.df1") is None + assert CALLED is True + + # remove_if_and_publish + CALLED = False + sdl.set(NS, "nt.df1", "old") + # fail + sdl.remove_if_and_publish(NS, "channel", "event", "nt.df1", "new") + time.sleep(0.3) + assert sdl.get(NS, "nt.df1") == "old" + assert CALLED is False + # success + sdl.remove_if_and_publish(NS, "channel", "event", "nt.df1", "old") + time.sleep(0.3) + assert sdl.get(NS, "nt.df1") is None + assert CALLED is True + + # remove_all_and_publish + CALLED = False + sdl.set(NS, "nt.df1", "data1") + sdl.set(NS, "nt.df2", "data2") + sdl.set(NS, "nt.df3", "data3") + sdl.remove_all_and_publish(NS, "channel", "event") + time.sleep(0.3) + assert sdl.get(NS, "nt.df1") is None + assert sdl.get(NS, "nt.df2") is None + assert sdl.get(NS, "nt.df3") is None + assert sdl.find_keys(NS, "*") == [] + assert CALLED is True + + sdl.unsubscribe_channel(NS, "channel")