aboutsummaryrefslogtreecommitdiffstats
path: root/build-root/copyimg
blob: d693dfe5e507e1893a31f08da9c6dd3370270140 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/bin/sh

# Copyright (c) 2015 Cisco and/or its affiliates.
# 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.


if [ $# -lt 2 ]; then
    cat - <<EOF
$0 FROM-DIR TO-DIR ENVIRONMENT

Copies files from one directory to another with possible
transformations.

Files named FILE.spp will be transformed via the spp preprocessor
subject to environment definitions.  Source FILE.copyimgspp results in
destination file FILE in the corresponding destination directory.

Files named FILE.copyimgsh are run as shell scripts in (i.e. via chdir)
the corresponding destination directory (and not copied).

First regular files are copied.  Then transformations are preformed.
Finally, shell scripts are run.
EOF
  exit 1;
fi

FROM_DIR=$1
TO_DIR=$2

FILTER=" -and -not -name '*~'";
FILTER="${FILTER} -and -not -name '.*~'";
FILTER="$FILTER -and -not -path '*/.git*'";
FILTER="$FILTER -and -not -path '*/.svn*'";
FILTER="$FILTER -and -not -path '*/.CVS*'";

FROM_FILES=`(cd $FROM_DIR; eval "find . -not -type d $FILTER")`;
 FROM_DIRS=`(cd $FROM_DIR; eval "find .      -type d $FILTER")`;

COPY_FILES=
SPP_FILES=
SH_FILES=
for f in $FROM_FILES; do
  case $f in
    *.copyimgspp) SPP_FILES="$SPP_FILES $f" ;;
    *.copyimgsh)   SH_FILES="$SH_FILES $f" ;;
    *)		 COPY_FILES="$COPY_FILES $f";;
  esac
done

# Make destination directories.
mkdir -p $TO_DIR;
if [ "$FROM_DIRS" != "" ]; then
  for d in $FROM_DIRS; do
    mkdir -p $TO_DIR/$d;
  done
fi

# Copy files
if [ "$COPY_FILES" != "" ]; then
    tar -cf - -C $FROM_DIR $COPY_FILES | tar --preserve-permissions -xf - -C $TO_DIR;
fi

# Use spp to transform any spp files
if [ "$SPP_FILES" != "" ]; then
  for f in $SPP_FILES; do
    d=`dirname $f`;
    b=`basename $f .copyimgspp`;
    mkdir -p $TO_DIR/$d;
    t=$TO_DIR/$d/$b;
    spp -o $TO_DIR/$d/$b $FROM_DIR/$f || exit 1;
  done;
fi

# Now that all files have been copied/created we run any shell scripts
ABS_FROM_DIR=`(cd $FROM_DIR; pwd)`;
if [ "$SH_FILES" != "" ]; then
  # Allow directory to define some functions
  if [ -f $FROM_DIR/copyimgsh-functions.sh ]; then
    . $FROM_DIR/copyimgsh-functions.sh ;
  fi ;
  for f in $SH_FILES; do
    d=`dirname $f`;
    b=`basename $f`;
    mkdir -p $TO_DIR/$d;
    (cd $TO_DIR/$d; . $ABS_FROM_DIR/$d/$b) || exit 1;
  done;
