From patchwork Fri Feb 27 05:06:32 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Axtens X-Patchwork-Id: 444143 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 76CDD14012A for ; Fri, 27 Feb 2015 16:06:48 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="verification failed; unprotected key" header.d=axtens.net header.i=@axtens.net header.b=CRfPVTFJ; dkim-adsp=none (unprotected policy); dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 43C4F1A00A7 for ; Fri, 27 Feb 2015 16:06:48 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="verification failed; unprotected key" header.d=axtens.net header.i=@axtens.net header.b=CRfPVTFJ; dkim-adsp=none (unprotected policy); dkim-atps=neutral X-Original-To: skiboot@lists.ozlabs.org Delivered-To: skiboot@lists.ozlabs.org Received: from mail-pd0-x236.google.com (mail-pd0-x236.google.com [IPv6:2607:f8b0:400e:c02::236]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 61E251A0058 for ; Fri, 27 Feb 2015 16:06:39 +1100 (AEDT) Received: by pdjg10 with SMTP id g10so18429769pdj.1 for ; Thu, 26 Feb 2015 21:06:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axtens.net; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=qiWawpVyn5YYKvFoqdy+fUNBrarTOrM8ZcTjT61AbCc=; b=CRfPVTFJX0Z8aLt3UW2F8ek3TubVDJUEDG4RAt2Weypu9vB1A3Zpqi1ncipxMaeg4Z o/j1r2T08E930IV/0HFmBIHLFVjCoVFC48IMnaJWphf01UscyNQsxC6uMoX4B83N4Wkl 7emuPlAijAsNXr0u3yae9vpR1hmEk4yoVG1rQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=qiWawpVyn5YYKvFoqdy+fUNBrarTOrM8ZcTjT61AbCc=; b=XuLw3FIWrpqFL7RI27JW0wOTL6WZ/WsTzZaU7jxf1EiHxLcrL2AFYsbIeaif4441B6 AWf5ypU+jPEqElvV7Udt+PUjGyFwV5j5SioOqFvf0rJli8GpM67kXVHw3oxmWEraZE0w lXHBj2BpdnEMx3V0YlDTeULuy86LbkkdzmDytnYqLRUCW8CZiwQtgcrMy5EVur0ZBpiW jep/d1odI7F9bfvKeppMQKZTgPSPby+2/L6ilp0ZafUmb38tY8JL8Z29lVe68uzQWeJ0 fIXnp1Q1odwORqBBNNBaY5pMbc1UhE54DoWW+wFBh+x4yGg+AVUUrww/ppHSoh7XqbCu cAYQ== X-Gm-Message-State: ALoCoQldDYaDPEgoTIZV3cmDL6IRFy7FOiVsd2QiudTZGfudYCyWJZL6Yab9PMu7JN5TK+gI+9zQ X-Received: by 10.66.141.109 with SMTP id rn13mr20556695pab.113.1425013597285; Thu, 26 Feb 2015 21:06:37 -0800 (PST) Received: from omicron.ozlabs.ibm.com (bh02i525f01.au.ibm.com. [202.81.18.30]) by mx.google.com with ESMTPSA id qj3sm2590607pac.31.2015.02.26.21.06.34 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 26 Feb 2015 21:06:36 -0800 (PST) From: Daniel Axtens To: skiboot@lists.ozlabs.org Date: Fri, 27 Feb 2015 16:06:32 +1100 Message-Id: <1425013595-13600-2-git-send-email-dja@axtens.net> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1425013595-13600-1-git-send-email-dja@axtens.net> References: <1425013595-13600-1-git-send-email-dja@axtens.net> Subject: [Skiboot] [PATCH 1/4] core/test: Test that device paths/names function as expected. X-BeenThere: skiboot@lists.ozlabs.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Mailing list for skiboot development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: skiboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Skiboot" Test dt_get_path/dt_find_by_name/dt_find_by_path all respond as expected. Signed-off-by: Daniel Axtens --- core/test/run-device.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/core/test/run-device.c b/core/test/run-device.c index fa9e951..e2ce340 100644 --- a/core/test/run-device.c +++ b/core/test/run-device.c @@ -33,33 +33,90 @@ static inline bool fake_is_rodata(const void *p) #include "../../ccan/list/list.c" /* For list_check */ #include +static void check_path(const struct dt_node *node, const char * expected_path) +{ + char * path; + path = dt_get_path(node); + if (strcmp(path, expected_path) != 0) { + printf("check_path: expected %s, got %s\n", expected_path, path); + } + assert(strcmp(path, expected_path) == 0); + free(path); +} + int main(void) { - struct dt_node *root, *c1, *c2, *gc1, *gc2, *gc3, *ggc1, *i; + struct dt_node *root, *c1, *c2, *gc1, *gc2, *gc3, *ggc1; + struct dt_node *addrs, *addr1, *addr2; + struct dt_node *i; const struct dt_property *p; struct dt_property *p2; unsigned int n; root = dt_new_root("root"); assert(!list_top(&root->properties, struct dt_property, list)); + check_path(root, "/root"); + c1 = dt_new(root, "c1"); assert(!list_top(&c1->properties, struct dt_property, list)); + check_path(c1, "root/c1"); + assert(dt_find_by_name(root, "c1") == c1); + assert(dt_find_by_path(root, "/c1") == c1); + c2 = dt_new(root, "c2"); assert(!list_top(&c2->properties, struct dt_property, list)); + check_path(c2, "root/c2"); + assert(dt_find_by_name(root, "c2") == c2); + assert(dt_find_by_path(root, "/c2") == c2); + gc1 = dt_new(c1, "gc1"); assert(!list_top(&gc1->properties, struct dt_property, list)); + check_path(gc1, "root/c1/gc1"); + assert(dt_find_by_name(root, "gc1") == gc1); + assert(dt_find_by_path(root, "/c1/gc1") == gc1); + gc2 = dt_new(c1, "gc2"); assert(!list_top(&gc2->properties, struct dt_property, list)); + check_path(gc2, "root/c1/gc2"); + assert(dt_find_by_name(root, "gc2") == gc2); + assert(dt_find_by_path(root, "/c1/gc2") == gc2); + gc3 = dt_new(c1, "gc3"); assert(!list_top(&gc3->properties, struct dt_property, list)); + check_path(gc3, "root/c1/gc3"); + assert(dt_find_by_name(root, "gc3") == gc3); + assert(dt_find_by_path(root, "/c1/gc3") == gc3); + ggc1 = dt_new(gc1, "ggc1"); assert(!list_top(&ggc1->properties, struct dt_property, list)); - + check_path(ggc1, "root/c1/gc1/ggc1"); + assert(dt_find_by_name(root, "ggc1") == ggc1); + assert(dt_find_by_path(root, "/c1/gc1/ggc1") == ggc1); + + addrs = dt_new(root, "addrs"); + assert(!list_top(&addrs->properties, struct dt_property, list)); + check_path(addrs, "root/addrs"); + assert(dt_find_by_name(root, "addrs") == addrs); + assert(dt_find_by_path(root, "/addrs") == addrs); + + addr1 = dt_new_addr(addrs, "addr", 0x1337); + assert(!list_top(&addr1->properties, struct dt_property, list)); + check_path(addr1, "root/addrs/addr@1337"); + assert(dt_find_by_name(root, "addr@1337") == addr1); + assert(dt_find_by_path(root, "/addrs/addr@1337") == addr1); + + addr2 = dt_new_2addr(addrs, "2addr", 0xdead, 0xbeef); + assert(!list_top(&addr2->properties, struct dt_property, list)); + check_path(addr2, "root/addrs/2addr@dead,beef"); + assert(dt_find_by_name(root, "2addr@dead,beef") == addr2); + assert(dt_find_by_path(root, "/addrs/2addr@dead,beef") == addr2); + + /* Test walking the tree, checking and setting values */ for (n = 0, i = dt_first(root); i; i = dt_next(root, i), n++) { assert(!list_top(&i->properties, struct dt_property, list)); dt_add_property_cells(i, "visited", 1); } - assert(n == 6); + assert(n == 9); for (n = 0, i = dt_first(root); i; i = dt_next(root, i), n++) { p = list_top(&i->properties, struct dt_property, list); @@ -67,7 +124,7 @@ int main(void) assert(p->len == sizeof(u32)); assert(fdt32_to_cpu(*(u32 *)p->prop) == 1); } - assert(n == 6); + assert(n == 9); dt_add_property_cells(c1, "some-property", 1, 2, 3); p = dt_find_property(c1, "some-property");