add a test suite
[collectd.git] / bindings / perl / t / 01_methods.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use Test::More tests => 12;
6 use Collectd::Unixsock;
7 use Collectd::MockDaemon;
8
9 my $path = mockd_start();
10 END { mockd_stop(); }
11
12 my $s = Collectd::Unixsock->new($path);
13 isnt($s, undef, "Collectd::Unixsock object created");
14
15 my %queries = (
16     'w83df6600/vmem/vmpage_number-vmscan_write' => [ 1, { value => 0 } ],
17     'a1d8f6310/load/load' => [ 3, { longterm => '0.07', shortterm => 0, midterm => '0.06' } ],
18     'w83df6600/disk-sda/disk_octets' => [ 2, { read => 0, write => 0 } ],
19 );
20
21 test_query($s, $_, $queries{$_}) for sort keys %queries;
22
23 my @values = $s->listval;
24 is(scalar @values, 4984, "Correct number of results from LISTVAL");
25 delete $values[1234]{time};     # won't be constant
26 is_deeply($values[1234], {
27         type_instance => 'nice',
28         plugin_instance => 21,
29         plugin => 'cpu',
30         type => 'cpu',
31         host => 'h2gdf6120'
32     }, "Correct data returned for select element");
33
34 # TODO more test for putval() and the like
35
36 sub test_query {
37     my ($s, $attr, $results) = @_;
38     my ($nresults, $resultdata) = @$results;
39     my $r = $s->getval(%{Collectd::Unixsock::_parse_identifier($attr)});
40     is(ref $r, 'HASH', "Got a result for $attr");
41     is(scalar keys $r, $nresults, "$nresults result result for $attr");
42     is_deeply($r, $resultdata, "Data or $attr matches");
43 }