add listval_filter method and corresponding tests
[collectd.git] / bindings / perl / t / 01_methods.t
index 10289c7..2f7818b 100644 (file)
@@ -2,13 +2,24 @@
 
 use strict;
 use warnings;
-use Test::More tests => 12;
+use Test::More tests => 14;
 use Collectd::Unixsock;
 use Collectd::MockDaemon;
 
 my $path = mockd_start();
 END { mockd_stop(); }
 
+sub filter_time { return map { delete $_->{time}; $_ } @_ }
+
+sub test_query {
+    my ($s, $attr, $results) = @_;
+    my ($nresults, $resultdata) = @$results;
+    my $r = $s->getval(%{Collectd::Unixsock::_parse_identifier($attr)});
+    is(ref $r, 'HASH', "Got a result for $attr");
+    is(scalar keys $r, $nresults, "$nresults result result for $attr");
+    is_deeply($r, $resultdata, "Data or $attr matches");
+}
+
 my $s = Collectd::Unixsock->new($path);
 isnt($s, undef, "Collectd::Unixsock object created");
 
@@ -30,14 +41,19 @@ is_deeply($values[1234], {
         type => 'cpu',
         host => 'h2gdf6120'
     }, "Correct data returned for select element");
+@values = ();
+
+is_deeply([ filter_time $s->listval_filter() ] , [ filter_time $s->listval ], "listval_filter() w/o filter equivalent to listval()");
+is_deeply(
+    [ filter_time $s->listval_filter(host => 'a1d8f6310', plugin => 'disk', plugin_instance => 'vda6') ],
+    [
+        { 'plugin_instance' => 'vda6', 'type' => 'disk_merged', 'plugin' => 'disk', 'host' => 'a1d8f6310' },
+        { 'host' => 'a1d8f6310', 'plugin' => 'disk', 'plugin_instance' => 'vda6', 'type' => 'disk_octets' },
+        { 'type' => 'disk_ops', 'plugin_instance' => 'vda6', 'plugin' => 'disk', 'host' => 'a1d8f6310' },
+        { 'plugin' => 'disk', 'host' => 'a1d8f6310', 'type' => 'disk_time', 'plugin_instance' => 'vda6' }
+    ],
+    "Correct result from listval_filter on <host>, <plugin> and <plugin_instance>"
+);
 
 # TODO more test for putval() and the like
 
-sub test_query {
-    my ($s, $attr, $results) = @_;
-    my ($nresults, $resultdata) = @$results;
-    my $r = $s->getval(%{Collectd::Unixsock::_parse_identifier($attr)});
-    is(ref $r, 'HASH', "Got a result for $attr");
-    is(scalar keys $r, $nresults, "$nresults result result for $attr");
-    is_deeply($r, $resultdata, "Data or $attr matches");
-}