diff --git a/ocaml/tests/suite.ml b/ocaml/tests/suite.ml index 113cc656e47..8366bd036c8 100644 --- a/ocaml/tests/suite.ml +++ b/ocaml/tests/suite.ml @@ -37,7 +37,6 @@ let base_suite = (* Test_ca121350.test; *) Test_dbsync_master.test; Test_pvs_cache_storage.test; - Test_sdn_controller.test; Test_extauth_plugin_ADpbis.test; Test_guest_agent.test; ] diff --git a/ocaml/tests/suite_alcotest.ml b/ocaml/tests/suite_alcotest.ml index 1619aa04072..ea4a8ad5b71 100644 --- a/ocaml/tests/suite_alcotest.ml +++ b/ocaml/tests/suite_alcotest.ml @@ -7,6 +7,7 @@ let () = Alcotest.run "Base suite" [ "Test_valid_ref_list", Test_valid_ref_list.test + ; "Test_sdn_controller", Test_sdn_controller.test ; "Test_pci_helpers", Test_pci_helpers.test ; "Test_vdi_allowed_operations", Test_vdi_allowed_operations.test ; "Test_vm_migrate", Test_vm_migrate.test diff --git a/ocaml/tests/test_sdn_controller.ml b/ocaml/tests/test_sdn_controller.ml index 2df514a8839..5415a4bf4ab 100644 --- a/ocaml/tests/test_sdn_controller.ml +++ b/ocaml/tests/test_sdn_controller.ml @@ -12,120 +12,132 @@ * GNU Lesser General Public License for more details. *) -open OUnit -open Test_common +module T = Test_common open Stdext.Unixext let test_sdn_controller_introduce_ok () = let protocol = `ssl in let address = "192.168.1.10" in let port = 6632L in - let __context = make_test_database () in + let __context = T.make_test_database () in let sdn_controller = Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port in - assert_equal protocol (Db.SDN_controller.get_protocol ~__context ~self:sdn_controller); - assert_equal address (Db.SDN_controller.get_address ~__context ~self:sdn_controller); - assert_equal port (Db.SDN_controller.get_port ~__context ~self:sdn_controller) + Alcotest.check (Alcotest_comparators.from_rpc_of_t API.rpc_of_sdn_controller_protocol) + "test protocol" + protocol + (Db.SDN_controller.get_protocol ~__context ~self:sdn_controller); + Alcotest.(check string) + "test address" + address + (Db.SDN_controller.get_address ~__context ~self:sdn_controller); + Alcotest.(check int64) + "test port" + port + (Db.SDN_controller.get_port ~__context ~self:sdn_controller) let test_sdn_controller_pssl_invalid_address () = let protocol = `pssl in let address = "192.168.1.10" in let port = 0L in - let __context = make_test_database () in - assert_raises_api_error - Api_errors.invalid_value - ~args:["address"; "192.168.1.10"] - (fun () -> Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port) + let __context = T.make_test_database () in + Alcotest.check_raises "test_sdn_controller_pssl_invalid_address" + Api_errors.(Server_error (invalid_value, ["address"; "192.168.1.10"])) + (fun () -> Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port |> ignore) let test_sdn_controller_pssl_invalid_port () = let protocol = `pssl in let address = "" in let port = 1L in - let __context = make_test_database () in - assert_raises_api_error - Api_errors.invalid_value - ~args:["port"; "1"] - (fun () -> Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port) + let __context = T.make_test_database () in + Alcotest.check_raises "test_sdn_controller_pssl_invalid_port" + Api_errors.(Server_error (invalid_value, ["port"; "1"])) + (fun () -> Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port |> ignore) let test_sdn_controller_ssl_default_port () = let protocol = `ssl in let address = "192.168.1.10" in let port = 0L in - let __context = make_test_database () in + let __context = T.make_test_database () in let sdn_controller = Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port in - assert_equal protocol (Db.SDN_controller.get_protocol ~__context ~self:sdn_controller); - assert_equal address (Db.SDN_controller.get_address ~__context ~self:sdn_controller); - assert_equal 6632L (Db.SDN_controller.get_port ~__context ~self:sdn_controller) + Alcotest.check (Alcotest_comparators.from_rpc_of_t API.rpc_of_sdn_controller_protocol) + "test protocol" + protocol + (Db.SDN_controller.get_protocol ~__context ~self:sdn_controller); + Alcotest.(check string) + "test address" + address + (Db.SDN_controller.get_address ~__context ~self:sdn_controller); + Alcotest.(check int64) + "test port" + 6632L + (Db.SDN_controller.get_port ~__context ~self:sdn_controller) let test_sdn_controller_ssl_invalid_ip_address () = let protocol = `ssl in let address = "192.168" in let port = 0L in - let __context = make_test_database () in - assert_raises_api_error - Api_errors.invalid_ip_address_specified - ~args:["address"] - (fun () -> Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port) + let __context = T.make_test_database () in + Alcotest.check_raises "test_sdn_controller_ssl_invalid_ip_address" + Api_errors.(Server_error (invalid_ip_address_specified, ["address"])) + (fun () -> Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port |> ignore) let test_sdn_controller_ssl_invalid_address_value () = let protocol = `ssl in let address = "" in let port = 0L in - let __context = make_test_database () in - assert_raises_api_error - Api_errors.invalid_value - ~args:["address"; ""] - (fun () -> Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port) + let __context = T.make_test_database () in + Alcotest.check_raises "test_sdn_controller_ssl_invalid_address_value" + Api_errors.(Server_error (invalid_value, ["address"; ""])) + (fun () -> Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port |> ignore) let test_sdn_controller_ssl_low_port () = let protocol = `ssl in let address = "192.168.1.10" in let port = -1L in - let __context = make_test_database () in - assert_raises_api_error - Api_errors.value_not_supported - ~args:["port"; "-1"; "Port out of range"] - (fun () -> Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port) + let __context = T.make_test_database () in + Alcotest.check_raises "test_sdn_controller_ssl_low_port" + Api_errors.(Server_error (value_not_supported, ["port"; "-1"; "Port out of range"])) + (fun () -> Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port |> ignore) let test_sdn_controller_ssl_high_port () = let protocol = `ssl in let address = "192.168.1.10" in let port = 65536L in - let __context = make_test_database () in - assert_raises_api_error - Api_errors.value_not_supported - ~args:["port"; "65536"; "Port out of range"] - (fun () -> Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port) + let __context = T.make_test_database () in + Alcotest.check_raises "test_sdn_controller_ssl_high_port" + Api_errors.(Server_error (value_not_supported, ["port"; "65536"; "Port out of range"])) + (fun () -> Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port |> ignore) let test_sdn_controller_introduce_twice () = let protocol = `ssl in let address = "192.168.1.10" in let port = 6632L in - let __context = make_test_database () in + let __context = T.make_test_database () in ignore (Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port); - assert_raises_api_error - Api_errors.operation_not_allowed - (fun () -> Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port) + Alcotest.check_raises "test_sdn_controller_introduce_twice" + Api_errors.(Server_error (operation_not_allowed, ["SDN controller has been configured. Please forget it first."])) + (fun () -> Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port |> ignore) let test_sdn_controller_forget_ok () = let protocol = `ssl in let address = "192.168.1.10" in let port = 6632L in - let __context = make_test_database () in + let __context = T.make_test_database () in let sdn_controller = Xapi_sdn_controller.db_introduce ~__context ~protocol ~address ~port in Db.SDN_controller.destroy ~__context ~self:sdn_controller; - assert_equal (Db.is_valid_ref __context sdn_controller) false + Alcotest.(check bool) + "test_sdn_controller_forget_ok" + false + (Db.is_valid_ref __context sdn_controller) let test = - "test_sdn_controller" >::: - [ - "test_sdn_controller_introduce_ok" >:: test_sdn_controller_introduce_ok; - "test_sdn_controller_pssl_invalid_address" >:: test_sdn_controller_pssl_invalid_address; - "test_sdn_controller_pssl_invalid_port" >:: test_sdn_controller_pssl_invalid_port; - "test_sdn_controller_ssl_default_port" >:: test_sdn_controller_ssl_default_port; - "test_sdn_controller_ssl_invalid_ip_address" >:: test_sdn_controller_ssl_invalid_ip_address; - "test_sdn_controller_ssl_invalid_address_value" >:: test_sdn_controller_ssl_invalid_address_value; - "test_sdn_controller_ssl_low_port" >:: test_sdn_controller_ssl_low_port; - "test_sdn_controller_ssl_high_port" >:: test_sdn_controller_ssl_high_port; - "test_sdn_controller_introduce_twice" >:: test_sdn_controller_introduce_twice; - "test_sdn_controller_forget_ok" >:: test_sdn_controller_forget_ok; + [ "test_sdn_controller_introduce_ok", `Quick, test_sdn_controller_introduce_ok + ; "test_sdn_controller_pssl_invalid_address", `Quick, test_sdn_controller_pssl_invalid_address + ; "test_sdn_controller_pssl_invalid_port", `Quick, test_sdn_controller_pssl_invalid_port + ; "test_sdn_controller_ssl_default_port", `Quick, test_sdn_controller_ssl_default_port + ; "test_sdn_controller_ssl_invalid_ip_address", `Quick, test_sdn_controller_ssl_invalid_ip_address + ; "test_sdn_controller_ssl_invalid_address_value", `Quick, test_sdn_controller_ssl_invalid_address_value + ; "test_sdn_controller_ssl_low_port", `Quick, test_sdn_controller_ssl_low_port + ; "test_sdn_controller_ssl_high_port", `Quick, test_sdn_controller_ssl_high_port + ; "test_sdn_controller_introduce_twice", `Quick, test_sdn_controller_introduce_twice + ; "test_sdn_controller_forget_ok", `Quick, test_sdn_controller_forget_ok ]