1# Test dry run mode in RRDTool::OO
2
3use Test::More;
4use RRDTool::OO;
5
6use Log::Log4perl qw(:easy);
7
8plan tests => 6;
9
10#Log::Log4perl->easy_init({level => $INFO, layout => "%L: %m%n",
11#                          category => 'rrdtool',
12#                          file => 'stdout'});
13
14my $rrd = RRDTool::OO->new(
15  file    => 'foo',
16  dry_run => 1,
17);
18
19my $start_time     = 1080460200;
20my $nof_iterations = 10;
21
22   # Define the RRD
23my $rc = $rrd->create(
24    start       => $start_time - 10,
25    step        => 60,
26    data_source => { name      => 'load1',
27                     type      => 'GAUGE',
28                     heartbeat => 90,
29                     min       => 0,
30                     max       => 100.0,
31                   },
32    data_source => { name      => 'load2',
33                     type      => 'GAUGE',
34                     heartbeat => 90,
35                     min       => 0,
36                     max       => 100.0,
37                   },
38    archive     => { cfunc    => 'MAX',
39                     xff      => '0.5',
40                     cpoints  => 1,
41                     rows     => 5,
42                   },
43    archive     => { cfunc    => 'MAX',
44                     xff      => '0.5',
45                     cpoints  => 5,
46                     rows     => 10,
47                   },
48);
49
50my($subref, $args, $func) = $rrd->get_exec_env();
51
52is($func, "create", "get_exec_env function");
53is("@$args", "foo --start 1080460190 --step 60 DS:load1:GAUGE:90:0:100 DS:load2:GAUGE:90:0:100 RRA:MAX:0.5:1:5 RRA:MAX:0.5:5:10", "dry run arguments");
54
55$rrd = RRDTool::OO->new(
56  file    => 'foo',
57  dry_run => 1,
58  strict  => 0,
59);
60
61$rc = $rrd->create(
62    start       => $start_time - 10,
63    step        => 60,
64    data_source => { name      => 'load1',
65                     type      => 'GAUGE',
66                     heartbeat => 90,
67                     min       => 0,
68                     max       => 100.0,
69                   },
70    archive     => { cfunc    => 'MAX',
71                     xff      => '0.5',
72                     cpoints  => 1,
73                     rows     => 5,
74                   },
75);
76
77# Test non-strict
78$rrd->graph(
79  image           => "mygraph.png",
80  vertical_label  => 'My Salary',
81  start           => $start_time,
82  end             => $start_time + $nof_iterations * 60,
83  spitzen_sparken => 1,
84);
85
86ok(1, "survived illegal parameter");
87
88($subref, $args, $func) = $rrd->get_exec_env();
89like("@$args", qr/--spitzen-sparken 1/, "illegal parameter added to rrd cmd");
90
91# Add a new parameter in strict mode
92$rrd = RRDTool::OO->new(
93  file    => 'foo',
94  dry_run => 1,
95);
96
97$rc = $rrd->create(
98    start       => $start_time - 10,
99    step        => 60,
100    data_source => { name      => 'load1',
101                     type      => 'GAUGE',
102                     heartbeat => 90,
103                     min       => 0,
104                     max       => 100.0,
105                   },
106    archive     => { cfunc    => 'MAX',
107                     xff      => '0.5',
108                     cpoints  => 1,
109                     rows     => 5,
110                   },
111);
112
113$rrd->option_add("graph", "frobnication_level");
114
115$rrd->graph(
116  image           => "mygraph.png",
117  vertical_label  => 'My Salary',
118  start           => $start_time,
119  end             => $start_time + $nof_iterations * 60,
120  frobnication_level => 1,
121);
122
123ok(1, "survived illegal parameter");
124
125($subref, $args, $func) = $rrd->get_exec_env();
126like("@$args", qr/--frobnication-level 1/,
127     "illegal parameter added to rrd cmd");
128