1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
#!/bin/bash
. $(dirname $0)/functions
BASE=$BASEDIR/$(basename $0)-test
PREFIX=$BUILDDIR/$(basename $0)-test
# currently, we do not properly copy cdp and pdp information, so for
# comparison of RRD dumps, we just filter out those parts we do not
# expect to match anyway...
function cdp_prep_filter {
perl -n -e '$a=join("",<>); $a=~s,<(cdp_prep).*?</\1>,,msg ; print $a'
}
function pdp_prep_filter {
perl -n -e '$a=join("",<>); $a=~s,<(last_ds|value|unknown_sec).*?</\1>,,msg ; print $a'
}
function data_filter_by_time {
START="$1"
END="$2"
# <!-- 2011-03-13 08:46:00 CET / 1300002360 --> <row><v>7.9666666667e+02</v>
perl -n -e 'print unless (m,/ (\d+) -->.*<row>, && $1 >= '$START' && $1 <= '$END')'
}
FIRST=1300000000
ST=$FIRST
rm -f ${BASE}*.rrd ${BASE}*.xml
$RRDTOOL create ${PREFIX}a1_x.rrd --start $(($ST-1)) --step 60 DS:a:GAUGE:120:0:U RRA:AVERAGE:0.5:1:100 RRA:AVERAGE:0.5:5:2 RRA:MIN:0.5:5:2 RRA:MAX:0.5:5:2 RRA:LAST:0.5:5:2
report createa1
$RRDTOOL create ${PREFIX}b1_x.rrd --start $(($ST-1)) --step 60 DS:b:GAUGE:120:0:U RRA:AVERAGE:0.5:1:100 RRA:AVERAGE:0.5:5:2 RRA:MIN:0.5:5:2 RRA:MAX:0.5:5:2 RRA:LAST:0.5:5:2
report createb1
$RRDTOOL create ${PREFIX}ab1_x.rrd --start $(($ST-1)) --step 60 DS:a:GAUGE:120:0:U DS:b:GAUGE:120:0:U RRA:AVERAGE:0.5:1:100 RRA:AVERAGE:0.5:5:2 RRA:MIN:0.5:5:2 RRA:MAX:0.5:5:2 RRA:LAST:0.5:5:2
report createab1
$RRDTOOL create ${PREFIX}ba1_x.rrd --start $(($ST-1)) --step 60 DS:b:GAUGE:120:0:U DS:a:GAUGE:120:0:U RRA:AVERAGE:0.5:1:100 RRA:AVERAGE:0.5:5:2 RRA:MIN:0.5:5:2 RRA:MAX:0.5:5:2 RRA:LAST:0.5:5:2
report createba1
$RRDTOOL create ${PREFIX}bca1_x.rrd --start $(($ST-1)) --step 60 DS:b:GAUGE:120:0:U DS:c:GAUGE:120:0:U DS:a:GAUGE:120:0:U RRA:AVERAGE:0.5:1:100 RRA:AVERAGE:0.5:5:2 RRA:MIN:0.5:5:2 RRA:MAX:0.5:5:2 RRA:LAST:0.5:5:2
report createbca1
for A in ${BASE}*_x.rrd ; do
cp $A ${BASEDIR}/$(basename $A _x.rrd)_y.rrd
done
UPDATEA_x=
UPDATEB_x=
UPDATEAB_x=
V=10
for A in $(seq $ST 60 $(($ST + 3000)) ) ; do
UPDATEA_x="$UPDATEA_x $A:$V"
UPDATEB_x="$UPDATEB_x $A:$(($V * 2))"
UPDATEAB_x="$UPDATEAB_x $A:$V:$(($V * 2))"
V=$(($V + 20))
ST=$A
done
ST_X=$ST
# add a gap
ST=$((ST+1200))
UPDATEA_y=
UPDATEB_y=
UPDATEAB_y=
V=40
for A in $(seq $ST 60 $(($ST + 3000)) ) ; do
UPDATEA_y="$UPDATEA_y $A:$V"
UPDATEB_y="$UPDATEB_y $A:$(($V * 2))"
UPDATEAB_y="$UPDATEAB_y $A:$V:$(($V * 2))"
V=$(($V + 50))
ST=$A
done
ST_Y=$ST
$RRDTOOL update ${PREFIX}a1_x.rrd $UPDATEA_x
$RRDTOOL update ${PREFIX}b1_x.rrd $UPDATEB_x
$RRDTOOL update ${PREFIX}ab1_x.rrd $UPDATEAB_x
$RRDTOOL update ${PREFIX}ba1_x.rrd --template a:b $UPDATEAB_x
$RRDTOOL update ${PREFIX}bca1_x.rrd --template a:b $UPDATEAB_x
$RRDTOOL update ${PREFIX}a1_y.rrd $UPDATEA_y
$RRDTOOL update ${PREFIX}b1_y.rrd $UPDATEB_y
$RRDTOOL update ${PREFIX}ab1_y.rrd $UPDATEAB_y
$RRDTOOL update ${PREFIX}ba1_y.rrd --template a:b $UPDATEAB_y
$RRDTOOL update ${PREFIX}bca1_y.rrd --template a:b $UPDATEAB_y
$RRDTOOL create ${PREFIX}ab2_xy.rrd --start $ST --step 60 --source ${PREFIX}a1_x.rrd --source ${PREFIX}b1_x.rrd --source ${PREFIX}a1_y.rrd --source ${PREFIX}b1_y.rrd DS:a:GAUGE:120:0:U DS:b:GAUGE:120:0:U RRA:AVERAGE:0.5:1:400 RRA:AVERAGE:0.5:5:8 RRA:MIN:0.5:5:8 RRA:MAX:0.5:5:8 RRA:LAST:0.5:5:8
report create-ab-with-four-sources
# now re-extract single value RRDs from the combined one....
# NOTE: We cannot re-create the pdp_prep information here, so filter it out....
$RRDTOOL create ${PREFIX}a2_x.rrd --start $ST_X --step 60 --source ${PREFIX}ab2_xy.rrd DS:a:GAUGE:120:0:U RRA:AVERAGE:0.5:1:100 RRA:AVERAGE:0.5:5:2 RRA:MIN:0.5:5:2 RRA:MAX:0.5:5:2 RRA:LAST:0.5:5:2
report recreate-original-a1_x-from-combined-source
$RRDTOOL dump ${PREFIX}a1_x.rrd | pdp_prep_filter > ${PREFIX}a1_x.xml
$RRDTOOL dump ${PREFIX}a2_x.rrd | pdp_prep_filter > ${PREFIX}a2_x.xml
$DIFF ${PREFIX}a1_x.xml ${PREFIX}a2_x.xml
report data-match-a1_x
$RRDTOOL create ${PREFIX}b2_x.rrd --start $ST_X --step 60 --source ${PREFIX}ab2_xy.rrd DS:b:GAUGE:120:0:U RRA:AVERAGE:0.5:1:100 RRA:AVERAGE:0.5:5:2 RRA:MIN:0.5:5:2 RRA:MAX:0.5:5:2 RRA:LAST:0.5:5:2
report recreate-original-b1_x-from-combined-source
$RRDTOOL dump ${PREFIX}b1_x.rrd | pdp_prep_filter > ${PREFIX}b1_x.xml
$RRDTOOL dump ${PREFIX}b2_x.rrd | pdp_prep_filter > ${PREFIX}b2_x.xml
$DIFF ${PREFIX}b1_x.xml ${PREFIX}b2_x.xml
report data-match-b1_x
$RRDTOOL create ${PREFIX}a2_y.rrd --start $ST_Y --step 60 --source ${PREFIX}ab2_xy.rrd DS:a:GAUGE:120:0:U RRA:AVERAGE:0.5:1:100 RRA:AVERAGE:0.5:5:2 RRA:MIN:0.5:5:2 RRA:MAX:0.5:5:2 RRA:LAST:0.5:5:2
report recreate-original-a1_y-from-combined-source
$RRDTOOL dump ${PREFIX}a1_y.rrd | data_filter_by_time $FIRST $ST_X > ${PREFIX}a1_y.xml
$RRDTOOL dump ${PREFIX}a2_y.rrd | data_filter_by_time $FIRST $ST_X > ${PREFIX}a2_y.xml
$DIFF ${PREFIX}a1_y.xml ${PREFIX}a2_y.xml
report data-match-a2_y
$RRDTOOL create ${PREFIX}b2_y.rrd --start $ST_Y --step 60 --source ${PREFIX}ab2_xy.rrd DS:b:GAUGE:120:0:U RRA:AVERAGE:0.5:1:100 RRA:AVERAGE:0.5:5:2 RRA:MIN:0.5:5:2 RRA:MAX:0.5:5:2 RRA:LAST:0.5:5:2
report recreate-original-b1_y-from-combined-source
$RRDTOOL dump ${PREFIX}b1_y.rrd | data_filter_by_time $FIRST $ST_X > ${PREFIX}b1_y.xml
$RRDTOOL dump ${PREFIX}b2_y.rrd | data_filter_by_time $FIRST $ST_X > ${PREFIX}b2_y.xml
$DIFF ${PREFIX}b1_y.xml ${PREFIX}b2_y.xml
report data-match-b2_y
rm -f ${PREFIX}*.rrd ${PREFIX}*.xml
|