fi;
.cli_return_response(cmd) if r.retval != 0: if hasattr(r, 'reply'): self.logger.info(cmd + " FAIL reply " + r.reply) else: self.logger.info(cmd + " FAIL retval " + str(r.retval)) @unittest.skipUnless(running_gcov_tests, "part of code coverage tests") def test_vlib_node_cli_unittest(self): """ Vlib node_cli.c Code Coverage Test """ cmds = ["loopback create", "packet-generator new {\n" " name vlib\n" " limit 15\n" " size 128-128\n" " interface loop0\n" " node ethernet-input\n" " data {\n" " IP6: 00:d0:2d:5e:86:85 -> 00:0d:ea:d0:00:00\n" " ICMP: db00::1 -> db00::2\n" " incrementing 30\n" " }\n" "}\n", "show vlib graph", "show vlib graph ethernet-input", "show vlib graphviz", "show vlib graphviz graphviz.dot", "pa en", "show runtime ethernet-input", "show runtime brief verbose max summary", "clear runtime", "show node index 1", "show node ethernet-input", "show node pg-input", "set node function", "set node function no-such-node", "set node function cdp-input default", "set node function ethernet-input default", "set node function ethernet-input bozo", "set node function ethernet-input", "show \t", ] for cmd in cmds: r = self.vapi.cli_return_response(cmd) if r.retval != 0: if hasattr(r, 'reply'): self.logger.info(cmd + " FAIL reply " + r.reply) else: self.logger.info(cmd + " FAIL retval " + str(r.retval)) @unittest.skipUnless(running_gcov_tests, "part of code coverage tests") def test_vlib_buffer_c_unittest(self): """ Vlib buffer.c Code Coverage Test """ cmds = ["loopback create", "packet-generator new {\n" " name vlib\n" " limit 15\n" " size 128-128\n" " interface loop0\n" " node ethernet-input\n" " data {\n" " IP6: 00:d0:2d:5e:86:85 -> 00:0d:ea:d0:00:00\n" " ICMP: db00::1 -> db00::2\n" " incrementing 30\n" " }\n" "}\n", "event-logger trace", "event-logger trace enable", "event-logger trace api cli barrier", "pa en", "show interface bogus", "event-logger trace disable api cli barrier", "event-logger trace circuit-node ethernet-input", "event-logger trace circuit-node ethernet-input disable", "clear interfaces", "test vlib", "test vlib2", "show memory api-segment stats-segment main-heap verbose", "leak-check { show memory }", "show cpu", "memory-trace main-heap", "memory-trace main-heap api-segment stats-segment", "leak-check { show version }", "show version ?", "comment { show version }", "uncomment { show version }", "show memory main-heap", "show memory bogus", "choices", "test heap-validate", "memory-trace main-heap disable", "show buffers", "show eve", "show help", "show ip ", ] for cmd in cmds: r = self.vapi.cli_return_response(cmd) if r.retval != 0: if hasattr(r, 'reply'): self.logger.info(cmd + " FAIL reply " + r.reply) else: self.logger.info(cmd + " FAIL retval " + str(r.retval)) @unittest.skipUnless(running_gcov_tests, "part of code coverage tests") def test_vlib_format_unittest(self): """ Vlib format.c Code Coverage Test """ cmds = ["loopback create", "classify filter pcap mask l2 proto match l2 proto 0x86dd", "classify filter pcap del", "test format-vlib", ] for cmd in cmds: r = self.vapi.cli_return_response(cmd) if r.retval != 0: if hasattr(r, 'reply'): self.logger.info(cmd + " FAIL reply " + r.reply) else: self.logger.info(cmd + " FAIL retval " + str(r.retval)) @unittest.skipUnless(running_gcov_tests, "part of code coverage tests") def test_vlib_main_unittest(self): """ Private Binary API Segment Test (takes 70 seconds) """ vat_path = self.vpp_bin + '_api_test' vat = pexpect.spawn(vat_path, ['socket-name', self.get_api_sock_path()]) vat.expect("vat# ", timeout=10) vat.sendline('sock_init_shm') vat.expect("vat# ", timeout=10) vat.sendline('sh api cli') vat.kill(signal.SIGKILL) vat.wait() self.logger.info("vat terminated, 70 second wait for the Reaper") time.sleep(70) self.logger.info("Reaper should be complete...") def test_pool(self): """ Fixed-size Pool Test """ cmds = ["test pool", ] for cmd in cmds: r = self.vapi.cli_return_response(cmd) if r.retval != 0: if hasattr(r, 'reply'): self.logger.info(cmd + " FAIL reply " + r.reply) else: self.logger.info(cmd + " FAIL retval " + str(r.retval)) if __name__ == '__main__': unittest.main(testRunner=VppTestRunner)