Module Name: src
Committed By: jakllsch
Date: Tue Jan 5 17:22:39 UTC 2016
Modified Files:
src/distrib/sets/lists/debug: mi
src/distrib/sets/lists/tests: mi
src/etc/mtree: NetBSD.dist.tests
src/tests/dev: Makefile
Added Files:
src/tests/dev/usb: Makefile t_hid.c
src/tests/dev/usb/libhid: Makefile
Log Message:
Add some tests for the kernel HID parser.
To generate a diff of this commit:
cvs rdiff -u -r1.139 -r1.140 src/distrib/sets/lists/debug/mi
cvs rdiff -u -r1.658 -r1.659 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.123 -r1.124 src/etc/mtree/NetBSD.dist.tests
cvs rdiff -u -r1.9 -r1.10 src/tests/dev/Makefile
cvs rdiff -u -r0 -r1.1 src/tests/dev/usb/Makefile src/tests/dev/usb/t_hid.c
cvs rdiff -u -r0 -r1.1 src/tests/dev/usb/libhid/Makefile
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/distrib/sets/lists/debug/mi
diff -u src/distrib/sets/lists/debug/mi:1.139 src/distrib/sets/lists/debug/mi:1.140
--- src/distrib/sets/lists/debug/mi:1.139 Fri Jan 1 21:38:53 2016
+++ src/distrib/sets/lists/debug/mi Tue Jan 5 17:22:38 2016
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.139 2016/01/01 21:38:53 jakllsch Exp $
+# $NetBSD: mi,v 1.140 2016/01/05 17:22:38 jakllsch Exp $
./etc/mtree/set.debug comp-sys-root
./usr/lib comp-sys-usr compatdir
./usr/lib/i18n/libBIG5_g.a comp-c-debuglib debuglib,compatfile
@@ -1579,6 +1579,7 @@
./usr/libdata/debug/usr/tests/dev/md/h_mdserv.debug tests-fs-debug debug,atf,rump
./usr/libdata/debug/usr/tests/dev/scsipi/t_cd.debug tests-fs-debug debug,atf,rump
./usr/libdata/debug/usr/tests/dev/sysmon/t_swwdog.debug tests-fs-debug debug,atf,rump
+./usr/libdata/debug/usr/tests/dev/usb/t_hid.debug tests-fs-debug debug,atf,rump
./usr/libdata/debug/usr/tests/fs/ffs/h_ffs_server.debug tests-fs-debug debug,atf,rump
./usr/libdata/debug/usr/tests/fs/ffs/h_quota2_server.debug tests-obsolete obsolete,compattestfile
./usr/libdata/debug/usr/tests/fs/ffs/h_quota2_tests.debug tests-fs-debug debug,atf,rump
Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.658 src/distrib/sets/lists/tests/mi:1.659
--- src/distrib/sets/lists/tests/mi:1.658 Fri Jan 1 21:38:54 2016
+++ src/distrib/sets/lists/tests/mi Tue Jan 5 17:22:38 2016
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.658 2016/01/01 21:38:54 jakllsch Exp $
+# $NetBSD: mi,v 1.659 2016/01/05 17:22:38 jakllsch Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@@ -29,6 +29,7 @@
./usr/libdata/debug/usr/tests/dev/md tests-fs-debug compattestfile,atf
./usr/libdata/debug/usr/tests/dev/scsipi tests-fs-debug compattestfile,atf
./usr/libdata/debug/usr/tests/dev/sysmon tests-fs-debug compattestfile,atf
+./usr/libdata/debug/usr/tests/dev/usb tests-fs-debug compattestfile,atf
./usr/libdata/debug/usr/tests/fs tests-fs-debug compattestfile,atf
./usr/libdata/debug/usr/tests/fs/ffs tests-fs-debug compattestfile,atf
./usr/libdata/debug/usr/tests/fs/fifofs tests-fs-debug compattestfile,atf
@@ -1372,6 +1373,10 @@
./usr/tests/dev/sysmon/Kyuafile tests-fs-tests atf,rump,kyua
./usr/tests/dev/sysmon/t_swsensor tests-fs-tests atf,rump
./usr/tests/dev/sysmon/t_swwdog tests-fs-tests atf,rump
+./usr/tests/dev/usb tests-fs-tests compattestfile,atf
+./usr/tests/dev/usb/Atffile tests-fs-tests atf,rump
+./usr/tests/dev/usb/Kyuafile tests-fs-tests atf,rump,kyua
+./usr/tests/dev/usb/t_hid tests-fs-tests atf,rump
./usr/tests/examples tests-obsolete obsolete
./usr/tests/examples/Atffile tests-obsolete obsolete
./usr/tests/examples/t_asm tests-obsolete obsolete
Index: src/etc/mtree/NetBSD.dist.tests
diff -u src/etc/mtree/NetBSD.dist.tests:1.123 src/etc/mtree/NetBSD.dist.tests:1.124
--- src/etc/mtree/NetBSD.dist.tests:1.123 Fri Jan 1 21:38:54 2016
+++ src/etc/mtree/NetBSD.dist.tests Tue Jan 5 17:22:38 2016
@@ -1,4 +1,4 @@
-# $NetBSD: NetBSD.dist.tests,v 1.123 2016/01/01 21:38:54 jakllsch Exp $
+# $NetBSD: NetBSD.dist.tests,v 1.124 2016/01/05 17:22:38 jakllsch Exp $
./usr/libdata/debug/usr/tests
./usr/libdata/debug/usr/tests/atf
@@ -20,6 +20,7 @@
./usr/libdata/debug/usr/tests/dev/md
./usr/libdata/debug/usr/tests/dev/scsipi
./usr/libdata/debug/usr/tests/dev/sysmon
+./usr/libdata/debug/usr/tests/dev/usb
./usr/libdata/debug/usr/tests/fs
./usr/libdata/debug/usr/tests/fs/ffs
./usr/libdata/debug/usr/tests/fs/fifofs
@@ -189,6 +190,7 @@
./usr/tests/dev/raidframe
./usr/tests/dev/scsipi
./usr/tests/dev/sysmon
+./usr/tests/dev/usb
./usr/tests/fs
./usr/tests/fs/cd9660
./usr/tests/fs/ffs
Index: src/tests/dev/Makefile
diff -u src/tests/dev/Makefile:1.9 src/tests/dev/Makefile:1.10
--- src/tests/dev/Makefile:1.9 Mon Jun 22 00:05:23 2015
+++ src/tests/dev/Makefile Tue Jan 5 17:22:38 2016
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.9 2015/06/22 00:05:23 matt Exp $
+# $NetBSD: Makefile,v 1.10 2016/01/05 17:22:38 jakllsch Exp $
#
.include <bsd.own.mk>
@@ -7,7 +7,7 @@ TESTSDIR= ${TESTSBASE}/dev
TESTS_SUBDIRS+= cgd raidframe
.if (${MKRUMP} != "no") && !defined(BSD_MK_COMPAT_FILE)
-TESTS_SUBDIRS+= audio md scsipi sysmon
+TESTS_SUBDIRS+= audio md scsipi sysmon usb
.endif
Added files:
Index: src/tests/dev/usb/Makefile
diff -u /dev/null src/tests/dev/usb/Makefile:1.1
--- /dev/null Tue Jan 5 17:22:39 2016
+++ src/tests/dev/usb/Makefile Tue Jan 5 17:22:38 2016
@@ -0,0 +1,22 @@
+# $NetBSD: Makefile,v 1.1 2016/01/05 17:22:38 jakllsch Exp $
+#
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/dev/usb
+
+TESTS_C= t_hid
+
+CPPFLAGS.t_hid.c= -I${.CURDIR}/../../../sys/dev/usb
+
+SUBDIR= libhid
+LIBHIDDIR!= cd ${.CURDIR}/libhid && ${PRINTOBJDIR}
+LDFLAGS.t_hid+= -L${LIBHIDDIR}
+LDADD.t_hid+= -Wl,--whole-archive -lrumpdev_hid -Wl,--no-whole-archive
+
+LDADD+= -lrump
+LDADD+= -lrumpuser
+LDADD+= -lrump
+LDADD+= -lpthread
+
+.include <bsd.test.mk>
Index: src/tests/dev/usb/t_hid.c
diff -u /dev/null src/tests/dev/usb/t_hid.c:1.1
--- /dev/null Tue Jan 5 17:22:39 2016
+++ src/tests/dev/usb/t_hid.c Tue Jan 5 17:22:38 2016
@@ -0,0 +1,210 @@
+/* $NetBSD: t_hid.c,v 1.1 2016/01/05 17:22:38 jakllsch Exp $ */
+
+/*
+ * Copyright (c) 2016 Jonathan A. Kollasch
+ * All rights reserved.
+ *
+ * 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 COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 <sys/cdefs.h>
+__RCSID("$NetBSD: t_hid.c,v 1.1 2016/01/05 17:22:38 jakllsch Exp $");
+
+#include <machine/types.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <atf-c.h>
+#define hid_start_parse rumpns_hid_start_parse
+#define hid_end_parse rumpns_hid_end_parse
+#define hid_get_item rumpns_hid_get_item
+#define hid_locate rumpns_hid_locate
+#define hid_report_size rumpns_hid_report_size
+#define hid_get_data rumpns_hid_get_data
+#define hid_get_udata rumpns_hid_get_udata
+#define uhidevdebug rumpns_uhidevdebug
+#include <hid.h>
+
+#include "../../lib/libusbhid/hid_test_data.c"
+
+#define MYd_ATF_CHECK_EQ(d, v) \
+ ATF_CHECK_EQ_MSG(d, v, "== %d", (d))
+
+#define MYld_ATF_CHECK_EQ(d, v) \
+ ATF_CHECK_EQ_MSG(d, v, "== %ld", (d))
+
+#define MYu_ATF_CHECK_EQ(d, v) \
+ ATF_CHECK_EQ_MSG(d, v, "== %u", (d))
+
+#define MYlu_ATF_CHECK_EQ(d, v) \
+ ATF_CHECK_EQ_MSG(d, v, "== %lu", (d))
+
+#define MYx_ATF_CHECK_EQ(d, v) \
+ ATF_CHECK_EQ_MSG(d, v, "== 0x%x", (d))
+
+#define MYlx_ATF_CHECK_EQ(d, v) \
+ ATF_CHECK_EQ_MSG(d, v, "== 0x%lx", (d))
+
+int uhidevdebug;
+
+ATF_TC(khid);
+
+ATF_TC_HEAD(khid, tc)
+{
+
+ atf_tc_set_md_var(tc, "descr", "check kernel hid.c");
+}
+
+ATF_TC_BODY(khid, tc)
+{
+ int ret;
+ struct hid_item hi;
+ u_int32_t flags;
+
+ uhidevdebug = 0;
+
+ atf_tc_expect_fail("logical/physical range appears broken");
+
+ ret = hid_locate(range_test_report_descriptor,
+ sizeof(range_test_report_descriptor), 0xff000003, 0, hid_input,
+ &hi.loc, &flags);
+ ATF_REQUIRE(ret > 0);
+ MYu_ATF_CHECK_EQ(hi.loc.size, 32);
+ MYu_ATF_CHECK_EQ(hi.loc.count, 1);
+ MYu_ATF_CHECK_EQ(hi.loc.pos, 0);
+ MYx_ATF_CHECK_EQ(flags, 0);
+ MYd_ATF_CHECK_EQ(hi.logical_minimum, -2147483648);
+ MYd_ATF_CHECK_EQ(hi.logical_maximum, 2147483647);
+ MYd_ATF_CHECK_EQ(hi.physical_minimum, -2147483648);
+ MYd_ATF_CHECK_EQ(hi.physical_maximum, 2147483647);
+ MYld_ATF_CHECK_EQ(hid_get_data(range_test_minimum_report,
+ &hi.loc), -2147483648);
+ MYld_ATF_CHECK_EQ(hid_get_data(range_test_negative_one_report,
+ &hi.loc), -1);
+ MYld_ATF_CHECK_EQ(hid_get_data(range_test_positive_one_report,
+ &hi.loc), 1);
+ MYld_ATF_CHECK_EQ(hid_get_data(range_test_maximum_report,
+ &hi.loc), 2147483647);
+
+ ret = hid_locate(range_test_report_descriptor,
+ sizeof(range_test_report_descriptor), 0xff000002, 0, hid_input,
+ &hi.loc, &flags);
+ ATF_REQUIRE(ret > 0);
+ MYu_ATF_CHECK_EQ(hi.loc.size, 16);
+ MYu_ATF_CHECK_EQ(hi.loc.count, 1);
+ MYu_ATF_CHECK_EQ(hi.loc.pos, 32);
+ MYx_ATF_CHECK_EQ(flags, 0);
+ MYd_ATF_CHECK_EQ(hi.logical_minimum, -32768);
+ MYd_ATF_CHECK_EQ(hi.logical_maximum, 32767);
+ MYd_ATF_CHECK_EQ(hi.physical_minimum, -32768);
+ MYd_ATF_CHECK_EQ(hi.physical_maximum, 32767);
+ MYld_ATF_CHECK_EQ(hid_get_data(range_test_minimum_report,
+ &hi.loc), -32768);
+ MYld_ATF_CHECK_EQ(hid_get_data(range_test_negative_one_report,
+ &hi.loc), -1);
+ MYld_ATF_CHECK_EQ(hid_get_data(range_test_positive_one_report,
+ &hi.loc), 1);
+ MYld_ATF_CHECK_EQ(hid_get_data(range_test_maximum_report,
+ &hi.loc), 32767);
+
+ ret = hid_locate(range_test_report_descriptor,
+ sizeof(range_test_report_descriptor), 0xff000001, 0, hid_input,
+ &hi.loc, &flags);
+ ATF_REQUIRE(ret > 0);
+ MYu_ATF_CHECK_EQ(hi.loc.size, 8);
+ MYu_ATF_CHECK_EQ(hi.loc.count, 1);
+ MYu_ATF_CHECK_EQ(hi.loc.pos, 48);
+ MYx_ATF_CHECK_EQ(flags, 0);
+ MYd_ATF_CHECK_EQ(hi.logical_minimum, -128);
+ MYd_ATF_CHECK_EQ(hi.logical_maximum, 127);
+ MYd_ATF_CHECK_EQ(hi.physical_minimum, -128);
+ MYd_ATF_CHECK_EQ(hi.physical_maximum, 127);
+ MYld_ATF_CHECK_EQ(hid_get_data(range_test_minimum_report,
+ &hi.loc), -128);
+ MYld_ATF_CHECK_EQ(hid_get_data(range_test_negative_one_report,
+ &hi.loc), -1);
+ MYld_ATF_CHECK_EQ(hid_get_data(range_test_positive_one_report,
+ &hi.loc), 1);
+ MYld_ATF_CHECK_EQ(hid_get_data(range_test_maximum_report,
+ &hi.loc), 127);
+
+
+ ret = hid_locate(unsigned_range_test_report_descriptor,
+ sizeof(unsigned_range_test_report_descriptor), 0xff000013, 0,
+ hid_input, &hi.loc, &flags);
+ ATF_REQUIRE(ret > 0);
+ MYu_ATF_CHECK_EQ(hi.loc.size, 32);
+ MYu_ATF_CHECK_EQ(hi.loc.count, 1);
+ MYu_ATF_CHECK_EQ(hi.loc.pos, 0);
+ MYx_ATF_CHECK_EQ(flags, 0);
+ MYlx_ATF_CHECK_EQ(hid_get_udata(unsigned_range_test_minimum_report,
+ &hi.loc), 0x0);
+ MYlx_ATF_CHECK_EQ(hid_get_udata(unsigned_range_test_positive_one_report,
+ &hi.loc), 0x1);
+ MYlx_ATF_CHECK_EQ(hid_get_udata(unsigned_range_test_negative_one_report,
+ &hi.loc), 0xfffffffe);
+ MYlx_ATF_CHECK_EQ(hid_get_udata(unsigned_range_test_maximum_report,
+ &hi.loc), 0xffffffff);
+
+ ret = hid_locate(unsigned_range_test_report_descriptor,
+ sizeof(unsigned_range_test_report_descriptor), 0xff000012, 0,
+ hid_input, &hi.loc, &flags);
+ ATF_REQUIRE(ret > 0);
+ MYu_ATF_CHECK_EQ(hi.loc.size, 16);
+ MYu_ATF_CHECK_EQ(hi.loc.count, 1);
+ MYu_ATF_CHECK_EQ(hi.loc.pos, 32);
+ MYx_ATF_CHECK_EQ(flags, 0);
+ MYlx_ATF_CHECK_EQ(hid_get_udata(unsigned_range_test_minimum_report,
+ &hi.loc), 0x0);
+ MYlx_ATF_CHECK_EQ(hid_get_udata(unsigned_range_test_positive_one_report,
+ &hi.loc), 0x1);
+ MYlx_ATF_CHECK_EQ(hid_get_udata(unsigned_range_test_negative_one_report,
+ &hi.loc), 0xfffe);
+ MYlx_ATF_CHECK_EQ(hid_get_udata(unsigned_range_test_maximum_report,
+ &hi.loc), 0xffff);
+
+ ret = hid_locate(unsigned_range_test_report_descriptor,
+ sizeof(unsigned_range_test_report_descriptor), 0xff000011, 0,
+ hid_input, &hi.loc, &flags);
+ ATF_REQUIRE(ret > 0);
+ MYu_ATF_CHECK_EQ(hi.loc.size, 8);
+ MYu_ATF_CHECK_EQ(hi.loc.count, 1);
+ MYu_ATF_CHECK_EQ(hi.loc.pos, 48);
+ MYx_ATF_CHECK_EQ(flags, 0);
+ MYlx_ATF_CHECK_EQ(hid_get_udata(unsigned_range_test_minimum_report,
+ &hi.loc), 0x0);
+ MYlx_ATF_CHECK_EQ(hid_get_udata(unsigned_range_test_positive_one_report,
+ &hi.loc), 0x1);
+ MYlx_ATF_CHECK_EQ(hid_get_udata(unsigned_range_test_negative_one_report,
+ &hi.loc), 0xfe);
+ MYlx_ATF_CHECK_EQ(hid_get_udata(unsigned_range_test_maximum_report,
+ &hi.loc), 0xff);
+}
+
+ATF_TP_ADD_TCS(tp)
+{
+
+ ATF_TP_ADD_TC(tp, khid);
+
+ return atf_no_error();
+}
+
Index: src/tests/dev/usb/libhid/Makefile
diff -u /dev/null src/tests/dev/usb/libhid/Makefile:1.1
--- /dev/null Tue Jan 5 17:22:39 2016
+++ src/tests/dev/usb/libhid/Makefile Tue Jan 5 17:22:39 2016
@@ -0,0 +1,16 @@
+# $NetBSD: Makefile,v 1.1 2016/01/05 17:22:39 jakllsch Exp $
+#
+
+.include <bsd.own.mk>
+
+RUMPTOP= ${NETBSDSRCDIR}/sys/rump
+.PATH: ${.CURDIR}/../../../../sys/dev/usb
+
+LIB= rumpdev_hid
+LIBISPRIVATE= #defined
+
+SRCS= hid.c
+
+.include "${RUMPTOP}/Makefile.rump"
+.include <bsd.lib.mk>
+.include <bsd.klinks.mk>