<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>Hi Tobi,<br><br>As I explained earlier in this same thread, I needed a solution for Cacti to be able to sum up the difference between 2 counter readings.<br><br>Since DST_COUNTER is a rate, I had to create DST_DIFFERENCE that does exactly what DST_COUNTER does without the division by the step period.<br><br>Also since there was no CF_SUM to do the sum, I had to create one.<br><br>I know that I could write a CDEF to multiply CF_AVERAGE by the step period to get the sum, but that would only fix my problem for one level of consolidation because I can only associate one CDEF per DS in Cacti.<br><br>So let say I poll every minute, and my DS has 3 RRA, RRA1 has step 1, RRA2 has step 5 (5 mins average) and RRA3 has step 30 (30 mins average).&nbsp; Associating a CDEF to multiply by 60 will only fix my
 RRA1 from per second to per minute measurement. RRA2 and RRA3 will stay at per minute while I want them per 5 minutes and per 30 minutes.<br><br>Cacti is basically a web UI wrapper on top of RRDTool. All calculations is done at RRDTool level so that's why I choose to do this fix at RRDTool level instead of at Cacti's level. Also doing this fix at RRDTool level will enable this functionality for more than just Cacti's users. Anyone doing another wrapper on top of RRDTool will also benefit.<br><br>As for the regression test I wrote to test my code, here's a brief explanation of what I've tested.<br><br>I create a RRD file with all the existing DST (COUNTER, DERIVE, ABSOLUTE, GAUGE) and all the existing "primary" CF (AVERAGE, MIN, MAX, LAST) with 3 RRA each (step 1, step 3, step 9).<br><br>Then I used updatev to do the update so I can see the calculated values.<br><br>I forced interpolation by updating at 61 sec interval instead of at exactly the step size
 60.<br><br>The create command use a fixed --start that I increment by 0, 1, 2, ... , 60, 120, 180, ... 540 (so 60 iteration with 1 sec increment (change unknown_sec) and 9 iteration with 1 min increment (change unknown_datapoints)).<br><br>I loop all the iterations, save the output and redo the same with my newly recompiled rrdtool binaries, diff the output, they are identical. So I know I didn't introduce any regression in existing DST and CF.<br><br>Long<br><br></div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><div style="font-family: arial,helvetica,sans-serif; font-size: 10pt;"><font face="Tahoma" size="2"><hr size="1"><b><span style="font-weight: bold;">From:</span></b> Tobias Oetiker &lt;tobi@oetiker.ch&gt;<br><b><span style="font-weight: bold;">To:</span></b> Long &lt;long_at_work@yahoo.ca&gt;<br><b><span style="font-weight: bold;">Cc:</span></b> rrd-developers@lists.oetiker.ch<br><b><span
 style="font-weight: bold;">Sent:</span></b> Thu, April 7, 2011 4:56:18 PM<br><b><span style="font-weight: bold;">Subject:</span></b> Re: [rrd-developers] How to create a new Data Type and Consolidation Function?<br></font><br>Hi Long,<br><br>Today Long wrote:<br><br>&gt; Hi,<br>&gt;<br>&gt; I've completed adding a DST called DIFFERENCE and a CF called SUM.<br><br>&gt; I've done some regression test on my side and they all look fine.<br><br>the question might be more 'what they do' than whether they do it<br>correctly ... maybe write a bit about that ...<br><br>cheers<br>tobi<br>&gt;<br>&gt; Is there's any official regression test suite I should run my code through<br>&gt; before submitting the patch?<br>&gt;<br>&gt; Thanks,<br>&gt; Long<br>&gt;<br>&gt; --<br>&gt; View this message in context: <a href="http://rrd-mailinglists.937164.n2.nabble.com/How-to-create-a-new-Data-Type-and-Consolidation-Function-tp5990330p6251263.html"
 target="_blank">http://rrd-mailinglists.937164.n2.nabble.com/How-to-create-a-new-Data-Type-and-Consolidation-Function-tp5990330p6251263.html</a><br>&gt; Sent from the RRDtool Developers Mailinglist mailing list archive at Nabble.com.<br>&gt;<br>&gt; _______________________________________________<br>&gt; rrd-developers mailing list<br>&gt; <a ymailto="mailto:rrd-developers@lists.oetiker.ch" href="mailto:rrd-developers@lists.oetiker.ch">rrd-developers@lists.oetiker.ch</a><br>&gt; <a href="https://lists.oetiker.ch/cgi-bin/listinfo/rrd-developers" target="_blank">https://lists.oetiker.ch/cgi-bin/listinfo/rrd-developers</a><br>&gt;<br>&gt;<br><br>-- <br>Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland<br><a href="http://it.oetiker.ch" target="_blank">http://it.oetiker.ch</a> <a ymailto="mailto:tobi@oetiker.ch" href="mailto:tobi@oetiker.ch">tobi@oetiker.ch</a> ++41 62 775 9902 / sb: -9900<br></div></div>
</div></body></html>