1#!/bin/sh
2#-*-sh-*-
3
4#
5# Copyright © 2009 CNRS
6# Copyright © 2009-2020 Inria.  All rights reserved.
7# Copyright © 2009 Université Bordeaux
8# Copyright © 2014 Cisco Systems, Inc.  All rights reserved.
9# See COPYING in top-level directory.
10#
11
12HWLOC_top_srcdir="@HWLOC_top_srcdir@"
13HWLOC_top_builddir="@HWLOC_top_builddir@"
14srcdir="$HWLOC_top_srcdir/utils/hwloc"
15builddir="$HWLOC_top_builddir/utils/hwloc"
16info="$builddir/hwloc-info"
17linuxdir="$HWLOC_top_srcdir/tests/hwloc/linux"
18
19HWLOC_PLUGINS_PATH=${HWLOC_top_builddir}/hwloc/.libs
20export HWLOC_PLUGINS_PATH
21
22HWLOC_DEBUG_CHECK=1
23export HWLOC_DEBUG_CHECK
24
25HWLOC_DONT_ADD_VERSION_INFO=1
26export HWLOC_DONT_ADD_VERSION_INFO
27
28: ${TMPDIR=/tmp}
29{
30  tmp=`
31    (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
32  ` &&
33  test -n "$tmp" && test -d "$tmp"
34} || {
35  tmp=$TMPDIR/foo$$-$RANDOM
36  (umask 077 && mkdir "$tmp")
37} || exit $?
38file="$tmp/test-hwloc-info.output"
39
40set -e
41(
42  echo "# (default)"
43  $info --if synthetic --input "node:2 core:3 pu:4"
44  echo
45  echo "# --topology"
46  $info --if synthetic --input "node:2 core:3 pu:4" --topology
47  echo
48  echo "# --support"
49  $info --if synthetic --input "node:2 core:3 pu:4" --support
50  echo
51  echo "# --objects"
52  $info --if synthetic --input "node:2 core:3 pu:4" --objects
53  echo
54
55  echo "# Core range"
56  $info --if synthetic --input "node:2 core:3 pu:4" core:2-4
57  echo
58
59  echo "# all ancestors of PU range"
60  $info --if synthetic --input "node:2 core:3 pu:4" -n --ancestors pu:10-11
61  echo
62  echo "# Core ancestors of PU range"
63  $info --if synthetic --input "node:2 core:3 pu:4" --ancestor core pu:7-9
64  echo
65  echo "# L2 ancestor of PU"
66  $info --if synthetic --input "node:2 core:2 l2:2 l1d:2 pu:2" --ancestor l2 pu:12
67  echo
68  echo "# L1 ancestor of PU range"
69  $info --if synthetic --input "node:2 core:2 l2:2 l1d:2 pu:2" --ancestor l1 -s pu:7-10
70  echo
71
72  echo "# Children of L2 and Core of Node, silent"
73  $info --if synthetic --input "node:2 core:2 l2:2 l1d:2 pu:2" --children -s l2:1 node:1.core:1
74  echo
75  echo "# L1d descendants of Core range, silent"
76  $info --if synthetic --input "node:2 core:2 l2:2 l1d:2 pu:2" --descendants l1d -s core:1-2
77  echo
78
79  echo "# 2 local memory for one PU"
80  $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory pu:8
81  echo
82  echo "# 2 local-or-larger memories for one PU, silent"
83  $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags larger -s pu:8
84  echo
85  echo "# no local-or-larger memory for root, silent"
86  $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags larger -s root
87  echo
88  echo "# no local-or-smaller memory for one PU, silent"
89  $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags smaller -s pu:8
90  echo
91  echo "# 3 local-or-smaller memories for on Package, silent"
92  $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags smaller -s pack:1
93  echo
94  echo "# no strict-local memory for one PU, silent"
95  $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags none -s pu:8
96  echo
97  echo "# 1 strict-local memory for one NUMANode, silent"
98  $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags none -s node:1
99  echo
100  echo "# 12 local-all memories for one PU, silent"
101  $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags all\$ -s pu:3
102  echo
103  echo "# only the smallest locality among 2 local-or-larger memories for one PU, silent"
104  $info --if synthetic --input "pack:4 [numa] l3:2 [numa] core:4 pu:2" --local-memory-flags larger --best-memattr locality -s pu:63
105  echo
106  echo "# only the highest capacity among 2 local-or-larger memories for one PU, silent"
107  $info --if synthetic --input "pack:4 [numa(memory=1000000)] l3:2 [numa(memory=1000)] core:4 pu:2" --local-memory-flags larger --best-memattr capacity -s pu:63
108  echo
109
110  echo
111  echo "# cpukinds for the entire machine"
112  $info --if xml --input $linuxdir/fakeheterocpunuma.output all
113  echo
114  echo "# cpukind for a single PU"
115  $info --if xml --input $linuxdir/fakeheterocpunuma.output pu:15
116  echo
117
118) > "$file"
119@DIFF@ @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ $srcdir/test-hwloc-info.output "$file"
120rm -rf "$tmp"
121