{/doc/acs-automated-testing/ {ACS Automated Testing}} {Usage} Usage

Usage

by Joel Aufrecht

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

Here's the entire chain of code used to set up auto-rebuilding servers on test.openacs.org

  • The master server shows the status of all other servers. For test.openacs.org, it listens on port 80.

    1. The acs-automated-testing parameter IsInstallReportServer is set to 1

    2. The acs-automated-testing parameter XMLReportDir is set to /var/log/openacs-install. This is arbitrary - it just needs to be somewhere all the servers can write to.

  • For each server that will be monitored:

    1. Suppose the first test server is service1. Set up a dedicated user and automated install script.

    2. To run automated testing automatically each time the server is rebuilt, add this to /home/service1/install/install.tcl:

             set do_tclapi_testing "yes"
    3. Get the results of the automated tests dumped where the master server can see them - in this example, the same directory as above, /var/log/openacs-install, by adding this to install.tcl (requires 5.1):

                set install_xml_file          "/var/lib/aolserver/service0/packages/acs-core-docs/www/files/install-autotest.xml"

      This will copy in the file install-autotest.xml:

      <?xml version="1.0"?>
      
      <!-- This is an install.xml which can be used to configure servers for reporting their automated test results.  Requires acs-automated-testing 5.1.0b2 or better -->
      
      <application name="acs-automated-testing" pretty-name="Automated Testing" home="http://openacs.org/">
      
        <actions>
      
          <set-parameter package="acs-automated-testing" name="XMLReportDir" value="/var/log/openacs-install"/>
        </actions>
      
      </application>
      

      which will, during install, configure that parameter in acs-automated-testing on the monitored server.

  • To enable the 'rebuild server' link, edit the file /usr/local/bin/rebuild-server.sh:

    #!/bin/sh
    # script to trigger a server rebuild
    
    # hard-coding the valid server names here for some minimal security
    case $1 in
        service1) ;;
        service2) ;;
        *)
            echo "Usage: $0 servername"
            exit;;
    esac
    
    sudo /home/$1/install/install.sh 2>&1

    and allow the master user to execute this file as root (this is a limitation of the automatic install script, which must be root). In /etc/sudoers, include a line:

    master ALL = NOPASSWD: /usr/local/bin/rebuild-server.sh