summaryrefslogtreecommitdiffstats
path: root/.gitattributes
blob: a3439c3fe6a7a3ab513fb53bd8e345c8f41c8820 (plain)
1
2
# Git will always convert line endings to LF on checkout. You should use this for files that must keep LF endings, even on Windows.
text eol=lf
Name.Variable.Class */ .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ .highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */ .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ } @media (prefers-color-scheme: light) { .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
#!/bin/bash
#
# Copyright 2016-2017 Huawei Technologies Co., Ltd.
#
# 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.
#
# $1 project/functionality
# $2 robot options
# $3 ci-management repo location


function docker_stats(){
    #General memory details
    echo "> top -bn1 | head -3"
    top -bn1 | head -3
    echo

    echo "> free -h"
    free -h
    echo

    #Memory details per Docker
    echo "> docker ps"
    docker ps
    echo

    echo "> docker stats --no-stream"
    docker stats --no-stream
    echo
}

if [ $# -eq 0 ]
then
    echo 
    echo "Usage: $0 plans/<project>/<functionality> [<robot-options>] [<ci-management-dir>]"
    echo
    echo "    <project>, <functionality>, <robot-options>:  "
    echo "        The same values as for the '{project}-csit-{functionality}' JJB job template."
    echo
    echo "    <ci-management-dir>: "
    echo "        Path to the ci-management repo checked out locally.  It not specified, "
    echo "        assumed to be adjacent to the integration repo directory."
    echo
    exit 1
fi

if [ -z "$WORKSPACE" ]; then
    export WORKSPACE=`git rev-parse --show-toplevel`
fi
rm -rf $WORKSPACE/archives
mkdir -p $WORKSPACE/archives

if [ -f ${WORKSPACE}/test/csit/${1}/testplan.txt ]; then
    export TESTPLAN="${1}"
else
    echo "testplan not found: ${WORKSPACE}/test/csit/${TESTPLAN}/testplan.txt"
    exit 2
fi


export TESTOPTIONS="${2}"

if [ -z "$3" ]; then
    CI=${WORKSPACE}/../ci-management
else
    CI=${3}
fi




TESTPLANDIR=${WORKSPACE}/test/csit/${TESTPLAN}

# Assume that if ROBOT_VENV is set, we don't need to reinstall robot
if [ -f ${WORKSPACE}/env.properties ]; then
    source ${WORKSPACE}/env.properties
    source ${ROBOT_VENV}/bin/activate
fi
if ! type pybot > /dev/null; then
    rm -f ${WORKSPACE}/env.properties
    source $CI/jjb/integration/include-raw-integration-install-robotframework.sh
    source ${WORKSPACE}/env.properties
    source ${ROBOT_VENV}/bin/activate
fi

# install required Robot libraries
pip install --upgrade robotframework-extendedselenium2library

# install eteutils
mkdir -p ${ROBOT_VENV}/src/onap
rm -rf ${ROBOT_VENV}/src/onap/testsuite
git clone https://gerrit.onap.org/r/testsuite/python-testing-utils.git ${ROBOT_VENV}/src/onap/testsuite/python-testing-utils
pip install --upgrade ${ROBOT_VENV}/src/onap/testsuite/python-testing-utils

# install chrome driver
if [ ! -x ${ROBOT_VENV}/bin/chromedriver ]; then
    pushd ${ROBOT_VENV}/bin
    wget -N http://chromedriver.storage.googleapis.com/2.27/chromedriver_linux64.zip
    unzip chromedriver_linux64.zip
    chmod +x chromedriver
    popd
fi


WORKDIR=`mktemp -d --suffix=-robot-workdir`
cd ${WORKDIR}


set +u
set -x


# Add csit scripts to PATH
export PATH=${PATH}:${WORKSPACE}/test/csit/docker/scripts:${WORKSPACE}/test/csit/scripts:${ROBOT_VENV}/bin
export SCRIPTS=${WORKSPACE}/test/csit/scripts
export ROBOT_VARIABLES=

# Sign in to nexus3 docker repo
docker login -u anonymous -p anonymous nexus3.onap.org:10001

# Run setup script plan if it exists
cd ${TESTPLANDIR}
SETUP=${TESTPLANDIR}/setup.sh
if [ -f ${SETUP} ]; then
    echo "Running setup script ${SETUP}"
    source ${SETUP}
fi

# show memory consumption after all docker instances initialized
docker_stats | tee $WORKSPACE/archives/_sysinfo-1-after-setup.txt

# Run test plan
cd $WORKDIR
echo "Reading the testplan:"
cat ${TESTPLANDIR}/testplan.txt | egrep -v '(^[[:space:]]*#|^[[:space:]]*$)' | sed "s|^|${WORKSPACE}/test/csit/tests/|" > testplan.txt
cat testplan.txt
SUITES=$( xargs -a testplan.txt )

echo ROBOT_VARIABLES=${ROBOT_VARIABLES}
echo "Starting Robot test suites ${SUITES} ..."
set +e
pybot -N ${TESTPLAN} -v WORKSPACE:/tmp ${ROBOT_VARIABLES} ${TESTOPTIONS} ${SUITES}
RESULT=$?
set -e
echo "RESULT: " $RESULT
rsync -av $WORKDIR/ $WORKSPACE/archives

# Record list of active docker containers
docker ps --format "{{.Image}}" > $WORKSPACE/archives/_docker-images.log

# show memory consumption after all docker instances initialized
docker_stats | tee $WORKSPACE/archives/_sysinfo-2-after-robot.txt

# Run teardown script plan if it exists
cd ${TESTPLANDIR}
TEARDOWN=${TESTPLANDIR}/teardown.sh
if [ -f ${TEARDOWN} ]; then
    echo "Running teardown script ${TEARDOWN}"
    source ${TEARDOWN}
fi

# TODO: do something with the output

exit $RESULT