From 736ee3586f420c67afafe76db584e79e2933402a Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sat, 18 Feb 2017 09:46:14 +0000 Subject: [PATCH] generator: Move test APIs to new module. --- generator/Makefile.am | 3 + generator/actions.ml | 160 +----------------------- generator/actions_internal_tests.ml | 176 +++++++++++++++++++++++++++ generator/actions_internal_tests.mli | 25 ++++ 4 files changed, 209 insertions(+), 155 deletions(-) create mode 100644 generator/actions_internal_tests.ml create mode 100644 generator/actions_internal_tests.mli diff --git a/generator/Makefile.am b/generator/Makefile.am index 346ddb1a1..03f01c032 100644 --- a/generator/Makefile.am +++ b/generator/Makefile.am @@ -21,6 +21,8 @@ include $(top_srcdir)/subdir-rules.mk sources = \ actions.ml \ actions.mli \ + actions_internal_tests.ml \ + actions_internal_tests.mli \ bindtests.ml \ bindtests.mli \ c.ml \ @@ -92,6 +94,7 @@ objects = \ common_utils.cmo \ types.cmo \ utils.cmo \ + actions_internal_tests.cmo \ actions.cmo \ structs.cmo \ optgroups.cmo \ diff --git a/generator/actions.ml b/generator/actions.ml index 4418e4874..2c4e3d563 100644 --- a/generator/actions.ml +++ b/generator/actions.ml @@ -22,165 +22,14 @@ open Common_utils open Types open Utils -(* These test functions are used in the language binding tests. *) - -let test_all_args = [ - String "str"; - OptString "optstr"; - StringList "strlist"; - Bool "b"; - Int "integer"; - Int64 "integer64"; - FileIn "filein"; - FileOut "fileout"; - BufferIn "bufferin"; -] - -let test_all_optargs = [ - OBool "obool"; - OInt "oint"; - OInt64 "oint64"; - OString "ostring"; - OStringList "ostringlist"; -] - -let test_all_rets = [ - (* except for RErr, which is tested thoroughly elsewhere *) - "internal_test_rint", RInt "valout"; - "internal_test_rint64", RInt64 "valout"; - "internal_test_rbool", RBool "valout"; - "internal_test_rconststring", RConstString "valout"; - "internal_test_rconstoptstring", RConstOptString "valout"; - "internal_test_rstring", RString "valout"; - "internal_test_rstringlist", RStringList "valout"; - "internal_test_rstruct", RStruct ("valout", "lvm_pv"); - "internal_test_rstructlist", RStructList ("valout", "lvm_pv"); - "internal_test_rhashtable", RHashtable "valout"; - "internal_test_rbufferout", RBufferOut "valout"; -] - -let test_functions = [ - { defaults with - name = "internal_test"; - style = RErr, test_all_args, test_all_optargs; - visibility = VBindTest; cancellable = true; - blocking = false; - shortdesc = "internal test function - do not use"; - longdesc = "\ -This is an internal test function which is used to test whether -the automatically generated bindings can handle every possible -parameter type correctly. - -It echos the contents of each parameter to stdout (by default) -or to a file (if C was called). - -You probably don't want to call this function." }; - - { defaults with - name = "internal_test_only_optargs"; - style = RErr, [], [OInt "test"]; - visibility = VBindTest; cancellable = true; - blocking = false; - shortdesc = "internal test function - do not use"; - longdesc = "\ -This is an internal test function which is used to test whether -the automatically generated bindings can handle no args, some -optargs correctly. - -It echos the contents of each parameter to stdout (by default) -or to a file (if C was called). - -You probably don't want to call this function." }; - - { defaults with - name = "internal_test_63_optargs"; - style = RErr, [], [OInt "opt1"; OInt "opt2"; OInt "opt3"; OInt "opt4"; OInt "opt5"; OInt "opt6"; OInt "opt7"; OInt "opt8"; OInt "opt9"; OInt "opt10"; OInt "opt11"; OInt "opt12"; OInt "opt13"; OInt "opt14"; OInt "opt15"; OInt "opt16"; OInt "opt17"; OInt "opt18"; OInt "opt19"; OInt "opt20"; OInt "opt21"; OInt "opt22"; OInt "opt23"; OInt "opt24"; OInt "opt25"; OInt "opt26"; OInt "opt27"; OInt "opt28"; OInt "opt29"; OInt "opt30"; OInt "opt31"; OInt "opt32"; OInt "opt33"; OInt "opt34"; OInt "opt35"; OInt "opt36"; OInt "opt37"; OInt "opt38"; OInt "opt39"; OInt "opt40"; OInt "opt41"; OInt "opt42"; OInt "opt43"; OInt "opt44"; OInt "opt45"; OInt "opt46"; OInt "opt47"; OInt "opt48"; OInt "opt49"; OInt "opt50"; OInt "opt51"; OInt "opt52"; OInt "opt53"; OInt "opt54"; OInt "opt55"; OInt "opt56"; OInt "opt57"; OInt "opt58"; OInt "opt59"; OInt "opt60"; OInt "opt61"; OInt "opt62"; OInt "opt63"]; - visibility = VBindTest; cancellable = true; - blocking = false; - shortdesc = "internal test function - do not use"; - longdesc = "\ -This is an internal test function which is used to test whether -the automatically generated bindings can handle the full range -of 63 optargs correctly. (Note that 63 is not an absolute limit -and it could be raised by changing the XDR protocol). - -It echos the contents of each parameter to stdout (by default) -or to a file (if C was called). - -You probably don't want to call this function." } - -] @ List.flatten ( - List.map ( - fun (name, ret) -> [ - { defaults with - name = name; - style = ret, [String "val"], []; - visibility = VBindTest; - blocking = false; - shortdesc = "internal test function - do not use"; - longdesc = "\ -This is an internal test function which is used to test whether -the automatically generated bindings can handle every possible -return type correctly. - -It converts string C to the return type. - -You probably don't want to call this function." }; - { defaults with - name = name ^ "err"; - style = ret, [], []; - visibility = VBindTest; - blocking = false; - shortdesc = "internal test function - do not use"; - longdesc = "\ -This is an internal test function which is used to test whether -the automatically generated bindings can handle every possible -return type correctly. - -This function always returns an error. - -You probably don't want to call this function." } - ] - ) test_all_rets -) - (* non_daemon_functions are any functions which don't get processed * in the daemon, eg. functions for setting and getting local * configuration values. *) -let non_daemon_functions = test_functions @ [ - { defaults with - name = "internal_test_set_output"; - style = RErr, [String "filename"], []; - visibility = VBindTest; - blocking = false; - shortdesc = "internal test function - do not use"; - longdesc = "\ -This is an internal test function which is used to test whether -the automatically generated bindings can handle every possible -parameter type correctly. - -It sets the output file used by C. - -You probably don't want to call this function." }; - - { defaults with - name = "internal_test_close_output"; - style = RErr, [], []; - visibility = VBindTest; - blocking = false; - shortdesc = "internal test function - do not use"; - longdesc = "\ -This is an internal test function which is used to test whether -the automatically generated bindings can handle every possible -parameter type correctly. - -It closes the output file previously opened by -C. - -You probably don't want to call this function." }; - +let non_daemon_functions = + Actions_internal_tests.test_functions @ + Actions_internal_tests.test_support_functions @ [ { defaults with name = "launch"; added = (0, 0, 3); style = RErr, [], []; @@ -13646,7 +13495,8 @@ let test_functions, non_daemon_functions, daemon_functions = ^ "_OPTS"; non_c_aliases = [ f.name ^ "_opts" ] } in - let test_functions = List.map make_c_function test_functions in + let test_functions = + List.map make_c_function Actions_internal_tests.test_functions in let non_daemon_functions = List.map make_c_function non_daemon_functions in let daemon_functions = List.map make_c_function daemon_functions in test_functions, non_daemon_functions, daemon_functions diff --git a/generator/actions_internal_tests.ml b/generator/actions_internal_tests.ml new file mode 100644 index 000000000..18d56bbfa --- /dev/null +++ b/generator/actions_internal_tests.ml @@ -0,0 +1,176 @@ +(* libguestfs + * Copyright (C) 2009-2017 Red Hat Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + *) + +(* Please read generator/README first. *) + +open Types + +(* These test functions are used in the language binding tests. *) + +let test_all_args = [ + String "str"; + OptString "optstr"; + StringList "strlist"; + Bool "b"; + Int "integer"; + Int64 "integer64"; + FileIn "filein"; + FileOut "fileout"; + BufferIn "bufferin"; +] + +let test_all_optargs = [ + OBool "obool"; + OInt "oint"; + OInt64 "oint64"; + OString "ostring"; + OStringList "ostringlist"; +] + +let test_all_rets = [ + (* except for RErr, which is tested thoroughly elsewhere *) + "internal_test_rint", RInt "valout"; + "internal_test_rint64", RInt64 "valout"; + "internal_test_rbool", RBool "valout"; + "internal_test_rconststring", RConstString "valout"; + "internal_test_rconstoptstring", RConstOptString "valout"; + "internal_test_rstring", RString "valout"; + "internal_test_rstringlist", RStringList "valout"; + "internal_test_rstruct", RStruct ("valout", "lvm_pv"); + "internal_test_rstructlist", RStructList ("valout", "lvm_pv"); + "internal_test_rhashtable", RHashtable "valout"; + "internal_test_rbufferout", RBufferOut "valout"; +] + +let test_functions = [ + { defaults with + name = "internal_test"; + style = RErr, test_all_args, test_all_optargs; + visibility = VBindTest; cancellable = true; + blocking = false; + shortdesc = "internal test function - do not use"; + longdesc = "\ +This is an internal test function which is used to test whether +the automatically generated bindings can handle every possible +parameter type correctly. + +It echos the contents of each parameter to stdout (by default) +or to a file (if C was called). + +You probably don't want to call this function." }; + + { defaults with + name = "internal_test_only_optargs"; + style = RErr, [], [OInt "test"]; + visibility = VBindTest; cancellable = true; + blocking = false; + shortdesc = "internal test function - do not use"; + longdesc = "\ +This is an internal test function which is used to test whether +the automatically generated bindings can handle no args, some +optargs correctly. + +It echos the contents of each parameter to stdout (by default) +or to a file (if C was called). + +You probably don't want to call this function." }; + + { defaults with + name = "internal_test_63_optargs"; + style = RErr, [], [OInt "opt1"; OInt "opt2"; OInt "opt3"; OInt "opt4"; OInt "opt5"; OInt "opt6"; OInt "opt7"; OInt "opt8"; OInt "opt9"; OInt "opt10"; OInt "opt11"; OInt "opt12"; OInt "opt13"; OInt "opt14"; OInt "opt15"; OInt "opt16"; OInt "opt17"; OInt "opt18"; OInt "opt19"; OInt "opt20"; OInt "opt21"; OInt "opt22"; OInt "opt23"; OInt "opt24"; OInt "opt25"; OInt "opt26"; OInt "opt27"; OInt "opt28"; OInt "opt29"; OInt "opt30"; OInt "opt31"; OInt "opt32"; OInt "opt33"; OInt "opt34"; OInt "opt35"; OInt "opt36"; OInt "opt37"; OInt "opt38"; OInt "opt39"; OInt "opt40"; OInt "opt41"; OInt "opt42"; OInt "opt43"; OInt "opt44"; OInt "opt45"; OInt "opt46"; OInt "opt47"; OInt "opt48"; OInt "opt49"; OInt "opt50"; OInt "opt51"; OInt "opt52"; OInt "opt53"; OInt "opt54"; OInt "opt55"; OInt "opt56"; OInt "opt57"; OInt "opt58"; OInt "opt59"; OInt "opt60"; OInt "opt61"; OInt "opt62"; OInt "opt63"]; + visibility = VBindTest; cancellable = true; + blocking = false; + shortdesc = "internal test function - do not use"; + longdesc = "\ +This is an internal test function which is used to test whether +the automatically generated bindings can handle the full range +of 63 optargs correctly. (Note that 63 is not an absolute limit +and it could be raised by changing the XDR protocol). + +It echos the contents of each parameter to stdout (by default) +or to a file (if C was called). + +You probably don't want to call this function." } + +] @ List.flatten ( + List.map ( + fun (name, ret) -> [ + { defaults with + name = name; + style = ret, [String "val"], []; + visibility = VBindTest; + blocking = false; + shortdesc = "internal test function - do not use"; + longdesc = "\ +This is an internal test function which is used to test whether +the automatically generated bindings can handle every possible +return type correctly. + +It converts string C to the return type. + +You probably don't want to call this function." }; + { defaults with + name = name ^ "err"; + style = ret, [], []; + visibility = VBindTest; + blocking = false; + shortdesc = "internal test function - do not use"; + longdesc = "\ +This is an internal test function which is used to test whether +the automatically generated bindings can handle every possible +return type correctly. + +This function always returns an error. + +You probably don't want to call this function." } + ] + ) test_all_rets +) + +let test_support_functions = [ + { defaults with + name = "internal_test_set_output"; + style = RErr, [String "filename"], []; + visibility = VBindTest; + blocking = false; + shortdesc = "internal test function - do not use"; + longdesc = "\ +This is an internal test function which is used to test whether +the automatically generated bindings can handle every possible +parameter type correctly. + +It sets the output file used by C. + +You probably don't want to call this function." }; + + { defaults with + name = "internal_test_close_output"; + style = RErr, [], []; + visibility = VBindTest; + blocking = false; + shortdesc = "internal test function - do not use"; + longdesc = "\ +This is an internal test function which is used to test whether +the automatically generated bindings can handle every possible +parameter type correctly. + +It closes the output file previously opened by +C. + +You probably don't want to call this function." }; +] diff --git a/generator/actions_internal_tests.mli b/generator/actions_internal_tests.mli new file mode 100644 index 000000000..ca9d41205 --- /dev/null +++ b/generator/actions_internal_tests.mli @@ -0,0 +1,25 @@ +(* libguestfs + * Copyright (C) 2009-2017 Red Hat Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + *) + +(* Please read generator/README first. *) + +val test_functions : Types.action list +(** Internal test functions used to test the language bindings. *) + +val test_support_functions : Types.action list +(** Internal support functions. *)