X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=tests%2Ftest_controller.py;h=33f14474cffa8ea12c10ff4d483342bae85bf8c7;hb=f87c8579c3ed3e2dbf531c4c4c7e3b15489c7bdb;hp=88d6f70c6d9ecdd0b447655682e35fd7c003651e;hpb=bfa46147cce23a46a49fb53dfae8a790b0fe34e4;p=ric-plt%2Fa1.git diff --git a/tests/test_controller.py b/tests/test_controller.py index 88d6f70..33f1447 100644 --- a/tests/test_controller.py +++ b/tests/test_controller.py @@ -76,6 +76,13 @@ def _test_put_patch(monkeypatch): rmr_mocks.patch_rmr(monkeypatch) monkeypatch.setattr("rmr.rmr.rmr_send_msg", rmr_mocks.send_mock_generator(0)) # good sends for this whole batch + # we need this because free expects a real sbuf + # TODO: move this into rmr_mocks + def noop(_sbuf): + pass + + monkeypatch.setattr("rmr.rmr.rmr_free_msg", noop) + # we need to repatch alloc (already patched in patch_rmr) to fix the transactionid, alloc is called in send and recieve def fake_alloc(_unused, _alsounused): sbuf = rmr_mocks.Rmr_mbuf_t() @@ -94,7 +101,7 @@ def _test_put_patch(monkeypatch): # Actual Tests -def test_xapp_put_good(client, monkeypatch, adm_type_good, adm_instance_good): +def test_workflow(client, monkeypatch, adm_type_good, adm_instance_good): """ test policy put good""" # no type there yet @@ -136,6 +143,8 @@ def test_xapp_put_good(client, monkeypatch, adm_type_good, adm_instance_good): # create a good instance _test_put_patch(monkeypatch) + # assert that rmr bad states don't cause problems + monkeypatch.setattr("rmr.rmr.rmr_send_msg", rmr_mocks.send_mock_generator(10)) res = client.put(ADM_CTRL_INSTANCE, json=adm_instance_good) assert res.status_code == 202 @@ -163,6 +172,10 @@ def test_xapp_put_good(client, monkeypatch, adm_type_good, adm_instance_good): monkeypatch.setattr("a1.a1rmr.dequeue_all_waiting_messages", _fake_dequeue) get_instance_good("IN EFFECT") + # cant delete type until there are no instances + res = client.delete(ADM_CTRL_TYPE) + assert res.status_code == 400 + # delete it res = client.delete(ADM_CTRL_INSTANCE) assert res.status_code == 202 @@ -179,42 +192,31 @@ def test_xapp_put_good(client, monkeypatch, adm_type_good, adm_instance_good): assert res.status_code == 404 res = client.get(ADM_CTRL_INSTANCE) # cant get instance assert res.status_code == 404 + # list still 200 but no instance res = client.get(ADM_CTRL_POLICIES) assert res.status_code == 200 assert res.json == [] + # delete the type + res = client.delete(ADM_CTRL_TYPE) + assert res.status_code == 204 -def test_xapp_put_good_bad_rmr(client, monkeypatch, adm_instance_good): - """ - assert that rmr bad states don't cause problems - """ - _test_put_patch(monkeypatch) - monkeypatch.setattr("rmr.rmr.rmr_send_msg", rmr_mocks.send_mock_generator(10)) - res = client.put(ADM_CTRL_INSTANCE, json=adm_instance_good) - assert res.status_code == 202 - - monkeypatch.setattr("rmr.rmr.rmr_send_msg", rmr_mocks.send_mock_generator(5)) - res = client.put(ADM_CTRL_INSTANCE, json=adm_instance_good) - assert res.status_code == 202 + # cant touch this + res = client.get(ADM_CTRL_TYPE) + assert res.status_code == 404 + res = client.delete(ADM_CTRL_TYPE) + assert res.status_code == 404 def test_bad_instances(client, monkeypatch, adm_type_good): """ - Test bad send failures + test various failure modes """ + # put the type (needed for some of the tests below) rmr_mocks.patch_rmr(monkeypatch) - - # TODO: reenable this after delete! - # put the type - # res = client.put(ADM_CTRL_TYPE, json=adm_type_good) - # assert res.status_code == 201 - - # illegal type range - res = client.put("/a1-p/policytypes/19999", json=adm_type_good) - assert res.status_code == 400 - res = client.put("/a1-p/policytypes/21024", json=adm_type_good) - assert res.status_code == 400 + res = client.put(ADM_CTRL_TYPE, json=adm_type_good) + assert res.status_code == 201 # bad body res = client.put(ADM_CTRL_INSTANCE, json={"not": "expected"}) @@ -224,6 +226,29 @@ def test_bad_instances(client, monkeypatch, adm_type_good): res = client.put(ADM_CTRL_INSTANCE, data="notajson") assert res.status_code == 415 + # delete a non existent instance + res = client.delete(ADM_CTRL_INSTANCE + "DARKNESS") + assert res.status_code == 404 + + # get a non existent instance + monkeypatch.setattr("a1.a1rmr.dequeue_all_waiting_messages", _fake_dequeue) + res = client.get(ADM_CTRL_INSTANCE + "DARKNESS") + assert res.status_code == 404 + + # delete the type (as cleanup) + res = client.delete(ADM_CTRL_TYPE) + assert res.status_code == 204 + + +def test_illegal_types(client, monkeypatch, adm_type_good): + """ + Test illegal types + """ + res = client.put("/a1-p/policytypes/19999", json=adm_type_good) + assert res.status_code == 400 + res = client.put("/a1-p/policytypes/21024", json=adm_type_good) + assert res.status_code == 400 + def test_healthcheck(client): """