From acf72f1322a041fdf30a1c115dbc0e7a6dffac00 Mon Sep 17 00:00:00 2001 From: Thomas Graf Date: Mon, 15 Dec 2014 14:10:38 +0100 Subject: [PATCH] lib: Add test for library usage This test covers inclusion of public header files and basic usage of the API such as vlog. Signed-off-by: Thomas Graf Acked-by: Ben Pfaff --- tests/.gitignore | 1 + tests/automake.mk | 6 +++ tests/lib.at | 9 +++++ tests/library.at | 4 ++ tests/test-lib.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 114 insertions(+) create mode 100644 tests/lib.at create mode 100644 tests/test-lib.c diff --git a/tests/.gitignore b/tests/.gitignore index 03fb8e408b2..11167fbe857 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -46,3 +46,4 @@ /testsuite /testsuite.dir/ /testsuite.log +/test-lib diff --git a/tests/automake.mk b/tests/automake.mk index ccce1129a27..7422f970f30 100644 --- a/tests/automake.mk +++ b/tests/automake.mk @@ -24,6 +24,7 @@ TESTSUITE_AT = \ tests/bfd.at \ tests/cfm.at \ tests/lacp.at \ + tests/lib.at \ tests/learn.at \ tests/vconn.at \ tests/file_name.at \ @@ -192,6 +193,11 @@ tests_test_ovsdb_SOURCES = \ EXTRA_DIST += tests/uuidfilt.pl tests/ovsdb-monitor-sort.pl tests_test_ovsdb_LDADD = ovsdb/libovsdb.la lib/libopenvswitch.la +noinst_PROGRAMS += tests/test-lib +tests_test_lib_SOURCES = \ + tests/test-lib.c +tests_test_lib_LDADD = lib/libopenvswitch.la + # idltest schema and IDL OVSIDL_BUILT += tests/idltest.c tests/idltest.h tests/idltest.ovsidl IDLTEST_IDL_FILES = tests/idltest.ovsschema tests/idltest.ann diff --git a/tests/lib.at b/tests/lib.at new file mode 100644 index 00000000000..d5a30d4a17d --- /dev/null +++ b/tests/lib.at @@ -0,0 +1,9 @@ +AT_BANNER([Library -- basic]) + +AT_SETUP([successful linking]) +AT_KEYWORDS([libopenvswitch]) +AT_CAPTURE_FILE([log]) +AT_CHECK( + [test-lib], [0], + [], [ignore]) +AT_CLEANUP diff --git a/tests/library.at b/tests/library.at index ca174bb477c..2507688158b 100644 --- a/tests/library.at +++ b/tests/library.at @@ -205,3 +205,7 @@ AT_SETUP([test bitmap functions]) AT_CHECK([ovstest test-bitmap check], [0], [.. ]) AT_CLEANUP + +AT_SETUP([use of public headers]) +AT_CHECK([test-lib], [0], []) +AT_CLEANUP diff --git a/tests/test-lib.c b/tests/test-lib.c new file mode 100644 index 00000000000..059dd04baad --- /dev/null +++ b/tests/test-lib.c @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2014 Cisco Systems, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static void +show_version(void) +{ + printf("%s - %s\n", + ovs_get_program_name(), ovs_get_program_version()); + exit(EXIT_SUCCESS); +} + +static void +usage(void) +{ + printf("%s: Open vSwitch library test utility\n" + "usage: %s [OPTIONS] COMMAND [ARG...]\n\n", + ovs_get_program_name(), ovs_get_program_name()); + vlog_usage(); + exit(EXIT_SUCCESS); +} + +static void +parse_options(int argc, char *argv[]) +{ + static const struct option long_options[] = { + {"help", no_argument, NULL, 'h'}, + {"version", no_argument, NULL, 'V'}, + {"verbose", optional_argument, NULL, 'v'}, + {NULL, 0, NULL, 0}, + }; + char *short_options = "hVv"; + + for (;;) { + int c; + + c = getopt_long(argc, argv, short_options, long_options, NULL); + if (c == -1) { + break; + } + + switch (c) { + case 'V': + show_version(); + break; + + case 'h': + usage(); + break; + + case 'v': + vlog_set_verbosity(optarg); + break; + + case '?': + exit(EXIT_FAILURE); + + default: + abort(); + } + } +} + +int +main(int argc, char *argv[]) +{ + ovs_set_program_name(argv[0], "1.0"); + parse_options(argc, argv); + + return 0; +}