From patchwork Tue Nov 11 20:27:43 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shuah Khan X-Patchwork-Id: 5277341 Return-Path: X-Original-To: patchwork-linux-kbuild@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 0AFCE9F2ED for ; Tue, 11 Nov 2014 20:35:31 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 1F5D320155 for ; Tue, 11 Nov 2014 20:35:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1FCE320114 for ; Tue, 11 Nov 2014 20:35:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752626AbaKKUe7 (ORCPT ); Tue, 11 Nov 2014 15:34:59 -0500 Received: from mailout.easymail.ca ([64.68.201.169]:47980 "EHLO mailout.easymail.ca" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751674AbaKKU2M (ORCPT ); Tue, 11 Nov 2014 15:28:12 -0500 Received: from localhost (localhost [127.0.0.1]) by mailout.easymail.ca (Postfix) with ESMTP id 2D52FE10E; Tue, 11 Nov 2014 15:28:10 -0500 (EST) X-Quarantine-ID: X-Virus-Scanned: Debian amavisd-new at mailout.easymail.ca X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: "References" X-Spam-Score: -4.399 X-Spam-Level: X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 Received: from mailout.easymail.ca ([127.0.0.1]) by localhost (easymail-mailout.easydns.vpn [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id x80VXx4l1dnz; Tue, 11 Nov 2014 15:28:06 -0500 (EST) Received: from mail.gonehiking.org (c-50-134-149-16.hsd1.co.comcast.net [50.134.149.16]) by mailout.easymail.ca (Postfix) with ESMTPA id 9D7EEE0A5; Tue, 11 Nov 2014 15:28:04 -0500 (EST) Received: from lorien.internal (lorien-wl.internal [192.168.1.40]) by mail.gonehiking.org (Postfix) with ESMTP id 32FAC40A81; Tue, 11 Nov 2014 13:28:04 -0700 (MST) From: Shuah Khan To: gregkh@linuxfoundation.org, akpm@linux-foundation.org, mmarek@suse.cz, davem@davemloft.net, keescook@chromium.org, tranmanphong@gmail.com, dh.herrmann@gmail.com, hughd@google.com, bobby.prani@gmail.com, ebiederm@xmission.com, serge.hallyn@ubuntu.com Cc: Shuah Khan , linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 03/19] selftests: add install target to enable installing selftests Date: Tue, 11 Nov 2014 13:27:43 -0700 Message-Id: <5e33b40696debde24fd04f6711e795a8860b7aee.1415735831.git.shuahkh@osg.samsung.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: References: In-Reply-To: References: Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add a new make target to enable installing selftests. This new target will call install targets for the tests that are specified in INSTALL_TARGETS. During install, a script is generated to run tests that are installed. This script will be installed in the selftest install directory. Individual test Makefiles are changed to add to the script. This will allow new tests to add install and run test commands to the generated kselftest script. run_tests target runs the generated kselftest script to run tests when it is initiated from from "make kselftest" from top level source directory. Approach: make kselftest_target: -- exports kselftest INSTALL_KSFT_PATH default $(INSTALL_MOD_PATH)/lib/kselftest/$(KERNELRELEASE) -- exports path for ksefltest.sh -- runs selftests make install target: selftests make install target -- creates kselftest.sh script in install install dir -- runs install targets for all INSTALL_TARGETS (Note: ftrace and powerpc aren't included in INSTALL_TARGETS, to not add more content to patch v1 series. This work will happen soon. In this series these two targets are run after running the generated kselftest script, without any regression in the way these tests are run with "make kselftest" prior to this work.) -- install target can be run only from top level source dir. Individual test make install targets: -- install test programs and/or scripts in install dir -- append to the ksefltest.sh file to add commands to run test -- install target can be run only from top level source dir. Adds the following new ways to initiate selftests: -- Installing and running kselftest from install directory by running "make kselftest" -- Running kselftest script from install directory Maintains the following ways to run tests: -- make -C tools/testing/selftests run_tests -- make -C tools/testing/selftests TARGETS=target run_tests Ability specify targets: e.g TARGETS=net -- make run_tests from tools/testing/selftests -- make run_tests from individual test directories: e.g: make run_tests in tools/testing/selftests/breakpoints Signed-off-by: Shuah Khan --- tools/testing/selftests/Makefile | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile index 45f145c..b9bdc1d 100644 --- a/tools/testing/selftests/Makefile +++ b/tools/testing/selftests/Makefile @@ -16,6 +16,10 @@ TARGETS += sysctl TARGETS += firmware TARGETS += ftrace +INSTALL_TARGETS = breakpoints cpu-hotplug efivarfs firmware ipc +INSTALL_TARGETS += kcmp memfd memory-hotplug mqueue mount net +INSTALL_TARGETS += ptrace sysctl timers user vm + TARGETS_HOTPLUG = cpu-hotplug TARGETS_HOTPLUG += memory-hotplug @@ -24,10 +28,35 @@ all: make -C $$TARGET; \ done; -run_tests: all +install: +ifdef INSTALL_KSFT_PATH + make all + @echo #!/bin/sh\n# Kselftest Run Tests .... >> $(KSELFTEST) + @echo # This file is generated during kselftest_install >> $(KSELFTEST) + @echo # Please don't change it !!\n >> $(KSELFTEST) + @echo echo ============================== >> $(KSELFTEST) + for TARGET in $(INSTALL_TARGETS); do \ + echo Installing $$TARGET; \ + make -C $$TARGET install; \ + done; + chmod +x $(KSELFTEST) +else + @echo Run make kselftest_install in top level source directory +endif + +run_tests: +ifdef INSTALL_KSFT_PATH + @cd $(INSTALL_KSFT_PATH); ./kselftest.sh; cd - +# TODO: include ftrace and powerpc in install targets + for TARGET in ftrace powerpc; do \ + make -C $$TARGET run_tests; \ + done; +else + make all for TARGET in $(TARGETS); do \ make -C $$TARGET run_tests; \ done; +endif hotplug: for TARGET in $(TARGETS_HOTPLUG); do \