From patchwork Tue Apr 9 10:30:59 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Copot X-Patchwork-Id: 235030 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 7585F2C009D for ; Tue, 9 Apr 2013 20:33:12 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936671Ab3DIKdH (ORCPT ); Tue, 9 Apr 2013 06:33:07 -0400 Received: from mail-bk0-f50.google.com ([209.85.214.50]:38626 "EHLO mail-bk0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936614Ab3DIKdE (ORCPT ); Tue, 9 Apr 2013 06:33:04 -0400 Received: by mail-bk0-f50.google.com with SMTP id jg1so3504163bkc.9 for ; Tue, 09 Apr 2013 03:33:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=zs2yKtmCsAbXuXqaajbqQEMJ2qBvzXO8QyBvA8nuseI=; b=UWb7j2eP8RIcSie7dv0QJYsY5Fy1dbCchUahDTzKPo0vcntEV3d2pozGJDCjOcqCEy qcpf+/dKsWxGPgcmHcmWB+N+Yye9pUTo0kn/dri4WifqRg7r7ygmP6Z0KeY6Czp6nAts f4Lo2nBOepyNHnDRez+3uqfpejuSJQXt5aFK3I2Sk1x9TnixOPa/+BHrhcN1T7kUsf/8 sAlgwZEdujLeda9Mw+0QPHGGtL3r3R1SzLQWNzTjLsRvUOYVSJDI4LApgUGfmWlMi+KL 7/yRcNQllsvam/XnVt4e7y8v5kgMJ4gIILtB5muE3isx1S3IN1+guxk2G8tz74hi8ls8 +3tQ== X-Received: by 10.205.33.9 with SMTP id sm9mr502342bkb.43.1365503582896; Tue, 09 Apr 2013 03:33:02 -0700 (PDT) Received: from ws.lan (5-12-27-145.residential.rdsnet.ro. [5.12.27.145]) by mx.google.com with ESMTPS id fs20sm13780124bkc.8.2013.04.09.03.33.01 (version=TLSv1.2 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 09 Apr 2013 03:33:02 -0700 (PDT) From: Alexandru Copot To: netdev@vger.kernel.org, davem@davemloft.net Cc: willemb@google.com, dborkman@redhat.com, edumazet@google.com, Alexandru Copot , Daniel Baluta Subject: [PATCH 1/3 net-next RFC] selftest: add abstractions for net selftests Date: Tue, 9 Apr 2013 13:30:59 +0300 Message-Id: <1365503461-26309-2-git-send-email-alex.mihai.c@gmail.com> X-Mailer: git-send-email 1.8.2 In-Reply-To: <1365503461-26309-1-git-send-email-alex.mihai.c@gmail.com> References: <1365503461-26309-1-git-send-email-alex.mihai.c@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-of by Alexandru Copot Cc: Daniel Baluta --- tools/testing/selftests/net/selftests.c | 30 +++++++++++++++++++++++ tools/testing/selftests/net/selftests.h | 42 +++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 tools/testing/selftests/net/selftests.c create mode 100644 tools/testing/selftests/net/selftests.h diff --git a/tools/testing/selftests/net/selftests.c b/tools/testing/selftests/net/selftests.c new file mode 100644 index 0000000..cd6e427 --- /dev/null +++ b/tools/testing/selftests/net/selftests.c @@ -0,0 +1,30 @@ +#include + +#include "selftests.h" + +int run_all_tests(struct generic_test *test, void *param) +{ + int i; + int rc, allrc; + char *ptr; + + rc = test->prepare ? test->prepare(param) : 0; + if (rc) + return rc; + + allrc = 0; + printf("Testing: %s ", test->name); + ptr = test->testcases; + for (i = 0; i < test->testcase_count; i++) { + rc = test->run(ptr); + allrc |= rc; + + if (test->abort_on_fail && rc) { + printf("Testcase %d failed, aborting\n", i); + } + + ptr += test->testcase_size; + } + printf("\t\t%s\n", allrc ? "[FAIL]" : "[PASS]"); + return allrc; +} diff --git a/tools/testing/selftests/net/selftests.h b/tools/testing/selftests/net/selftests.h new file mode 100644 index 0000000..e289f03 --- /dev/null +++ b/tools/testing/selftests/net/selftests.h @@ -0,0 +1,42 @@ +#ifndef SELFTESTS_H +#define SELFTESTS_H + +#include +#include +#include + +#define ASSERT(cond) do { \ + if (!(cond)) { \ + fprintf(stderr, "%s:%d %s\n", __FILE__, __LINE__, #cond); \ + perror(""); \ + exit(EXIT_FAILURE); \ + } \ +} while (0) + +#define CHECK(cond,fmt,...) \ + do { \ + if (!(cond)) { \ + fprintf(stderr, "(%s, %d): " fmt, \ + __FILE__, __LINE__, ##__VA_ARGS__); \ + perror(""); \ + return 1; \ + } \ + } while (0) + +struct generic_test { + const char *name; + void *testcases; + int testcase_size; + int testcase_count; + + int abort_on_fail; + + int (*prepare)(void *); + int (*run)(void *); + int (*cleanup)(void *); +}; + +int run_all_tests(struct generic_test *test, void *param); + +#endif +