Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion ocaml/tests/suite.ml
Original file line number Diff line number Diff line change
Expand Up @@ -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;
]
Expand Down
1 change: 1 addition & 0 deletions ocaml/tests/suite_alcotest.ml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
128 changes: 70 additions & 58 deletions ocaml/tests/test_sdn_controller.ml
Original file line number Diff line number Diff line change
Expand Up @@ -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
]