I spent all day trying to get a 6.x-2 client to work with blade1.drupalfr.org. I used Ubuntu 8.04 Hardy as the OS. I tried at first to get it working with php5-xcache. It did several tests with successful RPC calls where it does both a "Test results successful sent" and "Test request successfull, received", until it tried sending after review.resetStatics(). Then it would decide to report on the client "When requesting next test, server responded: Invalid server". The master side reported "reason: Failed to install Drupal on @environment."

I did apt-get remove php5-xcache and ran it again, but the client had the debug checkbox checked. That resulted in the client and master both resporting success and enabled my client, but it turned out the drupal_checkout database's simpletest table only had 198, which meant it didn't do most of the testing.

After I disabled the debug checkbox on the client and ran without cache, it took about 2 hours to run and reported at the very end for final testing on the master side "reason: Failed on @environment, with: @pass pass, @fail fail, and @exception exception" and on the client I got "When requesting next test, server responded: Invalid server" again. There were about 11500 rows in the simpletest table.

Then I compiled APC, and ran it with apc.shm_size = 48. Really early on in the testing, I got "When requesting next test, server responded: Invalid server" on the client side again. In fact, the invalid key seems to be the only error I get on the client side no matter how I mod the configuration, it just comes up in different places. Perhaps we can improve the error message so it outputs the key that it's sending that apparently doesn't match? I'd sure like to know why exactly it's mis-matching, like maybe if there is accidental padding on the RPC string or something that gets parsed as part of the key incorrectly.

The following was how I configured the server, minus the APC and xcache parts:

This is mostly a cleaned up recounting of my .bash_history files.

As root, execute the following on commandline for a fresh install of Ubuntu 8.04 Hardy:

apt-get update
apt-get upgrade
apt-get install build-essential mysql-server apache2 apache2-threaded-dev php5 php5-cgi php5-cli php5-gd php5-common php-pear php5-curl php5-mysql cvs curl php5-curl php5-suhosin php5-sqlite php5-mcrypt php5-pgsql php5-dev libapache2-mod-php5 gawk patch sqlite
a2enmod rewrite
a2enmod expires
/etc/init.d/apache2 force-reload
cd /var/www
vi phpinfo.php
cd /etc/php5/apache2/
vi php.ini
# change memory_limit = 256 and short_open_tag Off
cd ../cli
vi php.ini
# change memory_limit = 256 and short_open_tag Off
/etc/init.d/apache2 force-reload
adduser drupaltesting
cd /etc/apache2/sites-available/
cp default drupaltesting.deekayen.net
vi drupaltesting.deekayen.net
NameVirtualHost drupaltesting.deekayen.net
<VirtualHost *:80>
	ServerAdmin local@localhost
	ServerName drupaltesting.deekayen.net
	DirectoryIndex index.php
	
	DocumentRoot /home/drupaltesting/web/public
	<Directory />
		Options FollowSymLinks
		AllowOverride All
	</Directory>
	<Directory /home/drupaltesting/web/public>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined
	ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
a2ensite drupaltesting.deekayen.net
/etc/init.d/apache2 force-reload
vi default
NameVirtualHost *:80
<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	ServerName slice.deekayen.net
	
	DocumentRoot /var/www/
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined
	ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
/etc/init.d/apache2 force-reload
mysqladmin -u root -p create drupal
mysqladmin -u root -p create drupal_checkout
crontab -e
*/10 * * * * /usr/bin/wget -O - -q -t 1 http://drupaltesting.deekayen.net/cron.php

Now as the drupaltesting user, do:

mkdir web
cd web
cvs -d :pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib login
cvs -z6 -d :pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal checkout -r DRUPAL-6-12 drupal
mv drupal public
cd public
cd sites/all/modules
cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib checkout -r DRUPAL-6--1 -d cvs_deploy contributions/modules/cvs_deploy
cd ../..
mkdir drupaltesting.deekayen.net
cp default/default.settings.php  drupaltesting.deekayen.net/settings.php
cd drupaltesting.deekayen.net/
vi settings.php
$db_url = array();
$db_url['default'] = 'mysqli://username:password@localhost/drupal';
$db_url['pifr_checkout'] = 'mysqli://username:password@localhost/drupal_checkout';
mkdir files
cd files
mkdir checkout
chmod 777 files
cd files
chmod 777 checkout
cd ../../../
ln -s ./sites/drupaltesting.deekayen.net/files/checkout .
cd sites/drupaltesting.deekayen.net/modules/
cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib checkout -d project_issue_file_review contributions/modules/project_issue_file_review
exit

