From Fedora Project Wiki

(Add some rough instructions for setting up autotest)
No edit summary
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{lang|en|zh-cn|page=Autotest}}
{{header|qa}}
{{header|qa}}
{{draft}}


== What is autotest? ==
== What is autotest? ==


Autotest is "a framework for automated testing". It gives us a way to run automated tests and collect results. For more information, see their wiki: http://autotest.kernel.org/
Autotest is "a framework for automated testing". It gives us a way to run automated tests and collect results. For more information, see their wiki: https://github.com/autotest/autotest/wiki


== How is it used in Fedora? ==
== How is it used in Fedora? ==
Line 10: Line 11:
We're currently using it as the test harness for [[AutoQA]]. It handles the dirty work of getting code onto test machines, running it, and holding all the results.
We're currently using it as the test harness for [[AutoQA]]. It handles the dirty work of getting code onto test machines, running it, and holding all the results.


Currently there is no public autotest instance. The [[QA]] team has been working on [https://fedorahosted.org/autoqa/ticket/9 packaging autotest] for use in the Fedora infrastructure.
Currently there is a public autotest instance running at http://autoqa.fedoraproject.org. This instance is hosted by the [[Infrastructure]] team and managed by [[QA]] team. It is not integrated with Fedora account system, so public access to the autotest scheduler web-frontend is not enabled. However, test results are available and links to results are included in all [https://fedorahosted.org/mailman/listinfo/autoqa-results test result emails].
 
The [[AutoQA]] project is starting out by using it to automate some existing tests (like <code>repoclosure</code> from {{package|yum-utils}}) and some new tests from the [[Israwhidebroken.com Proposal]].
 
== How do I write a test for autotest? ==
 
Start by writing some test code in whatever language(s) you feel comfortable with. Don't even worry about autotest or [[AutoQA]] until you have a functioning test. Once you do, see [[Writing AutoQA Tests]] for more info.
 
== How do I set up my own autotest server? ==
 
{{admon/note|Docs in progress|See [https://fedorahosted.org/autoqa/ticket/5 this trac ticket] for more details.}}
 
Autotest is currently packaged for [[EPEL]], but due to library dependencies, the package is not yet available for Fedora.  The following section describes how autotest is installed on a Red Hat Enterprise 5 (or CentOS 5) system using the [[EPEL]] packages.


# Setup the require package repositories
== How to ... ==
## Configure your system to receive RHEL or CentOS package updates through the update mechanism provided by the distribution (e.g. for RHEL, run {{command|rhn_register}}).
## Configure the system to receive updates from EPEL, for more information see [[EPEL/FAQ#howtouse]]
## Create a yum repo for the fedora-infrastructure package repository
##: <pre>
##: # cat << EOF > /etc/yum.repos.d/fedora-infra.repo
##: [fedora-infra]
##: name=fedora-infra
##: baseurl=http://infrastructure.fedoraproject.org/5/\$basearch
##: gpgcheck=0
##: EOF
# Download the latest autotest and the required Django packages:
#: <pre>
#: # wget http://jkeating.fedorapeople.org/infra/autotest-0.11.0-1.el5.noarch.rpm \
#: http://jkeating.fedorapeople.org/infra/Django-0.96-1.20071126svn.ep5.el5.noarch.rpm \
#: http://jkeating.fedorapeople.org/infra/autotest-0.11.0-1.el5.noarch.rpm </pre>
# Install the packages using {{command|yum}} to assist with dependency resolution
#: <pre>
#: # yum --nogpgcheck localinstall autotest-*.rpm Django-0.96*.rpm</pre>
# Start and enable the httpd
#: <pre>
#: # service httpd restart
#: # chkconfig httpd on</pre>
# ''(optional)'' - Autotest requires access to a mysql server.  You can use an existing server, or setup a new mysql server using the instructions below.
## Install and setup mysql server
##: <pre>
##: # yum install mysql-server
##: # chkconfig mysqld on
##: # service mysqld start</pre>
## Setup a password for the ''root'' database user.  Please use a password other than ''NEWPASSWORD''.
##: <pre>
##: # mysqladmin -u root password NEWPASSWORD</pre>
# Using the {{command|mysql}} command, login to the root database using the password specified above
#: <pre>
#:$ mysql -u root -p</pre>
# Create the databases and user accounts needed by autotest using the following SQL commands.  Again, please use a password other than ''NEWPASSWORD''.
#: <pre>
#: create database autotest_web;
#: grant all privileges on autotest_web.* TO 'autotest'@'localhost' identified by 'NEWPASSWORD';
#: grant SELECT on autotest_web.* TO 'nobody'@'%';
#: grant SELECT on autotest_web.* TO 'nobody'@'localhost';
#: create database tko;
#: grant all privileges on tko.* TO 'autotest'@'localhost' identified by 'NEWPASSWORD';
#: grant SELECT on tko.* TO 'nobody'@'%';
#: grant SELECT on tko.* TO 'nobody'@'localhost';
#: flush privileges;
#: exit;</pre>
# Update the autotest configuration files {{filename|/usr/share/autotest/global_config.ini}} and {{filename|/usr/share/autotest/shadow_config.ini}}, changing the values for ''password'', ''hostname'' and ''notify_email''.
# Run DB migration script to set up DB schemas and populate initial data.
#: <pre>
#: # python /usr/share/autotest/database/migrate.py --database=AUTOTEST_WEB sync
#: # python /usr/share/autotest/database/migrate.py --database=TKO sync</pre>
# Run the Django syncdb operation
#: <pre>
#: # /usr/share/autotest/frontend/manage.py syncdb --noinput</pre>
# Make sure that current database users have admin privileges
#: <pre>
#: # mysql -u root -p -e 'update autotest_web.auth_user set is_superuser=1;'</pre>


{{admon/note|Adding test clients|For any test clients created through the administrative interface, the autotest service requires passwordless logins in order to access remote test clients.  An RSA key has been created for the autotest user to facilitate passwordless logins.  For any test clients you wish to enable passwordless logins on, type:
* [[Install_and_configure_autotest|How to set up my own autotest server?]]
<pre># su - autotest
* [[How to add autotest clients]]?
# ssh-copy-id -i $HOME/.ssh/id_rsa.pub  root@client.example.com</pre>}}
* [[How to fix failed autotest clients]]?
* [[Writing AutoQA Tests|How to integrate existing tests?]]


[[Category:QA]]
[[Category:AutoQA]]
[[Category:AutoQA]]

Latest revision as of 04:18, 3 June 2013

QA.png


What is autotest?

Autotest is "a framework for automated testing". It gives us a way to run automated tests and collect results. For more information, see their wiki: https://github.com/autotest/autotest/wiki

How is it used in Fedora?

We're currently using it as the test harness for AutoQA. It handles the dirty work of getting code onto test machines, running it, and holding all the results.

Currently there is a public autotest instance running at http://autoqa.fedoraproject.org. This instance is hosted by the Infrastructure team and managed by QA team. It is not integrated with Fedora account system, so public access to the autotest scheduler web-frontend is not enabled. However, test results are available and links to results are included in all test result emails.

How to ...