-
Notifications
You must be signed in to change notification settings - Fork 273
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c8b5891
commit 5f20bf0
Showing
7 changed files
with
8,275 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
SUBDIRS = meta lib vslib syncd | ||
SUBDIRS = meta lib vslib syncd saidump |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
AM_CXXFLAGS = $(SAIINC) -I$(top_srcdir)/saidump -I$(top_srcdir)/lib -I$(top_srcdir)/vslib -I$(top_srcdir)/meta | ||
|
||
bin_PROGRAMS = tests | ||
|
||
LDADD_GTEST = -L/usr/src/gtest -lgtest -lgtest_main | ||
|
||
tests_SOURCES = main.cpp | ||
|
||
tests_CXXFLAGS = $(DBGFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS_COMMON) -D_UNITTEST_ | ||
tests_LDFLAGS = -Wl,-rpath,$(top_srcdir)/lib/.libs -Wl,-rpath,$(top_srcdir)/meta/.libs | ||
tests_LDADD = $(LDADD_GTEST) -lhiredis -lswsscommon -lnl-genl-3 -lnl-nf-3 -lnl-route-3 -lnl-3 -lpthread -L$(top_srcdir)/lib/.libs -lsairedis -L$(top_srcdir)/meta/.libs -lsaimetadata -lsaimeta -lzmq $(CODE_COVERAGE_LIBS) | ||
|
||
TESTS = tests |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
#include <gtest/gtest.h> | ||
#include "saidump.cpp" | ||
|
||
#define ARGVN 5 | ||
|
||
TEST(SaiDump, printUsage) | ||
{ | ||
SWSS_LOG_ENTER(); | ||
testing::internal::CaptureStdout(); | ||
printUsage(); | ||
std::string output = testing::internal::GetCapturedStdout(); | ||
EXPECT_EQ(true, output.find("Usage: saidump [-t] [-g] [-r] [-m] [-h]") != std::string::npos); | ||
} | ||
|
||
TEST(SaiDump, handleCmdLine) | ||
{ | ||
SWSS_LOG_ENTER(); | ||
const char *arr[] = {"saidump", "-r", "./dump.json", "-m", "100"}; | ||
char **argv = new char *[ARGVN]; | ||
|
||
for (int i = 0; i < ARGVN; ++i) | ||
{ | ||
argv[i] = const_cast<char *>(arr[i]); | ||
} | ||
|
||
g_cmdOptions = handleCmdLine(ARGVN, argv); | ||
delete[] argv; | ||
EXPECT_EQ(g_cmdOptions.rdbJsonFile, "./dump.json"); | ||
EXPECT_EQ(g_cmdOptions.rdbJSonSizeLimit, 100 * 1024 * 1024); | ||
} | ||
|
||
TEST(SaiDump, dumpFromRedisRdbJson) | ||
{ | ||
SWSS_LOG_ENTER(); | ||
EXPECT_EQ(SAI_STATUS_FAILURE, dumpFromRedisRdbJson("")); | ||
EXPECT_EQ(SAI_STATUS_FAILURE, dumpFromRedisRdbJson("./dump.json")); | ||
} | ||
|
||
TEST(SaiDump, preProcessFile) | ||
{ | ||
SWSS_LOG_ENTER(); | ||
EXPECT_EQ(SAI_STATUS_FAILURE, preProcessFile("")); | ||
g_cmdOptions.rdbJSonSizeLimit = 0; | ||
EXPECT_EQ(SAI_STATUS_FAILURE, preProcessFile("./dump.json")); | ||
g_cmdOptions.rdbJSonSizeLimit = RDB_JSON_MAX_SIZE; | ||
EXPECT_EQ(SAI_STATUS_SUCCESS, preProcessFile("./dump.json")); | ||
EXPECT_EQ(SAI_STATUS_SUCCESS, dumpFromRedisRdbJson("./dump.json")); | ||
} | ||
|
||
int main(int argc, char *argv[]) | ||
{ | ||
SWSS_LOG_ENTER(); | ||
testing::InitGoogleTest(&argc, argv); | ||
return RUN_ALL_TESTS(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,210 @@ | ||
#! /bin/bash | ||
|
||
# tests - temporary wrapper script for .libs/tests | ||
# Generated by libtool (GNU libtool) 2.4.6 Debian-2.4.6-9 | ||
# | ||
# The tests program cannot be directly executed until all the libtool | ||
# libraries that it depends on are installed. | ||
# | ||
# This wrapper script should never be moved out of the build directory. | ||
# If it is, it will not operate correctly. | ||
|
||
# Sed substitution that helps us do robust quoting. It backslashifies | ||
# metacharacters that are still active within double-quoted strings. | ||
sed_quote_subst='s|\([`"$\\]\)|\\\1|g' | ||
|
||
# Be Bourne compatible | ||
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then | ||
emulate sh | ||
NULLCMD=: | ||
# Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which | ||
# is contrary to our usage. Disable this feature. | ||
alias -g '${1+"$@"}'='"$@"' | ||
setopt NO_GLOB_SUBST | ||
else | ||
case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac | ||
fi | ||
BIN_SH=xpg4; export BIN_SH # for Tru64 | ||
DUALCASE=1; export DUALCASE # for MKS sh | ||
|
||
# The HP-UX ksh and POSIX shell print the target directory to stdout | ||
# if CDPATH is set. | ||
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH | ||
|
||
relink_command="" | ||
|
||
# This environment variable determines our operation mode. | ||
if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then | ||
# install mode needs the following variables: | ||
generated_by_libtool_version='2.4.6' | ||
notinst_deplibs=' /sonic/src/sonic-sairedis/lib/.libs/libsairedis.la /sonic/src/sonic-sairedis/meta/.libs/libsaimetadata.la /sonic/src/sonic-sairedis/meta/.libs/libsaimeta.la' | ||
else | ||
# When we are sourced in execute mode, $file and $ECHO are already set. | ||
if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then | ||
file="$0" | ||
|
||
# A function that is used when there is no print builtin or printf. | ||
func_fallback_echo () | ||
{ | ||
eval 'cat <<_LTECHO_EOF | ||
$1 | ||
_LTECHO_EOF' | ||
} | ||
ECHO="printf %s\\n" | ||
fi | ||
|
||
# Very basic option parsing. These options are (a) specific to | ||
# the libtool wrapper, (b) are identical between the wrapper | ||
# /script/ and the wrapper /executable/ that is used only on | ||
# windows platforms, and (c) all begin with the string --lt- | ||
# (application programs are unlikely to have options that match | ||
# this pattern). | ||
# | ||
# There are only two supported options: --lt-debug and | ||
# --lt-dump-script. There is, deliberately, no --lt-help. | ||
# | ||
# The first argument to this parsing function should be the | ||
# script's ../../libtool value, followed by no. | ||
lt_option_debug= | ||
func_parse_lt_options () | ||
{ | ||
lt_script_arg0=$0 | ||
shift | ||
for lt_opt | ||
do | ||
case "$lt_opt" in | ||
--lt-debug) lt_option_debug=1 ;; | ||
--lt-dump-script) | ||
lt_dump_D=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%/[^/]*$%%'` | ||
test "X$lt_dump_D" = "X$lt_script_arg0" && lt_dump_D=. | ||
lt_dump_F=`$ECHO "X$lt_script_arg0" | /bin/sed -e 's/^X//' -e 's%^.*/%%'` | ||
cat "$lt_dump_D/$lt_dump_F" | ||
exit 0 | ||
;; | ||
--lt-*) | ||
$ECHO "Unrecognized --lt- option: '$lt_opt'" 1>&2 | ||
exit 1 | ||
;; | ||
esac | ||
done | ||
|
||
# Print the debug banner immediately: | ||
if test -n "$lt_option_debug"; then | ||
echo "tests:tests:$LINENO: libtool wrapper (GNU libtool) 2.4.6 Debian-2.4.6-9" 1>&2 | ||
fi | ||
} | ||
|
||
# Used when --lt-debug. Prints its arguments to stdout | ||
# (redirection is the responsibility of the caller) | ||
func_lt_dump_args () | ||
{ | ||
lt_dump_args_N=1; | ||
for lt_arg | ||
do | ||
$ECHO "tests:tests:$LINENO: newargv[$lt_dump_args_N]: $lt_arg" | ||
lt_dump_args_N=`expr $lt_dump_args_N + 1` | ||
done | ||
} | ||
|
||
# Core function for launching the target application | ||
func_exec_program_core () | ||
{ | ||
|
||
if test -n "$lt_option_debug"; then | ||
$ECHO "tests:tests:$LINENO: newargv[0]: $progdir/$program" 1>&2 | ||
func_lt_dump_args ${1+"$@"} 1>&2 | ||
fi | ||
exec "$progdir/$program" ${1+"$@"} | ||
|
||
$ECHO "$0: cannot exec $program $*" 1>&2 | ||
exit 1 | ||
} | ||
|
||
# A function to encapsulate launching the target application | ||
# Strips options in the --lt-* namespace from $@ and | ||
# launches target application with the remaining arguments. | ||
func_exec_program () | ||
{ | ||
case " $* " in | ||
*\ --lt-*) | ||
for lt_wr_arg | ||
do | ||
case $lt_wr_arg in | ||
--lt-*) ;; | ||
*) set x "$@" "$lt_wr_arg"; shift;; | ||
esac | ||
shift | ||
done ;; | ||
esac | ||
func_exec_program_core ${1+"$@"} | ||
} | ||
|
||
# Parse options | ||
func_parse_lt_options "$0" ${1+"$@"} | ||
|
||
# Find the directory that this script lives in. | ||
thisdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'` | ||
test "x$thisdir" = "x$file" && thisdir=. | ||
|
||
# Follow symbolic links until we get to the real thisdir. | ||
file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'` | ||
while test -n "$file"; do | ||
destdir=`$ECHO "$file" | /bin/sed 's%/[^/]*$%%'` | ||
|
||
# If there was a directory component, then change thisdir. | ||
if test "x$destdir" != "x$file"; then | ||
case "$destdir" in | ||
[\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; | ||
*) thisdir="$thisdir/$destdir" ;; | ||
esac | ||
fi | ||
|
||
file=`$ECHO "$file" | /bin/sed 's%^.*/%%'` | ||
file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'` | ||
done | ||
|
||
# Usually 'no', except on cygwin/mingw when embedded into | ||
# the cwrapper. | ||
WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no | ||
if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then | ||
# special case for '.' | ||
if test "$thisdir" = "."; then | ||
thisdir=`pwd` | ||
fi | ||
# remove .libs from thisdir | ||
case "$thisdir" in | ||
*[\\/].libs ) thisdir=`$ECHO "$thisdir" | /bin/sed 's%[\\/][^\\/]*$%%'` ;; | ||
.libs ) thisdir=. ;; | ||
esac | ||
fi | ||
|
||
# Try to get the absolute directory name. | ||
absdir=`cd "$thisdir" && pwd` | ||
test -n "$absdir" && thisdir="$absdir" | ||
|
||
program='tests' | ||
progdir="$thisdir/.libs" | ||
|
||
|
||
if test -f "$progdir/$program"; then | ||
# Add our own library path to LD_LIBRARY_PATH | ||
LD_LIBRARY_PATH="/sonic/src/sonic-sairedis/lib/.libs:/sonic/src/sonic-sairedis/meta/.libs:$LD_LIBRARY_PATH" | ||
|
||
# Some systems cannot cope with colon-terminated LD_LIBRARY_PATH | ||
# The second colon is a workaround for a bug in BeOS R4 sed | ||
LD_LIBRARY_PATH=`$ECHO "$LD_LIBRARY_PATH" | /bin/sed 's/::*$//'` | ||
|
||
export LD_LIBRARY_PATH | ||
|
||
if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then | ||
# Run the actual program with our arguments. | ||
func_exec_program ${1+"$@"} | ||
fi | ||
else | ||
# The program doesn't exist. | ||
$ECHO "$0: error: '$progdir/$program' does not exist" 1>&2 | ||
$ECHO "This script is just a wrapper for $program." 1>&2 | ||
$ECHO "See the libtool documentation for more information." 1>&2 | ||
exit 1 | ||
fi | ||
fi |