On the client, enable CVS Deploy, PIFR, and PIFR Client modules. Then get an account on the master server. Add a client of type Test on the master and copy the key to the client at admin/pifr/configuration. The client defaults are OK. Make sure all the command line tools have output at admin/pifr/client on the client.

Comments

deekayen’s picture

I tried with the latest SVN checkout of eaccelerator. It would get through "Detect invalid file URL.", then the client would request the next test and not do anything with it. I decided to downgrade because phpmyadmin would load the login screen without its normal CSS and then the next page would WSOD, which I knew was not right.

When downgrading to 0.9.5.3, I got all the way to "Detect test run failure. [reason: Failed to install Drupal on @environment.]" on the master with the client reporting "When requesting next test, server responded: Invalid server". I'm going to add some debugging locally and see if I can figure out what the invalid key messages are being passed around.

philipnet’s picture

To 'automatically' generate the phpinfo.php file:

cat > /var/www/phpinfo.php << EOF
<?php phpinfo(); ?>
EOF

Also, these lines will automatically amend the php.ini files:

cat /etc/php5/apache2/php.ini | sed 's|\(memory_limit = \).*|\1256M|' > /etc/php5/apache2/php.ini.new
cat /etc/php5/apache2/php.ini.new | sed 's|\(short_open_tag = \).*|\1off|' > /etc/php5/apache2/php.ini
cat /etc/php5/cli/php.ini | sed 's|\(memory_limit = \).*|\1256M|' > /etc/php5/cli/php.ini.new
cat /etc/php5/cli/php.ini.new | sed 's|\(short_open_tag = \).*|\1off|' > /etc/php5/cli/php.ini

Instead of cd ../..
it should be cd sites

Whilst

mkdir files
cd files
mkdir checkout
chmod 777 files
cd files
chmod 777 checkout

doesn't quite make sense, I think it can be simplified to

mkdir -p files/checkout
chmod 777 files/ -R

You also need a mkdir modules whilst at this point.

Cheers.

Phil L.

philipnet’s picture

Ah,

Also the drupaltesting.deekayen.net Apache file should be in sites-enabled and you need to delete/remove the 000-default file from the sites-enabled folder (it can just be moved to the sites-available folder)

Phil L.

deekayen’s picture

@philipnet: there are many other errors in what I pasted in the original issue comment. I've been updating it as I reproduced another client at http://deekayen.net/draft-how-create-pifr-6x2-client

deekayen’s picture

Category: support » feature
Priority: Normal » Minor
Status: Active » Needs review
StatusFileSize
new1.77 KB

As part of debugging "When requesting next test, server responded: Invalid server" when I had a valid key, I added some watchdog calls for debugging. They also seem to have stopped the invalid key errors. I don't know why, but my theory is by calling up the constant through the watchdog call before the xmlrpc call, it somehow refreshes it in memory so the xmlrpc call will be sure to have the right value. It's stupid, I know, but that's the only thing I can guess.

Anyway, I figure this additional message logging might at least be helpful for debugging that error message, whether they key is valid or not.

deekayen’s picture

Status: Needs review » Needs work

I still would like to have the patch's features added, but it didn't resolve the problem of receiving improper invalid key responses from the master. Once again, I just received "When requesting next test, server responded: Invalid server" after finishing the "Detect failing test" stage. The master side reported [reason: Run tests on @environment: @reason.] My patched version of the client xmlrpc file reported the correct client key in the debug message, however the server reports "Failed confirmation tests.". That usually only happened after doing tests, but now all the regular cron jobs to request the next test are reporting invalid server as well. I'll be patching http://drupaltesting.deekayen.net/ to log the xmlrpc incoming calls for keys to see if I can resolve this in a better way.

deekayen’s picture

StatusFileSize
new1.74 KB

I added these additional watchdog calls to http://drupaltesting.deekayen.net/

deekayen’s picture

Category: feature » support
Status: Needs work » Active

Nevermind on the previous patches, I prefer #504936: Do not use pifr_debug on client to use the built-in debugging. The problem I was experiencing is that my client was so slow the cron would expire the testing run before it finished. There was no error showing something going wrong with the tests themselves - I just had to actually take note that something earlier in the logs caused the client to report back a failure (because of the timeout), and that was what caused the next request to fail.

deekayen’s picture

Status: Active » Closed (fixed)

I think I'm done using this as a notepad.