summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/Makefile.am9
-rw-r--r--test/break-loader.c4
-rw-r--r--test/data/incomplete-messages/missing-body.message9
-rw-r--r--test/data/invalid-messages/array-of-nil.message12
-rw-r--r--test/data/invalid-messages/array-with-mixed-types.message12
-rw-r--r--test/data/invalid-messages/bad-boolean-array.message10
-rw-r--r--test/data/invalid-messages/bad-boolean.message10
-rw-r--r--test/data/invalid-messages/bad-endian.message15
-rw-r--r--test/data/invalid-messages/bad-header-field-alignment.message34
-rw-r--r--test/data/invalid-messages/local-namespace.message12
-rw-r--r--test/data/invalid-messages/no-dot-in-name.message13
-rw-r--r--test/data/invalid-messages/not-nul-header-padding.message12
-rw-r--r--test/data/invalid-messages/overlong-name.message9
-rw-r--r--test/data/invalid-messages/too-little-header-padding.message12
-rw-r--r--test/data/invalid-messages/too-much-header-padding-by-far.message12
-rw-r--r--test/data/invalid-messages/too-much-header-padding.message12
-rw-r--r--test/data/invalid-messages/too-short-dict.message13
-rw-r--r--test/data/valid-config-files/debug-allow-all-sha1.conf.in4
-rw-r--r--test/data/valid-config-files/debug-allow-all.conf.in4
-rw-r--r--test/data/valid-config-files/many-rules.conf57
-rw-r--r--test/data/valid-config-files/system.d/test.conf8
-rw-r--r--test/data/valid-messages/array-of-array-of-uint32.message8
-rw-r--r--test/data/valid-messages/dict-simple.message8
-rw-r--r--test/data/valid-messages/dict.message6
-rw-r--r--test/data/valid-messages/emptiness.message8
-rw-r--r--test/data/valid-messages/lots-of-arguments.message8
-rw-r--r--test/data/valid-messages/no-padding.message8
-rw-r--r--test/data/valid-messages/opposite-endian.message12
-rw-r--r--test/data/valid-messages/recursive-types.message7
-rw-r--r--test/data/valid-messages/simplest-manual.message12
-rw-r--r--test/data/valid-messages/simplest.message7
-rw-r--r--test/data/valid-messages/standard-acquire-service.message14
-rw-r--r--test/data/valid-messages/standard-hello.message14
-rw-r--r--test/data/valid-messages/standard-list-services.message14
-rw-r--r--test/data/valid-messages/standard-service-exists.message14
-rw-r--r--test/data/valid-messages/unknown-header-field.message17
-rw-r--r--test/decode-gcov.c4
-rw-r--r--test/test-service.c54
38 files changed, 353 insertions, 145 deletions
diff --git a/test/Makefile.am b/test/Makefile.am
index 04df3510..84089517 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,6 +1,13 @@
+if HAVE_GLIB
+ GLIB_SUBDIR=glib
+endif
+
+SUBDIRS=$(GLIB_SUBDIR)
+
INCLUDES=-I$(top_srcdir) $(DBUS_TEST_CFLAGS)
+
if DBUS_BUILD_TESTS
TEST_BINARIES=test-service unbase64 break-loader spawn-test test-segfault test-exit test-sleep-forever
else
@@ -82,7 +89,7 @@ all-local:
for D in $(TESTDIRS); do \
test -d $(top_builddir)/test/$$D || mkdir $(top_builddir)/test/$$D || exit 1 ; \
done ; \
- if test $(srcdir) != . ; then \
+ if ! (test $(srcdir) = . || test $(srcdir) -ef .) ; then \
FILES=`(cd $(srcdir) && $(FIND_TESTS))` ; \
for F in $$FILES; do \
SRC=$(srcdir)/$$F ; \
diff --git a/test/break-loader.c b/test/break-loader.c
index ebe2606b..3771d7cc 100644
--- a/test/break-loader.c
+++ b/test/break-loader.c
@@ -287,8 +287,8 @@ randomly_add_one_byte (const DBusString *orig_data,
i = random_int_in_range (0, _dbus_string_get_length (mutated));
- _dbus_string_insert_byte (mutated, i,
- random_int_in_range (0, 256));
+ _dbus_string_insert_bytes (mutated, i, 1,
+ random_int_in_range (0, 256));
}
static void
diff --git a/test/data/incomplete-messages/missing-body.message b/test/data/incomplete-messages/missing-body.message
index 71ac5abc..138e9ea5 100644
--- a/test/data/incomplete-messages/missing-body.message
+++ b/test/data/incomplete-messages/missing-body.message
@@ -1,11 +1,14 @@
## message that's missing an expected body
-VALID_HEADER
-FIELD_NAME name
+VALID_HEADER method_call
+HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
-END_LENGTH Header
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Bar'
ALIGN 8
+END_LENGTH Header
## create the body, then chop it off
START_LENGTH Body
diff --git a/test/data/invalid-messages/array-of-nil.message b/test/data/invalid-messages/array-of-nil.message
index e86e6a10..7f0ac718 100644
--- a/test/data/invalid-messages/array-of-nil.message
+++ b/test/data/invalid-messages/array-of-nil.message
@@ -1,11 +1,17 @@
# Message with an array of NIL (not allowed)
-VALID_HEADER
-FIELD_NAME name
+VALID_HEADER method_call
+
+HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
-END_LENGTH Header
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Bar'
+
ALIGN 8
+END_LENGTH Header
+
START_LENGTH Body
TYPE ARRAY
TYPE NIL
diff --git a/test/data/invalid-messages/array-with-mixed-types.message b/test/data/invalid-messages/array-with-mixed-types.message
index 763a6c29..4455c898 100644
--- a/test/data/invalid-messages/array-with-mixed-types.message
+++ b/test/data/invalid-messages/array-with-mixed-types.message
@@ -1,12 +1,18 @@
# Message with an array of array where the child arrays are of
# different types
-VALID_HEADER
-FIELD_NAME name
+VALID_HEADER method_call
+
+HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
-END_LENGTH Header
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Bar'
+
ALIGN 8
+END_LENGTH Header
+
START_LENGTH Body
TYPE ARRAY
diff --git a/test/data/invalid-messages/bad-boolean-array.message b/test/data/invalid-messages/bad-boolean-array.message
index c045b978..91ad5ef1 100644
--- a/test/data/invalid-messages/bad-boolean-array.message
+++ b/test/data/invalid-messages/bad-boolean-array.message
@@ -1,12 +1,18 @@
## a message with an invalid boolean array
## VALID_HEADER includes a LENGTH Header and LENGTH Body
-VALID_HEADER
-FIELD_NAME name
+VALID_HEADER method_call
+
+HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Bar'
+
ALIGN 8
END_LENGTH Header
+
START_LENGTH Body
TYPE ARRAY
TYPE BOOLEAN
diff --git a/test/data/invalid-messages/bad-boolean.message b/test/data/invalid-messages/bad-boolean.message
index 00a29626..cd588ad8 100644
--- a/test/data/invalid-messages/bad-boolean.message
+++ b/test/data/invalid-messages/bad-boolean.message
@@ -1,12 +1,18 @@
## a message with an invalid boolean value
## VALID_HEADER includes a LENGTH Header and LENGTH Body
-VALID_HEADER
-FIELD_NAME name
+VALID_HEADER method_call
+
+HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Bar'
+
ALIGN 8
END_LENGTH Header
+
START_LENGTH Body
TYPE BOOLEAN
BYTE 3
diff --git a/test/data/invalid-messages/bad-endian.message b/test/data/invalid-messages/bad-endian.message
index 7a7b75d1..8d609244 100644
--- a/test/data/invalid-messages/bad-endian.message
+++ b/test/data/invalid-messages/bad-endian.message
@@ -1,13 +1,22 @@
## message with invalid endianness tag
BYTE 'i'
+BYTE 1
BYTE 0
BYTE 0
-BYTE 0
+
LENGTH Header
LENGTH Body
-## client serial
-INT32 7
+
+HEADER_FIELD INTERFACE
+TYPE STRING
+STRING 'org.freedesktop.Foo'
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Bar'
+
+ALIGN 8
END_LENGTH Header
+
START_LENGTH Body
END_LENGTH Body
diff --git a/test/data/invalid-messages/bad-header-field-alignment.message b/test/data/invalid-messages/bad-header-field-alignment.message
new file mode 100644
index 00000000..75776a37
--- /dev/null
+++ b/test/data/invalid-messages/bad-header-field-alignment.message
@@ -0,0 +1,34 @@
+## last field incorrectly aligned to 4 bytes
+
+## VALID_HEADER includes a LENGTH Header and LENGTH Body
+VALID_HEADER method_call
+
+HEADER_FIELD INTERFACE
+TYPE STRING
+STRING 'org.freedesktop.Foo'
+
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Bar'
+
+HEADER_FIELD UNKNOWN
+TYPE STRING
+STRING 'a'
+
+ALIGN 4
+
+HEADER_FIELD UNKNOWN
+TYPE ARRAY
+TYPE BYTE
+ALIGN 4
+LENGTH ThisByteArray
+START_LENGTH ThisByteArray
+BYTE 1
+BYTE 2
+END_LENGTH ThisByteArray
+
+
+ALIGN 8
+END_LENGTH Header
+START_LENGTH Body
+END_LENGTH Body
diff --git a/test/data/invalid-messages/local-namespace.message b/test/data/invalid-messages/local-namespace.message
index ceb3053d..dad98a77 100644
--- a/test/data/invalid-messages/local-namespace.message
+++ b/test/data/invalid-messages/local-namespace.message
@@ -2,11 +2,17 @@
## invalid
## VALID_HEADER includes a LENGTH Header and LENGTH Body
-VALID_HEADER
-FIELD_NAME name
+VALID_HEADER method_call
+
+HEADER_FIELD INTERFACE
+TYPE STRING
+STRING 'org.freedesktop.Local'
+HEADER_FIELD MEMBER
TYPE STRING
-STRING 'org.freedesktop.Local.Disconnect'
+STRING 'Disconnected'
+
ALIGN 8
END_LENGTH Header
+
START_LENGTH Body
END_LENGTH Body
diff --git a/test/data/invalid-messages/no-dot-in-name.message b/test/data/invalid-messages/no-dot-in-name.message
index 4cde0d1f..131be05d 100644
--- a/test/data/invalid-messages/no-dot-in-name.message
+++ b/test/data/invalid-messages/no-dot-in-name.message
@@ -1,10 +1,15 @@
-## a message with dotless name
+## a message with dotless interface
## VALID_HEADER includes a LENGTH Header and LENGTH Body
-VALID_HEADER
-FIELD_NAME name
+VALID_HEADER method_call
+
+HEADER_FIELD INTERFACE
+TYPE STRING
+STRING 'NoDotInHere'
+HEADER_FIELD MEMBER
TYPE STRING
-STRING 'NoNamespaceHere'
+STRING 'Bar'
+
ALIGN 8
END_LENGTH Header
START_LENGTH Body
diff --git a/test/data/invalid-messages/not-nul-header-padding.message b/test/data/invalid-messages/not-nul-header-padding.message
index 1172af4b..a12c0fa7 100644
--- a/test/data/invalid-messages/not-nul-header-padding.message
+++ b/test/data/invalid-messages/not-nul-header-padding.message
@@ -1,8 +1,16 @@
## has one non-nul byte in header padding
## VALID_HEADER includes a LENGTH Header and LENGTH Body
-VALID_HEADER
-FIELD_NAME unkn
+VALID_HEADER method_call
+
+HEADER_FIELD INTERFACE
+TYPE STRING
+STRING 'org.freedesktop.Foo'
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Bar'
+
+HEADER_FIELD UNKNOWN
TYPE STRING
STRING 'a'
ALIGN 8
diff --git a/test/data/invalid-messages/overlong-name.message b/test/data/invalid-messages/overlong-name.message
index 0fdc7bc9..4fd7025e 100644
--- a/test/data/invalid-messages/overlong-name.message
+++ b/test/data/invalid-messages/overlong-name.message
@@ -1,10 +1,15 @@
## a message with too-long name field
## VALID_HEADER includes a LENGTH Header and LENGTH Body
-VALID_HEADER
-FIELD_NAME name
+VALID_HEADER method_call
+HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.foo.bar.this.is.really.long 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200'
+
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Bar'
+
ALIGN 8
END_LENGTH Header
START_LENGTH Body
diff --git a/test/data/invalid-messages/too-little-header-padding.message b/test/data/invalid-messages/too-little-header-padding.message
index cf73be68..894e4c3e 100644
--- a/test/data/invalid-messages/too-little-header-padding.message
+++ b/test/data/invalid-messages/too-little-header-padding.message
@@ -1,8 +1,16 @@
## has one byte missing from header padding
## VALID_HEADER includes a LENGTH Header and LENGTH Body
-VALID_HEADER
-FIELD_NAME unkn
+VALID_HEADER method_call
+
+HEADER_FIELD INTERFACE
+TYPE STRING
+STRING 'org.freedesktop.Foo'
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Bar'
+
+HEADER_FIELD UNKNOWN
TYPE STRING
STRING 'a'
ALIGN 8
diff --git a/test/data/invalid-messages/too-much-header-padding-by-far.message b/test/data/invalid-messages/too-much-header-padding-by-far.message
index a60aca88..b74f559b 100644
--- a/test/data/invalid-messages/too-much-header-padding-by-far.message
+++ b/test/data/invalid-messages/too-much-header-padding-by-far.message
@@ -1,8 +1,16 @@
## has one byte extra header padding
## VALID_HEADER includes a LENGTH Header and LENGTH Body
-VALID_HEADER
-FIELD_NAME unkn
+VALID_HEADER method_call
+
+HEADER_FIELD INTERFACE
+TYPE STRING
+STRING 'org.freedesktop.Foo'
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Bar'
+
+HEADER_FIELD UNKNOWN
TYPE STRING
STRING 'a'
ALIGN 8
diff --git a/test/data/invalid-messages/too-much-header-padding.message b/test/data/invalid-messages/too-much-header-padding.message
index ebf154eb..01111b63 100644
--- a/test/data/invalid-messages/too-much-header-padding.message
+++ b/test/data/invalid-messages/too-much-header-padding.message
@@ -1,8 +1,16 @@
## has one byte extra header padding
## VALID_HEADER includes a LENGTH Header and LENGTH Body
-VALID_HEADER
-FIELD_NAME unkn
+VALID_HEADER method_call
+
+HEADER_FIELD INTERFACE
+TYPE STRING
+STRING 'org.freedesktop.Foo'
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Bar'
+
+HEADER_FIELD UNKNOWN
TYPE STRING
STRING 'a'
ALIGN 8
diff --git a/test/data/invalid-messages/too-short-dict.message b/test/data/invalid-messages/too-short-dict.message
index ba200461..fde88850 100644
--- a/test/data/invalid-messages/too-short-dict.message
+++ b/test/data/invalid-messages/too-short-dict.message
@@ -1,11 +1,18 @@
# Message with lots of different argument types
-VALID_HEADER
-FIELD_NAME name
+VALID_HEADER method_call
+
+HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
-END_LENGTH Header
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Bar'
+
ALIGN 8
+
+END_LENGTH Header
+
START_LENGTH Body
TYPE DICT
LENGTH Dict
diff --git a/test/data/valid-config-files/debug-allow-all-sha1.conf.in b/test/data/valid-config-files/debug-allow-all-sha1.conf.in
index 6db93f0c..7fb76c55 100644
--- a/test/data/valid-config-files/debug-allow-all-sha1.conf.in
+++ b/test/data/valid-config-files/debug-allow-all-sha1.conf.in
@@ -8,8 +8,8 @@
<servicedir>@TEST_SERVICE_DIR@</servicedir>
<auth>DBUS_COOKIE_SHA1</auth>
<policy context="default">
- <allow send="*"/>
- <allow receive="*"/>
+ <allow send_interface="*"/>
+ <allow receive_interface="*"/>
<allow own="*"/>
<allow user="*"/>
</policy>
diff --git a/test/data/valid-config-files/debug-allow-all.conf.in b/test/data/valid-config-files/debug-allow-all.conf.in
index 0dd8ed4a..ea1aec8c 100644
--- a/test/data/valid-config-files/debug-allow-all.conf.in
+++ b/test/data/valid-config-files/debug-allow-all.conf.in
@@ -7,8 +7,8 @@
<listen>unix:tmpdir=@TEST_SOCKET_DIR@</listen>
<servicedir>@TEST_SERVICE_DIR@</servicedir>
<policy context="default">
- <allow send="*"/>
- <allow receive="*"/>
+ <allow send_interface="*"/>
+ <allow receive_interface="*"/>
<allow own="*"/>
<allow user="*"/>
</policy>
diff --git a/test/data/valid-config-files/many-rules.conf b/test/data/valid-config-files/many-rules.conf
new file mode 100644
index 00000000..f68430e5
--- /dev/null
+++ b/test/data/valid-config-files/many-rules.conf
@@ -0,0 +1,57 @@
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+ <user>mybususer</user>
+ <listen>unix:path=/foo/bar</listen>
+ <listen>tcp:port=1234</listen>
+ <includedir>basic.d</includedir>
+ <servicedir>/usr/share/foo</servicedir>
+ <include ignore_missing="yes">nonexistent.conf</include>
+ <policy context="default">
+ <allow user="*"/>
+ <deny send_interface="org.freedesktop.System" send_member="Reboot"/>
+ <deny receive_interface="org.freedesktop.System" receive_member="Reboot"/>
+ <deny send_path="/foo/bar/SystemObjectThing" send_member="Reboot"/>
+ <deny own="org.freedesktop.System"/>
+ <deny send_destination="org.freedesktop.System"/>
+ <deny receive_sender="org.freedesktop.System"/>
+ <deny user="root"/>
+ <deny group="root"/>
+ <allow send_type="error"/>
+ <allow send_type="method_call"/>
+ <allow send_type="method_return"/>
+ <allow send_type="signal"/>
+ <deny send_destination="org.freedesktop.Bar" send_interface="org.freedesktop.Foo"/>
+ <deny send_destination="org.freedesktop.Bar" send_interface="org.freedesktop.Foo" send_type="method_call"/>
+ </policy>
+
+ <policy context="mandatory">
+ <allow user="*"/>
+ <deny send_interface="org.freedesktop.System" send_member="Reboot"/>
+ <deny receive_interface="org.freedesktop.System" receive_member="Reboot"/>
+ <deny send_path="/foo/bar/SystemObjectThing" send_member="Reboot"/>
+ <deny own="org.freedesktop.System"/>
+ <deny send_destination="org.freedesktop.System"/>
+ <deny receive_sender="org.freedesktop.System"/>
+ <deny user="root"/>
+ <deny group="root"/>
+ <allow send_type="error"/>
+ <allow send_type="method_call"/>
+ <allow send_type="method_return"/>
+ <allow send_type="signal"/>
+ <deny send_destination="org.freedesktop.Bar" send_interface="org.freedesktop.Foo"/>
+ <deny send_destination="org.freedesktop.Bar" send_interface="org.freedesktop.Foo" send_type="method_call"/>
+ </policy>
+
+ <limit name="max_incoming_bytes">5000</limit>
+ <limit name="max_outgoing_bytes">5000</limit>
+ <limit name="max_message_size">300</limit>
+ <limit name="activation_timeout">5000</limit>
+ <limit name="auth_timeout">6000</limit>
+ <limit name="max_completed_connections">50</limit>
+ <limit name="max_incomplete_connections">80</limit>
+ <limit name="max_connections_per_user">64</limit>
+ <limit name="max_pending_activations">64</limit>
+ <limit name="max_services_per_connection">256</limit>
+
+</busconfig>
diff --git a/test/data/valid-config-files/system.d/test.conf b/test/data/valid-config-files/system.d/test.conf
index a683679e..5b60a1fc 100644
--- a/test/data/valid-config-files/system.d/test.conf
+++ b/test/data/valid-config-files/system.d/test.conf
@@ -5,16 +5,16 @@
policy so that a particular user can own a service, and other
connections can get messages from it -->
- <!-- Only fooserviceuser can own the FooService service, and
+ <!-- Only root can own the FooService service, and
this user can only send the one kind of message -->
- <policy user="fooserviceuser">
+ <policy user="root">
<allow own="org.foo.FooService"/>
- <allow send="org.foo.FooBroadcastMessage"/>
+ <allow send_interface="org.foo.FooBroadcastInterface"/>
</policy>
<!-- Allow any connection to receive the message, but
only if the message is sent by the owner of FooService -->
<policy context="default">
- <allow receive="org.foo.FooBroadcastMessage" receive_from="org.foo.FooService"/>
+ <allow receive_interface="org.foo.FooBroadcastInterface" receive_sender="org.foo.FooService"/>
</policy>
</busconfig>
diff --git a/test/data/valid-messages/array-of-array-of-uint32.message b/test/data/valid-messages/array-of-array-of-uint32.message
index 82b8273d..e12186b1 100644
--- a/test/data/valid-messages/array-of-array-of-uint32.message
+++ b/test/data/valid-messages/array-of-array-of-uint32.message
@@ -1,11 +1,9 @@
# Message with an array of array of uint32
-VALID_HEADER
-FIELD_NAME name
-TYPE STRING
-STRING 'org.freedesktop.Foo'
-END_LENGTH Header
+VALID_HEADER method_call
+REQUIRED_FIELDS
ALIGN 8
+END_LENGTH Header
START_LENGTH Body
TYPE ARRAY
diff --git a/test/data/valid-messages/dict-simple.message b/test/data/valid-messages/dict-simple.message
index 34fb47d9..fa6927df 100644
--- a/test/data/valid-messages/dict-simple.message
+++ b/test/data/valid-messages/dict-simple.message
@@ -1,11 +1,9 @@
# A simple dict
-VALID_HEADER
-FIELD_NAME name
-TYPE STRING
-STRING 'org.freedesktop.Foo'
-END_LENGTH Header
+VALID_HEADER method_call
+REQUIRED_FIELDS
ALIGN 8
+END_LENGTH Header
START_LENGTH Body
TYPE DICT
LENGTH Dict
diff --git a/test/data/valid-messages/dict.message b/test/data/valid-messages/dict.message
index 6b9d004e..0f997b1f 100644
--- a/test/data/valid-messages/dict.message
+++ b/test/data/valid-messages/dict.message
@@ -1,9 +1,7 @@
# Dict with different values
-VALID_HEADER
-FIELD_NAME name
-TYPE STRING
-STRING 'org.freedesktop.Foo'
+VALID_HEADER method_call
+REQUIRED_FIELDS
ALIGN 8
END_LENGTH Header
START_LENGTH Body
diff --git a/test/data/valid-messages/emptiness.message b/test/data/valid-messages/emptiness.message
index 87196b16..32042c01 100644
--- a/test/data/valid-messages/emptiness.message
+++ b/test/data/valid-messages/emptiness.message
@@ -1,11 +1,9 @@
# Empty arrays and strings
-VALID_HEADER
-FIELD_NAME name
-TYPE STRING
-STRING 'org.freedesktop.Foo'
-END_LENGTH Header
+VALID_HEADER method_call
+REQUIRED_FIELDS
ALIGN 8
+END_LENGTH Header
START_LENGTH Body
TYPE STRING
INT32 0
diff --git a/test/data/valid-messages/lots-of-arguments.message b/test/data/valid-messages/lots-of-arguments.message
index 6549646e..d3f6a4ee 100644
--- a/test/data/valid-messages/lots-of-arguments.message
+++ b/test/data/valid-messages/lots-of-arguments.message
@@ -1,11 +1,9 @@
# Message with lots of different argument types
-VALID_HEADER
-FIELD_NAME name
-TYPE STRING
-STRING 'org.freedesktop.Foo'
-END_LENGTH Header
+VALID_HEADER method_call
+REQUIRED_FIELDS
ALIGN 8
+END_LENGTH Header
START_LENGTH Body
TYPE NIL
TYPE BYTE
diff --git a/test/data/valid-messages/no-padding.message b/test/data/valid-messages/no-padding.message
index b47dca78..94df4d45 100644
--- a/test/data/valid-messages/no-padding.message
+++ b/test/data/valid-messages/no-padding.message
@@ -1,15 +1,13 @@
## Message with no header padding
## VALID_HEADER includes a LENGTH Header and LENGTH Body
-VALID_HEADER
+VALID_HEADER method_call
-FIELD_NAME name
-TYPE STRING
-STRING 'org.freedesktop.Foo'
+REQUIRED_FIELDS
## this byte array is filled with zeros to the natural length
## of the header
-FIELD_NAME unkn
+HEADER_FIELD UNKNOWN
TYPE ARRAY
TYPE BYTE
ALIGN 4
diff --git a/test/data/valid-messages/opposite-endian.message b/test/data/valid-messages/opposite-endian.message
index f8975b8b..90949dd2 100644
--- a/test/data/valid-messages/opposite-endian.message
+++ b/test/data/valid-messages/opposite-endian.message
@@ -3,17 +3,11 @@
OPPOSITE_ENDIAN
## VALID_HEADER includes a LENGTH Header and LENGTH Body
-VALID_HEADER
+VALID_HEADER method_call
-FIELD_NAME rply
-TYPE UINT32
-UINT32 10000
-
-FIELD_NAME name
-TYPE STRING
-STRING 'org.freedesktop.Foo'
+REQUIRED_FIELDS
-FIELD_NAME unkn
+HEADER_FIELD UNKNOWN
TYPE INT32
INT32 0xfeeb
diff --git a/test/data/valid-messages/recursive-types.message b/test/data/valid-messages/recursive-types.message
index 2ac6ad13..e306fd1f 100644
--- a/test/data/valid-messages/recursive-types.message
+++ b/test/data/valid-messages/recursive-types.message
@@ -1,12 +1,11 @@
## Message with recursive types
## VALID_HEADER includes a LENGTH Header and LENGTH Body
-VALID_HEADER
+VALID_HEADER method_call
-FIELD_NAME name
-TYPE STRING
-STRING 'org.freedesktop.Foo'
+REQUIRED_FIELDS
+ALIGN 8
END_LENGTH Header
START_LENGTH Body
diff --git a/test/data/valid-messages/simplest-manual.message b/test/data/valid-messages/simplest-manual.message
index 8eed1e5f..5a5b4105 100644
--- a/test/data/valid-messages/simplest-manual.message
+++ b/test/data/valid-messages/simplest-manual.message
@@ -3,16 +3,24 @@
LITTLE_ENDIAN
BYTE 'l'
-BYTE 0
+BYTE 1
BYTE 0
BYTE 0
LENGTH Header
LENGTH Body
## client serial
INT32 7
-FIELD_NAME name
+
+HEADER_FIELD PATH
+TYPE OBJECT_PATH
+OBJECT_PATH '/foo'
+HEADER_FIELD INTERFACE
TYPE STRING
STRING 'org.freedesktop.Foo'
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Bar'
+
ALIGN 8
END_LENGTH Header
START_LENGTH Body
diff --git a/test/data/valid-messages/simplest.message b/test/data/valid-messages/simplest.message
index 7bb1872d..b9ddaf6b 100644
--- a/test/data/valid-messages/simplest.message
+++ b/test/data/valid-messages/simplest.message
@@ -1,10 +1,9 @@
## simplest possible valid message
## VALID_HEADER includes a LENGTH Header and LENGTH Body
-VALID_HEADER
-FIELD_NAME name
-TYPE STRING
-STRING 'org.freedesktop.Foo'
+VALID_HEADER method_call
+REQUIRED_FIELDS
+
ALIGN 8
END_LENGTH Header
START_LENGTH Body
diff --git a/test/data/valid-messages/standard-acquire-service.message b/test/data/valid-messages/standard-acquire-service.message
index 5056d8df..a42a639c 100644
--- a/test/data/valid-messages/standard-acquire-service.message
+++ b/test/data/valid-messages/standard-acquire-service.message
@@ -1,10 +1,16 @@
# Standard org.freedesktop.DBus.AcquireService message
-VALID_HEADER
-FIELD_NAME name
+VALID_HEADER method_call
+HEADER_FIELD PATH
+TYPE OBJECT_PATH
+OBJECT_PATH '/org/freedesktop/DBus'
+HEADER_FIELD INTERFACE
TYPE STRING
-STRING 'org.freedesktop.DBus.AcquireService'
-FIELD_NAME srvc
+STRING 'org.freedesktop.DBus'
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'AcquireService'
+HEADER_FIELD SERVICE
TYPE STRING
STRING 'org.freedesktop.DBus'
ALIGN 8
diff --git a/test/data/valid-messages/standard-hello.message b/test/data/valid-messages/standard-hello.message
index f3f65961..50d4e0ff 100644
--- a/test/data/valid-messages/standard-hello.message
+++ b/test/data/valid-messages/standard-hello.message
@@ -1,10 +1,16 @@
# Standard org.freedesktop.DBus.Hello message
-VALID_HEADER
-FIELD_NAME name
+VALID_HEADER method_call
+HEADER_FIELD PATH
+TYPE OBJECT_PATH
+OBJECT_PATH '/org/freedesktop/DBus'
+HEADER_FIELD INTERFACE
TYPE STRING
-STRING 'org.freedesktop.DBus.Hello'
-FIELD_NAME srvc
+STRING 'org.freedesktop.DBus'
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'Hello'
+HEADER_FIELD SERVICE
TYPE STRING
STRING 'org.freedesktop.DBus'
ALIGN 8
diff --git a/test/data/valid-messages/standard-list-services.message b/test/data/valid-messages/standard-list-services.message
index 9dfb72e3..10c9a2f7 100644
--- a/test/data/valid-messages/standard-list-services.message
+++ b/test/data/valid-messages/standard-list-services.message
@@ -1,10 +1,16 @@
# Standard org.freedesktop.DBus.ListServices message
-VALID_HEADER
-FIELD_NAME name
+VALID_HEADER method_call
+HEADER_FIELD PATH
+TYPE OBJECT_PATH
+OBJECT_PATH '/org/freedesktop/DBus'
+HEADER_FIELD INTERFACE
TYPE STRING
-STRING 'org.freedesktop.DBus.ListServices'
-FIELD_NAME srvc
+STRING 'org.freedesktop.DBus'
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'ListServices'
+HEADER_FIELD SERVICES
TYPE STRING
STRING 'org.freedesktop.DBus'
ALIGN 8
diff --git a/test/data/valid-messages/standard-service-exists.message b/test/data/valid-messages/standard-service-exists.message
index 6755fea6..c3b715bc 100644
--- a/test/data/valid-messages/standard-service-exists.message
+++ b/test/data/valid-messages/standard-service-exists.message
@@ -1,10 +1,16 @@
# Standard org.freedesktop.DBus.ServiceExists message
-VALID_HEADER
-FIELD_NAME name
+VALID_HEADER method_call
+HEADER_FIELD PATH
+TYPE OBJECT_PATH
+OBJECT_PATH '/org/freedesktop/DBus'
+HEADER_FIELD INTERFACE
TYPE STRING
-STRING 'org.freedesktop.DBus.ServiceExists'
-FIELD_NAME srvc
+STRING 'org.freedesktop.DBus'
+HEADER_FIELD MEMBER
+TYPE STRING
+STRING 'ServiceExists'
+HEADER_FIELD SERVICE
TYPE STRING
STRING 'org.freedesktop.DBus'
ALIGN 8
diff --git a/test/data/valid-messages/unknown-header-field.message b/test/data/valid-messages/unknown-header-field.message
index 18ab379c..ac7d624c 100644
--- a/test/data/valid-messages/unknown-header-field.message
+++ b/test/data/valid-messages/unknown-header-field.message
@@ -1,13 +1,18 @@
## message with a 'name' header field and unknown 'unkn' field
## VALID_HEADER includes a LENGTH Header and LENGTH Body
-VALID_HEADER
-FIELD_NAME name
-TYPE STRING
-STRING 'org.freedesktop.Foo'
-FIELD_NAME unkn
+VALID_HEADER method_call
+REQUIRED_FIELDS
+
+HEADER_FIELD UNKNOWN
+TYPE DICT
+LENGTH Dict
+START_LENGTH Dict
+STRING 'int32'
TYPE INT32
-INT32 0xfeeb
+INT32 0x12345678
+END_LENGTH Dict
+
ALIGN 8
END_LENGTH Header
START_LENGTH Body
diff --git a/test/decode-gcov.c b/test/decode-gcov.c
index d13340e3..a7a4478b 100644
--- a/test/decode-gcov.c
+++ b/test/decode-gcov.c
@@ -38,6 +38,10 @@
#include <stdlib.h>
#include <string.h>
+#ifndef DBUS_HAVE_INT64
+#error "gcov support can't be built without 64-bit integer support"
+#endif
+
static void
die (const char *message)
{
diff --git a/test/test-service.c b/test/test-service.c
index c2757acc..d07575e2 100644
--- a/test/test-service.c
+++ b/test/test-service.c
@@ -37,9 +37,9 @@ handle_echo (DBusConnection *connection,
DBUS_TYPE_STRING, &s,
DBUS_TYPE_INVALID))
{
- reply = dbus_message_new_error_reply (message,
- error.name,
- error.message);
+ reply = dbus_message_new_error (message,
+ error.name,
+ error.message);
if (reply == NULL)
die ("No memory\n");
@@ -49,10 +49,10 @@ handle_echo (DBusConnection *connection,
dbus_message_unref (reply);
- return DBUS_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
- reply = dbus_message_new_reply (message);
+ reply = dbus_message_new_method_return (message);
if (reply == NULL)
die ("No memory\n");
@@ -68,27 +68,32 @@ handle_echo (DBusConnection *connection,
dbus_message_unref (reply);
- return DBUS_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
static DBusHandlerResult
-filter_func (DBusMessageHandler *handler,
- DBusConnection *connection,
+filter_func (DBusConnection *connection,
DBusMessage *message,
void *user_data)
{
- if (dbus_message_has_name (message, "org.freedesktop.DBus.TestSuiteEcho"))
+ if (dbus_message_is_method_call (message,
+ "org.freedesktop.TestSuite",
+ "Echo"))
return handle_echo (connection, message);
- else if (dbus_message_has_name (message, "org.freedesktop.DBus.TestSuiteExit") ||
- dbus_message_has_name (message, DBUS_MESSAGE_LOCAL_DISCONNECT))
+ else if (dbus_message_is_method_call (message,
+ "org.freedesktop.TestSuite",
+ "Exit") ||
+ dbus_message_is_signal (message,
+ DBUS_INTERFACE_ORG_FREEDESKTOP_LOCAL,
+ "Disconnected"))
{
dbus_connection_disconnect (connection);
quit ();
- return DBUS_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
+ return DBUS_HANDLER_RESULT_HANDLED;
}
else
{
- return DBUS_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
}
@@ -98,16 +103,10 @@ main (int argc,
{
DBusConnection *connection;
DBusError error;
- DBusMessageHandler *handler;
- const char *to_handle[] = {
- "org.freedesktop.DBus.TestSuiteEcho",
- "org.freedesktop.DBus.TestSuiteExit",
- DBUS_MESSAGE_LOCAL_DISCONNECT,
- };
int result;
dbus_error_init (&error);
- connection = dbus_bus_get (DBUS_BUS_ACTIVATION, &error);
+ connection = dbus_bus_get (DBUS_BUS_SESSION, &error);
if (connection == NULL)
{
_dbus_verbose ("*** Failed to open connection to activating message bus: %s\n",
@@ -123,18 +122,17 @@ main (int argc,
if (!test_connection_setup (loop, connection))
die ("No memory\n");
- handler = dbus_message_handler_new (filter_func, NULL, NULL);
- if (handler == NULL)
- die ("No memory");
-
- if (!dbus_connection_register_handler (connection, handler, to_handle,
- _DBUS_N_ELEMENTS (to_handle)))
+ if (!dbus_connection_add_filter (connection,
+ filter_func, NULL, NULL))
die ("No memory");
+ printf ("Acquiring service\n");
+
result = dbus_bus_acquire_service (connection, "org.freedesktop.DBus.TestSuiteEchoService",
0, &error);
if (dbus_error_is_set (&error))
{
+ printf ("Error %s", error.message);
_dbus_verbose ("*** Failed to acquire service: %s\n",
error.message);
dbus_error_free (&error);
@@ -145,10 +143,10 @@ main (int argc,
_dbus_loop_run (loop);
test_connection_shutdown (loop, connection);
+
+ dbus_connection_remove_filter (connection, filter_func, NULL);
dbus_connection_unref (connection);
-
- dbus_message_handler_unref (handler);
_dbus_loop_unref (loop);
loop = NULL;