summaryrefslogtreecommitdiff
path: root/FS-Test/bin
diff options
context:
space:
mode:
Diffstat (limited to 'FS-Test/bin')
-rwxr-xr-xFS-Test/bin/freeside-test-fetch43
-rw-r--r--FS-Test/bin/freeside-test-run19
-rwxr-xr-xFS-Test/bin/freeside-test-start63
-rwxr-xr-xFS-Test/bin/freeside-test-stop45
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."