diff options
Diffstat (limited to 'FS-Test/bin')
-rwxr-xr-x | FS-Test/bin/freeside-test-fetch | 43 | ||||
-rw-r--r-- | FS-Test/bin/freeside-test-run | 19 | ||||
-rwxr-xr-x | FS-Test/bin/freeside-test-start | 63 | ||||
-rwxr-xr-x | FS-Test/bin/freeside-test-stop | 45 |
4 files changed, 170 insertions, 0 deletions
diff --git a/FS-Test/bin/freeside-test-fetch b/FS-Test/bin/freeside-test-fetch new file mode 100755 index 000000000..ccc8528ff --- /dev/null +++ b/FS-Test/bin/freeside-test-fetch @@ -0,0 +1,43 @@ +#!/usr/bin/perl + +use strict; +use FS::Test; +use Getopt::Std; + +my %opt; + +my $username = 'test'; +my $password = 'test'; + +getopts('d:U:', \%opt); +die usage() unless $opt{d}; +my $test = FS::Test->new( dir => $opt{d} ); +$test->fsurl($opt{U}) if $opt{U}; + +my $testfile = $test->share_dir . '/ui_tests'; +open my $fh, '<', $testfile + or die "Couldn't read tests from '$testfile': $!\n"; +$test->fetch( <$fh> ); + +sub usage { + "Usage: $0 -d directory [ -U base_URI ]\n\n"; +} + +=head1 NAME + +freeside-test-fetch - download a list of UI pages for testing + +=head1 USAGE + +freeside-test-fetch -d /tmp/outputdir [ -U http://myserver/freeside ] + +=head1 ARGUMENTS + +-d: the directory to put the files in. Required. + +-U: the URL prefix for the Freeside server. Defaults to +"http://localhost/freeside". + +The list of tests is in the 'ui_tests' file included with FS::Test. + +=cut diff --git a/FS-Test/bin/freeside-test-run b/FS-Test/bin/freeside-test-run new file mode 100644 index 000000000..e709641c1 --- /dev/null +++ b/FS-Test/bin/freeside-test-run @@ -0,0 +1,19 @@ +#!/bin/bash + +set -ae + +tempdir=$( mktemp -d freeside-test.XXXX ) +sharedir=$(perl -MFS::Test -e "print FS::Test::share_dir()") + +echo "Starting test mode." +freeside-test-start +echo "Saving results to $tempdir." +freeside-test-fetch -d $tempdir +echo "Exiting test mode." +freeside-test-stop || true + +diffname=freeside-test.`date +%Y%m%d`.diff +echo "Writing diff to $diffname." +diff -urb "$tempdir" "$sharedir/output" > $diffname +diffstat -C $diffname + diff --git a/FS-Test/bin/freeside-test-start b/FS-Test/bin/freeside-test-start new file mode 100755 index 000000000..197a84702 --- /dev/null +++ b/FS-Test/bin/freeside-test-start @@ -0,0 +1,63 @@ +#!/bin/bash + +VERSION='3.8.1' + +set -ae + +echo "Stopping services." +sudo service freeside stop +sudo service apache2 stop + +newname=freeside_`date +%Y%m%d` +sharedir=$(perl -MFS::Test -e "print FS::Test::share_dir()") + +# get company_name from existing DB, strip whitespace +# (if there is no existing DB, continue anyway) +testdbmarker=$(sudo -u freeside \ + psql -tc 'select value from conf where name='\'company_name''\' | \ + sed "s/^ //" \ + || true +) + +createdb=YES + +if psql -l |grep -q '^ *freeside '; then + if [ "$testdbmarker" = "Freeside Test $VERSION" ]; then + createdb=NO + echo "Freeside test database found." + else + echo "Renaming database to $newname." + psql postgres -c "ALTER DATABASE freeside RENAME TO $newname" + fi +fi + +if [ $createdb = YES ]; then + echo "Creating new database from stock schema." + createdb --owner=freeside freeside + sudo -u freeside psql freeside -q -f $sharedir/test.sql > /dev/null +fi + +if [ -f /usr/local/etc/freeside/htpasswd ]; then + newhtpasswd=htpasswd_`date +%Y%m%d` + echo "Renaming htpasswd to $newhtpasswd." + sudo mv /usr/local/etc/freeside/htpasswd /usr/local/etc/freeside/$newhtpasswd +fi + +echo "Installing new htpasswd." +sudo cp $sharedir/htpasswd /usr/local/etc/freeside/htpasswd + +newtime=$(sudo -u freeside \ + psql -tc 'SELECT to_timestamp(max(_date) + 86400) FROM cust_bill' \ +) +echo "Setting clock to $newtime." +sudo date -s "$newtime" + +#echo "Applying upgrades." +#sudo -u freeside freeside-upgrade test +# shouldn't happen automatically + +# start Apache on a future date when all of the invoice dates are in the past +echo "Restarting Apache." +sudo service apache2 start + +echo "Done." diff --git a/FS-Test/bin/freeside-test-stop b/FS-Test/bin/freeside-test-stop new file mode 100755 index 000000000..50668907c --- /dev/null +++ b/FS-Test/bin/freeside-test-stop @@ -0,0 +1,45 @@ +#!/bin/bash + +set -ae + +echo "Stopping Apache." +sudo service apache2 stop + +echo "Resetting clock." +sudo hwclock --hctosys + +newname=freeside_test_`date +%Y%m%d` +if psql -l |grep -q '^ *freeside '; then + echo "Renaming test database to $newname." + psql postgres -c "ALTER DATABASE freeside RENAME TO $newname" +fi + +if (sudo grep -q '^test:' /usr/local/etc/freeside/htpasswd); then + newhtpasswd=htpasswd_test_`date +%Y%m%d` + echo "Renaming htpasswd to $newhtpasswd." + sudo mv /usr/local/etc/freeside/htpasswd /usr/local/etc/freeside/$newhtpasswd + oldhtpasswd=$( cd /usr/local/etc/freeside; \ + ls |grep -P 'htpasswd_\d{8}' | \ + sort -nr |head -1 ) + if [ -f $oldhtpasswd ]; then + echo "Renaming $oldhtpasswd to htpasswd." + sudo mv /usr/local/etc/freeside/$oldhtpasswd \ + /usr/local/etc/freeside/htpasswd + fi +fi + +oldname=$( psql -tl | \ + cut -d '|' -f 1 | \ + tr -d ' ' | \ + grep -P 'freeside_\d{8}' | \ + sort -nr | head -1 ) + +if [ -n "$oldname" ]; then + echo "Renaming $oldname to freeside." + psql postgres -c "ALTER DATABASE $oldname RENAME TO freeside" + echo "Restarting services." + sudo service apache2 restart + sudo service freeside restart +fi + +echo "Done." |