]> git.ipfire.org Git - thirdparty/util-linux.git/blame - tests/ts/lsblk/mk-input.sh
tests: (lsblk) gather also udev attributes for new dumps
[thirdparty/util-linux.git] / tests / ts / lsblk / mk-input.sh
CommitLineData
8ab664a7
KZ
1#!/bin/bash
2#
3# Copyright (C) 2018 Karel Zak <kzak@redhat.com>
4#
5# This script makes a copy of relevant files from /sys and /proc.
314adce6 6# The files are useful for lsblk(1) regression tests.
8ab664a7
KZ
7#
8progname=$(basename $0)
9
10if [ -z "$1" ]; then
11 echo -e "\nusage: $progname <testname>\n"
12 exit 1
13fi
14
15TS_DUMP="$1"
314adce6
KZ
16TS_NAME=$(basename ${TS_DUMP})
17TS_TARBALL="$TS_DUMP.tar.xz"
8ab664a7
KZ
18TS_CMD_LSBLK=${TS_CMD_LSBLK:-"lsblk"}
19
20#
21# procfs
22#
23mkdir -p $TS_DUMP/proc
24mkdir -p $TS_DUMP/proc/self
25cp /proc/self/mountinfo ${TS_DUMP}/proc/self
26cp /proc/swaps ${TS_DUMP}/proc/swaps
27cp /proc/version ${TS_DUMP}/proc/version
28
29
30#
31# sysfs
32#
33mkdir -p $TS_DUMP/sys/{block,dev/block}
34cp --no-dereference /sys/dev/block/* ${TS_DUMP}/sys/dev/block
35cp --no-dereference /sys/block/* ${TS_DUMP}/sys/block
36
37DEVS=$(find /sys/dev/block/ -type l)
38for x in ${DEVS}; do
39 DEV="/sys/dev/block/$(readlink $x)"
40
41 mkdir -p ${TS_DUMP}/${DEV}
42
43 # attributes
44 for f in $(find ${DEV} -type f -not -path '*/trace/*' -not -path '*/uevent'); do
45 if [ ! -f ${TS_DUMP}/${f} ]; then
46 SUB=$(dirname $f)
47 mkdir -p ${TS_DUMP}/${SUB}
48 cp $f ${TS_DUMP}/$f 2> /dev/null
49 fi
50 done
51
52 # symlinks (slave, holders, etc.)
53 for f in $(find ${DEV} -type l -not -path '*/subsystem' -not -path '*/bdi'); do
54 if [ ! -f ${TS_DUMP}/${f} ]; then
55 SUB=$(dirname $f)
56 mkdir -p ${TS_DUMP}/${SUB}
57 cp --no-dereference $f ${TS_DUMP}/$f
58 fi
59 done
60
61 # device/ files
2bb3aa36 62 if [ -d ${DEV}/device/ ]; then
8ab664a7
KZ
63 for f in $(find ${DEV}/device/ -maxdepth 1 -type f -not -path '*/uevent'); do
64 if [ ! -f ${TS_DUMP}/${f} ]; then
65 SUB=$(dirname $f)
66 cp $f ${TS_DUMP}/$f 2> /dev/null
67 fi
68 done
69 fi
70
71done
72
93c27237
KZ
73#
74# udev a lsblk specific
75#
76mkdir -p $TS_DUMP/dev
77DEVS=$(lsblk --noheadings --output PATH)
78for d in $DEVS; do
79
80 # udev
81 udevadm info --query=property $d > $TS_DUMP/$d
82
83 # lsblk
84 echo "OWNER=$($TS_CMD_LSBLK --noheadings --nodeps --output OWNER $d)" >> $TS_DUMP/$d
85 echo "GROUP=$($TS_CMD_LSBLK --noheadings --nodeps --output GROUP $d)" >> $TS_DUMP/$d
86 echo "MODE=$($TS_CMD_LSBLK --noheadings --nodeps --output MODE $d)" >> $TS_DUMP/$d
87done
8ab664a7
KZ
88
89function mk_output {
314adce6
KZ
90 local cols="NAME,${2}"
91 local subname="$1"
8ab664a7 92
314adce6
KZ
93 echo "$cols" > ${TS_DUMP}/${subname}.cols
94 $TS_CMD_LSBLK -o ${cols} > ${TS_DUMP}/lsblk-${TS_NAME}-${subname}
8ab664a7
KZ
95}
96
314adce6
KZ
97
98LANG="POSIX"
99LANGUAGE="POSIX"
100LC_ALL="POSIX"
101CHARSET="UTF-8"
102
103export LANG LANGUAGE LC_ALL CHARSET
104
8ab664a7
KZ
105#
106# lsblk info
107#
108$TS_CMD_LSBLK -V &> ${TS_DUMP}/version
109
110mk_output basic KNAME,MAJ:MIN,RM,SIZE,TYPE,MOUNTPOINT
111mk_output vendor MODEL,VENDOR,REV
112mk_output state RO,RM,HOTPLUG,RAND,STATE,ROTA,TYPE,PKNAME,SCHED
113mk_output rw RA,WSAME
114mk_output topo SIZE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,RQ-SIZE
115mk_output discard DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO
116mk_output zone ZONED
117
118
314adce6 119tar --xz -cvf ${TS_TARBALL} $TS_DUMP
8ab664a7
KZ
120rm -rf $TS_DUMP
121
314adce6 122echo -e "\nPlease, send ${TS_TARBALL} to util-linux upstream. Thanks!\n"
8ab664a7
KZ
123
124