Delete unused files in tests/contrib
Code in octavia/tests/contrib is now obsoleted with the retirement of neutron-lbaas. Change-Id: I73566e535a16dd73f3b32659668d0fb6ae6ad22c
This commit is contained in:
parent
88c4b9bb9d
commit
89f7d349e0
octavia/tests/contrib
@ -1,63 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This file is meant to be sourced by the other hooks
|
||||
|
||||
# Legacy values for $1, $2 and $3:
|
||||
# $1 - dsvm-functional, tempest (testtype)
|
||||
# $2 - lbaasv2, lbaasv1 (octaviaversion)
|
||||
# $3 - scenario, minimal, api, healthmonitor, listener, loadbalancer, member, pool (octaviatest)
|
||||
|
||||
# Args being phased in:
|
||||
# $1 - same
|
||||
# $2 - same
|
||||
# $3 - test-driver, with any missing -driver being "octavia"
|
||||
# scenario-octavia
|
||||
# minimal-octavia
|
||||
# api-namespace
|
||||
# api-{thirdparty}
|
||||
# healthmonitor-octavia
|
||||
# listener-octavia
|
||||
# loadbalancer-octavia
|
||||
# member-octavia
|
||||
# pool-octavia
|
||||
|
||||
|
||||
|
||||
|
||||
testtype="$1"
|
||||
octaviaversion="$2"
|
||||
octaviatest="$3"
|
||||
|
||||
case $testtype in
|
||||
"dsvm-functional")
|
||||
testenv=$testtype
|
||||
;;
|
||||
|
||||
"tempest")
|
||||
lbaasenv=$(echo "$octaviatest" | perl -ne '/^(.*)-([^-]+)$/ && print "$1";')
|
||||
if [ -z "$lbaasenv" ]; then
|
||||
lbaasenv=$octaviatest
|
||||
fi
|
||||
lbaasdriver=$(echo "$octaviatest" | perl -ne '/^(.*)-([^-]+)$/ && print "$2";')
|
||||
if [ -z "$lbaasdriver" ]; then
|
||||
lbaasdriver='octavia'
|
||||
fi
|
||||
|
||||
testenv=${octaviatest:-"apiv1"}
|
||||
|
||||
if [ "$octaviaversion" = "v1" ]; then
|
||||
case "$lbaasenv" in
|
||||
"api"|"healthmonitor"|"listener"|"loadbalancer"|"member"|"minimal"|"pool")
|
||||
testenv="apiv1"
|
||||
;;
|
||||
"scenario")
|
||||
testenv="scenario"
|
||||
;;
|
||||
*)
|
||||
echo "Unrecognized env $lbaasenv".
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
esac
|
@ -1,80 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
function wait_for_loadbalancer_active() {
|
||||
lb_name=$1
|
||||
while [ $(neutron lbaas-loadbalancer-list \
|
||||
| grep $lb_name | grep ACTIVE \
|
||||
| wc --lines) == 0 ]; do
|
||||
sleep 2
|
||||
done
|
||||
}
|
||||
|
||||
BUILD_DIR=$(mktemp -d)
|
||||
cp $( dirname "${BASH_SOURCE[0]}" )/httpd.go ${BUILD_DIR}
|
||||
pushd ${BUILD_DIR}
|
||||
go build -ldflags "-linkmode external -extldflags -static" httpd.go
|
||||
popd
|
||||
|
||||
SEC_GROUP_ID=$( openstack security group create "app-server-sec-group" \
|
||||
-f value -c id)
|
||||
openstack security group rule create ${SEC_GROUP_ID} --protocol tcp \
|
||||
--dst-port 22
|
||||
openstack security group rule create ${SEC_GROUP_ID} --protocol tcp \
|
||||
--dst-port 8080
|
||||
|
||||
ssh-keygen -q -b 4096 -t rsa -N "" -f ${BUILD_DIR}/id_rsa
|
||||
openstack keypair create "app-server-key" --public-key ${BUILD_DIR}/id_rsa.pub
|
||||
|
||||
PRIVATE_NET_ID=$( openstack network show private -f value -c id )
|
||||
|
||||
neutron lbaas-loadbalancer-create --name lb1 private-subnet
|
||||
wait_for_loadbalancer_active lb
|
||||
neutron lbaas-listener-create --name listener1 \
|
||||
--loadbalancer lb1 \
|
||||
--protocol HTTP \
|
||||
--protocol-port 80 \
|
||||
--connection-limit 100000
|
||||
wait_for_loadbalancer_active lb1
|
||||
neutron lbaas-pool-create --name pool1 \
|
||||
--lb-algorithm ROUND_ROBIN \
|
||||
--listener listener1 \
|
||||
--protocol HTTP
|
||||
wait_for_loadbalancer_active lb1
|
||||
|
||||
for NUM in $( seq -f "%02.0f" 1 3 ); do
|
||||
# For higher scale testing you may want to use a large flavor assuming your
|
||||
# environment has capacity
|
||||
SERVER_ID=$( openstack server create app${NUM} \
|
||||
--image cirros-0.3.4-x86_64-uec \
|
||||
--flavor m1.tiny \
|
||||
--security-group ${SEC_GROUP_ID} \
|
||||
--nic net-id=${PRIVATE_NET_ID} \
|
||||
--key-name "app-server-key" \
|
||||
--wait -f value -c id )
|
||||
sleep 30
|
||||
SERVER_IPV4=$( openstack server show ${SERVER_ID} \
|
||||
-c addresses -f value \
|
||||
| perl -ne 'print $1 if /(\d+\.\d+\.\d+\.\d+)/' )
|
||||
|
||||
scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
|
||||
-i ${BUILD_DIR}/id_rsa \
|
||||
${BUILD_DIR}/httpd cirros@${SERVER_IPV4}:/dev/shm/
|
||||
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
|
||||
-i ${BUILD_DIR}/id_rsa cirros@${SERVER_IPV4} \
|
||||
sudo sh -c "ulimit -n 100000; screen -d -m /dev/shm/httpd \
|
||||
-id ${NUM} -port 8080"
|
||||
|
||||
neutron lbaas-member-create --subnet private-subnet \
|
||||
--address ${SERVER_IPV4} \
|
||||
--name app${NUM} \
|
||||
--protocol-port 8080 pool1
|
||||
wait_for_loadbalancer_active lb1
|
||||
done
|
||||
|
||||
VIP_ADDRESS=$( neutron lbaas-loadbalancer-show lb1 -f value -c vip_address )
|
||||
neutron lbaas-loadbalancer-show lb1
|
||||
|
||||
echo -e "You can now perform a load test against this load balancer. " \
|
||||
"For example:\n ab -n 40000 -c 10000 http://${VIP_ADDRESS}/slow"
|
@ -1,133 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
GATE_DEST=$BASE/new
|
||||
|
||||
_DEVSTACK_LOCAL_CONFIG_TAIL=
|
||||
|
||||
# Inject config from hook
|
||||
function load_conf_hook {
|
||||
local hook="$1"
|
||||
local GATE_HOOKS=$GATE_DEST/octavia/octavia/tests/contrib/hooks
|
||||
|
||||
_DEVSTACK_LOCAL_CONFIG_TAIL+=$'\n'"$(cat $GATE_HOOKS/$hook)"
|
||||
}
|
||||
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin barbican https://opendev.org/openstack/barbican"$'\n'
|
||||
|
||||
# Allow testing against diskimage-builder changes with depends-on
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"LIBS_FROM_GIT+=,diskimage-builder"$'\n'
|
||||
|
||||
# Sort out our gate args
|
||||
. $(dirname "$0")/decode_args.sh
|
||||
|
||||
# Note: The check for OVH and limestone instances is temporary until they
|
||||
# resolve the KVM failures as logged here:
|
||||
# https://bugzilla.kernel.org/show_bug.cgi?id=192521
|
||||
# However, this may be resolved at OVH before the kernel bug is resolved.
|
||||
if $(egrep --quiet '(vmx|svm)' /proc/cpuinfo) && [[ ( ! $(hostname) =~ "ovh" && ! $(hostname) =~ "limestone" ) ]]; then
|
||||
export DEVSTACK_GATE_LIBVIRT_TYPE=kvm
|
||||
fi
|
||||
|
||||
function _setup_octavia_multinode {
|
||||
|
||||
PRIMARY_NODE_IP=$(cat /etc/nodepool/primary_node_private)
|
||||
SUBNODE_IP=$(head -n1 /etc/nodepool/sub_nodes_private)
|
||||
|
||||
# OCTAVIA_CONTROLLER_IP_PORT_LIST are the ips inside the
|
||||
# lb-mgmt network that the amphoras reach via heartbeats
|
||||
COMMON_MULTINODE_CONFIG="
|
||||
OCTAVIA_USE_PREGENERATED_CERTS=True
|
||||
OCTAVIA_USE_PREGENERATED_SSH_KEY=True
|
||||
OCTAVIA_CONTROLLER_IP_PORT_LIST=192.168.0.3:5555,192.168.0.4:5555
|
||||
|
||||
# Embedded fix for devstack bug/1629133 , this line can be removed once
|
||||
# that bug is fixed
|
||||
SUBNETPOOL_PREFIX_V4=10.0.0.0/16"$'\n'
|
||||
|
||||
export DEVSTACK_LOCAL_CONFIG+="$COMMON_MULTINODE_CONFIG
|
||||
OCTAVIA_NODE=main
|
||||
OCTAVIA_NODES=main:$PRIMARY_NODE_IP,second:$SUBNODE_IP
|
||||
enable_service o-api-ha
|
||||
OCTAVIA_MGMT_PORT_IP=192.168.0.3"$'\n'
|
||||
|
||||
export DEVSTACK_SUBNODE_CONFIG+="$COMMON_MULTINODE_CONFIG
|
||||
OCTAVIA_NODE=second
|
||||
enable_plugin octavia https://opendev.org/openstack/octavia
|
||||
OCTAVIA_MGMT_PORT_IP=192.168.0.4"$'\n'
|
||||
}
|
||||
|
||||
function _setup_octavia {
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"OCTAVIA_DIB_TRACING=True"$'\n'
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin octavia https://opendev.org/openstack/octavia"$'\n'
|
||||
# Use infra's cached version of the file
|
||||
if [ -f /opt/stack/new/devstack/files/get-pip.py ]; then
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"DIB_REPOLOCATION_pip_and_virtualenv=file:///opt/stack/new/devstack/files/get-pip.py"$'\n'
|
||||
fi
|
||||
if [ "$testenv" != "apiv1" ]; then
|
||||
ENABLED_SERVICES+="octavia,o-cw,o-hk,o-hm,o-api,"
|
||||
if [ "$DEVSTACK_GATE_TOPOLOGY" == "multinode" ]; then
|
||||
_setup_octavia_multinode
|
||||
fi
|
||||
fi
|
||||
if [ "$testenv" = "apiv1" ]; then
|
||||
load_conf_hook apiv1
|
||||
fi
|
||||
|
||||
if [ "$testenv" = "scenario" ]; then
|
||||
load_conf_hook scenario
|
||||
fi
|
||||
}
|
||||
|
||||
# Make sure lbaasv2 is listed as enabled for tempest
|
||||
load_conf_hook api_extensions
|
||||
|
||||
case "$testtype" in
|
||||
|
||||
"dsvm-functional")
|
||||
PROJECT_NAME=octavia
|
||||
OCTAVIA_PATH=$GATE_DEST/$PROJECT_NAME
|
||||
IS_GATE=True
|
||||
USE_CONSTRAINT_ENV=False
|
||||
export LOG_COLOR=False
|
||||
source "$OCTAVIA"/tools/configure_for_lbaas_func_testing.sh
|
||||
|
||||
# Make the workspace owned by the stack user
|
||||
sudo chown -R "$STACK_USER":"$STACK_USER" "$BASE"
|
||||
|
||||
configure_host_for_lbaas_func_testing
|
||||
;;
|
||||
|
||||
"tempest")
|
||||
# These are not needed with either v1 or v2
|
||||
ENABLED_SERVICES+="-c-api,-c-bak,-c-sch,-c-vol,-cinder,"
|
||||
ENABLED_SERVICES+="-s-account,-s-container,-s-object,-s-proxy,"
|
||||
|
||||
if [ "$testenv" != "scenario" ]; then
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"DISABLE_AMP_IMAGE_BUILD=True"$'\n'
|
||||
# Not needed for API tests
|
||||
ENABLED_SERVICES+="-horizon,-ceilometer-acentral,-ceilometer-acompute,"
|
||||
ENABLED_SERVICES+="-ceilometer-alarm-evaluator,-ceilometer-alarm-notifier,"
|
||||
ENABLED_SERVICES+="-ceilometer-anotification,-ceilometer-api,"
|
||||
ENABLED_SERVICES+="-ceilometer-collector,"
|
||||
fi
|
||||
|
||||
if [ "$lbaasdriver" = "namespace" ]; then
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"NEUTRON_LBAAS_SERVICE_PROVIDERV2=LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default"$'\n'
|
||||
fi
|
||||
|
||||
if [ "$lbaasdriver" = "octavia" ]; then
|
||||
_setup_octavia
|
||||
fi
|
||||
|
||||
export ENABLED_SERVICES
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"$_DEVSTACK_LOCAL_CONFIG_TAIL"
|
||||
"$GATE_DEST"/devstack-gate/devstack-vm-gate.sh
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unrecognized test type $testtype".
|
||||
exit 1
|
||||
;;
|
||||
esac
|
@ -1 +0,0 @@
|
||||
NETWORK_API_EXTENSIONS="all,lbaasv2"
|
@ -1,8 +0,0 @@
|
||||
[[post-config|/etc/octavia/octavia.conf]]
|
||||
[DEFAULT]
|
||||
debug = True
|
||||
|
||||
[controller_worker]
|
||||
amphora_driver = amphora_noop_driver
|
||||
compute_driver = compute_noop_driver
|
||||
network_driver = network_noop_driver
|
@ -1,3 +0,0 @@
|
||||
[[post-config|/etc/octavia/octavia.conf]]
|
||||
[DEFAULT]
|
||||
debug = True
|
@ -1,134 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"net"
|
||||
"net/http"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
var sess_cookie http.Cookie
|
||||
var resp string
|
||||
|
||||
type ConnectionCount struct {
|
||||
mu sync.Mutex
|
||||
cur_conn int
|
||||
max_conn int
|
||||
total_conn int
|
||||
packets int
|
||||
}
|
||||
|
||||
var scoreboard ConnectionCount
|
||||
|
||||
func (cc *ConnectionCount) open() {
|
||||
cc.mu.Lock()
|
||||
defer cc.mu.Unlock()
|
||||
|
||||
cc.cur_conn++
|
||||
cc.total_conn++
|
||||
}
|
||||
|
||||
func (cc *ConnectionCount) close() {
|
||||
cc.mu.Lock()
|
||||
defer cc.mu.Unlock()
|
||||
|
||||
if cc.cur_conn > cc.max_conn {
|
||||
cc.max_conn = cc.cur_conn
|
||||
}
|
||||
cc.cur_conn--
|
||||
}
|
||||
|
||||
func (cc *ConnectionCount) stats() (int, int, int) {
|
||||
cc.mu.Lock()
|
||||
defer cc.mu.Unlock()
|
||||
|
||||
return cc.max_conn, cc.total_conn, cc.packets
|
||||
}
|
||||
|
||||
func (cc *ConnectionCount) inc() {
|
||||
cc.mu.Lock()
|
||||
defer cc.mu.Unlock()
|
||||
|
||||
cc.packets++
|
||||
}
|
||||
|
||||
func (cc *ConnectionCount) reset() {
|
||||
cc.mu.Lock()
|
||||
defer cc.mu.Unlock()
|
||||
|
||||
cc.max_conn = 0
|
||||
cc.total_conn = 0
|
||||
cc.packets = 0
|
||||
}
|
||||
|
||||
func root_handler(w http.ResponseWriter, r *http.Request) {
|
||||
scoreboard.open()
|
||||
defer scoreboard.close()
|
||||
|
||||
http.SetCookie(w, &sess_cookie)
|
||||
io.WriteString(w, resp)
|
||||
}
|
||||
|
||||
func slow_handler(w http.ResponseWriter, r *http.Request) {
|
||||
scoreboard.open()
|
||||
defer scoreboard.close()
|
||||
|
||||
delay, err := time.ParseDuration(r.URL.Query().Get("delay"))
|
||||
if err != nil {
|
||||
delay = 3 * time.Second
|
||||
}
|
||||
|
||||
time.Sleep(delay)
|
||||
http.SetCookie(w, &sess_cookie)
|
||||
io.WriteString(w, resp)
|
||||
}
|
||||
|
||||
func stats_handler(w http.ResponseWriter, r *http.Request) {
|
||||
http.SetCookie(w, &sess_cookie)
|
||||
max_conn, total_conn, packets := scoreboard.stats()
|
||||
fmt.Fprintf(w, "max_conn=%d\ntotal_conn=%d\npackets=%d\n", max_conn, total_conn, packets)
|
||||
}
|
||||
|
||||
func reset_handler(w http.ResponseWriter, r *http.Request) {
|
||||
http.SetCookie(w, &sess_cookie)
|
||||
scoreboard.reset()
|
||||
fmt.Fprintf(w, "reset\n")
|
||||
}
|
||||
|
||||
func udp_handler(port *int) {
|
||||
ServerConn, _ := net.ListenUDP("udp", &net.UDPAddr{IP: []byte{0, 0, 0, 0}, Port: *port, Zone: ""})
|
||||
defer ServerConn.Close()
|
||||
buf := make([]byte, 1024)
|
||||
for {
|
||||
n, addr, _ := ServerConn.ReadFromUDP(buf)
|
||||
scoreboard.inc()
|
||||
fmt.Println("Received ", string(buf[0:n]), " from ", addr)
|
||||
ServerConn.WriteTo([]byte(resp), addr)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
portPtr := flag.Int("port", 8080, "TCP port to listen on")
|
||||
idPtr := flag.String("id", "1", "Server ID")
|
||||
udpPortPtr := flag.Int("udpPort", -1, "UDP port to listen on. If port <=0 UDP server won't start")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
resp = fmt.Sprintf("%s", *idPtr)
|
||||
sess_cookie.Name = "JSESSIONID"
|
||||
sess_cookie.Value = *idPtr
|
||||
|
||||
http.HandleFunc("/", root_handler)
|
||||
http.HandleFunc("/slow", slow_handler)
|
||||
http.HandleFunc("/stats", stats_handler)
|
||||
http.HandleFunc("/reset", reset_handler)
|
||||
portStr := fmt.Sprintf(":%d", *portPtr)
|
||||
if *udpPortPtr > 0 {
|
||||
// only start server if flag is set
|
||||
go udp_handler(udpPortPtr)
|
||||
}
|
||||
http.ListenAndServe(portStr, nil)
|
||||
}
|
@ -1,87 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -xe
|
||||
|
||||
TEMPEST_CONFIG_DIR="$BASE/new/tempest/etc"
|
||||
SCRIPTS_DIR="/usr/os-testr-env/bin"
|
||||
OCTAVIA_DIR="$BASE/new/octavia"
|
||||
|
||||
# Sort out our gate args
|
||||
. $(dirname "$0")/decode_args.sh
|
||||
|
||||
if [ "$testenv" = "apiv1" ]; then
|
||||
case "$lbaasenv" in
|
||||
minimal)
|
||||
# Temporarily just do the happy path
|
||||
test_subset="octavia.tests.tempest.v2.api.test_load_balancers_non_admin.LoadBalancersTestJSON.test_create_load_balancer(?!_) "
|
||||
test_subset+="octavia.tests.tempest.v2.api.test_load_balancers_non_admin.LoadBalancersTestJSON.test_get_load_balancer_stats(?!_) "
|
||||
test_subset+="octavia.tests.tempest.v2.api.test_load_balancers_non_admin.LoadBalancersTestJSON.test_get_load_balancer_status_tree(?!_) "
|
||||
test_subset+="octavia.tests.tempest.v2.api.test_listeners_non_admin.ListenersTestJSON.test_create_listener(?!_) "
|
||||
test_subset+="octavia.tests.tempest.v2.api.test_pools_non_admin.TestPools.test_create_pool(?!_) "
|
||||
test_subset+="octavia.tests.tempest.v2.api.test_members_non_admin.MemberTestJSON.test_add_member(?!_) "
|
||||
test_subset+="octavia.tests.tempest.v2.api.test_health_monitors_non_admin.TestHealthMonitors.test_create_health_monitor(?!_)"
|
||||
;;
|
||||
healthmonitor)
|
||||
test_subset="health_monitor"
|
||||
;;
|
||||
listener)
|
||||
test_subset="listeners"
|
||||
;;
|
||||
loadbalancer)
|
||||
test_subset="load_balancers"
|
||||
;;
|
||||
member)
|
||||
test_subset="members"
|
||||
;;
|
||||
pool)
|
||||
test_subset="pools"
|
||||
;;
|
||||
scenario)
|
||||
testenv="scenario"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
function generate_testr_results {
|
||||
# Give job user rights to access tox logs
|
||||
sudo -H -u "$owner" chmod o+rw .
|
||||
if [ -d ".stestr" ] ; then
|
||||
sudo -H -u "$owner" chmod o+rw -R .stestr
|
||||
if [ -f ".stestr/0" ] ; then
|
||||
stestr last --subunit > ./testrepository.subunit
|
||||
$SCRIPTS_DIR/subunit2html ./testrepository.subunit testr_results.html
|
||||
gzip -9 ./testrepository.subunit
|
||||
gzip -9 ./testr_results.html
|
||||
sudo mv ./*.gz /opt/stack/logs/
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
case $testtype in
|
||||
"dsvm-functional")
|
||||
owner=stack
|
||||
sudo_env=
|
||||
;;
|
||||
"tempest")
|
||||
owner=tempest
|
||||
# Configure the api and scenario tests to use the tempest.conf set by devstack
|
||||
sudo_env="TEMPEST_CONFIG_DIR=$TEMPEST_CONFIG_DIR"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Set owner permissions according to job's requirements.
|
||||
cd "$OCTAVIA_DIR"
|
||||
sudo chown -R $owner:stack "$OCTAVIA_DIR"
|
||||
|
||||
# Run tests
|
||||
echo "Running Octavia $testenv test suite"
|
||||
set +e
|
||||
|
||||
sudo -H -u $owner $sudo_env tox -e $testenv -- $test_subset
|
||||
|
||||
testr_exit_code=$?
|
||||
set -e
|
||||
|
||||
# Collect and parse results
|
||||
generate_testr_results
|
||||
exit $testr_exit_code
|
Loading…
x
Reference in New Issue
Block a user