mirror of
https://github.com/systemd/systemd.git
synced 2024-11-02 10:51:20 +03:00
test: add tests for sd_netlink_slot_set_*()
This commit is contained in:
parent
c940a2310a
commit
915375ed3b
@ -248,6 +248,45 @@ static void test_async(int ifindex) {
|
|||||||
assert_se((rtnl = sd_netlink_unref(rtnl)) == NULL);
|
assert_se((rtnl = sd_netlink_unref(rtnl)) == NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_slot_set(int ifindex) {
|
||||||
|
_cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL;
|
||||||
|
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL, *r = NULL;
|
||||||
|
_cleanup_(sd_netlink_slot_unrefp) sd_netlink_slot *slot = NULL;
|
||||||
|
sd_netlink_destroy_t destroy_callback;
|
||||||
|
const char *description;
|
||||||
|
char *ifname;
|
||||||
|
|
||||||
|
ifname = strdup("lo");
|
||||||
|
assert_se(ifname);
|
||||||
|
|
||||||
|
assert_se(sd_netlink_open(&rtnl) >= 0);
|
||||||
|
|
||||||
|
assert_se(sd_rtnl_message_new_link(rtnl, &m, RTM_GETLINK, ifindex) >= 0);
|
||||||
|
|
||||||
|
assert_se(sd_netlink_call_async(rtnl, &slot, m, link_handler, NULL, NULL, 0, NULL) >= 0);
|
||||||
|
|
||||||
|
assert_se(sd_netlink_slot_get_netlink(slot) == rtnl);
|
||||||
|
assert_se(!sd_netlink_slot_get_userdata(slot));
|
||||||
|
assert_se(!sd_netlink_slot_set_userdata(slot, ifname));
|
||||||
|
assert_se(sd_netlink_slot_get_userdata(slot) == ifname);
|
||||||
|
assert_se(sd_netlink_slot_get_destroy_callback(slot, NULL) == 0);
|
||||||
|
assert_se(sd_netlink_slot_set_destroy_callback(slot, test_async_destroy) >= 0);
|
||||||
|
assert_se(sd_netlink_slot_get_destroy_callback(slot, &destroy_callback) == 1);
|
||||||
|
assert_se(destroy_callback == test_async_destroy);
|
||||||
|
assert_se(sd_netlink_slot_get_floating(slot) == 0);
|
||||||
|
assert_se(sd_netlink_slot_set_floating(slot, 1) == 1);
|
||||||
|
assert_se(sd_netlink_slot_get_floating(slot) == 1);
|
||||||
|
assert_se(sd_netlink_slot_get_description(slot, NULL) == 0);
|
||||||
|
assert_se(sd_netlink_slot_set_description(slot, "hogehoge") >= 0);
|
||||||
|
assert_se(sd_netlink_slot_get_description(slot, &description) == 1);
|
||||||
|
assert_se(streq(description, "hogehoge"));
|
||||||
|
|
||||||
|
assert_se(sd_netlink_wait(rtnl, 0) >= 0);
|
||||||
|
assert_se(sd_netlink_process(rtnl, &r) >= 0);
|
||||||
|
|
||||||
|
assert_se((rtnl = sd_netlink_unref(rtnl)) == NULL);
|
||||||
|
}
|
||||||
|
|
||||||
struct test_async_object {
|
struct test_async_object {
|
||||||
unsigned n_ref;
|
unsigned n_ref;
|
||||||
char *ifname;
|
char *ifname;
|
||||||
@ -490,6 +529,7 @@ int main(void) {
|
|||||||
assert_se(if_loopback > 0);
|
assert_se(if_loopback > 0);
|
||||||
|
|
||||||
test_async(if_loopback);
|
test_async(if_loopback);
|
||||||
|
test_slot_set(if_loopback);
|
||||||
test_async_destroy_callback(if_loopback);
|
test_async_destroy_callback(if_loopback);
|
||||||
test_pipe(if_loopback);
|
test_pipe(if_loopback);
|
||||||
test_event_loop(if_loopback);
|
test_event_loop(if_loopback);
|
||||||
|
Loading…
Reference in New Issue
Block a user