2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 01:51:26 +00:00

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 <tgraf@noironetworks.com>
Acked-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
Thomas Graf 2014-12-15 14:10:38 +01:00
parent 4a1f523f2d
commit acf72f1322
5 changed files with 114 additions and 0 deletions

1
tests/.gitignore vendored
View File

@ -46,3 +46,4 @@
/testsuite
/testsuite.dir/
/testsuite.log
/test-lib

View File

@ -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

9
tests/lib.at Normal file
View File

@ -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

View File

@ -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

94
tests/test-lib.c Normal file
View File

@ -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 <config.h>
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <openvswitch/compiler.h>
#include <openvswitch/thread.h>
#include <openvswitch/types.h>
#include <openvswitch/util.h>
#include <openvswitch/vconn.h>
#include <openvswitch/vlog.h>
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;
}