From 7439724ac391616a9cf544e21bfbf7c6fd8a4a92 Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Mon, 27 Jun 2016 13:25:48 +1000 Subject: Add a services base test. --- libbsd.py | 117 +++++++++++++++-------------- libbsd_waf.py | 10 +++ testsuite/rcconf02/test_main.c | 167 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 236 insertions(+), 58 deletions(-) create mode 100644 testsuite/rcconf02/test_main.c diff --git a/libbsd.py b/libbsd.py index d2659c4f..bbd56f6f 100755 --- a/libbsd.py +++ b/libbsd.py @@ -46,7 +46,7 @@ def rtems_version(): def rtems(mm): mod = builder.Module('rtems') mod.addRTEMSSourceFiles( - [ + [ 'local/bus_if.c', 'local/cryptodev_if.c', 'local/device_if.c', @@ -146,7 +146,7 @@ def rtems(mm): 'telnetd/telnetd.c', 'sys/dev/tsec/if_tsec_nexus.c', ], - mm.generator['source']() + mm.generator['source']() ) mod.addFile(mm.generator['file']('rtems/rtems-kernel-kvm-symbols.c', mm.generator['rtems-path'](), @@ -181,7 +181,7 @@ def rtems(mm): def base(mm): mod = builder.Module('base') mod.addKernelSpaceHeaderFiles( - [ + [ 'sys/bsm/audit.h', 'sys/bsm/audit_kevents.h', 'sys/fs/devfs/devfs_int.h', @@ -293,7 +293,7 @@ def base(mm): ] ) mod.addKernelSpaceSourceFiles( - [ + [ 'sys/kern/init_main.c', 'sys/kern/kern_condvar.c', 'sys/kern/kern_event.c', @@ -341,7 +341,7 @@ def base(mm): 'sys/vm/uma_core.c', 'sys/vm/uma_dbg.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -365,7 +365,7 @@ def mmc(mm): 'sys/dev/mmc/mmcsd.c', 'sys/dev/sdhci/sdhci.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -426,7 +426,7 @@ def dev_usb(mm): 'sys/dev/usb/usb_transfer.c', 'sys/dev/usb/usb_util.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -445,7 +445,7 @@ def dev_usb_add_on(mm): [ 'sys/dev/usb/usb_compat_linux.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -465,7 +465,7 @@ def dev_usb_bluetooth(mm): 'sys/dev/usb/bluetooth/ng_ubt.c', 'sys/dev/usb/bluetooth/ubtbcmfw.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -494,7 +494,7 @@ def dev_usb_controller(mm): 'sys/dev/usb/controller/usb_controller.c', 'sys/dev/usb/controller/dwc_otg.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -529,7 +529,7 @@ def dev_usb_controller_add_on(mm): 'sys/dev/usb/controller/uss820dci_atmelarm.c', 'sys/dev/usb/controller/uss820dci.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -541,7 +541,7 @@ def dev_usb_input(mm): mod.addDependency(mm['dev_usb']) mod.addKernelSpaceHeaderFiles( [ - 'sys/dev/usb/input/usb_rdesc.h', + 'sys/dev/usb/input/usb_rdesc.h', ] ) mod.addKernelSpaceSourceFiles( @@ -549,7 +549,7 @@ def dev_usb_input(mm): 'sys/dev/usb/input/uhid.c', 'sys/dev/usb/input/ukbd.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -574,7 +574,7 @@ def dev_usb_mouse(mm): [ 'sys/dev/usb/input/ums.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -594,7 +594,7 @@ def dev_usb_misc(mm): 'sys/dev/usb/misc/udbp.c', 'sys/dev/usb/misc/ufm.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -617,7 +617,7 @@ def dev_usb_net(mm): 'sys/dev/usb/net/if_cdce.c', 'sys/dev/usb/net/usb_ethernet.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -636,7 +636,7 @@ def dev_usb_quirk(mm): [ 'sys/dev/usb/quirk/usb_quirk.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -674,7 +674,7 @@ def dev_usb_serial(mm): 'sys/dev/usb/serial/uvisor.c', 'sys/dev/usb/serial/uvscom.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -688,7 +688,7 @@ def dev_usb_storage(mm): [ 'sys/dev/usb/storage/umass.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -708,7 +708,7 @@ def dev_usb_storage_add_on(mm): 'sys/dev/usb/storage/urio.c', 'sys/dev/usb/storage/ustorage_fs.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -730,7 +730,7 @@ def dev_usb_template(mm): 'sys/dev/usb/template/usb_template_msc.c', 'sys/dev/usb/template/usb_template_mtp.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -762,7 +762,7 @@ def dev_usb_wlan(mm): 'sys/dev/usb/wlan/if_ural.c', 'sys/dev/usb/wlan/if_zyd.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -791,7 +791,7 @@ def cam(mm): 'sys/cam/cam.c', 'sys/cam/scsi/scsi_all.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -844,7 +844,7 @@ def dev_net(mm): 'sys/dev/dwc/if_dwc.c', 'sys/arm/xilinx/zy7_slcr.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -911,7 +911,7 @@ def dev_nic(mm): 'sys/netatalk/at_proto.c', 'sys/netatalk/ddp_output.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -929,7 +929,7 @@ def dev_nic_re(mm): [ 'sys/dev/re/if_re.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -949,7 +949,7 @@ def dev_nic_fxp(mm): [ 'sys/dev/fxp/if_fxp.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1006,7 +1006,7 @@ def dev_nic_e1000(mm): 'sys/dev/e1000/if_igb.c', 'sys/dev/e1000/if_lem.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1026,7 +1026,7 @@ def dev_nic_dc(mm): 'sys/dev/dc/if_dc.c', 'sys/dev/dc/pnphy.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1045,7 +1045,7 @@ def dev_nic_smc(mm): [ 'sys/dev/smc/if_smc.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1066,7 +1066,7 @@ def dev_nic_cs(mm): 'sys/dev/cs/if_cs_isa.c', 'sys/dev/cs/if_cs_pccard.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1089,7 +1089,7 @@ def dev_nic_broadcomm(mm): 'sys/dev/bfe/if_bfe.c', 'sys/dev/bge/if_bge.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1196,7 +1196,7 @@ def net(mm): 'sys/net/if_ethersubr.c', 'sys/net/netisr.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1372,7 +1372,7 @@ def netinet(mm): 'sys/netinet/libalias/alias_skinny.c', 'sys/netinet/libalias/alias_sctp.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1438,7 +1438,7 @@ def netinet6(mm): 'sys/netinet6/sctp6_usrreq.c', 'sys/netinet6/udp6_usrreq.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1483,7 +1483,7 @@ def netipsec(mm): 'sys/netipsec/xform_ipip.c', 'sys/netipsec/xform_tcp.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1527,7 +1527,7 @@ def net80211(mm): ) mod.addKernelSpaceSourceFiles( [ - 'sys/net80211/ieee80211_acl.c', + 'sys/net80211/ieee80211_acl.c', 'sys/net80211/ieee80211_action.c', 'sys/net80211/ieee80211_adhoc.c', 'sys/net80211/ieee80211_ageq.c', @@ -1566,7 +1566,7 @@ def net80211(mm): 'sys/net80211/ieee80211_wds.c', 'sys/net80211/ieee80211_xauth.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1589,7 +1589,7 @@ def opencrypto(mm): ) mod.addKernelSpaceSourceFiles( [ - 'sys/opencrypto/crypto.c', + 'sys/opencrypto/crypto.c', 'sys/opencrypto/deflate.c', 'sys/opencrypto/cryptosoft.c', 'sys/opencrypto/criov.c', @@ -1598,7 +1598,7 @@ def opencrypto(mm): 'sys/opencrypto/skipjack.c', 'sys/opencrypto/cast.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1650,7 +1650,7 @@ def crypto(mm): 'sys/crypto/camellia/camellia-api.c', 'sys/crypto/camellia/camellia.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1687,7 +1687,7 @@ def altq(mm): 'sys/contrib/altq/altq/altq_hfsc.c', 'sys/contrib/altq/altq/altq_red.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1719,7 +1719,7 @@ def pf(mm): 'sys/contrib/pf/net/pf_table.c', 'sys/contrib/pf/netinet/in4_cksum.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1734,7 +1734,7 @@ def pci(mm): 'sys/dev/pci/pci_user.c', 'sys/dev/pci/pci_pci.c', ], - mm.generator['source']() + mm.generator['source']() ) mod.addKernelSpaceHeaderFiles( [ @@ -1759,7 +1759,7 @@ def pci(mm): 'sys/i386/i386/legacy.c', 'sys/x86/pci/pci_bus.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -1900,7 +1900,7 @@ def user_space(mm): 'lib/libc/db/recno/rec_seq.c', 'lib/libc/db/recno/rec_utils.c', ], - mm.generator['source']('-D__DBINTERFACE_PRIVATE -DINET6') + mm.generator['source']('-D__DBINTERFACE_PRIVATE -DINET6') ) mod.addUserSpaceSourceFiles( [ @@ -2109,7 +2109,7 @@ def user_space(mm): 'usr.bin/netstat/sctp.c', 'usr.bin/netstat/unix.c', ], - mm.generator['source']('-DINET6') + mm.generator['source']('-DINET6') ) return mod @@ -2189,7 +2189,7 @@ def contrib_libpcap(mm): 'contrib/libpcap/sf-pcap.c', 'contrib/libpcap/sf-pcap-ng.c', ], - mm.generator['source'](cflags) + mm.generator['source'](cflags) ) return mod @@ -2467,21 +2467,21 @@ def in_cksum(mm): [ 'sys/i386/i386/in_cksum.c', ], - mm.generator['source']() + mm.generator['source']() ) mod.addCPUDependentSourceFiles( [ 'powerpc' ], [ 'sys/powerpc/powerpc/in_cksum.c', ], - mm.generator['source']() + mm.generator['source']() ) mod.addCPUDependentSourceFiles( - [ 'sparc64' ], - [ + [ 'sparc64' ], + [ 'sys/sparc64/sparc64/in_cksum.c', - ], - mm.generator['source']() + ], + mm.generator['source']() ) mod.addCPUDependentSourceFiles( [ @@ -2491,7 +2491,7 @@ def in_cksum(mm): [ 'sys/mips/mips/in_cksum.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -2540,6 +2540,7 @@ def tests(mm): mod.addTest(mm.generator['test']('lagg01', ['test_main'], netTest = True)) mod.addTest(mm.generator['test']('log01', ['test_main'])) mod.addTest(mm.generator['test']('rcconf01', ['test_main'])) + mod.addTest(mm.generator['test']('rcconf02', ['test_main'])) return mod # @@ -2578,7 +2579,7 @@ def dhcpcd(mm): [ 'rtems/rtems-bsd-shell-dhcpcd.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -2602,7 +2603,7 @@ def mdnsresponder(mm): 'mDNSResponder/mDNSPosix/mDNSPosix.c', 'mDNSResponder/mDNSPosix/mDNSUNP.c', ], - mm.generator['source']() + mm.generator['source']() ) return mod @@ -2615,7 +2616,7 @@ def mghttpd(mm): [ 'rtemsbsd/mghttpd/mongoose.c', ], - mm.generator['source']('-DNO_SSL -DNO_POPEN -DNO_CGI -DUSE_WEBSOCKET') + mm.generator['source']('-DNO_SSL -DNO_POPEN -DNO_CGI -DUSE_WEBSOCKET') ) return mod diff --git a/libbsd_waf.py b/libbsd_waf.py index 918437fb..1f1c5ad4 100644 --- a/libbsd_waf.py +++ b/libbsd_waf.py @@ -1389,6 +1389,16 @@ def build(bld): lib = ["m", "z"], install_path = None) + test_rcconf02 = ['testsuite/rcconf02/test_main.c'] + bld.program(target = "rcconf02.exe", + features = "cprogram", + cflags = cflags, + includes = includes, + source = test_rcconf02, + use = ["bsd"], + lib = ["m", "z"], + install_path = None) + test_rwlock01 = ['testsuite/rwlock01/test_main.c'] bld.program(target = "rwlock01.exe", features = "cprogram", diff --git a/testsuite/rcconf02/test_main.c b/testsuite/rcconf02/test_main.c new file mode 100644 index 00000000..b3ba395a --- /dev/null +++ b/testsuite/rcconf02/test_main.c @@ -0,0 +1,167 @@ +/* + * Copyright 2016 Chris Johns + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#define TEST_NAME "LIBBSD RC.CONF 2" + +#define IFACE_IPV4(iface) \ + "ifconfig_" # iface " inet " NET_CFG_SELF_IP " netmask " NET_CFG_NETMASK "\n" + +#define RC_CONF_IFACES \ + IFACE_IPV4(dmc0) \ + IFACE_IPV4(sm0) \ + IFACE_IPV4(cgem0) \ + IFACE_IPV4(fec0) \ + IFACE_IPV4(em0) \ + IFACE_IPV4(re0) + +#define IFACE_VLAN(iface) \ + "vlans_" # iface "=\"101 102\"\n" \ + "ifconfig_" # iface "_101=\"inet 192.0.101.1/24\n" \ + "ifconfig_" # iface "_102=\"inet 192.0.102.1/24\n" + +#define RC_CONF_VLANS \ + IFACE_VLAN(dmc0) \ + IFACE_VLAN(sm0) \ + IFACE_VLAN(cgem0) \ + IFACE_VLAN(fec0) \ + IFACE_VLAN(em0) \ + IFACE_VLAN(re0) + +static const char* rc_conf_text = \ + "#\n" \ + "# Tests rc.conf. Add every NIC\n" \ + "#\n" \ + "hostname=\"rctest\"\n" \ + "\n" \ + "create_args_myvlan=\"vlan 102\"\n" \ + "create_args_yourvlan=\"vlan 202\"\n" \ + "\n" \ + RC_CONF_IFACES \ + "\n" \ + RC_CONF_VLANS \ + "\n" \ + "defaultrouter=\"" NET_CFG_GATEWAY_IP "\"\n" \ + "n"; + +static void +test_rc_conf_script(void) +{ + const char* ifconfg_args[] = { + "ifconfig", NULL + }; + const char* netstat_args[] = { + "netstat", "-rn", NULL + }; + + printf("--------------- rc.conf -----------------\n"); + printf(rc_conf_text); + printf("-----------------------------------------\n"); + + assert(rtems_bsd_run_rc_conf_script("internal", rc_conf_text, 15, true) == 0); + + printf("-------------- IFCONFIG -----------------\n"); + rtems_bsd_command_ifconfig(1, (char**) ifconfg_args); + printf("-------------- NETSTAT ------------------\n"); + rtems_bsd_command_netstat(2, (char**) netstat_args); + printf("-----------------------------------------\n"); +} + +static void +test_main(void) +{ + test_rc_conf_script(); + rtems_shell_init( + "SHLL", + 32 * 1024, + 1, + CONSOLE_DEVICE_NAME, + false, + true, + NULL + ); + exit(0); +} + +#define CONFIGURE_SHELL_COMMANDS_INIT + +#include + +#include + +#define CONFIGURE_SHELL_USER_COMMANDS \ + &bsp_interrupt_shell_command, \ + &rtems_shell_BSD_Command, \ + &rtems_shell_HOSTNAME_Command, \ + &rtems_shell_PING_Command, \ + &rtems_shell_ROUTE_Command, \ + &rtems_shell_NETSTAT_Command, \ + &rtems_shell_IFCONFIG_Command, \ + &rtems_shell_TCPDUMP_Command, \ + &rtems_shell_SYSCTL_Command + +#define CONFIGURE_SHELL_COMMAND_CPUUSE +#define CONFIGURE_SHELL_COMMAND_PERIODUSE +#define CONFIGURE_SHELL_COMMAND_STACKUSE +#define CONFIGURE_SHELL_COMMAND_PROFREPORT + +#define CONFIGURE_SHELL_COMMAND_CP +#define CONFIGURE_SHELL_COMMAND_PWD +#define CONFIGURE_SHELL_COMMAND_LS +#define CONFIGURE_SHELL_COMMAND_LN +#define CONFIGURE_SHELL_COMMAND_LSOF +#define CONFIGURE_SHELL_COMMAND_CHDIR +#define CONFIGURE_SHELL_COMMAND_CD +#define CONFIGURE_SHELL_COMMAND_MKDIR +#define CONFIGURE_SHELL_COMMAND_RMDIR +#define CONFIGURE_SHELL_COMMAND_CAT +#define CONFIGURE_SHELL_COMMAND_MV +#define CONFIGURE_SHELL_COMMAND_RM +#define CONFIGURE_SHELL_COMMAND_MALLOC_INFO +#define CONFIGURE_SHELL_COMMAND_SHUTDOWN + +#include + +#include -- cgit v1.2.3