]> xenbits.xensource.com Git - xenclient/toolstack.git/commitdiff
test codegen for param-less rpcs
authorPrashanth Mundkur <prashanth.mundkur@citrix.com>
Fri, 15 May 2009 00:31:49 +0000 (17:31 -0700)
committerPrashanth Mundkur <prashanth.mundkur@citrix.com>
Fri, 15 May 2009 00:31:49 +0000 (17:31 -0700)
gen/rpc/tests/rpc_defns.json
gen/rpc/tests/test_rpc.ml

index 0b257f688362b4dbdfd58ae7ea840810646e85c4..1e9d1fd2a45d32a35ab11874651ee0a0088aa8c3 100644 (file)
@@ -5,6 +5,29 @@
   "server_error_handler": "server_error_handler"
 }
 
+{ "rpc_type": "rpc",
+  "rpc_server": "server",
+  "rpc_doc": "documentation",
+  "rpc_version": "string",
+
+  "rpc_request": { "request_name": "request0",
+                  "request_doc": "documentation",
+                  "request_handler": "request0_handler",
+                  "request_params": []
+                },
+
+  "rpc_response": { "response_doc": "documentation",
+                    "response_handler": "response0_handler",
+                    "response_value": { "param_name": "resp1",
+                                       "param_doc": "documentation",
+                                       "param_type": "resp1_type"
+                                     }
+                 },
+
+  "rpc_deprecated": "string",
+  "rpc_label_arguments": false
+}
+
 { "rpc_type": "rpc",
   "rpc_server": "server",
   "rpc_doc": "documentation",
index ce116e9908a4861423cfd19c40eef24265c50b7e..378e66a1dccc41856e3f41c26e9e451f7fb14bfb 100644 (file)
@@ -19,6 +19,8 @@ module C = Make_server_client (I)
 
 (* Finally, implement the server-side call dispatch structure. *)
 module S = struct
+       let req0_handler () = Some true
+
        let req1_handler arg1 =
                if arg1 < 5 then None
                else if arg1 < 10 then Some false
@@ -38,7 +40,8 @@ module S = struct
                2, Printexc.to_string e, Some (Json.String "details")
 
        let server_impl =
-               { Server.request1_handler = req1_handler;
+               { Server.request0_handler = req0_handler;
+                 Server.request1_handler = req1_handler;
                  Server.request2_handler = req2_handler;
                  Server.not1_handler = not1_handler;
                  Server.server_error_handler = error_handler
@@ -134,6 +137,20 @@ let test_invoke req ?(id_check=default_id_check) ?(error_check=default_error_che
        rpc_invoke req resp_fun
 
 let test_server () =
+       let req0_checker test_id () =
+               let req = C.jrpc_request0 () in
+               let exp_resp = S.req0_handler () in
+               let resp_to_str r = match r with |None -> "None" | Some b -> if b then "Some true" else "Some false" in
+               let resp_checker r =
+                       let got_resp = resp1_type_of_json r in
+                       if got_resp <> exp_resp
+                       then raise (Failure (Printf.sprintf "req1, test %s: got \"%s\", expected \"%s\"!"
+                                              test_id (resp_to_str got_resp) (resp_to_str exp_resp)))
+               in
+               test_invoke req resp_checker
+       in
+       req0_checker "1" ();
+
        let req1_checker test_id arg1 =
                let req = C.jrpc_request1 arg1 in
                let exp_resp = S.req1_handler arg1 in