/** * @file addloop.h * @author Radek Krejci * @brief performance test - adding data. * * Copyright (c) 2016 CESNET, z.s.p.o. * * This source code is licensed under BSD 3-Clause License (the "License"). * You may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://opensource.org/licenses/BSD-3-Clause */ #include #include #include #include #include #include #include int main(int argc, char *argv[]) { int fd, i; struct ly_ctx *ctx = NULL; char buf[30]; struct lyd_node *data = NULL, *next; const struct lys_module *mod; /* libyang context */ ctx = ly_ctx_new(NULL, 0); if (!ctx) { fprintf(stderr, "Failed to create context.\n"); return 1; } /* schema */ if (!(mod = lys_parse_path(ctx, argv[1], LYS_IN_YIN))) { fprintf(stderr, "Failed to load data model.\n"); goto cleanup; } /* data */ data = NULL; fd = open("./addloop_result.xml", O_WRONLY | O_CREAT, 0666); data = NULL; for(i = 1; i <= 5000; i++) { next = lyd_new(NULL, mod, "ptest1"); // if (i == 2091) {sprintf(buf, "%d", 1);} else { sprintf(buf, "%d", i);//} lyd_new_leaf(next, mod, "index", buf); lyd_new_leaf(next, mod, "p1", buf); if (!data) { data = next; } else { lyd_insert_after(data->prev, next); } if (lyd_validate(&data, LYD_OPT_CONFIG, NULL)) { goto cleanup; } //lyd_print_fd(fd, data, LYD_XML); } lyd_print_fd(fd, data, LYD_XML, LYP_WITHSIBLINGS | LYP_FORMAT); close(fd); cleanup: lyd_free_withsiblings(data); ly_ctx_destroy(ctx, NULL); return 0; }