From 99ecd06f1f6028bcf9bd7d4ece7f3ce8df39077b Mon Sep 17 00:00:00 2001 From: Eric Garver Date: Tue, 25 Jun 2019 18:19:08 -0400 Subject: [PATCH 17/20] test: dbus: coverage for new service APIs (cherry picked from commit 335f238481401e97f3a9bc6773295fe34c89962c) --- src/tests/dbus/service.at | 165 +++++++++++++++++++++++++++++++++++++- 1 file changed, 164 insertions(+), 1 deletion(-) diff --git a/src/tests/dbus/service.at b/src/tests/dbus/service.at index 579548d66509..8ad9334aaa56 100644 --- a/src/tests/dbus/service.at +++ b/src/tests/dbus/service.at @@ -287,4 +287,167 @@ DBUS_CHECK([], [getServiceSettings], ["foobar"], 0, [dnl [(('1.1', 'foobar new', 'foobar new service is for foobar', [('12345', 'udp'), ('2222', 'tcp')], ['ftp'], @a{ss} {}, ['icmp'], [('4321', 'tcp')]),)] ]) -FWD_END_TEST + +dnl =============== +dnl New APIs tests +dnl =============== + +dnl modify service with new API that was created with old API +dnl Verify old APIs also reflect the change. +DBUS_CHECK([config], [config.addService], + ["foobar-old" dnl name + '("1.0", dnl version + "foobar-old", dnl short + "foobar-old service is for foobar-old", dnl description + @<:@("1234", "udp"), ("22", "tcp"), ("1234", "udp")@:>@, dnl ports, deliberate duplicate + @<:@"ftp"@:>@, dnl modules + {}, dnl destination + @<:@@:>@, dnl protocols + @<:@("4321", "tcp"), ("4321", "udp")@:>@ dnl source ports + )'dnl + ], 0, [stdout]) +SERVICE_OBJ=[$(sed -e "s/.*config\/service\/\([^']\+\)['].*/\1/" ./stdout)] +export SERVICE_OBJ +DBUS_CHECK([config/service/${SERVICE_OBJ}], [config.service.update2], + ['{"version": <"1.1">, + "includes": <@<:@"https"@:>@>, + "protocols": <@<:@"icmp"@:>@> + }'dnl + ], 0, [ignore]) + +DBUS_CHECK([config/service/${SERVICE_OBJ}], [config.service.getSettings], [], 0, [dnl + [(('1.1', 'foobar-old', 'foobar-old service is for foobar-old', [('1234', 'udp'), ('22', 'tcp')], ['ftp'], @a{ss} {}, ['icmp'], [('4321', 'tcp'), ('4321', 'udp')]),)] +]) +DBUS_CHECK([config/service/${SERVICE_OBJ}], [config.service.getSettings2], [], 0, [dnl + ['description': <'foobar-old service is for foobar-old'> + 'includes': <['https']> + 'modules': <['ftp']> + 'ports': <[('1234', 'udp'), ('22', 'tcp')]> + 'protocols': <['icmp']> + 'short': <'foobar-old'> + 'source_ports': <[('4321', 'tcp'), ('4321', 'udp')]> + 'version': <'1.1'>] +]) + +FWD_RELOAD +DBUS_CHECK([], [getServiceSettings], ["foobar-old"], 0, [dnl + [(('1.1', 'foobar-old', 'foobar-old service is for foobar-old', [('1234', 'udp'), ('22', 'tcp')], ['ftp'], @a{ss} {}, ['icmp'], [('4321', 'tcp'), ('4321', 'udp')]),)] +]) +DBUS_CHECK([], [getServiceSettings2], ["foobar-old"], 0, [dnl + ['description': <'foobar-old service is for foobar-old'> + 'includes': <['https']> + 'modules': <['ftp']> + 'ports': <[('1234', 'udp'), ('22', 'tcp')]> + 'protocols': <['icmp']> + 'short': <'foobar-old'> + 'source_ports': <[('4321', 'tcp'), ('4321', 'udp')]> + 'version': <'1.1'>] +]) + +dnl add service with new API +DBUS_INTROSPECT([config], [[//method[@name="addService2"]]], 0, [dnl + + + + + +]) +DBUS_CHECK([config], [config.addService2], + ["foobar-dict" dnl name + '{"version": <"1.0">, + "short": <"foobar-dict">, + "description": <"foobar-dict service is for foobar-dict">, + "ports": <@<:@("1234", "udp"), ("22", "tcp"), ("1234", "udp")@:>@>, + "modules": <@<:@"ftp"@:>@>, + "destination": <{"ipv6": "1234::4321"}>, + "protocols": <@<:@"icmp", "igmp"@:>@>, + "source_ports": <@<:@("4321", "tcp"), ("4321", "udp")@:>@>, + "includes": <@<:@"https", "samba"@:>@> + }'dnl + ], 0, [stdout]) +SERVICE_OBJ=[$(sed -e "s/.*config\/service\/\([^']\+\)['].*/\1/" ./stdout)] +export SERVICE_OBJ + +DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="getSettings2"]]], 0, [dnl + + + +]) +DBUS_CHECK([config/service/${SERVICE_OBJ}], [config.service.getSettings2], [], 0, [dnl + ['description': <'foobar-dict service is for foobar-dict'> + 'destination': <{'ipv6': '1234::4321'}> + 'includes': <['https', 'samba']> + 'modules': <['ftp']> + 'ports': <[('1234', 'udp'), ('22', 'tcp')]> + 'protocols': <['icmp', 'igmp']> + 'short': <'foobar-dict'> + 'source_ports': <[('4321', 'tcp'), ('4321', 'udp')]> + 'version': <'1.0'>] +]) + +dnl New API allows partial updates to service object +DBUS_INTROSPECT([config/service/${SERVICE_OBJ}], [[//method[@name="update2"]]], 0, [dnl + + + +]) +DBUS_CHECK([config/service/${SERVICE_OBJ}], [config.service.update2], + ['{"version": <"1.1">, + "includes": <@<:@"https", "samba", "http"@:>@> + }'dnl + ], 0, [ignore]) +DBUS_CHECK([config/service/${SERVICE_OBJ}], [config.service.getSettings2], [], 0, [dnl + ['description': <'foobar-dict service is for foobar-dict'> + 'destination': <{'ipv6': '1234::4321'}> + 'includes': <['https', 'samba', 'http']> + 'modules': <['ftp']> + 'ports': <[('1234', 'udp'), ('22', 'tcp')]> + 'protocols': <['icmp', 'igmp']> + 'short': <'foobar-dict'> + 'source_ports': <[('4321', 'tcp'), ('4321', 'udp')]> + 'version': <'1.1'>] +]) + +dnl To zero a field you have to set it with an empty value +DBUS_CHECK([config/service/${SERVICE_OBJ}], [config.service.update2], + ['{"version": <"1.2">, + "includes": <@as @<:@@:>@> + }'dnl + ], 0, [ignore]) +DBUS_CHECK([config/service/${SERVICE_OBJ}], [config.service.getSettings2], [], 0, [dnl + ['description': <'foobar-dict service is for foobar-dict'> + 'destination': <{'ipv6': '1234::4321'}> + 'modules': <['ftp']> + 'ports': <[('1234', 'udp'), ('22', 'tcp')]> + 'protocols': <['icmp', 'igmp']> + 'short': <'foobar-dict'> + 'source_ports': <[('4321', 'tcp'), ('4321', 'udp')]> + 'version': <'1.2'>] +]) + +FWD_RELOAD +DBUS_INTROSPECT([], [[//method[@name="getServiceSettings2"]]], 0, [dnl + + + + +]) +DBUS_CHECK([], [getServiceSettings2], ["foobar-dict"], 0, [dnl + ['description': <'foobar-dict service is for foobar-dict'> + 'destination': <{'ipv6': '1234::4321'}> + 'modules': <['ftp']> + 'ports': <[('1234', 'udp'), ('22', 'tcp')]> + 'protocols': <['icmp', 'igmp']> + 'short': <'foobar-dict'> + 'source_ports': <[('4321', 'tcp'), ('4321', 'udp')]> + 'version': <'1.2'>] +]) + +dnl bogus arguments +DBUS_CHECK([config/service/${SERVICE_OBJ}], [config.service.update2], + ['{"version": <"1.3">, + "thisdoesnotexist": <""> + }'dnl + ], 1, [ignore], [ignore]) + +FWD_END_TEST([-e '/ERROR: INVALID_OPTION: service option/d']) -- 2.20.1