From patchwork Wed Jan 29 09:54:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 11355779 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0E9CF924 for ; Wed, 29 Jan 2020 09:54:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E1AF32071E for ; Wed, 29 Jan 2020 09:54:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FOvQwiky" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726116AbgA2Jy0 (ORCPT ); Wed, 29 Jan 2020 04:54:26 -0500 Received: from mail-lj1-f196.google.com ([209.85.208.196]:46775 "EHLO mail-lj1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726091AbgA2Jy0 (ORCPT ); Wed, 29 Jan 2020 04:54:26 -0500 Received: by mail-lj1-f196.google.com with SMTP id x14so15361008ljd.13 for ; Wed, 29 Jan 2020 01:54:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=fc0j0BiA9SjJB9GgeDcl8wyZ3wbFf9Y07xK8FXQu8DY=; b=FOvQwikywkATgZje/FzGJBsoZ1w3Eq+FdKhksTR7Zo/HuNZQZWGfVgs8LgKydT7jOb pzU/Y5nwa8RzwokFosy/oFS+sgItABbRl5JQbHoimNUGXl9cHUjiEnGcwF+xwCXD2IR2 PKzPEYvWfIoUuTFvGgkp9pfiqEjRdile2hnMWBAMMgqE1u9GJNA70LMPXZmewyf6leAP aAbYgd8Rh+cYn3eTa1GwdhTaFfY4Ss39ViLzqguifrG4WQjAWpZnNAvvWEVNQoNnWnl0 PIlU1fvU+WMZbvFcky9c9kZsBOTKFWD2BGBPz6iRIpfmJJXubaU34e9suVs53LvlNbYI 962w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fc0j0BiA9SjJB9GgeDcl8wyZ3wbFf9Y07xK8FXQu8DY=; b=ZoPGrWAHYfIBKUQrkQ93g/qwS/M59B1VItHgQzj915+LZZGFszfkBDgVH4TlONqyf7 f1bTiiQeIKEyhq67LCmkP7wGmbPsLoOfuFAt3B1CCCGaWin4i+j6LwoP5/tgqIPFqeMT WCq6Z7sXXOFutmtFCZQ4KXgxHW3t1r/Dm6yGMh+Cm7rnNP9YS0V8qpycSIOeJqFdiYbY PV14EsCprr2/mDaDgt2IDi1R93/2VGb/h+XL+Avf60wy9Dn1lW1qhangB2KbrYmPHHvn QF/n3SOo1wY+nJ25Hd63FTqJDIRifuFcOaGzC+TTTJ8D+scxLMPiS3Xf5Ksc6wDI2Vja kO8g== X-Gm-Message-State: APjAAAXGSSOaSlwroz6o+NWb9hCKT/CZbKG103+Y9ao0A6kResq9CWWt hTMxp4AezCuUAO8CQnIxTPJBHM12 X-Google-Smtp-Source: APXvYqz9Vz0VYTIhe3EroIrdGGobrL0/i0/opIA9yV4y/K/HJP/oyy+SynUd39bfKbXZ4NaHdXhN0A== X-Received: by 2002:a2e:7e11:: with SMTP id z17mr12013789ljc.279.1580291664465; Wed, 29 Jan 2020 01:54:24 -0800 (PST) Received: from oberon.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id q10sm648584ljj.60.2020.01.29.01.54.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2020 01:54:23 -0800 (PST) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH 1/9] trace-cmd: fix description of tracefs_get_tracing_dir() API Date: Wed, 29 Jan 2020 11:54:13 +0200 Message-Id: <20200129095421.881786-2-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200129095421.881786-1-tz.stoyanov@gmail.com> References: <20200129095421.881786-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org The string, returned from this API must not be freed, as it is a pointer to a local static variable. This was not explicitly stated in the description of the API. Signed-off-by: Tzvetomir Stoyanov (VMware) --- lib/tracefs/tracefs-utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tracefs/tracefs-utils.c b/lib/tracefs/tracefs-utils.c index 658c852..de46aab 100644 --- a/lib/tracefs/tracefs-utils.c +++ b/lib/tracefs/tracefs-utils.c @@ -133,7 +133,7 @@ char *tracefs_find_tracing_dir(void) * tracefs_get_tracing_dir - Get tracing directory * * Returns string containing the full path to the system's tracing directory. - * Must use tracefs_put_tracing_file() to free the returned string. + * The returned string must *not* be freed. */ const char *tracefs_get_tracing_dir(void) { From patchwork Wed Jan 29 09:54:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 11355781 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 285CF112B for ; Wed, 29 Jan 2020 09:54:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0519F20720 for ; Wed, 29 Jan 2020 09:54:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DVcLVpb1" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726140AbgA2Jy1 (ORCPT ); Wed, 29 Jan 2020 04:54:27 -0500 Received: from mail-lj1-f193.google.com ([209.85.208.193]:34848 "EHLO mail-lj1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726010AbgA2Jy1 (ORCPT ); Wed, 29 Jan 2020 04:54:27 -0500 Received: by mail-lj1-f193.google.com with SMTP id q8so13625498ljb.2 for ; Wed, 29 Jan 2020 01:54:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0Wx2itv63TNQ95G94I0G+2QREqju3y9Hf8DA5s7wV3o=; b=DVcLVpb1eZjMh+1k+xUgJs5gn/qXux3FkMDTIb/rom6D9qEU+QkBRq4YXjSEofmbxg LAj0zpuT0jwko6Sur2Xvxf1UBVS03+f+iGgP68GR3Wt/xXr61fcwkrau5zZLN2052OVF i+hcmEG47rUaebWHCb4UnsU0JZhKUqnVlPdeuuLyGsIzuUQ/Ws4RhB2K5mKRjGS/kQ/6 1JWbnDmtSEgh4rfWt8MKZaKflXeyxGl/LYqQQ51mFXn06w53OlHp3o/CbPTF848VloSK JnMEOa6ZlqWXPQ2UNYTZem18iBQqiSrY9J0LP93XKMWsEmmHqypwS07O4pb+FixecADa qmcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0Wx2itv63TNQ95G94I0G+2QREqju3y9Hf8DA5s7wV3o=; b=a3NwXI8Y+YWpTi00wJCF42Mqofc+UrAiEiVJgEdBn2qgPTdB/a28+PaIVq+hCAwhIa c5Uz6TJ3coXa3NyLH4qiBd+kelQ+2FQ8mRwDbI5MKo6Vs8aKh8t0ngzRl8wrrvGZnXIL O93uSC/OlsIiwpr/dznZ3L8P9kAEcY3oLWep/rp5182NV5KRKgoZ0n8Xijdp0DiQpRig UmY0fX8A6lxwMX3yTjSBODaSMKC/mB8l4Xam8lllGW8S+0mhZBYFQ2PijVeniUm7pnNG rdo4Tvo816IKm3I4DQoVcK3SyMiZE4LtF7s29CPKGPYr3PaT5AbLEwizXZZ/wRKTtV93 1dcA== X-Gm-Message-State: APjAAAUXBiN4oZiN8IsIJwsxM/o2YDYdIkbEa9Dh8adX7UHV9ZJTyi4T 3//G3BduDK4rHJABDPVO7TchQsog X-Google-Smtp-Source: APXvYqxVJ3JO2wojb0EX+IN/LDoycZ7yGCJpRug0QQVDtJlxyP9G6H2kvR261mitAGsdLIHNN/Ab9g== X-Received: by 2002:a2e:9955:: with SMTP id r21mr15512937ljj.283.1580291665612; Wed, 29 Jan 2020 01:54:25 -0800 (PST) Received: from oberon.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id q10sm648584ljj.60.2020.01.29.01.54.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2020 01:54:25 -0800 (PST) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH 2/9] trace-cmd: Remove tracefs_read_page_record() API Date: Wed, 29 Jan 2020 11:54:14 +0200 Message-Id: <20200129095421.881786-3-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200129095421.881786-1-tz.stoyanov@gmail.com> References: <20200129095421.881786-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org This function is used only internally in the library, it is not exposed as an API. Its declaration was left by mistake in the trasefs.h file, as official library API. Signed-off-by: Tzvetomir Stoyanov (VMware) --- include/tracefs/tracefs.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/tracefs/tracefs.h b/include/tracefs/tracefs.h index bd3f732..85690b6 100644 --- a/include/tracefs/tracefs.h +++ b/include/tracefs/tracefs.h @@ -34,9 +34,6 @@ char *tracefs_instance_file_read(struct tracefs_instance *instance, char *file, int *psize); /* events */ -struct tep_record * -tracefs_read_page_record(struct tep_handle *tep, void *page, int size, - struct tep_record *last_record); void tracefs_list_free(char **list); char **tracefs_event_systems(const char *tracing_dir); char **tracefs_system_events(const char *tracing_dir, const char *system); From patchwork Wed Jan 29 09:54:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 11355783 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2069F112B for ; Wed, 29 Jan 2020 09:54:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E8D0620708 for ; Wed, 29 Jan 2020 09:54:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ve5ZFxAp" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726010AbgA2Jy2 (ORCPT ); Wed, 29 Jan 2020 04:54:28 -0500 Received: from mail-lf1-f67.google.com ([209.85.167.67]:33818 "EHLO mail-lf1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726091AbgA2Jy2 (ORCPT ); Wed, 29 Jan 2020 04:54:28 -0500 Received: by mail-lf1-f67.google.com with SMTP id l18so11459655lfc.1 for ; Wed, 29 Jan 2020 01:54:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=xA7MSteWZ7d4mJnrknuVUwm6a/jp4okyMU5X333fZDc=; b=Ve5ZFxApTbbenYPOS46dE4lXRmK1BbSjsyilgNcK1hUp68dXUAfZXNAISramvZM4nu /SztyGMXRqJjx5J8AwYMU5xsecCsfJcBmoUnPSlfzmzYOo4W2pWTo/ZqJpyKxTVLomFS EyLJ8FpRz7d9NcILV4Ubod1/r7/0zvFxpoZAZGI9s6gdC4rCf+RNVPyJLUH4j3tIlagi yeEXpve8G3dkFIQDe/yU/kFPn1ijw9KjpD8tN+pF7KcrnSb8yJRjw+XQbLDTOWDFwdcd UyiTEY0OJBLAtV2Sih4SiSn6nXQY9+RBmg2wlR0wtWxO5D2zLDwr4JcKAniQWXwxQdrG cHHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=xA7MSteWZ7d4mJnrknuVUwm6a/jp4okyMU5X333fZDc=; b=Oy9qA4DiOwKYEeMruyXgRR7SrlYubR082Ov8rFw0+AfASNEmyuTGtE8xt0oj7J4hXC u3phUyJl1uMokTrXFsCGE8Rkv3mWkh0gmDllYcHSQvlCCmdO6gj+aOSA5xCv+2N5YHi4 JanzhohSwCFq4QPNY19tIAoiwmfxkfGbC8ketmCXUOGh7D7iQBgpNQsni0COUo1BXAxf Dv+oEsWDDNvn+4sFjVfPRl1Inv9klPLdoGre1MPGMtDiyVIlUappRARMEcCh3gpbkiCl AGH+m/OSAc/6KQXDflxtxiArybvDY3zYYICxgi99DNkSWEURRHeNrnPIgxjauB18xexQ 3Qyg== X-Gm-Message-State: APjAAAVTIOlW/+H1YW6G+wOvvxecrW+7R+fDjRr1CQWmrwnqdTVw+H4E WkPORvDg1GH7y9OMDmriSGtekE/a X-Google-Smtp-Source: APXvYqwOg4IA+IG/h6kAKUnX9JcPS5ZCZmJ3xfEkKmPK/leetcpVoke6Z/QvkvS56jHHzW9TkFQpQg== X-Received: by 2002:ac2:4476:: with SMTP id y22mr5024809lfl.169.1580291666766; Wed, 29 Jan 2020 01:54:26 -0800 (PST) Received: from oberon.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id q10sm648584ljj.60.2020.01.29.01.54.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2020 01:54:26 -0800 (PST) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH 3/9] trace-cmd: Add sanity check of tracefs_get_tracing_file() input parameter. Date: Wed, 29 Jan 2020 11:54:15 +0200 Message-Id: <20200129095421.881786-4-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200129095421.881786-1-tz.stoyanov@gmail.com> References: <20200129095421.881786-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org The input parameter "name" of tracefs_get_tracing_file() API is mandatory, it cannot be NULL. A check is added to verify this. Signed-off-by: Tzvetomir Stoyanov (VMware) --- lib/tracefs/tracefs-utils.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/tracefs/tracefs-utils.c b/lib/tracefs/tracefs-utils.c index de46aab..227990a 100644 --- a/lib/tracefs/tracefs-utils.c +++ b/lib/tracefs/tracefs-utils.c @@ -161,6 +161,9 @@ char *tracefs_get_tracing_file(const char *name) char *file; int ret; + if (!name) + return NULL; + if (!tracing) { tracing = tracefs_find_tracing_dir(); if (!tracing) From patchwork Wed Jan 29 09:54:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 11355787 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BB654112B for ; Wed, 29 Jan 2020 09:54:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8FA4220720 for ; Wed, 29 Jan 2020 09:54:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XCO0/6Nc" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726139AbgA2Jyb (ORCPT ); Wed, 29 Jan 2020 04:54:31 -0500 Received: from mail-lj1-f194.google.com ([209.85.208.194]:43283 "EHLO mail-lj1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726067AbgA2Jyb (ORCPT ); Wed, 29 Jan 2020 04:54:31 -0500 Received: by mail-lj1-f194.google.com with SMTP id a13so17712353ljm.10 for ; Wed, 29 Jan 2020 01:54:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4vr42sjJe0q/08Bn5iaslerHrDF2YI64KbYojm+T9wQ=; b=XCO0/6Nc3lb+cxaBSo/I1efx5Z+qfp6+5TfdUUg4/4zkDBkuwSQALMySsQpLGdNxDa AR2l1hTCO1QD5ZKiXCBQkYCIBJiEGIbU4MbO5OB6rkUExCrYK1CXq81HwvMmvVKUCfWd 1NFe4NVxsZlZAeV9sEzWVJqoR80WLeKeMzTqr4OUs+8SJYSmDNzdrLGQ1KBiwJGTJDEk Zgb7c5BFUFOitqeR4JYCCiwiVuHBfUmnLfkkV9uIBIOVQ+LN0kdrDbGyi/oM7mXQUYt7 +haXxPWUe5WjU08XBDuDJsrC5Sxo9n3+CXCi3mL9nOg/nv9owNbfrU4QvtDxw17cUXkb SeAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4vr42sjJe0q/08Bn5iaslerHrDF2YI64KbYojm+T9wQ=; b=QhuM+6edCGnLqwlLGXUxseyMb8I7S1PoUieiCmPDjgKjdw+J4c5olR0rF3tr/uKNS3 I5lb4WRIC4dbqeUySTIZi6yzRouPy+YCKIdvv/dsRfNQ9kPEVTyrNg1Orrde6EFm1u1b SvmZQkixt9yUGPRt9Yj6N+kzVlrjCEIytnxyPMU2yc63buwCLvP2IIjTAunHO1+I6Pic 2tmm5ZOwWtxwzbobt9K5k+bo54IyzAJDnugQ+qC3fU/oSXnUmihjBGbJyvrWYiohfxJM ZlFCGLX87kv8DZOL1boYnWeiIm1YmjG8v2i/6RSmEbhOA6itgWixyRFFoNVru/9cPHCY golw== X-Gm-Message-State: APjAAAUd2JgGZ8Qc3no3H7s50okO+V30nIfrYVA3dj7KD17FAtIfM3rQ Ty7YpUgUiPIuxnogwJbICiY= X-Google-Smtp-Source: APXvYqwaOSOTMU1a4xZRhBOyG8WDf3b8aB2xdM2QI05P0LmF1OwAtztdTLyhLbqHmun2MgKEI239kA== X-Received: by 2002:a2e:8105:: with SMTP id d5mr1910194ljg.25.1580291667981; Wed, 29 Jan 2020 01:54:27 -0800 (PST) Received: from oberon.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id q10sm648584ljj.60.2020.01.29.01.54.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2020 01:54:27 -0800 (PST) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH 4/9] trace-cmd: Unit test for libtracefs Date: Wed, 29 Jan 2020 11:54:16 +0200 Message-Id: <20200129095421.881786-5-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200129095421.881786-1-tz.stoyanov@gmail.com> References: <20200129095421.881786-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org The CUnit test infrastructure is integrated in trace-cmd. http://cunit.sourceforge.net/ The library and its headers must be installed on the machine, in order to build the trace-cmd unit tests. For Fedora, these packages must be installed: CUnit, CUnit-devel A new directory is added: utest containing unit tests implementation. Added new target to trace-cmd top Makefile: make test which builds the unit test binary: utest/trace-utest The goal of this patch is not to provide full unit test coverage of libtracefs, but to be a POC for adding test infrastructure to trace-cmd. The first API, covered be the test is: tracefs_iterate_raw_events() Signed-off-by: Tzvetomir Stoyanov (VMware) --- Makefile | 13 ++++- utest/Makefile | 41 ++++++++++++++ utest/README | 15 +++++ utest/trace-utest.c | 83 ++++++++++++++++++++++++++++ utest/trace-utest.h | 11 ++++ utest/tracefs-utest.c | 125 ++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 286 insertions(+), 2 deletions(-) create mode 100644 utest/Makefile create mode 100644 utest/README create mode 100644 utest/trace-utest.c create mode 100644 utest/trace-utest.h create mode 100644 utest/tracefs-utest.c diff --git a/Makefile b/Makefile index 477625f..ddf52ea 100644 --- a/Makefile +++ b/Makefile @@ -200,7 +200,7 @@ TRACE_LIBS = -L$(LIBTRACECMD_DIR) -ltracecmd \ -L$(LIBTRACEFS_DIR) -ltracefs export LIBS TRACE_LIBS -export LIBTRACEEVENT_DIR LIBTRACECMD_DIR +export LIBTRACEEVENT_DIR LIBTRACECMD_DIR LIBTRACEFS_DIR export LIBTRACECMD_STATIC LIBTRACECMD_SHARED export LIBTRACEEVENT_STATIC LIBTRACEEVENT_SHARED export LIBTRACEFS_STATIC LIBTRACEFS_SHARED @@ -234,6 +234,9 @@ ifeq ($(VSOCK_DEFINED), 1) CFLAGS += -DVSOCK endif +CUNIT_INSTALLED := $(shell if (echo -e "\#include \n void main(){CU_initialize_registry();}" | $(CC) -x c -lcunit - >/dev/null 2>&1) ; then echo 1; else echo 0 ; fi) +export CUNIT_INSTALLED + export CFLAGS export INCLUDES @@ -319,7 +322,6 @@ $(LIBTRACEFS_STATIC): force $(LIBTRACEFS_SHARED): force $(Q)$(MAKE) -C $(src)/lib/tracefs $@ - libtraceevent.so: $(LIBTRACEEVENT_SHARED) libtraceevent.a: $(LIBTRACEEVENT_STATIC) libtracecmd.a: $(LIBTRACECMD_STATIC) @@ -329,6 +331,12 @@ libtracefs.so: $(LIBTRACEFS_SHARED) libs: $(LIBTRACECMD_SHARED) $(LIBTRACEEVENT_SHARED) $(LIBTRACEFS_SHARED) +test: force $(LIBTRACEEVENT_STATIC) $(LIBTRACEFS_STATIC) $(LIBTRACECMD_STATIC) +ifneq ($(CUNIT_INSTALLED),1) + $(error CUnit framework not installed, cannot build unit tests)) +endif + $(Q)$(MAKE) -C $(src)/utest $@ + plugins_traceevent: force $(obj)/lib/traceevent/plugins/traceevent_plugin_dir \ $(obj)/lib/traceevent/plugins/trace_python_dir $(Q)$(MAKE) -C $(src)/lib/traceevent/plugins @@ -430,6 +438,7 @@ clean: $(MAKE) -C $(src)/lib/tracefs clean $(MAKE) -C $(src)/lib/traceevent/plugins clean $(MAKE) -C $(src)/lib/trace-cmd/plugins clean + $(MAKE) -C $(src)/utest clean $(MAKE) -C $(src)/python clean $(MAKE) -C $(src)/tracecmd clean if [ -f $(kshark-dir)/build/Makefile ]; then $(MAKE) -C $(kshark-dir)/build clean; fi diff --git a/utest/Makefile b/utest/Makefile new file mode 100644 index 0000000..55aa46a --- /dev/null +++ b/utest/Makefile @@ -0,0 +1,41 @@ + +include $(src)/scripts/utils.mk + +bdir:=$(obj)/utest + +TARGETS = $(bdir)/trace-utest + +OBJS = +OBJS += trace-utest.o +OBJS += tracefs-utest.o + +LIBS += -lcunit \ + -L$(LIBTRACEFS_DIR) -ltracefs \ + -L$(LIBTRACEEVENT_DIR) -ltraceevent + +OBJS := $(OBJS:%.o=$(bdir)/%.o) +DEPS := $(OBJS:$(bdir)/%.o=$(bdir)/.%.d) + +$(bdir): + @mkdir -p $(bdir) + +$(OBJS): | $(bdir) +$(DEPS): | $(bdir) + +$(bdir)/trace-utest: $(OBJS) + $(Q)$(do_app_build) + +$(bdir)/%.o: %.c + $(Q)$(call do_fpic_compile) + +$(DEPS): $(bdir)/.%.d: %.c + $(Q)$(CC) -M $(CPPFLAGS) $(CFLAGS) $< > $@ + +$(OBJS): $(bdir)/%.o : $(bdir)/.%.d + +dep_includes := $(wildcard $(DEPS)) + +test: $(TARGETS) + +clean: + $(RM) $(TARGETS) $(bdir)/*.o $(bdir)/.*.d diff --git a/utest/README b/utest/README new file mode 100644 index 0000000..f93630d --- /dev/null +++ b/utest/README @@ -0,0 +1,15 @@ + +Unit tests for trace-cmd libraries. The tests use CUnit framework: + http://cunit.sourceforge.net/ +which must be pre installed on the system, before building the unit tests. +The framework can be downloaded, compiled and installed manually, or +using a precompiled distro package: + + Fedora: + CUnit + CUnit-devel + + Ubuntu and Debian: + libcunit1 + libcunit1-doc + libcunit1-dev diff --git a/utest/trace-utest.c b/utest/trace-utest.c new file mode 100644 index 0000000..58d4d4e --- /dev/null +++ b/utest/trace-utest.c @@ -0,0 +1,83 @@ +// SPDX-License-Identifier: LGPL-2.1 +/* + * Copyright (C) 2020, VMware, Tzvetomir Stoyanov + * + */ +#include +#include +#include +#include + +#include +#include + +#include "trace-utest.h" + +enum unit_tests { + RUN_NONE = 0, + RUN_TRACEFS = (1 << 0), + RUN_ALL = 0xFFFF +}; + +static void print_help(char **argv) +{ + printf("Usage: %s [OPTIONS]\n", basename(argv[0])); + printf("\t-s, --silent\tPrint test summary\n"); + printf("\t-r, --run test\tRun specific test:\n"); + printf("\t\t tracefs run libtracefs tests\n"); + printf("\t-h, --help\tPrint usage information\n"); + exit(0); +} + +int main(int argc, char **argv) +{ + CU_BasicRunMode verbose = CU_BRM_VERBOSE; + enum unit_tests tests = RUN_NONE; + + for (;;) { + int c; + int index = 0; + const char *opts = "+hsr:"; + static struct option long_options[] = { + {"silent", no_argument, NULL, 's'}, + {"run", required_argument, NULL, 'r'}, + {"help", no_argument, NULL, 'h'}, + {NULL, 0, NULL, 0} + }; + + c = getopt_long (argc, argv, opts, long_options, &index); + if (c == -1) + break; + switch (c) { + case 'r': + if (strcmp(optarg, "tracefs") == 0) + tests |= RUN_TRACEFS; + else + print_help(argv); + break; + case 's': + verbose = CU_BRM_SILENT; + break; + case 'h': + default: + print_help(argv); + break; + } + } + + if (tests == RUN_NONE) + tests = RUN_ALL; + + if (CU_initialize_registry() != CUE_SUCCESS) { + printf("Test registry cannot be initialized\n"); + return -1; + } + + if (tests & RUN_TRACEFS) + test_tracefs_lib(); + + CU_basic_set_mode(verbose); + CU_basic_run_tests(); + CU_cleanup_registry(); + return 0; +} diff --git a/utest/trace-utest.h b/utest/trace-utest.h new file mode 100644 index 0000000..917c0e7 --- /dev/null +++ b/utest/trace-utest.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: LGPL-2.1 */ +/* + * Copyright (C) 2020, VMware, Tzvetomir Stoyanov + * + */ +#ifndef _TRACE_UTEST_H_ +#define _TRACE_UTEST_H_ + +void test_tracefs_lib(void); + +#endif /* _TRACE_UTEST_H_ */ diff --git a/utest/tracefs-utest.c b/utest/tracefs-utest.c new file mode 100644 index 0000000..d3ba213 --- /dev/null +++ b/utest/tracefs-utest.c @@ -0,0 +1,125 @@ +// SPDX-License-Identifier: LGPL-2.1 +/* + * Copyright (C) 2020, VMware, Tzvetomir Stoyanov + * + */ +#include +#include +#include +#include +#include + +#include +#include + +#include "tracefs.h" + +#define TRACEFS_SUITE "trasefs library" +#define TEST_INSTANCE_NAME "cunit_test_iter" +#define TEST_ARRAY_SIZE 50 + +static struct tracefs_instance *test_instance; +static struct tep_handle *test_tep; +static int test_array[TEST_ARRAY_SIZE]; +static int test_found; + +static int test_callback(struct tep_event *event, struct tep_record *record, + int cpu, void *context) +{ + struct tep_format_field *field; + int val, i; + + field = tep_find_field(event, "buf"); + if (field) { + val = *((int *)(record->data + field->offset)); + for (i = 0; i < TEST_ARRAY_SIZE; i++) { + if (test_array[i] == val) { + test_array[i] = 0; + test_found++; + break; + } + } + } + + return 0; +} + +static void test_iter_write(void) +{ + char *path; + int i, fd; + int ret; + + path = tracefs_instance_get_file(test_instance, "trace_marker"); + CU_TEST(path != NULL); + fd = open(path, O_WRONLY); + CU_TEST(fd >= 0); + + for (i = 0; i < TEST_ARRAY_SIZE; i++) { + test_array[i] = random(); + ret = write(fd, test_array + i, sizeof(int)); + CU_TEST(ret == sizeof(int)); + } + + tracefs_put_tracing_file(path); + close(fd); +} + + +static void test_iter_raw_events(void) +{ + int ret; + + ret = tracefs_iterate_raw_events(NULL, test_instance, test_callback, NULL); + CU_TEST(ret < 0); + ret = tracefs_iterate_raw_events(test_tep, NULL, test_callback, NULL); + CU_TEST(ret == 0); + ret = tracefs_iterate_raw_events(test_tep, test_instance, NULL, NULL); + CU_TEST(ret < 0); + + test_found = 0; + test_iter_write(); + ret = tracefs_iterate_raw_events(test_tep, test_instance, + test_callback, NULL); + CU_TEST(ret == 0); + CU_TEST(test_found == TEST_ARRAY_SIZE); +} + +static int test_suite_destroy(void) +{ + tracefs_instance_destroy(test_instance); + tracefs_instance_free(test_instance); + tep_free(test_tep); + return 0; +} + +static int test_suite_init(void) +{ + const char *systems[] = {"ftrace", NULL}; + + test_tep = tracefs_local_events_system(NULL, systems); + if (test_tep == NULL) + return 1; + + test_instance = tracefs_instance_alloc(TEST_INSTANCE_NAME); + if (test_instance == NULL) + return 1; + + if (tracefs_instance_create(test_instance) < 0) + return 1; + + return 0; +} + +void test_tracefs_lib(void) +{ + CU_pSuite suite = NULL; + + suite = CU_add_suite(TRACEFS_SUITE, test_suite_init, test_suite_destroy); + if (suite == NULL) { + fprintf(stderr, "Suite \"%s\" cannot be ceated\n", TRACEFS_SUITE); + return; + } + CU_add_test(suite, "tracefs_iterate_raw_events API", + test_iter_raw_events); +} From patchwork Wed Jan 29 09:54:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 11355785 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 85852924 for ; Wed, 29 Jan 2020 09:54:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 637EE2071E for ; Wed, 29 Jan 2020 09:54:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RThB2WRG" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726157AbgA2Jyb (ORCPT ); Wed, 29 Jan 2020 04:54:31 -0500 Received: from mail-lj1-f195.google.com ([209.85.208.195]:41435 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726139AbgA2Jya (ORCPT ); Wed, 29 Jan 2020 04:54:30 -0500 Received: by mail-lj1-f195.google.com with SMTP id h23so17740746ljc.8 for ; Wed, 29 Jan 2020 01:54:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rmkk2JEl22fRSi1s8b6GcuP+e1SZHld0EhT6lHuep4I=; b=RThB2WRGJQPcsi89skR6B5m9kgE+G39C5g/rqowP1mLEQM1M0Dinth5FL+t3Wel4xD NvDeEbD5l/hAwujUgfBZN9j22tmI9U5qIaFMhbh6osWw8yA5E75K47UU18i7bI9WMgbz IH7+qVgz8JgVo8eJcyb8ozScUKSOFQWUIxbXHNTH0uWMeUjCRFcBHpzgwVBj2u9y+3PE W68D4XLPivkKgRQNvKpj6C2jHQARnyzm96MwVvqXvbCqbvKec7yo9bvYvUDzDBrbdkXj OqMi0C3hw8Gb07/xQrWjq1fQ0IKTthwanr1XxQuT6xNkDkaWRk3suWhRo8a+7HE6HLFl nXtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rmkk2JEl22fRSi1s8b6GcuP+e1SZHld0EhT6lHuep4I=; b=sSjpgeJlXOsPZ/rstYVbn1uzQmgvCqRlTlEpgQ3Ku17EtJidoox+AmIHKBEV2W7Ah5 RiuMEbsyqwq7A3n5/UN1ut/f1pZ19VDm41tdx/9LTjeZUfcox42FxDe9iwnmi3XdcUFz IDxjo71H0cOyeAJx6RPRjox5+hs9ebN2GIRPeqXYtGQN0Mb+gmC9e7/+hyT3tDn5k+S6 T/7gb7G4Vtt+BnJLjpU8WIGjvq0xmbaTMNRDX8S+AEzoXBtvLSp8lzq1A+8uY+mBgYVu t582aHd4/ycBBpzeYB7YfLwZkWX6Awfi07xDSpy+l8Gq90+FB1+NIfhEA426towjP6sf xdXA== X-Gm-Message-State: APjAAAVPqTL5Wx1f5bN6wtiSgE1xKAidJGPA6QT5QwvNN/WG7sv8/tHK yJzlZQlXB2WDb1zyLUTdNW4= X-Google-Smtp-Source: APXvYqwI8/q1js37HlI3pxGQmR1trk5NrxRA9XR7kFGX2PkWxgYBtkh0kr/CeEoTmNA3GlI4/HqPDA== X-Received: by 2002:a2e:9e55:: with SMTP id g21mr16118211ljk.245.1580291669128; Wed, 29 Jan 2020 01:54:29 -0800 (PST) Received: from oberon.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id q10sm648584ljj.60.2020.01.29.01.54.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2020 01:54:28 -0800 (PST) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH 5/9] trace-cmd: Unit tests for libtracefs APIs related to tracing file / directory Date: Wed, 29 Jan 2020 11:54:17 +0200 Message-Id: <20200129095421.881786-6-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200129095421.881786-1-tz.stoyanov@gmail.com> References: <20200129095421.881786-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org Added unit tests for these APIs: tracefs_find_tracing_dir() tracefs_get_tracing_dir() tracefs_get_tracing_file() tracefs_put_tracing_file() Signed-off-by: Tzvetomir Stoyanov (VMware) --- utest/tracefs-utest.c | 55 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/utest/tracefs-utest.c b/utest/tracefs-utest.c index d3ba213..2e6e96f 100644 --- a/utest/tracefs-utest.c +++ b/utest/tracefs-utest.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -85,6 +86,58 @@ static void test_iter_raw_events(void) CU_TEST(test_found == TEST_ARRAY_SIZE); } +#define RAND_STR_SIZE 20 +#define RAND_ASCII "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; +static const char *get_rand_str() +{ + static char str[RAND_STR_SIZE]; + static char sym[] = RAND_ASCII; + struct timespec clk; + int i; + + clock_gettime(CLOCK_REALTIME, &clk); + srand(clk.tv_nsec); + for (i = 0; i < RAND_STR_SIZE; i++) + str[i] = sym[rand() % (sizeof(sym) - 1)]; + + str[RAND_STR_SIZE - 1] = 0; + return str; +} + +static void test_trace_file(void) +{ + const char *tmp = get_rand_str(); + const char *tdir; + struct stat st; + char *file; + char *dir; + + dir = tracefs_find_tracing_dir(); + CU_TEST(dir != NULL); + CU_TEST(stat(dir, &st) == 0); + CU_TEST(S_ISDIR(st.st_mode)); + + tdir = tracefs_get_tracing_dir(); + CU_TEST(tdir != NULL); + CU_TEST(stat(tdir, &st) == 0); + CU_TEST(S_ISDIR(st.st_mode)); + + CU_TEST(strcmp(dir, tdir) == 0); + free(dir); + + file = tracefs_get_tracing_file(NULL); + CU_TEST(file == NULL); + file = tracefs_get_tracing_file(tmp); + CU_TEST(file != NULL); + CU_TEST(stat(file, &st) != 0); + tracefs_put_tracing_file(file); + + file = tracefs_get_tracing_file("trace"); + CU_TEST(file != NULL); + CU_TEST(stat(file, &st) == 0); + tracefs_put_tracing_file(file); +} + static int test_suite_destroy(void) { tracefs_instance_destroy(test_instance); @@ -120,6 +173,8 @@ void test_tracefs_lib(void) fprintf(stderr, "Suite \"%s\" cannot be ceated\n", TRACEFS_SUITE); return; } + CU_add_test(suite, "tracing file / directory APIs", + test_trace_file); CU_add_test(suite, "tracefs_iterate_raw_events API", test_iter_raw_events); } From patchwork Wed Jan 29 09:54:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 11355789 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9BFD9924 for ; Wed, 29 Jan 2020 09:54:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7894E2071E for ; Wed, 29 Jan 2020 09:54:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="rPv+EV52" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726091AbgA2Jyd (ORCPT ); Wed, 29 Jan 2020 04:54:33 -0500 Received: from mail-lf1-f65.google.com ([209.85.167.65]:44337 "EHLO mail-lf1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726145AbgA2Jyd (ORCPT ); Wed, 29 Jan 2020 04:54:33 -0500 Received: by mail-lf1-f65.google.com with SMTP id v201so11418851lfa.11 for ; Wed, 29 Jan 2020 01:54:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MZSL4lSAr1LRR/QNV4EpJkgCnF+b0yunYxPJoPPBh9E=; b=rPv+EV52273euSyyGgFxq9jlmJ1z6jUXgVuTY10xlamp8DIQhnKsFVe1ilVOwb1isv kUnWpSNdkbzSVKah3gwkAJnsFBJExcNGC5JzMi2Ccv364h4eKRoOwHgc4b/87Yn2opzc gVwTMpjexkEKkUG0sNNb06vTkIrCoC8H0bGymmkqF646rwuoaKGkfjPT9UYTtSbpXOGI S+LjNOo6kJkqnLDom+Ozdh+agjTHbU9ojFIWpYc9ofC1Qh9kVHFV8KOER+W1RyUc+nHV gLKSNGyXdAO3BAfAy57nTcwC6qnxMitfWmuBKAJuvsvziR1LRgvUWLeAvLc4FgcNMy+a IKAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MZSL4lSAr1LRR/QNV4EpJkgCnF+b0yunYxPJoPPBh9E=; b=EfYUeVZtq+jlruSum0op1hUSInN6sXF+4bYNnvpsiSfJd4Xe3d4408Y+OcOq+RHUrJ 8W4mbvJ7bOwl0syV2Yx2W4QFPB0L28oa5xL4Q41ZAkOzOGeUNrEHGhJtLXZNNuQ3ypfw ua9w0ojjkf9kfWuD+R2wMz21uupc6YBYRtv/HFegVj7KcMYWKw2KpIEhELcduis+ec+U lj1KaxhJR306N+KcaUL6DCNbKtXdr6tMz0DRL5/l9qEJPvW0mUE5uevQLOpWpIw0efVp /rNFyV3kSjLQNs0bgESQJ4Te1KE/TmGaOtnLWIKhyvFcpU6nMVdPVeE8eUlQc8xu0Jei mi8g== X-Gm-Message-State: APjAAAWkjif7I/xFqw2tQl41OD6JfrITklsNhlJS4nfCh4zeJPSOsAky Hn6/28w5DajdVrlYPSNs+3J+zqd+ X-Google-Smtp-Source: APXvYqyo7Tkli13DB9yqNKuehuC/+1CjEkjEkQo+pHq7kX1RpuVx97CxJtcGiiKz6+A43uRYb/9xqA== X-Received: by 2002:a19:748:: with SMTP id 69mr5162834lfh.40.1580291670285; Wed, 29 Jan 2020 01:54:30 -0800 (PST) Received: from oberon.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id q10sm648584ljj.60.2020.01.29.01.54.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2020 01:54:29 -0800 (PST) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH 6/9] trace-cmd: Unit tests for libtracefs APIs related to ftrace instances Date: Wed, 29 Jan 2020 11:54:18 +0200 Message-Id: <20200129095421.881786-7-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200129095421.881786-1-tz.stoyanov@gmail.com> References: <20200129095421.881786-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org Added unit tests for these APIs: tracefs_instance_alloc() tracefs_instance_get_name() tracefs_instance_create() tracefs_instance_get_dir() tracefs_instance_get_file() tracefs_instance_file_read() tracefs_instance_file_write() tracefs_instance_free() Signed-off-by: Tzvetomir Stoyanov (VMware) --- utest/tracefs-utest.c | 122 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) diff --git a/utest/tracefs-utest.c b/utest/tracefs-utest.c index 2e6e96f..7930c64 100644 --- a/utest/tracefs-utest.c +++ b/utest/tracefs-utest.c @@ -138,6 +138,126 @@ static void test_trace_file(void) tracefs_put_tracing_file(file); } +static void test_instance_file_read(struct tracefs_instance *inst, char *fname) +{ + const char *tdir = tracefs_get_tracing_dir(); + char buf[BUFSIZ]; + char *fpath; + char *file; + size_t fsize = 0; + int size = 0; + int fd; + + if (inst) { + CU_TEST(asprintf(&fpath, "%s/instances/%s/%s", + tdir, tracefs_instance_get_name(inst), fname) > 0); + } else { + CU_TEST(asprintf(&fpath, "%s/%s", tdir, fname) > 0); + } + + memset(buf, 0, BUFSIZ); + fd = open(fpath, O_RDONLY); + CU_TEST(fd >= 0); + fsize = read(fd, buf, BUFSIZ); + CU_TEST(fsize >= 0); + close(fd); + buf[BUFSIZ - 1] = 0; + + file = tracefs_instance_file_read(inst, fname, &size); + CU_TEST(file != NULL); + CU_TEST(size == fsize); + CU_TEST(strcmp(file, buf) == 0); + + free(fpath); + free(file); +} + +#define ALL_TRACERS "available_tracers" +#define CUR_TRACER "current_tracer" +static void test_instance_file(void) +{ + struct tracefs_instance *instance = NULL; + const char *name = get_rand_str(); + char *inst_name = NULL; + const char *tdir; + char *inst_file; + char *inst_dir; + struct stat st; + char *fname; + char *file1; + char *file2; + char *tracer; + int size; + int ret; + + tdir = tracefs_get_tracing_dir(); + CU_TEST(tdir != NULL); + CU_TEST(asprintf(&inst_dir, "%s/instances/%s", tdir, name) > 0); + CU_TEST(stat(inst_dir, &st) != 0); + + instance = tracefs_instance_alloc(name); + CU_TEST(instance != NULL); + CU_TEST(stat(inst_dir, &st) != 0); + inst_name = tracefs_instance_get_name(instance); + CU_TEST(inst_name != NULL); + CU_TEST(strcmp(inst_name, name) == 0); + + CU_TEST(tracefs_instance_create(instance) == 0); + CU_TEST(stat(inst_dir, &st) == 0); + CU_TEST(S_ISDIR(st.st_mode)); + + fname = tracefs_instance_get_dir(NULL); + CU_TEST(fname != NULL); + CU_TEST(strcmp(fname, tdir) == 0); + free(fname); + + fname = tracefs_instance_get_dir(instance); + CU_TEST(fname != NULL); + CU_TEST(strcmp(fname, inst_dir) == 0); + free(fname); + + CU_TEST(asprintf(&fname, "%s/"ALL_TRACERS, tdir) > 0); + CU_TEST(fname != NULL); + inst_file = tracefs_instance_get_file(NULL, ALL_TRACERS); + CU_TEST(inst_file != NULL); + CU_TEST(strcmp(fname, inst_file) == 0); + tracefs_put_tracing_file(inst_file); + free(fname); + + CU_TEST(asprintf(&fname, "%s/instances/%s/"ALL_TRACERS, tdir, name) > 0); + CU_TEST(fname != NULL); + CU_TEST(stat(fname, &st) == 0); + inst_file = tracefs_instance_get_file(instance, ALL_TRACERS); + CU_TEST(inst_file != NULL); + CU_TEST(strcmp(fname, inst_file) == 0); + + test_instance_file_read(NULL, ALL_TRACERS); + test_instance_file_read(instance, ALL_TRACERS); + + file1 = tracefs_instance_file_read(instance, ALL_TRACERS, NULL); + CU_TEST(file1 != NULL); + tracer = strtok(file1, " "); + CU_TEST(tracer != NULL); + ret = tracefs_instance_file_write(instance, CUR_TRACER, tracer); + CU_TEST(ret == strlen(tracer)); + file2 = tracefs_instance_file_read(instance, CUR_TRACER, &size); + CU_TEST(file2 != NULL); + CU_TEST(size >= strlen(tracer)); + CU_TEST(strncmp(file2, tracer, strlen(tracer)) == 0); + free(file1); + free(file2); + + tracefs_put_tracing_file(inst_file); + free(fname); + + CU_TEST(tracefs_instance_destroy(NULL) != 0); + CU_TEST(tracefs_instance_destroy(instance) == 0); + CU_TEST(tracefs_instance_destroy(instance) != 0); + tracefs_instance_free(instance); + CU_TEST(stat(inst_dir, &st) != 0); + free(inst_dir); +} + static int test_suite_destroy(void) { tracefs_instance_destroy(test_instance); @@ -175,6 +295,8 @@ void test_tracefs_lib(void) } CU_add_test(suite, "tracing file / directory APIs", test_trace_file); + CU_add_test(suite, "instance file / directory APIs", + test_instance_file); CU_add_test(suite, "tracefs_iterate_raw_events API", test_iter_raw_events); } From patchwork Wed Jan 29 09:54:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 11355791 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0A9BE159A for ; Wed, 29 Jan 2020 09:54:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D9B5D2071E for ; Wed, 29 Jan 2020 09:54:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="b3nQzOeb" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726177AbgA2Jyd (ORCPT ); Wed, 29 Jan 2020 04:54:33 -0500 Received: from mail-lf1-f66.google.com ([209.85.167.66]:46077 "EHLO mail-lf1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726067AbgA2Jyd (ORCPT ); Wed, 29 Jan 2020 04:54:33 -0500 Received: by mail-lf1-f66.google.com with SMTP id 203so11408082lfa.12 for ; Wed, 29 Jan 2020 01:54:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uts4suM7LY1xI8V7E+dXpEnUTc66uIwgsYyNjau4Mto=; b=b3nQzOebmZQzdXagslkpK2/4auxGuyQ1k0jMh+dEpB/M4snv6mIXXxwLJUkrin7399 YT8sJ2ZhvHEBIizMKP26lG9r2pg7FCaveC5GRvUWcPaouegGihWHgklt7vydMtnSdTaZ jFZK2pREjxSSpxw9WVXMMt/JAtcRasejvYiOe2RN68rZBWnTT94vs9GhCvd03ieBnYZd AlqPH0yPGCy0uTOAgysbhQtAuRkbl+KRO673gEgRieBCqDE5fuTDvbFo4D+gfEcg5Rgt xgqLf6bXsIyeF3A00903ac2V0/VRZchyJlNnsCIu1emYtYBi8RkUouMYTmj6tCT0dXPZ QYtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uts4suM7LY1xI8V7E+dXpEnUTc66uIwgsYyNjau4Mto=; b=Qvx0f4AOGMW2MVvQzUfF1GZtr+I2zh5SD1QcvSixOlM1aaqG0SyiAu3t36ikB9pQ/q Dl+vevVsU554COW8vfPUfq/crRoBwj0MKWooC3kj6lsSdpm1qno74fD++FO5CcRbbln7 YU59dA/dG2OFp+jjW7rmphDOP7UjDQPq8bbhMvAtqF3G0IovxJ4mlTTkeVJH/mBLwta4 4JEbhneFPSKpYIsgqt34aUl9nkwOHoOrTGuXQu2Uw0JHEEd9AYty9uPE9gjvO0cBKM0k FhRfnOe9zU6X6eVoS0fbBrGrREHAzdaM32peGZnoKY/J2rzoSloTvY4Wj3iH8imxrMaO lhgA== X-Gm-Message-State: APjAAAWwQKXQrVqCIs90dKdkWG8+dxk5VAtB7sz6dTCJIoDNDNQzSatR W+xTs4Oj1r/YZMC/Pg6I1l0= X-Google-Smtp-Source: APXvYqyeinPVqQcGEq8zcXKjrzkKucnKRXeFWoVPSQcWtOzvFUwj4NSfT4E7HN+XgFOfaGR5U0NetA== X-Received: by 2002:a19:4849:: with SMTP id v70mr5232732lfa.30.1580291671506; Wed, 29 Jan 2020 01:54:31 -0800 (PST) Received: from oberon.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id q10sm648584ljj.60.2020.01.29.01.54.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2020 01:54:30 -0800 (PST) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH 7/9] trace-cmd: Unit tests for libtracefs APIs related to ftrace events and systems Date: Wed, 29 Jan 2020 11:54:19 +0200 Message-Id: <20200129095421.881786-8-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200129095421.881786-1-tz.stoyanov@gmail.com> References: <20200129095421.881786-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org Added unit tests for these APIs: tracefs_event_systems() tracefs_system_events() tracefs_list_free() Signed-off-by: Tzvetomir Stoyanov (VMware) --- utest/tracefs-utest.c | 66 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/utest/tracefs-utest.c b/utest/tracefs-utest.c index 7930c64..e4ab64f 100644 --- a/utest/tracefs-utest.c +++ b/utest/tracefs-utest.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -258,6 +259,69 @@ static void test_instance_file(void) free(inst_dir); } +static void exclude_string(char **strings, char *name) +{ + int i; + + for (i = 0; strings[i]; i++) { + if (strcmp(strings[i], name) == 0) { + free(strings[i]); + strings[i] = strdup("/"); + return; + } + } +} + +static void test_check_files(const char *fdir, char **files) +{ + struct dirent *dent; + DIR *dir; + int i; + + dir = opendir(fdir); + CU_TEST(dir != NULL); + + while ((dent = readdir(dir))) + exclude_string(files, dent->d_name); + + closedir(dir); + + for (i = 0; files[i]; i++) + CU_TEST(files[i][0] == '/'); +} + +static void test_system_event(void) +{ + const char *tdir; + char **systems; + char **events; + char *sdir = NULL; + + tdir = tracefs_get_tracing_dir(); + CU_TEST(tdir != NULL); + + systems = tracefs_event_systems(tdir); + CU_TEST(systems != NULL); + + events = tracefs_system_events(tdir, systems[0]); + CU_TEST(events != NULL); + + asprintf(&sdir, "%s/events/%s", tdir, systems[0]); + CU_TEST(sdir != NULL); + test_check_files(sdir, events); + free(sdir); + sdir = NULL; + + asprintf(&sdir, "%s/events", tdir); + CU_TEST(sdir != NULL); + test_check_files(sdir, systems); + + tracefs_list_free(systems); + tracefs_list_free(events); + + free(sdir); +} + static int test_suite_destroy(void) { tracefs_instance_destroy(test_instance); @@ -297,6 +361,8 @@ void test_tracefs_lib(void) test_trace_file); CU_add_test(suite, "instance file / directory APIs", test_instance_file); + CU_add_test(suite, "systems and events APIs", + test_system_event); CU_add_test(suite, "tracefs_iterate_raw_events API", test_iter_raw_events); } From patchwork Wed Jan 29 09:54:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 11355793 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id F3497112B for ; Wed, 29 Jan 2020 09:54:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CB7662071E for ; Wed, 29 Jan 2020 09:54:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZH3m90wz" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726067AbgA2Jye (ORCPT ); Wed, 29 Jan 2020 04:54:34 -0500 Received: from mail-lj1-f195.google.com ([209.85.208.195]:36407 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726145AbgA2Jye (ORCPT ); Wed, 29 Jan 2020 04:54:34 -0500 Received: by mail-lj1-f195.google.com with SMTP id r19so17756864ljg.3 for ; Wed, 29 Jan 2020 01:54:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8+jjHJvLvbui4mYPTlH3obXmaqZw7jC24PU1x6Bgi7c=; b=ZH3m90wziERDVRSiN6PunfkeXrgPI4X50X2p+PMpKWyVcBZi0yP84FPwzIydza7IA4 XYcnrtPDvhJwl0J9tHxO+AP3+cELN/wgAgD5DCP7slSjodJR22El/jG1a5EIESycRJAZ vQXRTYF1J3QfpSb7Ys+ZL2tfTLOyDIOaU1Mm01fplun0kTIii63tZT9MOtdzfMfbumdh gG/eIbdqOw0+lV7iZqF9/rQHG2ZZ8my533LnFMSXbZFTtYfgXq+NdNn9AiqMnGKVGxav +7xYhbzo4cMqmcEBp6ryFV8NFxUvhXKtFLn52CZtJeCEx3HfzpE1GhrXwGhehBqW9if4 8EPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8+jjHJvLvbui4mYPTlH3obXmaqZw7jC24PU1x6Bgi7c=; b=r0ltjYrZNydC4/W9bKyBCNuvaxEtPz04bxv2Oixz3xjyFVb4xK6TrP3pd53x1niiUv W/pjUSWMuhm2CjHlarc2jVJf3MjcHs+pqDm43gAPq/ZTlbrNYoCX0ghrOrf05fO7IXfc JhigzJUp2aTMM8SuQ0LxQF+nDFzgVnFl4XAb7fF2xOpxIQfsNkAf568VJg6/cfzhq838 km8AdcY8q8xQSxN1eVMbVOIkM+wnx6LH2/mNER3+Zyeh4rcjzRTVajH3499BAmsFe4to LSp7UKwf+ilNNd8rfOy1SuRLZXtCR3ofzb8TIF5ysqzK4mwTxNXqCFYFwRZrg3Tgi5ch dqNA== X-Gm-Message-State: APjAAAWMV/TCG9aySSJnq4yjAZL04jPUj/JmOFj/DalLSONr0P5ynb65 504vYI1gaURqTybDCIbpOB4= X-Google-Smtp-Source: APXvYqzD3kNmH7bvdD0APvtlVtti5TdxdqKtsYlI5vDLtfha3z0s15uDDcNkPLp0TzeO7jRAxZ/Rxw== X-Received: by 2002:a2e:b00f:: with SMTP id y15mr4047781ljk.290.1580291672758; Wed, 29 Jan 2020 01:54:32 -0800 (PST) Received: from oberon.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id q10sm648584ljj.60.2020.01.29.01.54.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2020 01:54:32 -0800 (PST) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH 8/9] trace-cmd: Unit test for tracefs_tracers() API Date: Wed, 29 Jan 2020 11:54:20 +0200 Message-Id: <20200129095421.881786-9-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200129095421.881786-1-tz.stoyanov@gmail.com> References: <20200129095421.881786-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org A unit test for tracefs_tracers() API. Signed-off-by: Tzvetomir Stoyanov (VMware) --- utest/tracefs-utest.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/utest/tracefs-utest.c b/utest/tracefs-utest.c index e4ab64f..1fd7f09 100644 --- a/utest/tracefs-utest.c +++ b/utest/tracefs-utest.c @@ -322,6 +322,35 @@ static void test_system_event(void) free(sdir); } +static void test_tracers(void) +{ + const char *tdir; + char **tracers; + char *tfile; + char *tracer; + int i; + + tdir = tracefs_get_tracing_dir(); + CU_TEST(tdir != NULL); + + tracers = tracefs_tracers(tdir); + CU_TEST(tracers != NULL); + + tfile = tracefs_instance_file_read(NULL, ALL_TRACERS, NULL); + + tracer = strtok(tfile, " "); + while (tracer) { + exclude_string(tracers, tracer); + tracer = strtok(NULL, " "); + } + + for (i = 0; tracers[i]; i++) + CU_TEST(tracers[i][0] == '/'); + + tracefs_list_free(tracers); + free(tfile); +} + static int test_suite_destroy(void) { tracefs_instance_destroy(test_instance); @@ -365,4 +394,6 @@ void test_tracefs_lib(void) test_system_event); CU_add_test(suite, "tracefs_iterate_raw_events API", test_iter_raw_events); + CU_add_test(suite, "tracefs_tracers API", + test_tracers); } From patchwork Wed Jan 29 09:54:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Tzvetomir Stoyanov (VMware)" X-Patchwork-Id: 11355795 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3386C112B for ; Wed, 29 Jan 2020 09:54:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1210920720 for ; Wed, 29 Jan 2020 09:54:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pNlu/Xdb" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726192AbgA2Jyg (ORCPT ); Wed, 29 Jan 2020 04:54:36 -0500 Received: from mail-lf1-f68.google.com ([209.85.167.68]:37365 "EHLO mail-lf1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726145AbgA2Jyf (ORCPT ); Wed, 29 Jan 2020 04:54:35 -0500 Received: by mail-lf1-f68.google.com with SMTP id b15so11437655lfc.4 for ; Wed, 29 Jan 2020 01:54:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uyMC3iMuzLjNFxayaNgTkdaIyXwq8suHB2zITIyfC0o=; b=pNlu/Xdbua7hrx1O5BiOqRxHCmpPaMJcbsmRcp4fwDRVm4EdyVnYN6ctFfBv6ox3t8 OLs6JizIG3DsBzecqrls8UiYU7RBmfd9T1yY6V3O5JEi0Pd+aW5gK6NaPD4MbcA34Z57 slD8KOeDUfeZZIixPcgYm6CjrJOmTTFnZ8A9SjuEyMrZb3MK1OozEdn2dMTd+HamqfoI W+EQSyGjM486BCv08PznOubMM3K1p5gBguKILM3/lJxcWcwj4clzkbueP20ugOGPzY4D yxbipJMnUeiwpSTPXpX/O5QVcFO1CdAbi59FR+QZ6259ySbWED8GMArW4vlBYM2kBBxd 7KgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uyMC3iMuzLjNFxayaNgTkdaIyXwq8suHB2zITIyfC0o=; b=BggmGw03AbmnvALA38XsPkf8mneNHbnxIFxULrmKzmcmXgclncOGK7ASIVuCKhCRDQ BiBTrUlSzfIdClVnQTzbNgYLir+FOhajeBcjuOs/jab6ElVJTzuHlynClcmT/KHs0otQ 1Xi8rrIBIwnngYhiminF7wfSd8PI74qf0M5vkN3APmG+6/LF3JLg6afVXrUDB0I2OmfE Xqxm4Uy0tTXLudRMeaupv2R59GK6VnGWAINNWhwqCmE0yQAGD3AQAMdWzoCvMz4POVGU 1w2kvmsP42Fypl7Vh/GAybIXmScuSZqb4u5D4G1nRfLxHDIoQaGbi9mNce3LSM30Y/z3 8txQ== X-Gm-Message-State: APjAAAUK94AFwtDpQGR6uXDKKZne79goY9QsRgVklyGhdY9JzzqfYSfS IuqIgtfTJdHu8ZHI5tsvJec= X-Google-Smtp-Source: APXvYqxl4e7aKJDUGHfFrDRkw4uz9n1y6mCgWIJhrKWv0f6fJfpis/V6bpYZbXitddvM2n07vX+Nnw== X-Received: by 2002:a19:4a:: with SMTP id 71mr5113740lfa.50.1580291674038; Wed, 29 Jan 2020 01:54:34 -0800 (PST) Received: from oberon.eng.vmware.com ([146.247.46.5]) by smtp.gmail.com with ESMTPSA id q10sm648584ljj.60.2020.01.29.01.54.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2020 01:54:33 -0800 (PST) From: "Tzvetomir Stoyanov (VMware)" To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org Subject: [PATCH 9/9] trace-cmd: Unit tests for libtracefs APIs related to allocating a tep handler based on local events Date: Wed, 29 Jan 2020 11:54:21 +0200 Message-Id: <20200129095421.881786-10-tz.stoyanov@gmail.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200129095421.881786-1-tz.stoyanov@gmail.com> References: <20200129095421.881786-1-tz.stoyanov@gmail.com> MIME-Version: 1.0 Sender: linux-trace-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org Added unit tests for these APIs: tracefs_local_events() tracefs_local_events_system() tracefs_fill_local_events() Signed-off-by: Tzvetomir Stoyanov (VMware) --- utest/tracefs-utest.c | 92 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/utest/tracefs-utest.c b/utest/tracefs-utest.c index 1fd7f09..2473e89 100644 --- a/utest/tracefs-utest.c +++ b/utest/tracefs-utest.c @@ -351,6 +351,96 @@ static void test_tracers(void) free(tfile); } +static void test_check_events(struct tep_handle *tep, char *system, bool exist) +{ + struct dirent *dent; + char file[PATH_MAX]; + char buf[1024]; + char *edir = NULL; + const char *tdir; + DIR *dir; + int fd; + + tdir = tracefs_get_tracing_dir(); + CU_TEST(tdir != NULL); + + asprintf(&edir, "%s/events/%s", tdir, system); + dir = opendir(edir); + CU_TEST(dir != NULL); + + while ((dent = readdir(dir))) { + if (dent->d_name[0] == '.') + continue; + sprintf(file, "%s/%s/id", edir, dent->d_name); + fd = open(file, O_RDONLY); + if (fd < 0) + continue; + CU_TEST(read(fd, buf, 1024) > 0); + if (exist) { + CU_TEST(tep_find_event(tep, atoi(buf)) != NULL); + } else { + CU_TEST(tep_find_event(tep, atoi(buf)) == NULL); + } + + close(fd); + } + + closedir(dir); + free(edir); + +} + +static void test_local_events(void) +{ + struct tep_handle *tep; + const char *tdir; + char **systems; + char *lsystems[3]; + int i; + + tdir = tracefs_get_tracing_dir(); + CU_TEST(tdir != NULL); + + tep = tracefs_local_events(tdir); + CU_TEST(tep != NULL); + + systems = tracefs_event_systems(tdir); + CU_TEST(systems != NULL); + + for (i = 0; systems[i]; i++) + test_check_events(tep, systems[i], true); + tep_free(tep); + + memset(lsystems, 0, sizeof(lsystems)); + for (i = 0; systems[i]; i++) { + if (!lsystems[0]) + lsystems[0] = systems[i]; + else if (!lsystems[2]) + lsystems[2] = systems[i]; + else + break; + } + + if (lsystems[0] && lsystems[2]) { + tep = tracefs_local_events_system(tdir, + (const char * const *)lsystems); + CU_TEST(tep != NULL); + test_check_events(tep, lsystems[0], true); + test_check_events(tep, lsystems[2], false); + } + tep_free(tep); + + tep = tep_alloc(); + CU_TEST(tep != NULL); + CU_TEST(tracefs_fill_local_events(tdir, tep, NULL) == 0); + for (i = 0; systems[i]; i++) + test_check_events(tep, systems[i], true); + + tep_free(tep); + + tracefs_list_free(systems); +} + static int test_suite_destroy(void) { tracefs_instance_destroy(test_instance); @@ -396,4 +486,6 @@ void test_tracefs_lib(void) test_iter_raw_events); CU_add_test(suite, "tracefs_tracers API", test_tracers); + CU_add_test(suite, "tracefs_local events API", + test_local_events); }