ruby-libvirt 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/NEWS +43 -0
- data/README +40 -2
- data/README.rdoc +3 -1
- data/Rakefile +3 -25
- data/ext/libvirt/_libvirt.c +636 -35
- data/ext/libvirt/common.c +142 -16
- data/ext/libvirt/common.h +78 -22
- data/ext/libvirt/connect.c +1811 -95
- data/ext/libvirt/connect.h +0 -1
- data/ext/libvirt/domain.c +880 -424
- data/ext/libvirt/domain.h +4 -0
- data/ext/libvirt/extconf.rb +90 -0
- data/ext/libvirt/interface.c +40 -118
- data/ext/libvirt/network.c +22 -125
- data/ext/libvirt/network.h +1 -0
- data/ext/libvirt/nodedevice.c +27 -142
- data/ext/libvirt/nwfilter.c +10 -83
- data/ext/libvirt/secret.c +35 -113
- data/ext/libvirt/storage.c +125 -223
- data/tests/test_conn.rb +193 -43
- data/tests/test_domain.rb +1067 -102
- data/tests/test_interface.rb +156 -19
- data/tests/test_network.rb +237 -26
- data/tests/test_nodedevice.rb +103 -15
- data/tests/test_nwfilter.rb +97 -14
- data/tests/test_open.rb +186 -6
- data/tests/test_secret.rb +126 -14
- data/tests/test_storage.rb +513 -40
- data/tests/test_utils.rb +73 -0
- metadata +5 -6
- data/tests/node.xml +0 -110
- data/tests/tc_connect.rb +0 -178
data/tests/test_nodedevice.rb
CHANGED
@@ -2,22 +2,110 @@
|
|
2
2
|
|
3
3
|
# Test the nodedevice methods the bindings support
|
4
4
|
|
5
|
+
$: << File.dirname(__FILE__)
|
6
|
+
|
5
7
|
require 'libvirt'
|
8
|
+
require 'test_utils.rb'
|
9
|
+
|
10
|
+
conn = Libvirt::open("qemu:///system")
|
11
|
+
|
12
|
+
# TESTGROUP: conn.num_of_nodedevices
|
13
|
+
expect_too_many_args(conn, "num_of_nodedevices", 1, 2, 3)
|
14
|
+
expect_invalid_arg_type(conn, "num_of_nodedevices", 1)
|
15
|
+
expect_invalid_arg_type(conn, "num_of_nodedevices", 'foo', 'bar')
|
16
|
+
expect_success(conn, "no args", "num_of_nodedevices")
|
17
|
+
|
18
|
+
# TESTGROUP: conn.list_nodedevices
|
19
|
+
expect_too_many_args(conn, "list_nodedevices", 1, 2, 3)
|
20
|
+
expect_invalid_arg_type(conn, "list_nodedevices", 1)
|
21
|
+
expect_invalid_arg_type(conn, "list_nodedevices", 'foo', 'bar')
|
22
|
+
expect_success(conn, "no args", "list_nodedevices")
|
23
|
+
|
24
|
+
# TESTGROUP: conn.lookup_nodedevice_by_name
|
25
|
+
testnode = conn.lookup_nodedevice_by_name(conn.list_nodedevices[0])
|
26
|
+
|
27
|
+
expect_too_many_args(conn, "lookup_nodedevice_by_name", 1, 2)
|
28
|
+
expect_too_few_args(conn, "lookup_nodedevice_by_name")
|
29
|
+
expect_invalid_arg_type(conn, "lookup_nodedevice_by_name", 1)
|
30
|
+
expect_fail(conn, Libvirt::RetrieveError, "non-existent name arg", "lookup_nodedevice_by_name", "foobarbazsucker")
|
31
|
+
|
32
|
+
expect_success(conn, "name arg", "lookup_nodedevice_by_name", testnode.name)
|
33
|
+
|
34
|
+
# TESTGROUP: conn.create_nodedevice_xml
|
35
|
+
expect_too_many_args(conn, "create_nodedevice_xml", 1, 2, 3)
|
36
|
+
expect_too_few_args(conn, "create_nodedevice_xml")
|
37
|
+
expect_invalid_arg_type(conn, "create_nodedevice_xml", 1)
|
38
|
+
expect_invalid_arg_type(conn, "create_nodedevice_xml", "foo", 'bar')
|
39
|
+
expect_fail(conn, Libvirt::Error, "invalid XML", "create_nodedevice_xml", "hello")
|
40
|
+
|
41
|
+
#expect_success(conn, "nodedevice XML", "create_nodedevice_xml", "<nodedevice/>")
|
42
|
+
|
43
|
+
# TESTGROUP: nodedevice.name
|
44
|
+
testnode = conn.lookup_nodedevice_by_name(conn.list_nodedevices[0])
|
45
|
+
|
46
|
+
expect_too_many_args(testnode, "name", 1)
|
47
|
+
expect_success(testnode, "no args", "name")
|
48
|
+
|
49
|
+
# TESTGROUP: nodedevice.parent
|
50
|
+
testnode = conn.lookup_nodedevice_by_name(conn.list_nodedevices[0])
|
51
|
+
|
52
|
+
expect_too_many_args(testnode, "parent", 1)
|
53
|
+
expect_success(testnode, "no args", "parent")
|
54
|
+
|
55
|
+
# TESTGROUP: nodedevice.num_of_caps
|
56
|
+
testnode = conn.lookup_nodedevice_by_name(conn.list_nodedevices[0])
|
57
|
+
|
58
|
+
expect_too_many_args(testnode, "num_of_caps", 1)
|
59
|
+
expect_success(testnode, "no args", "num_of_caps")
|
60
|
+
|
61
|
+
# TESTGROUP: nodedevice.list_caps
|
62
|
+
testnode = conn.lookup_nodedevice_by_name(conn.list_nodedevices[0])
|
63
|
+
|
64
|
+
expect_too_many_args(testnode, "list_caps", 1)
|
65
|
+
expect_success(testnode, "no args", "list_caps")
|
6
66
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
67
|
+
# TESTGROUP: nodedevice.xml_desc
|
68
|
+
testnode = conn.lookup_nodedevice_by_name(conn.list_nodedevices[0])
|
69
|
+
|
70
|
+
expect_too_many_args(testnode, "xml_desc", 1, 2)
|
71
|
+
expect_invalid_arg_type(testnode, "xml_desc", 'foo')
|
72
|
+
expect_success(testnode, "no args", "xml_desc")
|
73
|
+
|
74
|
+
# TESTGROUP: nodedevice.detach
|
75
|
+
testnode = conn.lookup_nodedevice_by_name(conn.list_nodedevices[0])
|
76
|
+
|
77
|
+
expect_too_many_args(testnode, "detach", 1)
|
78
|
+
|
79
|
+
#expect_success(testnode, "no args", "detach")
|
80
|
+
|
81
|
+
# TESTGROUP: nodedevice.reattach
|
82
|
+
testnode = conn.lookup_nodedevice_by_name(conn.list_nodedevices[0])
|
83
|
+
|
84
|
+
expect_too_many_args(testnode, "reattach", 1)
|
85
|
+
|
86
|
+
#expect_success(testnode, "no args", "reattach")
|
87
|
+
|
88
|
+
# TESTGROUP: nodedevice.reset
|
89
|
+
testnode = conn.lookup_nodedevice_by_name(conn.list_nodedevices[0])
|
90
|
+
|
91
|
+
expect_too_many_args(testnode, "reset", 1)
|
92
|
+
|
93
|
+
#expect_success(testnode, "no args", "reset")
|
94
|
+
|
95
|
+
# TESTGROUP: nodedevice.destroy
|
96
|
+
testnode = conn.lookup_nodedevice_by_name(conn.list_nodedevices[0])
|
97
|
+
|
98
|
+
expect_too_many_args(testnode, "destroy", 1)
|
99
|
+
|
100
|
+
#expect_success(testnode, "no args", "destroy")
|
101
|
+
|
102
|
+
# TESTGROUP: nodedevice.free
|
103
|
+
testnode = conn.lookup_nodedevice_by_name(conn.list_nodedevices[0])
|
104
|
+
|
105
|
+
expect_too_many_args(testnode, "free", 1)
|
106
|
+
|
107
|
+
expect_success(testnode, "no args", "free")
|
22
108
|
|
23
109
|
conn.close
|
110
|
+
|
111
|
+
finish_tests
|
data/tests/test_nwfilter.rb
CHANGED
@@ -2,27 +2,110 @@
|
|
2
2
|
|
3
3
|
# Test the nwfilter methods the bindings support
|
4
4
|
|
5
|
+
$: << File.dirname(__FILE__)
|
6
|
+
|
5
7
|
require 'libvirt'
|
8
|
+
require 'test_utils.rb'
|
9
|
+
|
10
|
+
UUID = "bd339530-134c-6d07-441a-17fb90dad807"
|
6
11
|
|
7
|
-
conn = Libvirt::open
|
8
|
-
puts "Number of NWFilters: #{conn.num_of_nwfilters}"
|
12
|
+
conn = Libvirt::open("qemu:///system")
|
9
13
|
|
10
14
|
new_nwfilter_xml = <<EOF
|
11
|
-
<filter name='
|
12
|
-
<uuid
|
15
|
+
<filter name='ruby-libvirt-tester' chain='ipv4'>
|
16
|
+
<uuid>#{UUID}</uuid>
|
17
|
+
<rule action='accept' direction='out' priority='100'>
|
18
|
+
<ip srcipaddr='0.0.0.0' dstipaddr='255.255.255.255' protocol='tcp' srcportstart='63000' dstportstart='62000'/>
|
19
|
+
</rule>
|
20
|
+
<rule action='accept' direction='in' priority='100'>
|
21
|
+
<ip protocol='tcp' srcportstart='63000' dstportstart='62000'/>
|
22
|
+
</rule>
|
13
23
|
</filter>
|
14
24
|
EOF
|
15
25
|
|
16
|
-
|
17
|
-
|
26
|
+
# TESTGROUP: conn.num_of_nwfilters
|
27
|
+
expect_too_many_args(conn, "num_of_nwfilters", 1)
|
28
|
+
expect_success(conn, "no args", "num_of_nwfilters")
|
29
|
+
|
30
|
+
# TESTGROUP: conn.list_nwfilters
|
31
|
+
expect_too_many_args(conn, "list_nwfilters", 1)
|
32
|
+
expect_success(conn, "no args", "list_nwfilters")
|
33
|
+
|
34
|
+
# TESTGROUP: conn.lookup_nwfilter_by_name
|
35
|
+
newnw = conn.define_nwfilter_xml(new_nwfilter_xml)
|
36
|
+
|
37
|
+
expect_too_many_args(conn, "lookup_nwfilter_by_name", 1, 2)
|
38
|
+
expect_too_few_args(conn, "lookup_nwfilter_by_name")
|
39
|
+
expect_invalid_arg_type(conn, "lookup_nwfilter_by_name", 1)
|
40
|
+
|
41
|
+
expect_success(conn, "name arg", "lookup_nwfilter_by_name", "ruby-libvirt-tester")
|
42
|
+
|
43
|
+
newnw.undefine
|
44
|
+
|
45
|
+
# TESTGROUP: conn.lookup_nwfilter_by_uuid
|
46
|
+
newnw = conn.define_nwfilter_xml(new_nwfilter_xml)
|
47
|
+
|
48
|
+
expect_too_many_args(conn, "lookup_nwfilter_by_uuid", 1, 2)
|
49
|
+
expect_too_few_args(conn, "lookup_nwfilter_by_uuid")
|
50
|
+
expect_invalid_arg_type(conn, "lookup_nwfilter_by_uuid", 1)
|
51
|
+
|
52
|
+
expect_success(conn, "uuid arg", "lookup_nwfilter_by_uuid", UUID) {|x| x.uuid == UUID}
|
53
|
+
|
54
|
+
newnw.undefine
|
55
|
+
|
56
|
+
# TESTGROUP: conn.define_nwfilter_xml
|
57
|
+
expect_too_many_args(conn, "define_nwfilter_xml", 1, 2)
|
58
|
+
expect_too_few_args(conn, "define_nwfilter_xml")
|
59
|
+
expect_invalid_arg_type(conn, "define_nwfilter_xml", 1)
|
60
|
+
expect_invalid_arg_type(conn, "define_nwfilter_xml", nil)
|
61
|
+
expect_fail(conn, Libvirt::DefinitionError, "invalid XML", "define_nwfilter_xml", "hello")
|
62
|
+
|
63
|
+
newnw = expect_success(conn, "nwfilter XML", "define_nwfilter_xml", new_nwfilter_xml)
|
64
|
+
|
65
|
+
newnw.undefine
|
66
|
+
|
67
|
+
# TESTGROUP: nwfilter.undefine
|
68
|
+
newnw = conn.define_nwfilter_xml(new_nwfilter_xml)
|
69
|
+
|
70
|
+
expect_too_many_args(newnw, "undefine", 1)
|
18
71
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
72
|
+
expect_success(newnw, "no args", "undefine")
|
73
|
+
|
74
|
+
# TESTGROUP: nwfilter.name
|
75
|
+
newnw = conn.define_nwfilter_xml(new_nwfilter_xml)
|
76
|
+
|
77
|
+
expect_too_many_args(newnw, "name", 1)
|
78
|
+
|
79
|
+
expect_success(newnw, "no args", "name") {|x| x == "ruby-libvirt-tester"}
|
80
|
+
|
81
|
+
newnw.undefine
|
82
|
+
|
83
|
+
# TESTGROUP: nwfilter.uuid
|
84
|
+
newnw = conn.define_nwfilter_xml(new_nwfilter_xml)
|
85
|
+
|
86
|
+
expect_too_many_args(newnw, "uuid", 1)
|
87
|
+
|
88
|
+
expect_success(newnw, "no args", "uuid") {|x| x == UUID}
|
89
|
+
|
90
|
+
newnw.undefine
|
91
|
+
|
92
|
+
# TESTGROUP: nwfilter.xml_desc
|
93
|
+
newnw = conn.define_nwfilter_xml(new_nwfilter_xml)
|
94
|
+
|
95
|
+
expect_too_many_args(newnw, "xml_desc", 1, 2)
|
96
|
+
expect_invalid_arg_type(newnw, "xml_desc", "foo")
|
97
|
+
|
98
|
+
expect_success(newnw, "no args", "xml_desc")
|
99
|
+
|
100
|
+
newnw.undefine
|
101
|
+
|
102
|
+
# TESTGROUP: nwfilter.free
|
103
|
+
newnw = conn.define_nwfilter_xml(new_nwfilter_xml)
|
104
|
+
newnw.undefine
|
105
|
+
expect_too_many_args(newnw, "free", 1)
|
106
|
+
|
107
|
+
expect_success(newnw, "no args", "free")
|
27
108
|
|
28
109
|
conn.close
|
110
|
+
|
111
|
+
finish_tests
|
data/tests/test_open.rb
CHANGED
@@ -2,22 +2,202 @@
|
|
2
2
|
|
3
3
|
# Test the open calls that the bindings support
|
4
4
|
|
5
|
+
$: << File.dirname(__FILE__)
|
6
|
+
|
5
7
|
require 'libvirt'
|
8
|
+
require 'test_utils.rb'
|
9
|
+
|
10
|
+
def expect_connect_error(func, args)
|
11
|
+
expect_fail(Libvirt, Libvirt::ConnectionError, "invalid driver", func, *args)
|
12
|
+
end
|
6
13
|
|
7
|
-
|
14
|
+
# TESTGROUP: Libvirt::version
|
15
|
+
expect_too_many_args(Libvirt, "version", "test", 1)
|
16
|
+
expect_invalid_arg_type(Libvirt, "version", 1)
|
17
|
+
expect_success(Libvirt, "no args", "version") {|x| x.class == Array and x.length == 2}
|
18
|
+
expect_success(Libvirt, "nil arg", "version", nil) {|x| x.class == Array and x.length == 2}
|
19
|
+
expect_success(Libvirt, "Test arg", "version", "Test") {|x| x.class == Array and x.length == 2}
|
20
|
+
|
21
|
+
# TESTGROUP: Libvirt::open
|
22
|
+
expect_too_many_args(Libvirt, "open", "qemu:///system", 1)
|
23
|
+
expect_connect_error("open", "foo:///system")
|
24
|
+
conn = expect_success(Libvirt, "no args", "open") {|x| x.class == Libvirt::Connect }
|
25
|
+
conn.close
|
26
|
+
conn = expect_success(Libvirt, "qemu:///system", "open", "qemu:///system") {|x| x.class == Libvirt::Connect }
|
27
|
+
conn.close
|
28
|
+
conn = expect_success(Libvirt, "nil arg", "open", nil) {|x| x.class == Libvirt::Connect }
|
8
29
|
conn.close
|
9
30
|
|
10
|
-
|
31
|
+
# TESTGROUP: Libvirt::open_read_only
|
32
|
+
expect_too_many_args(Libvirt, "open_read_only", "qemu:///system", 1)
|
33
|
+
expect_connect_error("open_read_only", "foo:///system")
|
34
|
+
conn = expect_success(Libvirt, "no args", "open_read_only") {|x| x.class == Libvirt::Connect }
|
35
|
+
conn.close
|
36
|
+
conn = expect_success(Libvirt, "qemu:///system", "open_read_only", "qemu:///system") {|x| x.class == Libvirt::Connect }
|
37
|
+
conn.close
|
38
|
+
conn = expect_success(Libvirt, "nil arg", "open_read_only", nil) {|x| x.class == Libvirt::Connect }
|
39
|
+
conn.close
|
40
|
+
|
41
|
+
# TESTGROUP: Libvirt::open_auth
|
42
|
+
expect_too_many_args(Libvirt, "open_auth", "qemu:///system", [], "hello there", 1, 2)
|
43
|
+
expect_connect_error("open_auth", "foo:///system")
|
44
|
+
expect_invalid_arg_type(Libvirt, "open_auth", 1)
|
45
|
+
expect_invalid_arg_type(Libvirt, "open_auth", "qemu:///system", [], "hello", "foo")
|
46
|
+
|
47
|
+
conn = expect_success(Libvirt, "no args", "open_auth") {|x| x.class == Libvirt::Connect }
|
48
|
+
conn.close
|
49
|
+
|
50
|
+
conn = expect_success(Libvirt, "uri arg", "open_auth", "qemu:///system") {|x| x.class == Libvirt::Connect }
|
51
|
+
conn.close
|
52
|
+
|
53
|
+
conn = expect_success(Libvirt, "uri and empty cred args", "open_auth", "qemu:///system", []) {|x| x.class == Libvirt::Connect }
|
11
54
|
conn.close
|
12
55
|
|
13
|
-
conn = Libvirt::
|
56
|
+
conn = expect_success(Libvirt, "uri and full cred args", "open_auth", "qemu:///system", [Libvirt::CRED_AUTHNAME, Libvirt::CRED_PASSPHRASE]) {|x| x.class == Libvirt::Connect }
|
14
57
|
conn.close
|
15
58
|
|
16
|
-
conn = Libvirt::
|
59
|
+
conn = expect_success(Libvirt, "uri, full cred, and user args", "open_auth", "qemu:///system", [Libvirt::CRED_AUTHNAME, Libvirt::CRED_PASSPHRASE], "hello") {|x| x.class == Libvirt::Connect }
|
17
60
|
conn.close
|
18
61
|
|
19
|
-
|
62
|
+
# equivalent to "expect_success"
|
63
|
+
begin
|
64
|
+
conn = Libvirt::open_auth("qemu:///system", [Libvirt::CRED_AUTHNAME, Libvirt::CRED_PASSPHRASE], "hello") do |cred|
|
65
|
+
if not cred["userdata"].nil?
|
66
|
+
puts "userdata is #{cred["userdata"]}"
|
67
|
+
end
|
68
|
+
if cred["type"] == Libvirt::CRED_AUTHNAME
|
69
|
+
print "#{cred['prompt']}: "
|
70
|
+
res = gets
|
71
|
+
# strip off the \n
|
72
|
+
res = res[0..-2]
|
73
|
+
elsif cred["type"] == Libvirt::CRED_PASSPHRASE
|
74
|
+
print "#{cred['prompt']}: "
|
75
|
+
res = gets
|
76
|
+
res = res[0..-2]
|
77
|
+
else
|
78
|
+
raise "Unsupported credential #{cred['type']}"
|
79
|
+
end
|
80
|
+
res
|
81
|
+
end
|
82
|
+
|
83
|
+
puts "OK: open_auth uri, creds, userdata, auth block succeeded"
|
84
|
+
$SUCCESS = $SUCCESS + 1
|
85
|
+
conn.close
|
86
|
+
rescue NoMethodError
|
87
|
+
puts "SKIPPED: open_auth does not exist"
|
88
|
+
$SKIPPED = $SKIPPED + 1
|
89
|
+
rescue => e
|
90
|
+
puts "FAIL: open_auth uri, creds, userdata, auth block expected to succeed, threw #{e.class.to_s}: #{e.to_s}"
|
91
|
+
$FAIL = $FAIL + 1
|
92
|
+
end
|
93
|
+
|
94
|
+
# equivalent to "expect_success"
|
95
|
+
begin
|
96
|
+
conn = Libvirt::open_auth("qemu:///system", [Libvirt::CRED_AUTHNAME, Libvirt::CRED_PASSPHRASE], "hello", Libvirt::CONNECT_RO) do |cred|
|
97
|
+
if not cred["userdata"].nil?
|
98
|
+
puts "userdata is #{cred["userdata"]}"
|
99
|
+
end
|
100
|
+
if cred["type"] == Libvirt::CRED_AUTHNAME
|
101
|
+
print "#{cred['prompt']}: "
|
102
|
+
res = gets
|
103
|
+
# strip off the \n
|
104
|
+
res = res[0..-2]
|
105
|
+
elsif cred["type"] == Libvirt::CRED_PASSPHRASE
|
106
|
+
print "#{cred['prompt']}: "
|
107
|
+
res = gets
|
108
|
+
res = res[0..-2]
|
109
|
+
else
|
110
|
+
raise "Unsupported credential #{cred['type']}"
|
111
|
+
end
|
112
|
+
res
|
113
|
+
end
|
114
|
+
|
115
|
+
puts "OK: open_auth uri, creds, userdata, R/O flag, auth block succeeded"
|
116
|
+
$SUCCESS = $SUCCESS + 1
|
117
|
+
conn.close
|
118
|
+
rescue NoMethodError
|
119
|
+
puts "SKIPPED: open_auth does not exist"
|
120
|
+
$SKIPPED = $SKIPPED + 1
|
121
|
+
rescue => e
|
122
|
+
puts "FAIL: open_auth uri, creds, userdata, R/O flag, auth block expected to succeed, threw #{e.class.to_s}: #{e.to_s}"
|
123
|
+
$FAIL = $FAIL + 1
|
124
|
+
end
|
125
|
+
|
126
|
+
# TESTGROUP: Libvirt::event_register_impl
|
127
|
+
expect_too_many_args(Libvirt, "event_register_impl", 1, 2, 3, 4, 5, 6, 7)
|
128
|
+
expect_invalid_arg_type(Libvirt, "event_register_impl", 1)
|
129
|
+
|
130
|
+
# symbol callbacks
|
131
|
+
def virEventAddHandleImpl(fd, events, opaque)
|
132
|
+
end
|
133
|
+
def virEventUpdateHandleImpl(watch, event)
|
134
|
+
end
|
135
|
+
def virEventRemoveHandleImpl(handleID)
|
136
|
+
end
|
137
|
+
def virEventAddTimerImpl(interval, opaque)
|
138
|
+
end
|
139
|
+
def virEventUpdateTimerImpl(timer, timeout)
|
140
|
+
end
|
141
|
+
def virEventRemoveTimerImpl(timerID)
|
142
|
+
end
|
143
|
+
|
144
|
+
# proc callbacks
|
145
|
+
virEventAddHandleProc = lambda {|fd, events, opaque|
|
146
|
+
}
|
147
|
+
virEventUpdateHandleProc = lambda {|watch, event|
|
148
|
+
}
|
149
|
+
virEventRemoveHandleProc = lambda {|handleID|
|
150
|
+
}
|
151
|
+
virEventAddTimerProc = lambda {|interval, opaque|
|
152
|
+
}
|
153
|
+
virEventUpdateTimerProc = lambda {|timer, timeout|
|
154
|
+
}
|
155
|
+
virEventRemoveTimerProc = lambda {|timerID|
|
156
|
+
}
|
157
|
+
|
158
|
+
expect_success(Libvirt, "all Symbol callbacks", "event_register_impl", :virEventAddHandleImpl, :virEventUpdateHandleImpl, :virEventRemoveHandleImpl, :virEventAddTimerImpl, :virEventUpdateTimerImpl, :virEventRemoveTimerImpl)
|
159
|
+
expect_success(Libvirt, "unregister all callbacks", "event_register_impl", nil, nil, nil, nil, nil, nil)
|
160
|
+
expect_success(Libvirt, "all Proc callbacks", "event_register_impl", virEventAddHandleProc, virEventUpdateHandleProc, virEventRemoveHandleProc, virEventAddTimerProc, virEventUpdateTimerProc, virEventRemoveTimerProc)
|
161
|
+
expect_success(Libvirt, "unregister all callbacks", "event_register_impl")
|
162
|
+
|
163
|
+
# TESTGROUP: Libvirt::event_invoke_handle_callback
|
164
|
+
conn = Libvirt::open("qemu:///system")
|
165
|
+
|
166
|
+
expect_too_many_args(Libvirt, "event_invoke_handle_callback", 1, 2, 3, 4, 5)
|
167
|
+
expect_too_few_args(Libvirt, "event_invoke_handle_callback")
|
168
|
+
expect_too_few_args(Libvirt, "event_invoke_handle_callback", 1)
|
169
|
+
expect_too_few_args(Libvirt, "event_invoke_handle_callback", 1, 2)
|
170
|
+
expect_too_few_args(Libvirt, "event_invoke_handle_callback", 1, 2, 3)
|
171
|
+
# this is a bit bizarre; I am constructing a bogus hash to pass as the 4th
|
172
|
+
# parameter to event_invoke_handle_callback. In a real situation, I would
|
173
|
+
# have been given this hash from libvirt earlier, and just pass it on. I
|
174
|
+
# don't want all of that complexity here, though, so I create the bogus hash.
|
175
|
+
# One caveat; the data inside the hash *must* be of type T_DATA, so I pass in
|
176
|
+
# a fake conn object just to appease the type checker (so I can test out the
|
177
|
+
# other arguments properly)
|
178
|
+
expect_invalid_arg_type(Libvirt, "event_invoke_handle_callback", "hello", 1, 1, { "libvirt_cb" => conn, "opaque" => conn })
|
179
|
+
expect_invalid_arg_type(Libvirt, "event_invoke_handle_callback", 1, "hello", 1, { "libvirt_cb" => conn, "opaque" => conn })
|
180
|
+
expect_invalid_arg_type(Libvirt, "event_invoke_handle_callback", 1, 1, "hello", { "libvirt_cb" => conn, "opaque" => conn })
|
181
|
+
expect_invalid_arg_type(Libvirt, "event_invoke_handle_callback", 1, 1, 1, { "libvirt_cb" => "hello", "opaque" => conn })
|
182
|
+
expect_invalid_arg_type(Libvirt, "event_invoke_handle_callback", 1, 1, 1, { "libvirt_cb" => conn, "opaque" => "hello" })
|
20
183
|
conn.close
|
21
184
|
|
22
|
-
|
185
|
+
# TESTGROUP: Libvirt::event_invoke_timeout_callback
|
186
|
+
conn = Libvirt::open("qemu:///system")
|
187
|
+
|
188
|
+
expect_too_many_args(Libvirt, "event_invoke_timeout_callback", 1, 2, 3)
|
189
|
+
expect_too_few_args(Libvirt, "event_invoke_timeout_callback")
|
190
|
+
expect_too_few_args(Libvirt, "event_invoke_timeout_callback", 1)
|
191
|
+
# this is a bit bizarre; I am constructing a bogus hash to pass as the 4th
|
192
|
+
# parameter to event_invoke_handle_callback. In a real situation, I would
|
193
|
+
# have been given this hash from libvirt earlier, and just pass it on. I
|
194
|
+
# don't want all of that complexity here, though, so I create the bogus hash.
|
195
|
+
# One caveat; the data inside the hash *must* be of type T_DATA, so I pass in
|
196
|
+
# a fake conn object just to appease the type checker (so I can test out the
|
197
|
+
# other arguments properly)
|
198
|
+
expect_invalid_arg_type(Libvirt, "event_invoke_timeout_callback", "hello", { "libvirt_cb" => conn, "opaque" => conn })
|
199
|
+
expect_invalid_arg_type(Libvirt, "event_invoke_timeout_callback", 1, { "libvirt_cb" => "hello", "opaque" => conn })
|
200
|
+
expect_invalid_arg_type(Libvirt, "event_invoke_timeout_callback", 1, { "libvirt_cb" => conn, "opaque" => "hello" })
|
23
201
|
conn.close
|
202
|
+
|
203
|
+
finish_tests
|