#!/usr/bin/env python ## $Id$ from testbase import * import urllib, random # Test makes sure that testing framework is sane: # # - executables compiled # - cgi server works # - test proxy works # - mysql permissions and command-line client works def read_url(url, quiet=False): '''return 1 line from url''' verbose_echo(2, " reading url: "+url) err = '' try: return urllib.URLopener().open(url).readline().strip() except IOError, e: err = e except AttributeError: # Python urllib is buggy if connection is closed (by our proxy # intentionally) right after opened pass if not quiet: error("couldn't access url: %s %s" % (url, err)) else: verbose_echo(2, "couldn't access url: %s %s" % (url, err)) return '' if __name__ == '__main__': test_msg("framework sanity") # verbose_echo(1, "Checking executables") # check_core_client_executable() # check_app_executable("upper_case") # check_app_executable("concat") # check_app_executable("1sec") verbose_echo(1, "Checking directories") for d in ['projects_dir', 'cgi_dir', 'html_dir', 'hosts_dir']: dir = options.__dict__[d] if not os.path.isdir(dir): error("%s doesn't exist: %s" % (d, dir)) magic = "Foo %x Bar" % random.randint(0,2**16) html_path = os.path.join(options.html_dir, 'test_sanity.txt') html_url = os.path.join(options.html_url, 'test_sanity.txt') html_proxy_url = proxerize(html_url) cgi_path = os.path.join(options.cgi_dir, 'test_sanity_cgi') cgi_url = os.path.join(options.cgi_url, 'test_sanity_cgi') verbose_echo(1, "Checking webserver setup: non-cgi") print >>open(html_path,'w'), magic if read_url(html_url) != magic: error("couldn't access a file I just wrote: "+html_path+"\n using url: "+html_url) verbose_echo(1, "Checking proxy setup") if read_url(html_proxy_url, quiet=True): error("Another proxy already running") else: proxy = Proxy('') if read_url(html_proxy_url) != magic: error("couldn't access file using proxy url: "+html_proxy_url) else: proxy.stop() proxy = Proxy('close_connection if $nconnections < 2') if read_url(html_proxy_url, quiet=True): error("Proxy should have closed connection #1") if read_url(html_proxy_url) != magic: error("Proxy should have allowed connection #2") proxy.stop() os.unlink(html_path) verbose_echo(1, "Checking webserver setup: cgi") print >>open(cgi_path,'w'), '''#!/bin/sh echo "Content-Type: text/plain" echo "" echo "%s" ''' % magic os.chmod(cgi_path, 0755) if read_url(cgi_url) != magic: error("couldn't access a cgi file I just wrote: "+cgi_path+"\n using url: "+cgi_url) os.unlink(cgi_path) database_name = 'boinc_test_sanity_mysql_%s_%d'%( os.environ['USER'], random.randint(0,2**16)) # create and drop a database verbose_echo(1, "Checking mysql commandline and permissions") shell_call('echo "create database %s" | mysql' % database_name) shell_call('echo "drop database %s" | mysql' % database_name)