summaryrefslogtreecommitdiffstats
path: root/docker
diff options
context:
space:
mode:
authorMoshe <moshehoa@amdocs.com>2018-02-26 13:39:57 +0200
committerMoshe <moshehoa@amdocs.com>2018-03-04 14:24:35 +0200
commit0bb532c41e89568966ca2bfae259737e8830249b (patch)
treedaad9e5debb95f292de880cfad18d2d0dce29239 /docker
parentc1731afc800b3f7aaefd7c06dbe887ff057fa0f8 (diff)
Initial VNFTEST fw
Issue-ID: VNFSDK-195 Change-Id: I5abf0dd033e76e5225bb8271c0afaea325d741d9 Signed-off-by: Moshe <moshehoa@amdocs.com> docker build Issue-ID: VNFSDK-195 Change-Id: I25eb933504c0201e6c26477b540626fd515d2887 Signed-off-by: Moshe <moshehoa@amdocs.com> fix requirements Issue-ID: VNFSDK-195 Change-Id: I5907fa102bfbf9cb81d42e491c133b4fdbb0d6fd Signed-off-by: Moshe <moshehoa@amdocs.com> rm netifaces Issue-ID: VNFSDK-195 Change-Id: I349d0c738442edfef256c90b06cbaeb446c1db13 Signed-off-by: Moshe <moshehoa@amdocs.com> fix tox config IssueID: VNFTEST-195 Change-Id: I5c0b0e0ab96cad1bdc56ab63860d794bfd15b5eb Signed-off-by: Moshe <moshehoa@amdocs.com> Add unit test IssueID: VNFTEST-195 Change-Id: I08c9ba53721306aff4b74720181f8c853c4ccabe Signed-off-by: Moshe <moshehoa@amdocs.com> fix setup.py Issue-ID: VNFSDK-195 Change-Id: I72bd93e4977edf5ef0b46c72fe47165b805aab7b Signed-off-by: Moshe <moshehoa@amdocs.com> fix test execution Issue-ID: VNFSDK-195 Change-Id: I488a6226d2562229f0e7fa6c1d20f0c43882bc3b Signed-off-by: Moshe <moshehoa@amdocs.com>
Diffstat (limited to 'docker')
-rw-r--r--docker/Dockerfile59
-rw-r--r--docker/Makefile43
-rwxr-xr-xdocker/exec_tests.sh94
-rwxr-xr-xdocker/nginx.sh43
-rwxr-xr-xdocker/supervisor.sh33
-rwxr-xr-xdocker/uwsgi.sh53
6 files changed, 325 insertions, 0 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 0000000..20598c7
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,59 @@
+##############################################################################
+# Copyright 2018 EuropeanSoftwareMarketingLtd.
+# ===================================================================
+# Licensed under the ApacheLicense, Version2.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
+#
+# 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
+##############################################################################
+# vnftest comment: this is a modified copy of
+# yardstick/docker/Dockerfile
+FROM ubuntu:16.04
+
+LABEL image=onap/vnftest
+
+ARG BRANCH=master
+
+# GIT repo directory
+ENV REPOS_DIR="/home/onap/repos" \
+ IMAGE_DIR="/home/onap/images/"
+
+# Set work directory
+
+# Vnftest repo
+ENV VNFTEST_REPO_DIR="${REPOS_DIR}/vnftest" \
+ RELENG_REPO_DIR="${REPOS_DIR}/releng" \
+ STORPERF_REPO_DIR="${REPOS_DIR}/storperf"
+
+RUN apt-get update && apt-get install -y git python-setuptools python-pip && apt-get -y autoremove && apt-get clean
+RUN easy_install -U setuptools==30.0.0
+RUN pip install appdirs==1.4.0 pyopenssl==17.5.0 python-openstackclient==3.11.0
+
+RUN mkdir -p ${REPOS_DIR}
+
+RUN git config --global http.sslVerify false
+RUN git clone --depth 1 -b $BRANCH https://gerrit.onap.org/r/vnfsdk/dovetail-integration ${VNFTEST_REPO_DIR}
+
+WORKDIR ${VNFTEST_REPO_DIR}
+RUN ${VNFTEST_REPO_DIR}/install.sh
+RUN ${VNFTEST_REPO_DIR}/docker/supervisor.sh
+
+RUN echo "daemon off;" >> /etc/nginx/nginx.conf
+
+EXPOSE 6000
+
+ADD http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img ${IMAGE_DIR}
+ADD http://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img ${IMAGE_DIR}
+
+COPY ./exec_tests.sh /usr/local/bin/
+
+ENV NSB_DIR="/opt/nsb_bin" \
+ PYTHONPATH="${PYTHONPATH}:${NSB_DIR}/trex_client:${NSB_DIR}/trex_client/stl"
+
+WORKDIR ${REPOS_DIR}
+CMD ["/usr/bin/supervisord"]
diff --git a/docker/Makefile b/docker/Makefile
new file mode 100644
index 0000000..4f9e18b
--- /dev/null
+++ b/docker/Makefile
@@ -0,0 +1,43 @@
+##############################################################################
+# Copyright 2018 EuropeanSoftwareMarketingLtd.
+# ===================================================================
+# Licensed under the ApacheLicense, Version2.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
+#
+# 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
+##############################################################################
+# vnftest comment: this is a modified copy of
+# yardstick/docker/Makefile
+
+SHELL = /bin/bash
+
+IMAGE = onap/vnftest
+
+DOCKER_TAG = beijing.0
+
+.PHONY: all
+all: .docker
+
+.docker:
+ /usr/bin/docker build --rm=true --no-cache=true -t $(IMAGE):$(DOCKER_TAG) .
+ /usr/bin/docker tag $(IMAGE):$(DOCKER_TAG) $(IMAGE):latest
+ touch .docker
+
+
+.PHONY: clean
+clean:
+ @docker ps | grep $(IMAGE) | awk '{print $$1}' | xargs -r docker stop
+ @docker ps -a | grep $(IMAGE) | awk '{print $$1}' | xargs -r docker rm
+ @echo "Docker images to remove:"
+ @docker images | head -1 && docker images | grep $(IMAGE) || true
+ @image_tags=($$(docker images | grep $(IMAGE) | awk '{print $$2}')) ; \
+ for tag in "$${image_tags[@]}"; do \
+ echo "Removing docker image $(IMAGE):$$tag..." ; \
+ docker rmi $(IMAGE):$$tag ; \
+ done
+ rm -f .docker
diff --git a/docker/exec_tests.sh b/docker/exec_tests.sh
new file mode 100755
index 0000000..9e16476
--- /dev/null
+++ b/docker/exec_tests.sh
@@ -0,0 +1,94 @@
+#!/bin/bash
+##############################################################################
+# Copyright 2018 EuropeanSoftwareMarketingLtd.
+# ===================================================================
+# Licensed under the ApacheLicense, Version2.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
+#
+# 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
+##############################################################################
+# vnftest comment: this is a modified copy of
+# yardstick/docker/exec_tests.sh
+set -e
+
+: ${VNFTEST_REPO:='https://gerrit.onap.org/gerrit/vnftest'}
+: ${VNFTEST_REPO_DIR:='/home/onap/repos/vnftest'}
+: ${VNFTEST_BRANCH:='master'} # branch, tag, sha1 or refspec
+
+# git update using reference as a branch.
+# git_update_branch ref
+function git_update_branch {
+ local git_branch=$1
+
+ git checkout -f origin/${git_branch}
+ # a local branch might not exist
+ git branch -D ${git_branch} || true
+ git checkout -b ${git_branch}
+}
+
+# git update using reference as a branch.
+# git_update_remote_branch ref
+function git_update_remote_branch {
+ local git_branch=$1
+
+ git checkout -b ${git_branch} -t origin/${git_branch}
+}
+
+# git update using reference as a tag. Be careful editing source at that repo
+# as working copy will be in a detached mode
+# git_update_tag ref
+function git_update_tag {
+ local git_tag=$1
+
+ git tag -d ${git_tag}
+ # fetching given tag only
+ git fetch origin tag ${git_tag}
+ git checkout -f ${git_tag}
+}
+
+
+# OpenStack Functions
+
+git_checkout()
+{
+ local git_ref=$1
+ if [[ -n "$(git show-ref refs/tags/${git_ref})" ]]; then
+ git_update_tag "${git_ref}"
+ elif [[ -n "$(git show-ref refs/heads/${git_ref})" ]]; then
+ git_update_branch "${git_ref}"
+ elif [[ -n "$(git show-ref refs/remotes/origin/${git_ref})" ]]; then
+ git_update_remote_branch "${git_ref}"
+ # check to see if it is a remote ref
+ elif git fetch --tags origin "${git_ref}"; then
+ # refspec / changeset
+ git checkout FETCH_HEAD
+ else
+ # if we are a random commit id we have to unshallow
+ # to get all the commits
+ git fetch --unshallow origin
+ git checkout -f "${git_ref}"
+ fi
+}
+
+# releng is not needed, we bind-mount the credentials
+
+echo
+echo "INFO: Updating vnftest -> ${VNFTEST_BRANCH}"
+if [ ! -d ${VNFTEST_REPO_DIR} ]; then
+ git clone ${VNFTEST_REPO} ${VNFTEST_REPO_DIR}
+fi
+cd ${VNFTEST_REPO_DIR}
+git_checkout ${VNFTEST_BRANCH}
+
+if [[ "${DEPLOY_STEP:0:2}" == "os" ]];then
+ # setup the environment
+ source ${VNFTEST_REPO_DIR}/tests/ci/prepare_env.sh
+fi
+
+# execute tests
+${VNFTEST_REPO_DIR}/tests/ci/vnftest-verify $@
diff --git a/docker/nginx.sh b/docker/nginx.sh
new file mode 100755
index 0000000..ac81c73
--- /dev/null
+++ b/docker/nginx.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+##############################################################################
+# Copyright 2018 EuropeanSoftwareMarketingLtd.
+# ===================================================================
+# Licensed under the ApacheLicense, Version2.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
+#
+# 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
+##############################################################################
+# vnftest comment: this is a modified copy of
+# yardstick/docker/nginx.sh
+
+# nginx config
+nginx_config='/etc/nginx/conf.d/vnftest.conf'
+
+if [[ ! -e "${nginx_config}" ]];then
+
+ cat << EOF > "${nginx_config}"
+server {
+ listen 6000;
+ server_name localhost;
+ index index.htm index.html;
+ location / {
+ include uwsgi_params;
+ client_max_body_size 2000m;
+ uwsgi_pass unix:///var/run/vnftest.sock;
+ }
+
+ location /gui/ {
+ alias /etc/nginx/vnftest/gui/;
+ }
+
+ location /report/ {
+ alias /tmp/;
+ }
+}
+EOF
+fi
diff --git a/docker/supervisor.sh b/docker/supervisor.sh
new file mode 100755
index 0000000..0462024
--- /dev/null
+++ b/docker/supervisor.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+##############################################################################
+# Copyright 2018 EuropeanSoftwareMarketingLtd.
+# ===================================================================
+# Licensed under the ApacheLicense, Version2.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
+#
+# 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
+##############################################################################
+# vnftest comment: this is a modified copy of
+# yardstick/docker/supervisor.sh
+
+# nginx service start when boot
+supervisor_config='/etc/supervisor/conf.d/vnftest.conf'
+
+if [[ ! -e "${supervisor_config}" ]];then
+ cat << EOF > "${supervisor_config}"
+[supervisord]
+nodaemon = true
+
+[program:nginx]
+command = service nginx restart
+
+[program:vnftest_uwsgi]
+directory = /etc/vnftest
+command = uwsgi -i vnftest.ini
+EOF
+fi
diff --git a/docker/uwsgi.sh b/docker/uwsgi.sh
new file mode 100755
index 0000000..da0833a
--- /dev/null
+++ b/docker/uwsgi.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+##############################################################################
+# Copyright 2018 EuropeanSoftwareMarketingLtd.
+# ===================================================================
+# Licensed under the ApacheLicense, Version2.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
+#
+# 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
+##############################################################################
+# vnftest comment: this is a modified copy of
+# yardstick/docker/uwsgi.sh
+
+: ${VNFTEST_REPO_DIR:='/home/onap/repos/vnftest'}
+
+# generate uwsgi config file
+mkdir -p /etc/vnftest
+
+# create api log directory
+mkdir -p /var/log/vnftest
+
+# create vnftest.sock for communicating
+touch /var/run/vnftest.sock
+
+uwsgi_config='/etc/vnftest/vnftest.ini'
+if [[ ! -e "${uwsgi_config}" ]];then
+
+ cat << EOF > "${uwsgi_config}"
+[uwsgi]
+master = true
+debug = true
+chdir = ${VNFTEST_REPO_DIR}/api
+module = server
+plugins = python
+processes = 10
+threads = 5
+async = true
+max-requests = 5000
+chmod-socket = 666
+callable = app_wrapper
+enable-threads = true
+close-on-exec = 1
+daemonize= /var/log/vnftest/uwsgi.log
+socket = /var/run/vnftest.sock
+EOF
+ if [[ "${VNFTEST_VENV}" ]];then
+ echo "virtualenv = ${VNFTEST_VENV}" >> "${uwsgi_config}"
+ fi
+fi