]> git.ipfire.org Git - thirdparty/rrdtool-1.x.git/commitdiff
add/update tests
authorPeter Stamfest <peter@stamfest.at>
Tue, 4 Mar 2014 21:39:44 +0000 (22:39 +0100)
committerPeter Stamfest <peter@stamfest.at>
Tue, 4 Mar 2014 21:46:05 +0000 (22:46 +0100)
tests/functions
tests/modify2
tests/modify2-testc-mod1.dump
tests/modify4 [new file with mode: 0755]
tests/modify4-testa-create.dump [new file with mode: 0644]
tests/modify4-testa1-create.dump [new file with mode: 0644]
tests/modify4-testa2-create.dump [new file with mode: 0644]
tests/modify5 [new file with mode: 0755]
tests/modify5-testa1-create.dump [new file with mode: 0644]
tests/modify5-testa2-create.dump [new file with mode: 0644]

index f689678ee12008b418a6144b2dfff842ef4803a7..269b14d2f802890b28ca398113a821a7eabc37aa 100644 (file)
@@ -1,14 +1,25 @@
 
+
 BASEDIR=$(dirname $0)
 RRDTOOL=$BASEDIR/../src/rrdtool
 
+DIFF="diff -u"
+INTERACTIVE=
+
 function fail {
-        echo >&2 "FAILED:" "$@"
-        exit 1
+       echo >&2 "FAILED:" "$@"
+       if [ -n "$INTERACTIVE" ] ; then
+               read -p "Continue? (y/n)" YN
+               if [ "$YN" != 'y' ] ; then 
+                       exit 1
+               fi
+       else
+               exit 1
+       fi
 }
 
 function ok {
-        echo >&2 "OK:" "$@"
+       echo >&2 "OK:" "$@"
 }
 
 function report {
index 2658bc0c12d96c742855074e28cfe4b5b4970fc6..6a3b64d67c12d4332b3b3a2031a79a8e30a0e81d 100755 (executable)
@@ -15,15 +15,15 @@ for T in $(seq 1300000020 60 1300003020) ; do
        let N=$N+10
 done
 
-$RRDTOOL dump ${BASE}a.rrd | diff - ${BASE}a-create.dump
+$RRDTOOL dump ${BASE}a.rrd | $DIFF ${BASE}a-create.dump -
 report create
 
 $RRDTOOL modify ${BASE}a.rrd ${BASE}b.rrd RRA#1:+10 RRA#2:+10 RRA#3:+10 RRA#4:+10
 
-$RRDTOOL dump ${BASE}b.rrd | diff - ${BASE}b-mod1.dump
+$RRDTOOL dump ${BASE}b.rrd | $DIFF ${BASE}b-mod1.dump -
 report "simultaneously extend aggregate RRAs"
 
 $RRDTOOL modify ${BASE}a.rrd ${BASE}c.rrd RRA:AVERAGE:0.5:2:10
-$RRDTOOL dump ${BASE}c.rrd | diff - ${BASE}c-mod1.dump
+$RRDTOOL dump ${BASE}c.rrd | $DIFF ${BASE}c-mod1.dump -
 report "add RRA with intermediate pdp_cnt"
 
index 5cf369676735f62d80d8eb81e3741ce16e64654a..291e7ae9ccbf7835aa1fbc33c98b9c3e8180fcba 100644 (file)
                </params>
                <cdp_prep>
                        <ds>
-                       <primary_value>0.0000000000e+00</primary_value>
-                       <secondary_value>0.0000000000e+00</secondary_value>
-                       <value>NaN</value>
-                       <unknown_datapoints>1</unknown_datapoints>
+                       <primary_value>4.9500000000e+02</primary_value>
+                       <secondary_value>5.0000000000e+02</secondary_value>
+                       <value>5.1000000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
                        </ds>
                </cdp_prep>
                <database>
diff --git a/tests/modify4 b/tests/modify4
new file mode 100755 (executable)
index 0000000..9f501d2
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+. $(dirname $0)/functions
+
+BASE=$BASEDIR/modify4-test
+
+
+# create 2 RRDs only differing in the way that the second contains an additional RRA
+# test: remove the additional RRA from the second and compare dumps
+# test: add the additional RRA to the first and compare dumps 
+
+
+$RRDTOOL create ${BASE}a1.rrd --start 1300000000 --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
+$RRDTOOL create ${BASE}a2.rrd --start 1300000000 --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 RRA:AVERAGE:0.5:4:10
+
+# add 50 values - note that we do NOT add it exactly for boundary times, and 
+# that we end at a NON CDP boundary for 5-PDP RRAs:
+N=10
+for T in $(seq 1300000050 60 1300002990) ; do
+       $RRDTOOL update ${BASE}a1.rrd --template a $T:$N
+       $RRDTOOL update ${BASE}a2.rrd --template a $T:$N
+       let N=$N+10
+done
+
+$RRDTOOL dump ${BASE}a1.rrd | $DIFF ${BASE}a1-create.dump -
+report create 1
+$RRDTOOL dump ${BASE}a2.rrd | $DIFF ${BASE}a2-create.dump -
+report create 2
+
+$RRDTOOL modify ${BASE}a2.rrd ${BASE}b2.rrd DELRRA:5
+
+$RRDTOOL dump ${BASE}b2.rrd | $DIFF ${BASE}a1-create.dump -
+report "remove additional RRA from second - must then be equal original first"
+
+$RRDTOOL modify ${BASE}a1.rrd ${BASE}b1.rrd RRA:AVERAGE:0.5:4:10
+
+$RRDTOOL dump ${BASE}b1.rrd | $DIFF ${BASE}a2-create.dump -
+report "add additional RRA to first - must then be equal original second"
+
diff --git a/tests/modify4-testa-create.dump b/tests/modify4-testa-create.dump
new file mode 100644 (file)
index 0000000..43f79ba
--- /dev/null
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE rrd SYSTEM "http://oss.oetiker.ch/rrdtool/rrdtool.dtd">
+<!-- Round Robin Database Dump -->
+<rrd>
+       <version>0003</version>
+       <step>60</step> <!-- Seconds -->
+       <lastupdate>1300002930</lastupdate> <!-- 2011-03-13 08:55:30 CET -->
+
+       <ds>
+               <name> a </name>
+               <type> GAUGE </type>
+               <minimal_heartbeat>120</minimal_heartbeat>
+               <min>0.0000000000e+00</min>
+               <max>NaN</max>
+
+               <!-- PDP Status -->
+               <last_ds>490</last_ds>
+               <value>1.4700000000e+04</value>
+               <unknown_sec> 0 </unknown_sec>
+       </ds>
+
+       <!-- Round Robin Archives -->
+       <rra>
+               <cf>AVERAGE</cf>
+               <pdp_per_row>1</pdp_per_row> <!-- 60 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.8500000000e+02</primary_value>
+                       <secondary_value>0.0000000000e+00</secondary_value>
+                       <value>NaN</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 07:16:00 CET / 1299996960 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:17:00 CET / 1299997020 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:18:00 CET / 1299997080 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:19:00 CET / 1299997140 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:20:00 CET / 1299997200 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:21:00 CET / 1299997260 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:22:00 CET / 1299997320 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:23:00 CET / 1299997380 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:24:00 CET / 1299997440 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:25:00 CET / 1299997500 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:26:00 CET / 1299997560 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:27:00 CET / 1299997620 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:28:00 CET / 1299997680 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:29:00 CET / 1299997740 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:30:00 CET / 1299997800 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:31:00 CET / 1299997860 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:32:00 CET / 1299997920 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:33:00 CET / 1299997980 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:34:00 CET / 1299998040 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:35:00 CET / 1299998100 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:36:00 CET / 1299998160 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:37:00 CET / 1299998220 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:38:00 CET / 1299998280 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:39:00 CET / 1299998340 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:40:00 CET / 1299998400 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:41:00 CET / 1299998460 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:42:00 CET / 1299998520 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:43:00 CET / 1299998580 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:44:00 CET / 1299998640 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:45:00 CET / 1299998700 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:46:00 CET / 1299998760 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:47:00 CET / 1299998820 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:48:00 CET / 1299998880 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:49:00 CET / 1299998940 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:50:00 CET / 1299999000 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:51:00 CET / 1299999060 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:52:00 CET / 1299999120 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:53:00 CET / 1299999180 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:54:00 CET / 1299999240 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:55:00 CET / 1299999300 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:56:00 CET / 1299999360 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:57:00 CET / 1299999420 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:58:00 CET / 1299999480 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:59:00 CET / 1299999540 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:00:00 CET / 1299999600 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:01:00 CET / 1299999660 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:02:00 CET / 1299999720 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:03:00 CET / 1299999780 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:04:00 CET / 1299999840 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:05:00 CET / 1299999900 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:06:00 CET / 1299999960 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:07:00 CET / 1300000020 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:08:00 CET / 1300000080 --> <row><v>1.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:09:00 CET / 1300000140 --> <row><v>2.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:10:00 CET / 1300000200 --> <row><v>3.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:11:00 CET / 1300000260 --> <row><v>4.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:12:00 CET / 1300000320 --> <row><v>5.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:13:00 CET / 1300000380 --> <row><v>6.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:14:00 CET / 1300000440 --> <row><v>7.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:15:00 CET / 1300000500 --> <row><v>8.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:16:00 CET / 1300000560 --> <row><v>9.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:17:00 CET / 1300000620 --> <row><v>1.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:18:00 CET / 1300000680 --> <row><v>1.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:19:00 CET / 1300000740 --> <row><v>1.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:20:00 CET / 1300000800 --> <row><v>1.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:21:00 CET / 1300000860 --> <row><v>1.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:22:00 CET / 1300000920 --> <row><v>1.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:23:00 CET / 1300000980 --> <row><v>1.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:24:00 CET / 1300001040 --> <row><v>1.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:25:00 CET / 1300001100 --> <row><v>1.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:26:00 CET / 1300001160 --> <row><v>1.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:27:00 CET / 1300001220 --> <row><v>2.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:28:00 CET / 1300001280 --> <row><v>2.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:29:00 CET / 1300001340 --> <row><v>2.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:30:00 CET / 1300001400 --> <row><v>2.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:31:00 CET / 1300001460 --> <row><v>2.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:32:00 CET / 1300001520 --> <row><v>2.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:33:00 CET / 1300001580 --> <row><v>2.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:34:00 CET / 1300001640 --> <row><v>2.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:35:00 CET / 1300001700 --> <row><v>2.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:36:00 CET / 1300001760 --> <row><v>2.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:37:00 CET / 1300001820 --> <row><v>3.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:38:00 CET / 1300001880 --> <row><v>3.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:39:00 CET / 1300001940 --> <row><v>3.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:40:00 CET / 1300002000 --> <row><v>3.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:41:00 CET / 1300002060 --> <row><v>3.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:42:00 CET / 1300002120 --> <row><v>3.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:43:00 CET / 1300002180 --> <row><v>3.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:44:00 CET / 1300002240 --> <row><v>3.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:45:00 CET / 1300002300 --> <row><v>3.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:46:00 CET / 1300002360 --> <row><v>3.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:47:00 CET / 1300002420 --> <row><v>4.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:48:00 CET / 1300002480 --> <row><v>4.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:49:00 CET / 1300002540 --> <row><v>4.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:51:00 CET / 1300002660 --> <row><v>4.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:52:00 CET / 1300002720 --> <row><v>4.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:53:00 CET / 1300002780 --> <row><v>4.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:54:00 CET / 1300002840 --> <row><v>4.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>AVERAGE</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.6500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>0.0000000000e+00</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.6500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>MIN</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.4500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>inf</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>3.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.4500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>MAX</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.8500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>-inf</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>LAST</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.8500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>NaN</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+               </database>
+       </rra>
+</rrd>
diff --git a/tests/modify4-testa1-create.dump b/tests/modify4-testa1-create.dump
new file mode 100644 (file)
index 0000000..4b4d6dd
--- /dev/null
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE rrd SYSTEM "http://oss.oetiker.ch/rrdtool/rrdtool.dtd">
+<!-- Round Robin Database Dump -->
+<rrd>
+       <version>0003</version>
+       <step>60</step> <!-- Seconds -->
+       <lastupdate>1300002990</lastupdate> <!-- 2011-03-13 08:56:30 CET -->
+
+       <ds>
+               <name> a </name>
+               <type> GAUGE </type>
+               <minimal_heartbeat>120</minimal_heartbeat>
+               <min>0.0000000000e+00</min>
+               <max>NaN</max>
+
+               <!-- PDP Status -->
+               <last_ds>500</last_ds>
+               <value>1.5000000000e+04</value>
+               <unknown_sec> 0 </unknown_sec>
+       </ds>
+
+       <!-- Round Robin Archives -->
+       <rra>
+               <cf>AVERAGE</cf>
+               <pdp_per_row>1</pdp_per_row> <!-- 60 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.9500000000e+02</primary_value>
+                       <secondary_value>0.0000000000e+00</secondary_value>
+                       <value>NaN</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 07:17:00 CET / 1299997020 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:18:00 CET / 1299997080 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:19:00 CET / 1299997140 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:20:00 CET / 1299997200 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:21:00 CET / 1299997260 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:22:00 CET / 1299997320 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:23:00 CET / 1299997380 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:24:00 CET / 1299997440 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:25:00 CET / 1299997500 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:26:00 CET / 1299997560 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:27:00 CET / 1299997620 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:28:00 CET / 1299997680 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:29:00 CET / 1299997740 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:30:00 CET / 1299997800 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:31:00 CET / 1299997860 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:32:00 CET / 1299997920 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:33:00 CET / 1299997980 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:34:00 CET / 1299998040 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:35:00 CET / 1299998100 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:36:00 CET / 1299998160 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:37:00 CET / 1299998220 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:38:00 CET / 1299998280 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:39:00 CET / 1299998340 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:40:00 CET / 1299998400 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:41:00 CET / 1299998460 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:42:00 CET / 1299998520 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:43:00 CET / 1299998580 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:44:00 CET / 1299998640 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:45:00 CET / 1299998700 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:46:00 CET / 1299998760 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:47:00 CET / 1299998820 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:48:00 CET / 1299998880 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:49:00 CET / 1299998940 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:50:00 CET / 1299999000 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:51:00 CET / 1299999060 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:52:00 CET / 1299999120 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:53:00 CET / 1299999180 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:54:00 CET / 1299999240 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:55:00 CET / 1299999300 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:56:00 CET / 1299999360 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:57:00 CET / 1299999420 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:58:00 CET / 1299999480 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:59:00 CET / 1299999540 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:00:00 CET / 1299999600 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:01:00 CET / 1299999660 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:02:00 CET / 1299999720 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:03:00 CET / 1299999780 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:04:00 CET / 1299999840 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:05:00 CET / 1299999900 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:06:00 CET / 1299999960 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:07:00 CET / 1300000020 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:08:00 CET / 1300000080 --> <row><v>1.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:09:00 CET / 1300000140 --> <row><v>2.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:10:00 CET / 1300000200 --> <row><v>3.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:11:00 CET / 1300000260 --> <row><v>4.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:12:00 CET / 1300000320 --> <row><v>5.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:13:00 CET / 1300000380 --> <row><v>6.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:14:00 CET / 1300000440 --> <row><v>7.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:15:00 CET / 1300000500 --> <row><v>8.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:16:00 CET / 1300000560 --> <row><v>9.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:17:00 CET / 1300000620 --> <row><v>1.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:18:00 CET / 1300000680 --> <row><v>1.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:19:00 CET / 1300000740 --> <row><v>1.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:20:00 CET / 1300000800 --> <row><v>1.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:21:00 CET / 1300000860 --> <row><v>1.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:22:00 CET / 1300000920 --> <row><v>1.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:23:00 CET / 1300000980 --> <row><v>1.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:24:00 CET / 1300001040 --> <row><v>1.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:25:00 CET / 1300001100 --> <row><v>1.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:26:00 CET / 1300001160 --> <row><v>1.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:27:00 CET / 1300001220 --> <row><v>2.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:28:00 CET / 1300001280 --> <row><v>2.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:29:00 CET / 1300001340 --> <row><v>2.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:30:00 CET / 1300001400 --> <row><v>2.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:31:00 CET / 1300001460 --> <row><v>2.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:32:00 CET / 1300001520 --> <row><v>2.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:33:00 CET / 1300001580 --> <row><v>2.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:34:00 CET / 1300001640 --> <row><v>2.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:35:00 CET / 1300001700 --> <row><v>2.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:36:00 CET / 1300001760 --> <row><v>2.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:37:00 CET / 1300001820 --> <row><v>3.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:38:00 CET / 1300001880 --> <row><v>3.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:39:00 CET / 1300001940 --> <row><v>3.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:40:00 CET / 1300002000 --> <row><v>3.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:41:00 CET / 1300002060 --> <row><v>3.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:42:00 CET / 1300002120 --> <row><v>3.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:43:00 CET / 1300002180 --> <row><v>3.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:44:00 CET / 1300002240 --> <row><v>3.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:45:00 CET / 1300002300 --> <row><v>3.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:46:00 CET / 1300002360 --> <row><v>3.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:47:00 CET / 1300002420 --> <row><v>4.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:48:00 CET / 1300002480 --> <row><v>4.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:49:00 CET / 1300002540 --> <row><v>4.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:51:00 CET / 1300002660 --> <row><v>4.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:52:00 CET / 1300002720 --> <row><v>4.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:53:00 CET / 1300002780 --> <row><v>4.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:54:00 CET / 1300002840 --> <row><v>4.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:56:00 CET / 1300002960 --> <row><v>4.9500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>AVERAGE</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.6500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.6500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>MIN</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.4500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>3.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.4500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>MAX</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.8500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>LAST</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.8500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+               </database>
+       </rra>
+</rrd>
diff --git a/tests/modify4-testa2-create.dump b/tests/modify4-testa2-create.dump
new file mode 100644 (file)
index 0000000..ee68143
--- /dev/null
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE rrd SYSTEM "http://oss.oetiker.ch/rrdtool/rrdtool.dtd">
+<!-- Round Robin Database Dump -->
+<rrd>
+       <version>0003</version>
+       <step>60</step> <!-- Seconds -->
+       <lastupdate>1300002990</lastupdate> <!-- 2011-03-13 08:56:30 CET -->
+
+       <ds>
+               <name> a </name>
+               <type> GAUGE </type>
+               <minimal_heartbeat>120</minimal_heartbeat>
+               <min>0.0000000000e+00</min>
+               <max>NaN</max>
+
+               <!-- PDP Status -->
+               <last_ds>500</last_ds>
+               <value>1.5000000000e+04</value>
+               <unknown_sec> 0 </unknown_sec>
+       </ds>
+
+       <!-- Round Robin Archives -->
+       <rra>
+               <cf>AVERAGE</cf>
+               <pdp_per_row>1</pdp_per_row> <!-- 60 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.9500000000e+02</primary_value>
+                       <secondary_value>0.0000000000e+00</secondary_value>
+                       <value>NaN</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 07:17:00 CET / 1299997020 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:18:00 CET / 1299997080 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:19:00 CET / 1299997140 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:20:00 CET / 1299997200 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:21:00 CET / 1299997260 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:22:00 CET / 1299997320 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:23:00 CET / 1299997380 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:24:00 CET / 1299997440 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:25:00 CET / 1299997500 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:26:00 CET / 1299997560 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:27:00 CET / 1299997620 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:28:00 CET / 1299997680 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:29:00 CET / 1299997740 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:30:00 CET / 1299997800 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:31:00 CET / 1299997860 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:32:00 CET / 1299997920 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:33:00 CET / 1299997980 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:34:00 CET / 1299998040 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:35:00 CET / 1299998100 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:36:00 CET / 1299998160 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:37:00 CET / 1299998220 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:38:00 CET / 1299998280 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:39:00 CET / 1299998340 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:40:00 CET / 1299998400 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:41:00 CET / 1299998460 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:42:00 CET / 1299998520 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:43:00 CET / 1299998580 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:44:00 CET / 1299998640 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:45:00 CET / 1299998700 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:46:00 CET / 1299998760 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:47:00 CET / 1299998820 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:48:00 CET / 1299998880 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:49:00 CET / 1299998940 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:50:00 CET / 1299999000 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:51:00 CET / 1299999060 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:52:00 CET / 1299999120 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:53:00 CET / 1299999180 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:54:00 CET / 1299999240 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:55:00 CET / 1299999300 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:56:00 CET / 1299999360 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:57:00 CET / 1299999420 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:58:00 CET / 1299999480 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:59:00 CET / 1299999540 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:00:00 CET / 1299999600 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:01:00 CET / 1299999660 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:02:00 CET / 1299999720 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:03:00 CET / 1299999780 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:04:00 CET / 1299999840 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:05:00 CET / 1299999900 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:06:00 CET / 1299999960 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:07:00 CET / 1300000020 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:08:00 CET / 1300000080 --> <row><v>1.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:09:00 CET / 1300000140 --> <row><v>2.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:10:00 CET / 1300000200 --> <row><v>3.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:11:00 CET / 1300000260 --> <row><v>4.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:12:00 CET / 1300000320 --> <row><v>5.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:13:00 CET / 1300000380 --> <row><v>6.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:14:00 CET / 1300000440 --> <row><v>7.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:15:00 CET / 1300000500 --> <row><v>8.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:16:00 CET / 1300000560 --> <row><v>9.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:17:00 CET / 1300000620 --> <row><v>1.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:18:00 CET / 1300000680 --> <row><v>1.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:19:00 CET / 1300000740 --> <row><v>1.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:20:00 CET / 1300000800 --> <row><v>1.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:21:00 CET / 1300000860 --> <row><v>1.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:22:00 CET / 1300000920 --> <row><v>1.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:23:00 CET / 1300000980 --> <row><v>1.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:24:00 CET / 1300001040 --> <row><v>1.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:25:00 CET / 1300001100 --> <row><v>1.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:26:00 CET / 1300001160 --> <row><v>1.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:27:00 CET / 1300001220 --> <row><v>2.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:28:00 CET / 1300001280 --> <row><v>2.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:29:00 CET / 1300001340 --> <row><v>2.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:30:00 CET / 1300001400 --> <row><v>2.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:31:00 CET / 1300001460 --> <row><v>2.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:32:00 CET / 1300001520 --> <row><v>2.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:33:00 CET / 1300001580 --> <row><v>2.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:34:00 CET / 1300001640 --> <row><v>2.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:35:00 CET / 1300001700 --> <row><v>2.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:36:00 CET / 1300001760 --> <row><v>2.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:37:00 CET / 1300001820 --> <row><v>3.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:38:00 CET / 1300001880 --> <row><v>3.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:39:00 CET / 1300001940 --> <row><v>3.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:40:00 CET / 1300002000 --> <row><v>3.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:41:00 CET / 1300002060 --> <row><v>3.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:42:00 CET / 1300002120 --> <row><v>3.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:43:00 CET / 1300002180 --> <row><v>3.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:44:00 CET / 1300002240 --> <row><v>3.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:45:00 CET / 1300002300 --> <row><v>3.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:46:00 CET / 1300002360 --> <row><v>3.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:47:00 CET / 1300002420 --> <row><v>4.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:48:00 CET / 1300002480 --> <row><v>4.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:49:00 CET / 1300002540 --> <row><v>4.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:51:00 CET / 1300002660 --> <row><v>4.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:52:00 CET / 1300002720 --> <row><v>4.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:53:00 CET / 1300002780 --> <row><v>4.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:54:00 CET / 1300002840 --> <row><v>4.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:56:00 CET / 1300002960 --> <row><v>4.9500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>AVERAGE</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.6500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.6500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>MIN</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.4500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>3.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.4500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>MAX</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.8500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>LAST</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.8500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>AVERAGE</cf>
+               <pdp_per_row>4</pdp_per_row> <!-- 240 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.8000000000e+02</primary_value>
+                       <secondary_value>4.9500000000e+02</secondary_value>
+                       <value>0.0000000000e+00</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:20:00 CET / 1300000800 --> <row><v>1.2000000000e+02</v></row>
+                       <!-- 2011-03-13 08:24:00 CET / 1300001040 --> <row><v>1.6000000000e+02</v></row>
+                       <!-- 2011-03-13 08:28:00 CET / 1300001280 --> <row><v>2.0000000000e+02</v></row>
+                       <!-- 2011-03-13 08:32:00 CET / 1300001520 --> <row><v>2.4000000000e+02</v></row>
+                       <!-- 2011-03-13 08:36:00 CET / 1300001760 --> <row><v>2.8000000000e+02</v></row>
+                       <!-- 2011-03-13 08:40:00 CET / 1300002000 --> <row><v>3.2000000000e+02</v></row>
+                       <!-- 2011-03-13 08:44:00 CET / 1300002240 --> <row><v>3.6000000000e+02</v></row>
+                       <!-- 2011-03-13 08:48:00 CET / 1300002480 --> <row><v>4.0000000000e+02</v></row>
+                       <!-- 2011-03-13 08:52:00 CET / 1300002720 --> <row><v>4.4000000000e+02</v></row>
+                       <!-- 2011-03-13 08:56:00 CET / 1300002960 --> <row><v>4.8000000000e+02</v></row>
+               </database>
+       </rra>
+</rrd>
diff --git a/tests/modify5 b/tests/modify5
new file mode 100755 (executable)
index 0000000..b134293
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+. $(dirname $0)/functions
+
+BASE=$BASEDIR/modify5-test
+
+
+# create 2 RRDs only differing in the way that the second contains an additional RRA
+# test: remove the additional RRA from the second and compare dumps
+# test: add the additional RRA to the first and compare dumps 
+
+
+$RRDTOOL create ${BASE}a1.rrd --start 1300000000 --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
+$RRDTOOL create ${BASE}a2.rrd --start 1300000000 --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 RRA:AVERAGE:0.5:4:10
+
+# add 50 values - note that we do NOT add it exactly for boundary times, and 
+# that we end at a NON CDP boundary for 5-PDP RRAs:
+N=10
+UPDATE_STRING=""
+for T in $(seq 1300000050 60 1300002990) ; do
+       UPDATE_STRING="$UPDATE_STRING $T:$N"
+       let N=$N+10
+done
+$RRDTOOL update ${BASE}a1.rrd --template a $UPDATE_STRING
+$RRDTOOL update ${BASE}a2.rrd --template a $UPDATE_STRING
+
+$RRDTOOL dump ${BASE}a1.rrd | $DIFF ${BASE}a1-create.dump -
+report create 1
+$RRDTOOL dump ${BASE}a2.rrd | $DIFF ${BASE}a2-create.dump -
+report create 2
+
+for U in 1300003010:200 1300003070:102 1300003130:777 1300003190:645 1300003250:122 1300003310:981 1300003323:223 1300003381:721
+do
+       echo ---------------------iterate--------------------------
+       # update both - both contain same data 
+       $RRDTOOL update ${BASE}a1.rrd --template a $U
+       $RRDTOOL update ${BASE}a2.rrd --template a $U
+
+       # dump current state for later comparison
+       $RRDTOOL dump ${BASE}a1.rrd > ${BASE}a1-mod.dump
+       $RRDTOOL dump ${BASE}a2.rrd > ${BASE}a2-mod.dump
+       
+       # remove RRA 5 from second RRD, should now match first RRD
+       $RRDTOOL modify ${BASE}a2.rrd ${BASE}b2.rrd DELRRA:5
+
+       $RRDTOOL dump ${BASE}b2.rrd | $DIFF ${BASE}a1-mod.dump -
+       report "remove additional RRA from second - must then be equal original first"
+
+        # add RRA to first RRD, should now match second RRD
+       $RRDTOOL modify ${BASE}a1.rrd ${BASE}b1.rrd RRA:AVERAGE:0.5:4:10
+
+       $RRDTOOL dump ${BASE}b1.rrd | $DIFF ${BASE}a2-mod.dump -
+       report "add additional RRA to first - must then be equal original second"
+done
diff --git a/tests/modify5-testa1-create.dump b/tests/modify5-testa1-create.dump
new file mode 100644 (file)
index 0000000..4b4d6dd
--- /dev/null
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE rrd SYSTEM "http://oss.oetiker.ch/rrdtool/rrdtool.dtd">
+<!-- Round Robin Database Dump -->
+<rrd>
+       <version>0003</version>
+       <step>60</step> <!-- Seconds -->
+       <lastupdate>1300002990</lastupdate> <!-- 2011-03-13 08:56:30 CET -->
+
+       <ds>
+               <name> a </name>
+               <type> GAUGE </type>
+               <minimal_heartbeat>120</minimal_heartbeat>
+               <min>0.0000000000e+00</min>
+               <max>NaN</max>
+
+               <!-- PDP Status -->
+               <last_ds>500</last_ds>
+               <value>1.5000000000e+04</value>
+               <unknown_sec> 0 </unknown_sec>
+       </ds>
+
+       <!-- Round Robin Archives -->
+       <rra>
+               <cf>AVERAGE</cf>
+               <pdp_per_row>1</pdp_per_row> <!-- 60 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.9500000000e+02</primary_value>
+                       <secondary_value>0.0000000000e+00</secondary_value>
+                       <value>NaN</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 07:17:00 CET / 1299997020 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:18:00 CET / 1299997080 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:19:00 CET / 1299997140 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:20:00 CET / 1299997200 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:21:00 CET / 1299997260 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:22:00 CET / 1299997320 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:23:00 CET / 1299997380 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:24:00 CET / 1299997440 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:25:00 CET / 1299997500 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:26:00 CET / 1299997560 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:27:00 CET / 1299997620 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:28:00 CET / 1299997680 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:29:00 CET / 1299997740 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:30:00 CET / 1299997800 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:31:00 CET / 1299997860 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:32:00 CET / 1299997920 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:33:00 CET / 1299997980 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:34:00 CET / 1299998040 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:35:00 CET / 1299998100 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:36:00 CET / 1299998160 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:37:00 CET / 1299998220 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:38:00 CET / 1299998280 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:39:00 CET / 1299998340 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:40:00 CET / 1299998400 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:41:00 CET / 1299998460 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:42:00 CET / 1299998520 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:43:00 CET / 1299998580 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:44:00 CET / 1299998640 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:45:00 CET / 1299998700 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:46:00 CET / 1299998760 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:47:00 CET / 1299998820 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:48:00 CET / 1299998880 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:49:00 CET / 1299998940 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:50:00 CET / 1299999000 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:51:00 CET / 1299999060 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:52:00 CET / 1299999120 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:53:00 CET / 1299999180 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:54:00 CET / 1299999240 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:55:00 CET / 1299999300 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:56:00 CET / 1299999360 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:57:00 CET / 1299999420 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:58:00 CET / 1299999480 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:59:00 CET / 1299999540 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:00:00 CET / 1299999600 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:01:00 CET / 1299999660 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:02:00 CET / 1299999720 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:03:00 CET / 1299999780 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:04:00 CET / 1299999840 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:05:00 CET / 1299999900 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:06:00 CET / 1299999960 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:07:00 CET / 1300000020 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:08:00 CET / 1300000080 --> <row><v>1.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:09:00 CET / 1300000140 --> <row><v>2.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:10:00 CET / 1300000200 --> <row><v>3.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:11:00 CET / 1300000260 --> <row><v>4.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:12:00 CET / 1300000320 --> <row><v>5.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:13:00 CET / 1300000380 --> <row><v>6.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:14:00 CET / 1300000440 --> <row><v>7.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:15:00 CET / 1300000500 --> <row><v>8.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:16:00 CET / 1300000560 --> <row><v>9.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:17:00 CET / 1300000620 --> <row><v>1.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:18:00 CET / 1300000680 --> <row><v>1.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:19:00 CET / 1300000740 --> <row><v>1.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:20:00 CET / 1300000800 --> <row><v>1.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:21:00 CET / 1300000860 --> <row><v>1.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:22:00 CET / 1300000920 --> <row><v>1.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:23:00 CET / 1300000980 --> <row><v>1.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:24:00 CET / 1300001040 --> <row><v>1.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:25:00 CET / 1300001100 --> <row><v>1.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:26:00 CET / 1300001160 --> <row><v>1.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:27:00 CET / 1300001220 --> <row><v>2.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:28:00 CET / 1300001280 --> <row><v>2.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:29:00 CET / 1300001340 --> <row><v>2.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:30:00 CET / 1300001400 --> <row><v>2.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:31:00 CET / 1300001460 --> <row><v>2.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:32:00 CET / 1300001520 --> <row><v>2.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:33:00 CET / 1300001580 --> <row><v>2.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:34:00 CET / 1300001640 --> <row><v>2.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:35:00 CET / 1300001700 --> <row><v>2.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:36:00 CET / 1300001760 --> <row><v>2.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:37:00 CET / 1300001820 --> <row><v>3.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:38:00 CET / 1300001880 --> <row><v>3.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:39:00 CET / 1300001940 --> <row><v>3.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:40:00 CET / 1300002000 --> <row><v>3.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:41:00 CET / 1300002060 --> <row><v>3.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:42:00 CET / 1300002120 --> <row><v>3.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:43:00 CET / 1300002180 --> <row><v>3.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:44:00 CET / 1300002240 --> <row><v>3.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:45:00 CET / 1300002300 --> <row><v>3.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:46:00 CET / 1300002360 --> <row><v>3.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:47:00 CET / 1300002420 --> <row><v>4.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:48:00 CET / 1300002480 --> <row><v>4.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:49:00 CET / 1300002540 --> <row><v>4.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:51:00 CET / 1300002660 --> <row><v>4.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:52:00 CET / 1300002720 --> <row><v>4.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:53:00 CET / 1300002780 --> <row><v>4.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:54:00 CET / 1300002840 --> <row><v>4.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:56:00 CET / 1300002960 --> <row><v>4.9500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>AVERAGE</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.6500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.6500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>MIN</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.4500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>3.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.4500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>MAX</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.8500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>LAST</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.8500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+               </database>
+       </rra>
+</rrd>
diff --git a/tests/modify5-testa2-create.dump b/tests/modify5-testa2-create.dump
new file mode 100644 (file)
index 0000000..ee68143
--- /dev/null
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE rrd SYSTEM "http://oss.oetiker.ch/rrdtool/rrdtool.dtd">
+<!-- Round Robin Database Dump -->
+<rrd>
+       <version>0003</version>
+       <step>60</step> <!-- Seconds -->
+       <lastupdate>1300002990</lastupdate> <!-- 2011-03-13 08:56:30 CET -->
+
+       <ds>
+               <name> a </name>
+               <type> GAUGE </type>
+               <minimal_heartbeat>120</minimal_heartbeat>
+               <min>0.0000000000e+00</min>
+               <max>NaN</max>
+
+               <!-- PDP Status -->
+               <last_ds>500</last_ds>
+               <value>1.5000000000e+04</value>
+               <unknown_sec> 0 </unknown_sec>
+       </ds>
+
+       <!-- Round Robin Archives -->
+       <rra>
+               <cf>AVERAGE</cf>
+               <pdp_per_row>1</pdp_per_row> <!-- 60 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.9500000000e+02</primary_value>
+                       <secondary_value>0.0000000000e+00</secondary_value>
+                       <value>NaN</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 07:17:00 CET / 1299997020 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:18:00 CET / 1299997080 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:19:00 CET / 1299997140 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:20:00 CET / 1299997200 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:21:00 CET / 1299997260 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:22:00 CET / 1299997320 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:23:00 CET / 1299997380 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:24:00 CET / 1299997440 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:25:00 CET / 1299997500 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:26:00 CET / 1299997560 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:27:00 CET / 1299997620 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:28:00 CET / 1299997680 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:29:00 CET / 1299997740 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:30:00 CET / 1299997800 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:31:00 CET / 1299997860 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:32:00 CET / 1299997920 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:33:00 CET / 1299997980 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:34:00 CET / 1299998040 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:35:00 CET / 1299998100 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:36:00 CET / 1299998160 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:37:00 CET / 1299998220 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:38:00 CET / 1299998280 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:39:00 CET / 1299998340 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:40:00 CET / 1299998400 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:41:00 CET / 1299998460 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:42:00 CET / 1299998520 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:43:00 CET / 1299998580 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:44:00 CET / 1299998640 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:45:00 CET / 1299998700 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:46:00 CET / 1299998760 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:47:00 CET / 1299998820 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:48:00 CET / 1299998880 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:49:00 CET / 1299998940 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:50:00 CET / 1299999000 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:51:00 CET / 1299999060 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:52:00 CET / 1299999120 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:53:00 CET / 1299999180 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:54:00 CET / 1299999240 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:55:00 CET / 1299999300 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:56:00 CET / 1299999360 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:57:00 CET / 1299999420 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:58:00 CET / 1299999480 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 07:59:00 CET / 1299999540 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:00:00 CET / 1299999600 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:01:00 CET / 1299999660 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:02:00 CET / 1299999720 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:03:00 CET / 1299999780 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:04:00 CET / 1299999840 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:05:00 CET / 1299999900 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:06:00 CET / 1299999960 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:07:00 CET / 1300000020 --> <row><v>NaN</v></row>
+                       <!-- 2011-03-13 08:08:00 CET / 1300000080 --> <row><v>1.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:09:00 CET / 1300000140 --> <row><v>2.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:10:00 CET / 1300000200 --> <row><v>3.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:11:00 CET / 1300000260 --> <row><v>4.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:12:00 CET / 1300000320 --> <row><v>5.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:13:00 CET / 1300000380 --> <row><v>6.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:14:00 CET / 1300000440 --> <row><v>7.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:15:00 CET / 1300000500 --> <row><v>8.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:16:00 CET / 1300000560 --> <row><v>9.5000000000e+01</v></row>
+                       <!-- 2011-03-13 08:17:00 CET / 1300000620 --> <row><v>1.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:18:00 CET / 1300000680 --> <row><v>1.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:19:00 CET / 1300000740 --> <row><v>1.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:20:00 CET / 1300000800 --> <row><v>1.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:21:00 CET / 1300000860 --> <row><v>1.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:22:00 CET / 1300000920 --> <row><v>1.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:23:00 CET / 1300000980 --> <row><v>1.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:24:00 CET / 1300001040 --> <row><v>1.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:25:00 CET / 1300001100 --> <row><v>1.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:26:00 CET / 1300001160 --> <row><v>1.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:27:00 CET / 1300001220 --> <row><v>2.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:28:00 CET / 1300001280 --> <row><v>2.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:29:00 CET / 1300001340 --> <row><v>2.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:30:00 CET / 1300001400 --> <row><v>2.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:31:00 CET / 1300001460 --> <row><v>2.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:32:00 CET / 1300001520 --> <row><v>2.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:33:00 CET / 1300001580 --> <row><v>2.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:34:00 CET / 1300001640 --> <row><v>2.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:35:00 CET / 1300001700 --> <row><v>2.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:36:00 CET / 1300001760 --> <row><v>2.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:37:00 CET / 1300001820 --> <row><v>3.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:38:00 CET / 1300001880 --> <row><v>3.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:39:00 CET / 1300001940 --> <row><v>3.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:40:00 CET / 1300002000 --> <row><v>3.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:41:00 CET / 1300002060 --> <row><v>3.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:42:00 CET / 1300002120 --> <row><v>3.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:43:00 CET / 1300002180 --> <row><v>3.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:44:00 CET / 1300002240 --> <row><v>3.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:45:00 CET / 1300002300 --> <row><v>3.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:46:00 CET / 1300002360 --> <row><v>3.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:47:00 CET / 1300002420 --> <row><v>4.0500000000e+02</v></row>
+                       <!-- 2011-03-13 08:48:00 CET / 1300002480 --> <row><v>4.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:49:00 CET / 1300002540 --> <row><v>4.2500000000e+02</v></row>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:51:00 CET / 1300002660 --> <row><v>4.4500000000e+02</v></row>
+                       <!-- 2011-03-13 08:52:00 CET / 1300002720 --> <row><v>4.5500000000e+02</v></row>
+                       <!-- 2011-03-13 08:53:00 CET / 1300002780 --> <row><v>4.6500000000e+02</v></row>
+                       <!-- 2011-03-13 08:54:00 CET / 1300002840 --> <row><v>4.7500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+                       <!-- 2011-03-13 08:56:00 CET / 1300002960 --> <row><v>4.9500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>AVERAGE</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.6500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.1500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.6500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>MIN</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.4500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>3.9500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.4500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>MAX</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.8500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>LAST</cf>
+               <pdp_per_row>5</pdp_per_row> <!-- 300 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.8500000000e+02</primary_value>
+                       <secondary_value>4.8500000000e+02</secondary_value>
+                       <value>4.9500000000e+02</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:50:00 CET / 1300002600 --> <row><v>4.3500000000e+02</v></row>
+                       <!-- 2011-03-13 08:55:00 CET / 1300002900 --> <row><v>4.8500000000e+02</v></row>
+               </database>
+       </rra>
+       <rra>
+               <cf>AVERAGE</cf>
+               <pdp_per_row>4</pdp_per_row> <!-- 240 seconds -->
+
+               <params>
+               <xff>5.0000000000e-01</xff>
+               </params>
+               <cdp_prep>
+                       <ds>
+                       <primary_value>4.8000000000e+02</primary_value>
+                       <secondary_value>4.9500000000e+02</secondary_value>
+                       <value>0.0000000000e+00</value>
+                       <unknown_datapoints>0</unknown_datapoints>
+                       </ds>
+               </cdp_prep>
+               <database>
+                       <!-- 2011-03-13 08:20:00 CET / 1300000800 --> <row><v>1.2000000000e+02</v></row>
+                       <!-- 2011-03-13 08:24:00 CET / 1300001040 --> <row><v>1.6000000000e+02</v></row>
+                       <!-- 2011-03-13 08:28:00 CET / 1300001280 --> <row><v>2.0000000000e+02</v></row>
+                       <!-- 2011-03-13 08:32:00 CET / 1300001520 --> <row><v>2.4000000000e+02</v></row>
+                       <!-- 2011-03-13 08:36:00 CET / 1300001760 --> <row><v>2.8000000000e+02</v></row>
+                       <!-- 2011-03-13 08:40:00 CET / 1300002000 --> <row><v>3.2000000000e+02</v></row>
+                       <!-- 2011-03-13 08:44:00 CET / 1300002240 --> <row><v>3.6000000000e+02</v></row>
+                       <!-- 2011-03-13 08:48:00 CET / 1300002480 --> <row><v>4.0000000000e+02</v></row>
+                       <!-- 2011-03-13 08:52:00 CET / 1300002720 --> <row><v>4.4000000000e+02</v></row>
+                       <!-- 2011-03-13 08:56:00 CET / 1300002960 --> <row><v>4.8000000000e+02</v></row>
+               </database>
+       </rra>
+</rrd>