From nobody Sun Feb 8 07:58:22 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 816B33590A3 for ; Mon, 19 Jan 2026 11:00:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768820418; cv=none; b=qvF4/073fBOiv118aUAFi8V7dIk9EQkpa3+S8/mNwDDRsECDfn+ijSOYUAFFGa2j4qnI/Q565wJp8Ppy54wDb12EDkIg6wKiorFdvMvDdNrqXBld18BsfoArUQxxkLzYXsw/WZ8iME1JMlj7zcY3L7OlOkHNPZt4MijYznviNcw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768820418; c=relaxed/simple; bh=C7LlKKxPaInK97dctAhIdjMR4Rk3uZG8IPeYUOu5kko=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=V3zMtKde7Ef4ATbfVnC1uiGZJLszXwrIVsgd7u5HS6L99PZyhskwNG0HVtR78BoCt6t5ZRJb3MU9Du/MLdCLLj9veqvKbQ2ZsCCcZR5pBCe6g4pEinA4/KQrKPts3r8RktOwWI+Cu7VlvOIeSAlCBgLZuOj3hrwhr0unvyB/eGM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=VT7JkXS4; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=GumEHhmy; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="VT7JkXS4"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="GumEHhmy" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1768820416; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dzmmta4c/LhOX/TptbSfeprx1BTimlzvuF68nBD+iX0=; b=VT7JkXS4VbAt+Q5Rl7+aira2uCZJaP90S2uO1TMENVtO4YTLxokyrwbcJYGRII4KBi+55w d+inuPbeZ+5DeTcEyddjSgfHJ+ahk7CXAXZfo+UJJ8ByQ88vbDPJkFU27n8X6uuojZdfhy rSm/xBi/RnCxpytV8U2/xy8EAeCwQrk= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-127-HCKf4YyLOEqjxbFQNy3ZJA-1; Mon, 19 Jan 2026 06:00:15 -0500 X-MC-Unique: HCKf4YyLOEqjxbFQNy3ZJA-1 X-Mimecast-MFC-AGG-ID: HCKf4YyLOEqjxbFQNy3ZJA_1768820414 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-42fdbba545fso3331054f8f.0 for ; Mon, 19 Jan 2026 03:00:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1768820414; x=1769425214; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=dzmmta4c/LhOX/TptbSfeprx1BTimlzvuF68nBD+iX0=; b=GumEHhmy7EHaxT+d79mT8vQRMYRWxydjaU23x8aW+c+pvOMo+44ytPkT6g8VWUnKsr fa6yNf6UzWmhvyX1xY5O5H8O+ZsAmf12oW1YyAqznahkuY2q0byVP+svMNqE5O2RdcuJ GFKQWruUmVWWQ/sNuqJD4g/efyBWL1s3X3uU7lWvYafTeKPGhHxAHbKd8WpxW5lwPYBR DYPQ8lwkDbuvxMoSAVXQpzPWCyekm0c7QRXLCfFG/a8NHHv29JxKN8y6dvgvozYy/xE1 jQL5W6siFhwWDJqkWTnsMOLNKLiiCihGXBYSu+ofdxJ7iEsd/mcUHMhpf8uuOwydPCty eaUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768820414; x=1769425214; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=dzmmta4c/LhOX/TptbSfeprx1BTimlzvuF68nBD+iX0=; b=wnVfYK8nILAE8OOq3+LvB+Ey7F+ytlCBKyMiJfOQmHDkFS8nC9cWZROtZkl4aFfLY9 OKdadeLs6tUGxSZDQpOh/noSXWMQ7m7/DzwhCIkgp364my2yAsnk3nVbcuXsxyDTtSN8 pjj+bd8rLgNogwtpME9+z9IC78tUsgy2J/fpmLmJiYkTAlKvc1wpoo8hiW1JuUVKsneH AHi0lQAnvAcHN8FoU0YmhQytWcioHsyocLFHtS2xKFN00/gz1UgnpdGOxxnioQ4qSQvj ysI6quh9uiEwBPigzznsO8zjAHlqu+YgKpLN3Y0HOVD7HIRfalsNkyvMSldMuQBLavtb sRHA== X-Forwarded-Encrypted: i=1; AJvYcCUDfoKAZwTg4+1AwzpwyJtjCEetrlAk0Ba0uc32Ucyubnq+DFBZRQNdGLCYYPc/RCgMP5HkZNdc+rOB0C0=@vger.kernel.org X-Gm-Message-State: AOJu0Yyq6iMltiDweUD5nMq1krjcFNHuWkydMuP1Z9TNU//+v+RavSDj 22Km4OsaObvWz/xFIvmDPbmwY5Q+GEraEDCcPfLhMHgCu+PCfrXmxzbbXGfNAZF9Hen4o2/xmMe YXCc+f0CCjkTjJNvvnuulFqTEdxV8qQ14o0Gc3dSWNpTFxmt/UFKD+fi37wRNFaN3xA== X-Gm-Gg: AY/fxX6HT2C2OIuYrH9kTaEJZaxA+QjZeexF3YLvC6FP3peL9kEaoMvb+cm7mv0KIXM LoIt5zP7cInTVFe+gGiI8liSDgXocIMg5JSQ+4eGhyxKY2Yuwt0NjSjA0Y36g6EIAesKWq5aWpe QOap3w4WMj2GFGLONsGvBWv0y9g44TQi63yGgEn9mvF3t4QheE7i/+xtUvqJhe/85RDbp2N6/yY ld5Jp7dLsoW+viEr6d2NZ6WH0G0hXrEcx+2/NzHMF4SW6B1GpSg32jgdT6UYficsXAHJXisPvu1 uQk5QtCDf1j/6e1uC3lAh6Uyf7LOrXgWpcK880vulXb0zYG+f/PkWRnqr8xwtnrmmJTbH5UqdDN Mp3xQ1yA3CcPcFJt5UuPDiw== X-Received: by 2002:a05:600c:3785:b0:47e:e0b3:2437 with SMTP id 5b1f17b1804b1-47f428ae03cmr121552275e9.5.1768820413535; Mon, 19 Jan 2026 03:00:13 -0800 (PST) X-Received: by 2002:a05:600c:3785:b0:47e:e0b3:2437 with SMTP id 5b1f17b1804b1-47f428ae03cmr121551855e9.5.1768820413000; Mon, 19 Jan 2026 03:00:13 -0800 (PST) Received: from costa-tp.bos2.lab ([2a00:a041:e23c:600:cadf:120:2b7f:a706]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43569922032sm23320735f8f.8.2026.01.19.03.00.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Jan 2026 03:00:12 -0800 (PST) From: Costa Shulyupin To: Steven Rostedt , Tomas Glozar , Ian Rogers , Arnaldo Carvalho de Melo , Namhyung Kim , Alexandre Chartre , Costa Shulyupin , Blake Jones , Yuzhuo Jing , Leo Yan , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org Subject: [PATCH v2 1/2] tools/build: Add feature test for libcheck Date: Mon, 19 Jan 2026 12:58:56 +0200 Message-ID: <20260119105857.797498-2-costa.shul@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260119105857.797498-1-costa.shul@redhat.com> References: <20260119105857.797498-1-costa.shul@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Enable support for unit tests in rtla. Note that the pkg-config file for libcheck is named check.pc. Signed-off-by: Costa Shulyupin --- tools/build/Makefile.feature | 3 +++ tools/build/feature/Makefile | 4 ++++ tools/build/feature/test-libcheck.c | 8 ++++++++ 3 files changed, 15 insertions(+) create mode 100644 tools/build/feature/test-libcheck.c diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature index 362cf8f4a0a0..ec0b21207fab 100644 --- a/tools/build/Makefile.feature +++ b/tools/build/Makefile.feature @@ -115,6 +115,7 @@ FEATURE_TESTS_EXTRA :=3D \ hello \ libbabeltrace \ libcapstone \ + libcheck \ libbfd-liberty \ libbfd-liberty-z \ libopencsd \ @@ -175,6 +176,8 @@ ifneq ($(PKG_CONFIG),) $(foreach package,$(FEATURE_PKG_CONFIG),$(call feature_pkg_config,$(pack= age))) endif =20 +FEATURE_CHECK_LDFLAGS-libcheck =3D -lcheck + # Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features. # If in the future we need per-feature checks/flags for features not # mentioned in this list we need to refactor this ;-). diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile index 0d5a15654b17..15d8cce9f52a 100644 --- a/tools/build/feature/Makefile +++ b/tools/build/feature/Makefile @@ -50,6 +50,7 @@ FILES=3D \ test-timerfd.bin \ test-libbabeltrace.bin \ test-libcapstone.bin \ + test-libcheck.bin \ test-compile-32.bin \ test-compile-x32.bin \ test-zlib.bin \ @@ -306,6 +307,9 @@ $(OUTPUT)test-libbabeltrace.bin: $(OUTPUT)test-libcapstone.bin: $(BUILD) # -lcapstone provided by $(FEATURE_CHECK_LDFLAGS-libcapstone) =20 +$(OUTPUT)test-libcheck.bin: + $(BUILD) # -lcheck is provided by $(FEATURE_CHECK_LDFLAGS-libcheck) + $(OUTPUT)test-compile-32.bin: $(CC) -m32 -Wall -Werror -o $@ test-compile.c =20 diff --git a/tools/build/feature/test-libcheck.c b/tools/build/feature/test= -libcheck.c new file mode 100644 index 000000000000..cfb8d452e9ef --- /dev/null +++ b/tools/build/feature/test-libcheck.c @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0 +#include + +int main(void) +{ + Suite *s =3D suite_create("test"); + return s =3D=3D 0; +} --=20 2.52.0 From nobody Sun Feb 8 07:58:22 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DC5FE3590A5 for ; Mon, 19 Jan 2026 11:00:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768820428; cv=none; b=WqLp9Bi2cZMoPkh6vgOAQ2ZrzgWHQzstzF/gwalt38Iq/0RxlUdFyiZgwMvz6pp/bPvD1iMUyE+KjyTnxkAjpByNwiuGwjG5sd18krHjn6GmuGq9LZK3lD2oVWWhUQLJXNs1eoPhG043QJynEzldrKBQehxw5agSGxrdoxku+dI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768820428; c=relaxed/simple; bh=ez8aOnbh/mA/GGI1tyq+dSDzRfB5tvxRONXjcBSQbKI=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=W+D6mvPWhj3B5Cg2R+Kd7lL5qtpevOIVe+WIpjMG3oAQaGZ9kh1bRp03wfNfuSX7ySMjSgSNt+qShvaFPWd0UOERYWLTrQWG0bDTeLccqv7715SmsIf0xHqhYXb5RWnTnGbHWHjqcFGJv6M8Wnlv8MxbnO3u/TFG51nd88Qxujk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=ILENkfZp; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=djJDO3Xj; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="ILENkfZp"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="djJDO3Xj" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1768820426; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NeqBKSIGtMGISMXlLxGNxdibLP5FYPHmt6b8d363gek=; b=ILENkfZpMi4wT6lyMqvEiFj6K3s1CG+kaaOFr7xThTTLeqA2E85Dd05r5aHl3aig1W/3bm 6Hc6WC3WruF5F+Vx50oIBI+/Jc++xYsp7b1L50SSWde9TedSbuM04AwqGp0vtsWlyPTyXY avedk5YVkKAgCYs9nFX2eaPkeiljHYY= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-397-aSPU77-0PD6XeWquoZruBQ-1; Mon, 19 Jan 2026 06:00:24 -0500 X-MC-Unique: aSPU77-0PD6XeWquoZruBQ-1 X-Mimecast-MFC-AGG-ID: aSPU77-0PD6XeWquoZruBQ_1768820423 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-432586f2c82so3210537f8f.0 for ; Mon, 19 Jan 2026 03:00:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1768820423; x=1769425223; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=NeqBKSIGtMGISMXlLxGNxdibLP5FYPHmt6b8d363gek=; b=djJDO3Xjdrn++gssj/QZ+zMX0xsfWV4BKmqZWQhgu53G79RJMEL8e0wJru6gZxFK07 Q7DZYYzMDMGPlSO8R1MSzdKF7ByJ3MpnJcJdjdGxprBM4XxqK+7levN94aDWQ8ssKQq+ MOvcANAAwt78Z7ebZ+xbSYVtgWf8HbGtPa6Y2A0Hd+xhWfBWRdPkTexbSfJrrfZhN1Mg rlVUqrkdFQMcuAjpM5yucUWt3P07oOaqsxwWtJLuqS4bLsNS4+AXlKbSS1bbuzlqtP57 BvwWA9aqORzQV1GdDA/gRLPrCwv3kZfspb0yBGWMJWfv7Nm67LkK4rUDof8LVM6gr1K7 Yvhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768820423; x=1769425223; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=NeqBKSIGtMGISMXlLxGNxdibLP5FYPHmt6b8d363gek=; b=jKS+8VV40am5hnwJe017n4IKV3a8iVDf3cGNX1PJDyOkM7fqZFx9BQL1rD/aMIQBQx 2wAbbynSXIC0V1Ww6s2l+G4tMay1gCFxI1KuhY+uxfyApqAuBLDrvvFJTgnyOXuRRr/4 InE4si1u/of7y9dkvAqABAAVxBcwWSYsg7lhH7qnO2u+LijIE0vBDdCunMB6GuZdTJWe i1RmGXpz8dMN1k/weKaOHoFjO+NmHsf00fD/NjuMQWZTkUGC/2a/TcKpqwI04v3gj0ED lpjkZQdPEpPM4RfmYt8adUo/M7bVvHLBG+Nyh6Rka1u3IJhUFWi+ovabqifDqh6s1M+x 0MSw== X-Forwarded-Encrypted: i=1; AJvYcCVKiqyBogIS9xJ8LgaI6AH6anXGxMAm4XbFLrvlCIJrmbhCE/+uW+yNToCcz9wciCrP9jQhn+/OP/ypdCE=@vger.kernel.org X-Gm-Message-State: AOJu0YyxoxXmNBe3YYatvyazTUzqtKAI9UjlqAIK4aLXc2HirI1ZvMX+ 4xC79NbVYKJkOZl67avPwZPi0oMUSlAsGFkjlgc87M3u3ZeTBI/ZvmXuC+iz63PCgq+FF/+KOid 5drS2/+U19qblmQbxXC+dlAbvCnjBewqAXAfNitw0JBgWUn7Wf+5AbWW2NBe1o+jXtQ== X-Gm-Gg: AZuq6aLVBXtxc1EwuK5m0zV6GaaQehV5SBybdyCV0ygYl0d2glq9nLBgkxpDCfXC8e/ CQEwXb5YKeRcub1bMJNre+sjPxDWFwzOiiH47mxeCAu0P3Yp7kPpoKdzMxDVrRUafmxha2uO9LL IEWJmVJ7Vx5n9AhdQTKrJq0yKp+NFPhtt0i6aoCDidnZ1PWoxSZ9OqimrV3E7EqW5JgZvyEwWnP DvLHHDuO1t6JfAc4UMVGa0xJu3mLdPrerOG0SfYqOvwxlYs2VSeNDCxiFZPK8CdlObF/N08IaN1 NKnZxlAuPBJaYktZQ/8o6Ovbp/5TCR+BUpf6ki/5jLY0epabSKk3G+bpFnpm0iS1zrUCKD1tzSH YZ6W13DzvJwTXN5EdCXkWIA== X-Received: by 2002:a05:6000:250e:b0:431:1c7:f967 with SMTP id ffacd0b85a97d-4356955eef8mr15331279f8f.17.1768820422885; Mon, 19 Jan 2026 03:00:22 -0800 (PST) X-Received: by 2002:a05:6000:250e:b0:431:1c7:f967 with SMTP id ffacd0b85a97d-4356955eef8mr15330855f8f.17.1768820419491; Mon, 19 Jan 2026 03:00:19 -0800 (PST) Received: from costa-tp.bos2.lab ([2a00:a041:e23c:600:cadf:120:2b7f:a706]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43569922032sm23320735f8f.8.2026.01.19.03.00.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Jan 2026 03:00:19 -0800 (PST) From: Costa Shulyupin To: Steven Rostedt , Tomas Glozar , Ian Rogers , Arnaldo Carvalho de Melo , Namhyung Kim , Alexandre Chartre , Costa Shulyupin , Blake Jones , Yuzhuo Jing , Leo Yan , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org Subject: [PATCH v2 2/2] tools/rtla: Add unit tests for utils.c Date: Mon, 19 Jan 2026 12:58:57 +0200 Message-ID: <20260119105857.797498-3-costa.shul@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260119105857.797498-1-costa.shul@redhat.com> References: <20260119105857.797498-1-costa.shul@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add unit tests for utility functions in src/utils.c using the Check testing framework. The tests verify parse_cpu_set(), strtoi(), and parse_prio() functions. Unit tests are built conditionally when libcheck is available. Run tests with 'make unit-test'. The test framework uses the Check library which provides process isolation for each test, preventing failures in one test from affecting others. Signed-off-by: Costa Shulyupin --- v2: Address feedback from Tomas Glozar - Split the patch. - Extract separate target unit-test. - use build system - libcheck: document, add to tools/build dependency detection --- tools/tracing/rtla/Build | 1 + tools/tracing/rtla/Makefile | 5 + tools/tracing/rtla/Makefile.config | 8 ++ tools/tracing/rtla/README.txt | 1 + tools/tracing/rtla/tests/unit/Build | 2 + tools/tracing/rtla/tests/unit/Makefile.unit | 17 +++ tools/tracing/rtla/tests/unit/unit_tests.c | 123 ++++++++++++++++++++ 7 files changed, 157 insertions(+) create mode 100644 tools/tracing/rtla/tests/unit/Build create mode 100644 tools/tracing/rtla/tests/unit/Makefile.unit create mode 100644 tools/tracing/rtla/tests/unit/unit_tests.c diff --git a/tools/tracing/rtla/Build b/tools/tracing/rtla/Build index 6c9d5b36a315..3ce2e0f567fd 100644 --- a/tools/tracing/rtla/Build +++ b/tools/tracing/rtla/Build @@ -1 +1,2 @@ rtla-y +=3D src/ +unit_tests-y +=3D tests/unit/ diff --git a/tools/tracing/rtla/Makefile b/tools/tracing/rtla/Makefile index 2701256abaf3..45690ee14544 100644 --- a/tools/tracing/rtla/Makefile +++ b/tools/tracing/rtla/Makefile @@ -33,12 +33,14 @@ DOCSRC :=3D ../../../Documentation/tools/rtla/ FEATURE_TESTS :=3D libtraceevent FEATURE_TESTS +=3D libtracefs FEATURE_TESTS +=3D libcpupower +FEATURE_TESTS +=3D libcheck FEATURE_TESTS +=3D libbpf FEATURE_TESTS +=3D clang-bpf-co-re FEATURE_TESTS +=3D bpftool-skeletons FEATURE_DISPLAY :=3D libtraceevent FEATURE_DISPLAY +=3D libtracefs FEATURE_DISPLAY +=3D libcpupower +FEATURE_DISPLAY +=3D libcheck FEATURE_DISPLAY +=3D libbpf FEATURE_DISPLAY +=3D clang-bpf-co-re FEATURE_DISPLAY +=3D bpftool-skeletons @@ -47,6 +49,7 @@ all: $(RTLA) =20 include $(srctree)/tools/build/Makefile.include include Makefile.rtla +include tests/unit/Makefile.unit =20 # check for dependencies only on required targets NON_CONFIG_TARGETS :=3D clean install tarball doc doc_clean doc_install @@ -109,6 +112,8 @@ clean: doc_clean fixdep-clean $(Q)rm -f rtla rtla-static fixdep FEATURE-DUMP rtla-* $(Q)rm -rf feature $(Q)rm -f src/timerlat.bpf.o src/timerlat.skel.h example/timerlat_bpf_act= ion.o + $(Q)rm -f $(UNIT_TESTS) + check: $(RTLA) tests/bpf/bpf_action_map.o RTLA=3D$(RTLA) BPFTOOL=3D$(SYSTEM_BPFTOOL) prove -o -f -v tests/ examples: example/timerlat_bpf_action.o diff --git a/tools/tracing/rtla/Makefile.config b/tools/tracing/rtla/Makefi= le.config index 07ff5e8f3006..0bdd258b76de 100644 --- a/tools/tracing/rtla/Makefile.config +++ b/tools/tracing/rtla/Makefile.config @@ -61,6 +61,14 @@ else $(info Please install libcpupower-dev/kernel-tools-libs-devel) endif =20 +$(call feature_check,libcheck) +ifeq ($(feature-libcheck), 1) + $(call detected,CONFIG_LIBCHECK) +else + $(info libcheck is missing, building without unit tests support.) + $(info Please install check-devel/check) +endif + ifndef BUILD_BPF_SKEL # BPF skeletons are used to implement improved sample collection, enable # them by default. diff --git a/tools/tracing/rtla/README.txt b/tools/tracing/rtla/README.txt index 43e98311d10f..a9faee4dbb3a 100644 --- a/tools/tracing/rtla/README.txt +++ b/tools/tracing/rtla/README.txt @@ -12,6 +12,7 @@ RTLA depends on the following libraries and tools: - libtracefs - libtraceevent - libcpupower (optional, for --deepest-idle-state) + - libcheck (optional, for unit tests) =20 For BPF sample collection support, the following extra dependencies are required: diff --git a/tools/tracing/rtla/tests/unit/Build b/tools/tracing/rtla/tests= /unit/Build new file mode 100644 index 000000000000..5f1e531ea8c9 --- /dev/null +++ b/tools/tracing/rtla/tests/unit/Build @@ -0,0 +1,2 @@ +unit_tests-y +=3D unit_tests.o +unit_tests-y +=3D../../src/utils.o diff --git a/tools/tracing/rtla/tests/unit/Makefile.unit b/tools/tracing/rt= la/tests/unit/Makefile.unit new file mode 100644 index 000000000000..2088c9cc3571 --- /dev/null +++ b/tools/tracing/rtla/tests/unit/Makefile.unit @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: GPL-2.0-only + +UNIT_TESTS :=3D $(OUTPUT)unit_tests +UNIT_TESTS_IN :=3D $(UNIT_TESTS)-in.o + +$(UNIT_TESTS): $(UNIT_TESTS_IN) + $(QUIET_LINK)$(CC) $(LDFLAGS) -o $@ $^ -lcheck + +$(UNIT_TESTS_IN): + make $(build)=3Dunit_tests + +unit-tests: FORCE + $(Q)if [ "$(feature-libcheck)" =3D "1" ]; then \ + $(MAKE) $(UNIT_TESTS) && $(UNIT_TESTS); \ + else \ + echo "libcheck is missing, skipping unit tests. Please install check-dev= el/check"; \ + fi diff --git a/tools/tracing/rtla/tests/unit/unit_tests.c b/tools/tracing/rtl= a/tests/unit/unit_tests.c new file mode 100644 index 000000000000..aa53f8605e36 --- /dev/null +++ b/tools/tracing/rtla/tests/unit/unit_tests.c @@ -0,0 +1,123 @@ +// SPDX-License-Identifier: GPL-2.0 + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include + +#include "../../src/utils.h" + +START_TEST(test_strtoi) +{ + int result; + char buf[64]; + + ck_assert_int_eq(strtoi("123", &result), 0); + ck_assert_int_eq(result, 123); + ck_assert_int_eq(strtoi(" -456", &result), 0); + ck_assert_int_eq(result, -456); + + snprintf(buf, sizeof(buf), "%d", INT_MAX); + ck_assert_int_eq(strtoi(buf, &result), 0); + snprintf(buf, sizeof(buf), "%ld", (long)INT_MAX + 1); + ck_assert_int_eq(strtoi(buf, &result), -1); + + ck_assert_int_eq(strtoi("", &result), -1); + ck_assert_int_eq(strtoi("123abc", &result), -1); + ck_assert_int_eq(strtoi("123 ", &result), -1); +} +END_TEST + +START_TEST(test_parse_cpu_set) +{ + cpu_set_t set; + int nr_cpus =3D sysconf(_SC_NPROCESSORS_CONF); + + ck_assert_int_eq(parse_cpu_set("0", &set), 0); + ck_assert(CPU_ISSET(0, &set)); + ck_assert(!CPU_ISSET(1, &set)); + + if (nr_cpus > 2) { + ck_assert_int_eq(parse_cpu_set("0,2", &set), 0); + ck_assert(CPU_ISSET(0, &set)); + ck_assert(CPU_ISSET(2, &set)); + } + + if (nr_cpus > 3) { + ck_assert_int_eq(parse_cpu_set("0-3", &set), 0); + ck_assert(CPU_ISSET(0, &set)); + ck_assert(CPU_ISSET(1, &set)); + ck_assert(CPU_ISSET(2, &set)); + ck_assert(CPU_ISSET(3, &set)); + } + + if (nr_cpus > 5) { + ck_assert_int_eq(parse_cpu_set("1-3,5", &set), 0); + ck_assert(!CPU_ISSET(0, &set)); + ck_assert(CPU_ISSET(1, &set)); + ck_assert(CPU_ISSET(2, &set)); + ck_assert(CPU_ISSET(3, &set)); + ck_assert(!CPU_ISSET(4, &set)); + ck_assert(CPU_ISSET(5, &set)); + } + + ck_assert_int_eq(parse_cpu_set("-1", &set), 1); + ck_assert_int_eq(parse_cpu_set("abc", &set), 1); + ck_assert_int_eq(parse_cpu_set("9999", &set), 1); +} +END_TEST + +START_TEST(test_parse_prio) +{ + struct sched_attr attr; + + ck_assert_int_eq(parse_prio("f:50", &attr), 0); + ck_assert_uint_eq(attr.sched_policy, SCHED_FIFO); + ck_assert_uint_eq(attr.sched_priority, 50U); + + ck_assert_int_eq(parse_prio("r:30", &attr), 0); + ck_assert_uint_eq(attr.sched_policy, SCHED_RR); + + ck_assert_int_eq(parse_prio("o:0", &attr), 0); + ck_assert_uint_eq(attr.sched_policy, SCHED_OTHER); + ck_assert_int_eq(attr.sched_nice, 0); + + ck_assert_int_eq(parse_prio("d:10ms:100ms", &attr), 0); + ck_assert_uint_eq(attr.sched_policy, 6U); + + ck_assert_int_eq(parse_prio("f:999", &attr), -1); + ck_assert_int_eq(parse_prio("o:-20", &attr), -1); + ck_assert_int_eq(parse_prio("d:100ms:10ms", &attr), -1); + ck_assert_int_eq(parse_prio("x:50", &attr), -1); +} +END_TEST + +Suite *utils_suite(void) +{ + Suite *s =3D suite_create("utils"); + TCase *tc =3D tcase_create("core"); + + tcase_add_test(tc, test_strtoi); + tcase_add_test(tc, test_parse_cpu_set); + tcase_add_test(tc, test_parse_prio); + + suite_add_tcase(s, tc); + return s; +} + +int main(void) +{ + int num_failed; + SRunner *sr; + + sr =3D srunner_create(utils_suite()); + srunner_run_all(sr, CK_NORMAL); + num_failed =3D srunner_ntests_failed(sr); + + srunner_free(sr); + + return (num_failed =3D=3D 0) ? EXIT_SUCCESS : EXIT_FAILURE; +} --=20 2.52.0