Skip to content

Commit

Permalink
Merge pull request #13262 from nik9000/package_test_for_script_and_te…
Browse files Browse the repository at this point in the history
…mplate

Packaging test for filesystem scripts
  • Loading branch information
nik9000 committed Sep 16, 2015
2 parents 29165c5 + 8d02efd commit 037a758
Show file tree
Hide file tree
Showing 12 changed files with 209 additions and 115 deletions.
Expand Up @@ -34,6 +34,8 @@ load tar

setup() {
skip_not_tar_gz
export ESHOME=/tmp/elasticsearch
export_elasticsearch_paths
}

##################################
Expand Down Expand Up @@ -74,6 +76,11 @@ setup() {
# Check that Elasticsearch is working
##################################
@test "[TAR] test elasticsearch" {
# Install scripts used to test script filters and search templates before
# starting Elasticsearch so we don't have to wait for elasticsearch to scan for
# them.
install_elasticsearch_test_scripts

start_elasticsearch_service

run_elasticsearch_tests
Expand Down
Expand Up @@ -31,10 +31,12 @@

# Load test utilities
load packaging_test_utils
load os_package

# Cleans everything for the 1st execution
setup() {
skip_not_dpkg
export_elasticsearch_paths
}

##################################
Expand Down Expand Up @@ -79,8 +81,11 @@ setup() {
}

@test "[DEB] test elasticsearch" {
# Install scripts used to test script filters and search templates before
# starting Elasticsearch so we don't have to wait for elasticsearch to scan for
# them.
install_elasticsearch_test_scripts
start_elasticsearch_service

run_elasticsearch_tests
}

Expand Down Expand Up @@ -133,6 +138,8 @@ setup() {
}

@test "[DEB] purge package" {
# User installed scripts aren't removed so we'll just get them ourselves
rm -rf $ESSCRIPTS
dpkg --purge 'elasticsearch'
}

Expand Down
Expand Up @@ -30,10 +30,12 @@

# Load test utilities
load packaging_test_utils
load os_package

# Cleans everything for the 1st execution
setup() {
skip_not_rpm
export_elasticsearch_paths
}

##################################
Expand Down Expand Up @@ -74,12 +76,17 @@ setup() {
}

@test "[RPM] test elasticsearch" {
# Install scripts used to test script filters and search templates before
# starting Elasticsearch so we don't have to wait for elasticsearch to scan for
# them.
install_elasticsearch_test_scripts
start_elasticsearch_service

run_elasticsearch_tests
}

@test "[RPM] remove package" {
# User installed scripts aren't removed so we'll just get them ourselves
rm -rf $ESSCRIPTS
rpm -e 'elasticsearch'
}

Expand Down
Expand Up @@ -30,11 +30,13 @@

# Load test utilities
load packaging_test_utils
load os_package

# Cleans everything for the 1st execution
setup() {
skip_not_systemd
skip_not_dpkg_or_rpm
export_elasticsearch_paths
}

@test "[SYSTEMD] install elasticsearch" {
Expand All @@ -61,10 +63,12 @@ setup() {
}

@test "[SYSTEMD] start" {
# Install scripts used to test script filters and search templates before
# starting Elasticsearch so we don't have to wait for elasticsearch to scan for
# them.
install_elasticsearch_test_scripts
systemctl start elasticsearch.service

wait_for_elasticsearch_status

assert_file_exist "/var/run/elasticsearch/elasticsearch.pid"
}

Expand Down
Expand Up @@ -30,11 +30,13 @@

# Load test utilities
load packaging_test_utils
load os_package

# Cleans everything for the 1st execution
setup() {
skip_not_sysvinit
skip_not_dpkg_or_rpm
export_elasticsearch_paths
}

@test "[INIT.D] remove any leftover configuration to start elasticsearch on restart" {
Expand Down Expand Up @@ -64,10 +66,12 @@ setup() {
}

@test "[INIT.D] start" {
# Install scripts used to test script filters and search templates before
# starting Elasticsearch so we don't have to wait for elasticsearch to scan for
# them.
install_elasticsearch_test_scripts
service elasticsearch start

wait_for_elasticsearch_status

assert_file_exist "/var/run/elasticsearch/elasticsearch.pid"
}

Expand Down
Expand Up @@ -32,6 +32,7 @@

# Load test utilities
load packaging_test_utils
load os_package

# Cleans everything for the 1st execution
setup() {
Expand All @@ -50,7 +51,7 @@ setup() {
@test "[UPGRADE] check elasticsearch version is old version" {
curl -s localhost:9200 | grep \"number\"\ :\ \"$(cat upgrade_from_version)\" || {
echo "Installed an unexpected version:"
curl localhost:9200
curl -s localhost:9200
false
}
}
Expand Down
@@ -0,0 +1 @@
_source['title'] == 'Elasticsearch - The Definitive Guide'
@@ -0,0 +1,7 @@
{
"query": {
"script": {
"script_file": "is_guide"
}
}
}
109 changes: 109 additions & 0 deletions qa/vagrant/src/test/resources/packaging/scripts/os_package.bash
@@ -0,0 +1,109 @@
#!/bin/sh

# This file contains some utilities to test the elasticsearch scripts with
# the .deb/.rpm packages.

# WARNING: This testing file must be executed as root and can
# dramatically change your system. It removes the 'elasticsearch'
# user/group and also many directories. Do not execute this file
# unless you know exactly what you are doing.

# Licensed to Elasticsearch under one or more contributor
# license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright
# ownership. Elasticsearch licenses this file to you 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.


# Export some useful paths.
export_elasticsearch_paths() {
export ESHOME="/usr/share/elasticsearch"
export ESPLUGINS="$ESHOME/plugins"
export ESCONFIG="/etc/elasticsearch"
export ESSCRIPTS="$ESCONFIG/scripts"
export ESDATA="/var/lib/elasticsearch"
export ESLOG="/var/log/elasticsearch"
export ESPIDDIR="/var/run/elasticsearch"
}

# Install the rpm or deb package.
# -u upgrade rather than install. This only matters for rpm.
# -v the version to upgrade to. Defaults to the version under test.
install_package() {
local version=$(cat version)
local rpmCommand='-i'
while getopts ":uv:" opt; do
case $opt in
u)
rpmCommand='-U'
;;
v)
version=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
done
if is_rpm; then
rpm $rpmCommand elasticsearch-$version.rpm
elif is_dpkg; then
dpkg -i elasticsearch-$version.deb
else
skip "Only rpm or deb supported"
fi
}

# Checks that all directories & files are correctly installed after a deb or
# rpm install.
verify_package_installation() {
id elasticsearch

getent group elasticsearch

assert_file "$ESHOME" d root 755
assert_file "$ESHOME/bin" d root 755
assert_file "$ESHOME/lib" d root 755
assert_file "$ESCONFIG" d root 755
assert_file "$ESCONFIG/elasticsearch.yml" f root 644
assert_file "$ESCONFIG/logging.yml" f root 644
assert_file "$ESDATA" d elasticsearch 755
assert_file "$ESLOG" d elasticsearch 755
assert_file "$ESPLUGINS" d elasticsearch 755
assert_file "$ESPIDDIR" d elasticsearch 755
assert_file "$ESHOME/NOTICE.txt" f root 644
assert_file "$ESHOME/README.textile" f root 644

if is_dpkg; then
# Env file
assert_file "/etc/default/elasticsearch" f root 644

# Doc files
assert_file "/usr/share/doc/elasticsearch" d root 755
assert_file "/usr/share/doc/elasticsearch/copyright" f root 644
fi

if is_rpm; then
# Env file
assert_file "/etc/sysconfig/elasticsearch" f root 644
# License file
assert_file "/usr/share/elasticsearch/LICENSE.txt" f root 644
fi

if is_systemd; then
assert_file "/usr/lib/systemd/system/elasticsearch.service" f root 644
assert_file "/usr/lib/tmpfiles.d/elasticsearch.conf" f root 644
assert_file "/usr/lib/sysctl.d/elasticsearch.conf" f root 644
fi
}

0 comments on commit 037a758

Please sign in to comment.